From 557ad15ec500f8edf0356d3ffcd880965ae0de1a Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Thu, 15 Jun 2017 10:47:04 +1000 Subject: [PATCH 1/8] Feature: PE: Implement bundle ordering --- pengine/allocate.c | 8 ++-- pengine/allocate.h | 4 +- pengine/clone.c | 51 +++++++++++-------------- pengine/container.c | 82 ++++++++++++++++++++++++++++++++++++++- pengine/master.c | 108 ++++++++++++++++++++++------------------------------ pengine/utils.c | 12 ++++++ pengine/utils.h | 1 + 7 files changed, 170 insertions(+), 96 deletions(-) diff --git a/pengine/allocate.c b/pengine/allocate.c index f2987cc..8f15282 100644 --- a/pengine/allocate.c +++ b/pengine/allocate.c @@ -1860,9 +1860,11 @@ apply_container_ordering(action_t *action, pe_working_set_t *data_set) * recurring monitors to be restarted, even if just * the connection was re-established */ - custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, - action->rsc, NULL, action, - pe_order_preserve | pe_order_runnable_left | pe_order_implies_then, data_set); + if(task != no_action) { + custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, + action->rsc, NULL, action, + pe_order_preserve | pe_order_runnable_left | pe_order_implies_then, data_set); + } } else { custom_action_order(remote_rsc, generate_op_key(remote_rsc->id, RSC_START, 0), NULL, action->rsc, NULL, action, diff --git a/pengine/allocate.h b/pengine/allocate.h index d89943d..9a30b80 100644 --- a/pengine/allocate.h +++ b/pengine/allocate.h @@ -179,6 +179,8 @@ gboolean update_action_flags(action_t * action, enum pe_action_flags flags, cons gboolean update_action(action_t * action); void complex_set_cmds(resource_t * rsc); - +void master_promotion_constraints(resource_t * rsc, pe_working_set_t * data_set); +void clone_create_pseudo_actions( + resource_t * rsc, GListPtr children, notify_data_t **start_notify, notify_data_t **stop_notify, pe_working_set_t * data_set); #endif diff --git a/pengine/clone.c b/pengine/clone.c index 51338d6..a51677a 100644 --- a/pengine/clone.c +++ b/pengine/clone.c @@ -805,6 +805,17 @@ child_ordering_constraints(resource_t * rsc, pe_working_set_t * data_set) void clone_create_actions(resource_t * rsc, pe_working_set_t * data_set) { + clone_variant_data_t *clone_data = NULL; + + get_clone_variant_data(clone_data, rsc); + clone_create_pseudo_actions(rsc, rsc->children, &clone_data->start_notify, &clone_data->stop_notify,data_set); + child_ordering_constraints(rsc, data_set); +} + +void +clone_create_pseudo_actions( + resource_t * rsc, GListPtr children, notify_data_t **start_notify, notify_data_t **stop_notify, pe_working_set_t * data_set) +{ gboolean child_active = FALSE; gboolean child_starting = FALSE; gboolean child_stopping = FALSE; @@ -816,14 +827,9 @@ clone_create_actions(resource_t * rsc, pe_working_set_t * data_set) action_t *start = NULL; action_t *started = NULL; - GListPtr gIter = rsc->children; - clone_variant_data_t *clone_data = NULL; - - get_clone_variant_data(clone_data, rsc); - pe_rsc_trace(rsc, "Creating actions for %s", rsc->id); - for (; gIter != NULL; gIter = gIter->next) { + for (GListPtr gIter = children; gIter != NULL; gIter = gIter->next) { resource_t *child_rsc = (resource_t *) gIter->data; gboolean starting = FALSE; gboolean stopping = FALSE; @@ -839,42 +845,31 @@ clone_create_actions(resource_t * rsc, pe_working_set_t * data_set) } /* start */ - start = start_action(rsc, NULL, !child_starting); - started = custom_action(rsc, started_key(rsc), - RSC_STARTED, NULL, !child_starting, TRUE, data_set); - - update_action_flags(start, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); - update_action_flags(started, pe_action_pseudo, __FUNCTION__, __LINE__); + start = create_pseudo_resource_op(rsc, RSC_START, !child_starting, TRUE, data_set); + started = create_pseudo_resource_op(rsc, RSC_STARTED, !child_starting, FALSE, data_set); started->priority = INFINITY; if (child_active || child_starting) { update_action_flags(started, pe_action_runnable, __FUNCTION__, __LINE__); } - child_ordering_constraints(rsc, data_set); - if (clone_data->start_notify == NULL) { - clone_data->start_notify = - create_notification_boundaries(rsc, RSC_START, start, started, data_set); + if (start_notify != NULL && *start_notify == NULL) { + *start_notify = create_notification_boundaries(rsc, RSC_START, start, started, data_set); } /* stop */ - stop = stop_action(rsc, NULL, !child_stopping); - stopped = custom_action(rsc, stopped_key(rsc), - RSC_STOPPED, NULL, !child_stopping, TRUE, data_set); - + stop = create_pseudo_resource_op(rsc, RSC_STOP, !child_stopping, TRUE, data_set); + stopped = create_pseudo_resource_op(rsc, RSC_STOPPED, !child_stopping, TRUE, data_set); stopped->priority = INFINITY; - update_action_flags(stop, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); if (allow_dependent_migrations) { update_action_flags(stop, pe_action_migrate_runnable, __FUNCTION__, __LINE__); } - update_action_flags(stopped, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); - if (clone_data->stop_notify == NULL) { - clone_data->stop_notify = - create_notification_boundaries(rsc, RSC_STOP, stop, stopped, data_set); - if (clone_data->stop_notify && clone_data->start_notify) { - order_actions(clone_data->stop_notify->post_done, clone_data->start_notify->pre, - pe_order_optional); + if (stop_notify != NULL && *stop_notify == NULL) { + *stop_notify = create_notification_boundaries(rsc, RSC_STOP, stop, stopped, data_set); + + if (*stop_notify && *start_notify) { + order_actions((*stop_notify)->post_done, (*start_notify)->pre, pe_order_optional); } } } diff --git a/pengine/container.c b/pengine/container.c index 58f6fca..d648e0f 100644 --- a/pengine/container.c +++ b/pengine/container.c @@ -122,6 +122,8 @@ container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) void container_create_actions(resource_t * rsc, pe_working_set_t * data_set) { + pe_action_t *action = NULL; + GListPtr containers = NULL; container_variant_data_t *container_data = NULL; CRM_CHECK(rsc != NULL, return); @@ -136,15 +138,32 @@ container_create_actions(resource_t * rsc, pe_working_set_t * data_set) } if(tuple->docker) { tuple->docker->cmds->create_actions(tuple->docker, data_set); + containers = g_list_append(containers, tuple->docker); } if(tuple->remote) { tuple->remote->cmds->create_actions(tuple->remote, data_set); } } + clone_create_pseudo_actions(rsc, containers, NULL, NULL, data_set); + if(container_data->child) { container_data->child->cmds->create_actions(container_data->child, data_set); + + if(container_data->child->variant == pe_master) { + /* promote */ + action = create_pseudo_resource_op(rsc, RSC_PROMOTE, TRUE, TRUE, data_set); + action = create_pseudo_resource_op(rsc, RSC_PROMOTED, TRUE, TRUE, data_set); + action->priority = INFINITY; + + /* demote */ + action = create_pseudo_resource_op(rsc, RSC_DEMOTE, TRUE, TRUE, data_set); + action = create_pseudo_resource_op(rsc, RSC_DEMOTED, TRUE, TRUE, data_set); + action->priority = INFINITY; + } } + + g_list_free(containers); } void @@ -155,12 +174,38 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) CRM_CHECK(rsc != NULL, return); get_container_variant_data(container_data, rsc); + + if(container_data->child) { + new_rsc_order(rsc, RSC_START, container_data->child, RSC_START, pe_order_implies_first_printed, data_set); + new_rsc_order(rsc, RSC_STOP, container_data->child, RSC_STOP, pe_order_implies_first_printed, data_set); + + if(container_data->child->children) { + new_rsc_order(container_data->child, RSC_STARTED, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); + new_rsc_order(container_data->child, RSC_STOPPED, rsc, RSC_STOPPED, pe_order_implies_then_printed, data_set); + } else { + new_rsc_order(container_data->child, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); + new_rsc_order(container_data->child, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed, data_set); + } + } + for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { container_grouping_t *tuple = (container_grouping_t *)gIter->data; CRM_ASSERT(tuple); - if(tuple->docker) { - tuple->docker->cmds->internal_constraints(tuple->docker, data_set); + CRM_ASSERT(tuple->docker); + + tuple->docker->cmds->internal_constraints(tuple->docker, data_set); + + order_start_start(rsc, tuple->docker, pe_order_runnable_left | pe_order_implies_first_printed); + + if(tuple->child) { + order_stop_stop(rsc, tuple->child, pe_order_implies_first_printed); + + } else { + order_stop_stop(rsc, tuple->docker, pe_order_implies_first_printed); + new_rsc_order(tuple->docker, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); + new_rsc_order(tuple->docker, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed, + data_set); } if(tuple->ip) { @@ -194,10 +239,31 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) if(container_data->child) { container_data->child->cmds->internal_constraints(container_data->child, data_set); + if(container_data->child->variant == pe_master) { + master_promotion_constraints(rsc, data_set); + + /* child demoted before global demoted */ + new_rsc_order(container_data->child, RSC_DEMOTED, rsc, RSC_DEMOTED, pe_order_implies_then_printed, data_set); + + /* global demote before child demote */ + new_rsc_order(rsc, RSC_DEMOTE, container_data->child, RSC_DEMOTE, pe_order_implies_first_printed, data_set); + + /* child promoted before global promoted */ + new_rsc_order(container_data->child, RSC_PROMOTED, rsc, RSC_PROMOTED, pe_order_implies_then_printed, data_set); + + /* global promote before child promote */ + new_rsc_order(rsc, RSC_PROMOTE, container_data->child, RSC_PROMOTE, pe_order_implies_first_printed, data_set); + } + + } else { +// int type = pe_order_optional | pe_order_implies_then | pe_order_restart; +// custom_action_order(rsc, generate_op_key(rsc->id, RSC_STOP, 0), NULL, +// rsc, generate_op_key(rsc->id, RSC_START, 0), NULL, pe_order_optional, data_set); } } + static resource_t * find_compatible_tuple_by_node(resource_t * rsc_lh, node_t * candidate, resource_t * rsc, enum rsc_role_e filter, gboolean current) @@ -336,6 +402,10 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum enum pe_action_flags filter, enum pe_ordering type) { enum pe_graph_flags changed = pe_graph_none; + + // At the point we need to force container X to stop because + // resource Y needs to stop, here is where we'd implement that + return changed; } @@ -359,6 +429,14 @@ container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) tuple->ip->cmds->rsc_location(tuple->ip, constraint); } } + + if(container_data->child && (constraint->role_filter == RSC_ROLE_SLAVE || constraint->role_filter == RSC_ROLE_MASTER)) { + // Translate the node into container names running on that node + crm_err("Applying constraint %s", constraint->id); + container_data->child->cmds->rsc_location(container_data->child, constraint); + container_data->child->rsc_location = g_list_prepend(container_data->child->rsc_location, constraint); + crm_err("Added %d location constraints to %s", g_list_length(container_data->child->rsc_location), container_data->child->id); + } } void diff --git a/pengine/master.c b/pengine/master.c index f6fcad3..93e5186 100644 --- a/pengine/master.c +++ b/pengine/master.c @@ -139,27 +139,26 @@ master_update_pseudo_status(resource_t * rsc, gboolean * demoting, gboolean * pr } } -#define apply_master_location(list) do { \ - gIter2 = list; \ - for(; gIter2 != NULL; gIter2 = gIter2->next) { \ - rsc_to_node_t *cons = (rsc_to_node_t*)gIter2->data; \ - \ - cons_node = NULL; \ - if(cons->role_filter == RSC_ROLE_MASTER) { \ - pe_rsc_trace(rsc, "Applying %s to %s", \ - cons->id, child_rsc->id); \ - cons_node = pe_find_node_id( \ - cons->node_list_rh, chosen->details->id); \ - } \ - if(cons_node != NULL) { \ - int new_priority = merge_weights( \ - child_rsc->priority, cons_node->weight); \ - pe_rsc_trace(rsc, "\t%s: %d->%d (%d)", child_rsc->id, \ - child_rsc->priority, new_priority, cons_node->weight); \ - child_rsc->priority = new_priority; \ - } \ - } \ - } while(0) +static void apply_master_location(resource_t *child, GListPtr location_constraints, pe_node_t *chosen) +{ + for(GListPtr gIter = location_constraints; gIter != NULL; gIter = gIter->next) { + pe_node_t *cons_node = NULL; + rsc_to_node_t *cons = (rsc_to_node_t*)gIter->data; + + if(cons->role_filter == RSC_ROLE_MASTER) { + pe_rsc_trace(child, "Applying %s to %s", cons->id, child->id); + cons_node = pe_find_node_id(cons->node_list_rh, chosen->details->id); + } + if(cons_node != NULL) { + int new_priority = merge_weights(child->priority, cons_node->weight); + pe_rsc_trace(child, "\t%s[%s]: %d -> %d (%d)", child->id, cons_node->details->uname, + child->priority, new_priority, cons_node->weight); + crm_err("\t%s[%s]: %d -> %d (%d)", child->id, cons_node->details->uname, + child->priority, new_priority, cons_node->weight); + child->priority = new_priority; + } + } +} static node_t * can_be_master(resource_t * rsc) @@ -290,8 +289,7 @@ master_promotion_order(resource_t * rsc, pe_working_set_t * data_set) pe_rsc_trace(rsc, "Merging weights for %s", rsc->id); set_bit(rsc->flags, pe_rsc_merging); - gIter = rsc->children; - for (; gIter != NULL; gIter = gIter->next) { + for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { resource_t *child = (resource_t *) gIter->data; pe_rsc_trace(rsc, "Sort index: %s = %d", child->id, child->sort_index); @@ -639,7 +637,6 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) GHashTableIter iter; node_t *node = NULL; node_t *chosen = NULL; - node_t *cons_node = NULL; enum rsc_role_e next_role = RSC_ROLE_UNKNOWN; char score[33]; @@ -672,8 +669,7 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) /* * assign priority */ - gIter = rsc->children; - for (; gIter != NULL; gIter = gIter->next) { + for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { GListPtr list = NULL; resource_t *child_rsc = (resource_t *) gIter->data; @@ -723,11 +719,11 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) crm_err("Unknown resource role: %d for %s", next_role, child_rsc->id)); } - apply_master_location(child_rsc->rsc_location); - apply_master_location(rsc->rsc_location); + apply_master_location(child_rsc, child_rsc->rsc_location, chosen); + crm_err("Applying %d location constraints for %s", g_list_length(rsc->rsc_location), rsc->id); + apply_master_location(child_rsc, rsc->rsc_location, chosen); - gIter2 = child_rsc->rsc_cons; - for (; gIter2 != NULL; gIter2 = gIter2->next) { + for (gIter2 = child_rsc->rsc_cons; gIter2 != NULL; gIter2 = gIter2->next) { rsc_colocation_t *cons = (rsc_colocation_t *) gIter2->data; child_rsc->cmds->rsc_colocation_lh(child_rsc, cons->rsc_rh, cons); @@ -746,8 +742,7 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) /* mark the first N as masters */ - gIter = rsc->children; - for (; gIter != NULL; gIter = gIter->next) { + for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { resource_t *child_rsc = (resource_t *) gIter->data; score2char_stack(child_rsc->sort_index, score, len); @@ -840,20 +835,9 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set) } /* promote */ - action = promote_action(rsc, NULL, !any_promoting); - action_complete = custom_action(rsc, promoted_key(rsc), - RSC_PROMOTED, NULL, !any_promoting, TRUE, data_set); - + action = create_pseudo_resource_op(rsc, RSC_PROMOTE, !any_promoting, TRUE, data_set); + action_complete = create_pseudo_resource_op(rsc, RSC_PROMOTED, !any_promoting, TRUE, data_set); action_complete->priority = INFINITY; - update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); - update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); - update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__, __LINE__); - update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); - - if (clone_data->masters_allocated > 0) { - update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); - update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); - } child_promoting_constraints(clone_data, pe_order_optional, rsc, NULL, last_promote_rsc, data_set); @@ -864,16 +848,10 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set) } /* demote */ - action = demote_action(rsc, NULL, !any_demoting); - action_complete = custom_action(rsc, demoted_key(rsc), - RSC_DEMOTED, NULL, !any_demoting, TRUE, data_set); + action = create_pseudo_resource_op(rsc, RSC_DEMOTE, !any_demoting, TRUE, data_set); + action_complete = create_pseudo_resource_op(rsc, RSC_DEMOTED, !any_demoting, TRUE, data_set); action_complete->priority = INFINITY; - update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); - update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); - update_action_flags(action_complete, pe_action_pseudo, __FUNCTION__, __LINE__); - update_action_flags(action_complete, pe_action_runnable, __FUNCTION__, __LINE__); - child_demoting_constraints(clone_data, pe_order_optional, rsc, NULL, last_demote_rsc, data_set); if (clone_data->demote_notify == NULL) { @@ -908,16 +886,8 @@ master_create_actions(resource_t * rsc, pe_working_set_t * data_set) } void -master_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) +master_promotion_constraints(resource_t * rsc, pe_working_set_t * data_set) { - GListPtr gIter = rsc->children; - resource_t *last_rsc = NULL; - clone_variant_data_t *clone_data = NULL; - - get_clone_variant_data(clone_data, rsc); - - clone_internal_constraints(rsc, data_set); - /* global stopped before start */ new_rsc_order(rsc, RSC_STOPPED, rsc, RSC_START, pe_order_optional, data_set); @@ -938,6 +908,20 @@ master_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) /* global demoted before promote */ new_rsc_order(rsc, RSC_DEMOTED, rsc, RSC_PROMOTE, pe_order_optional, data_set); +} + + +void +master_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) +{ + GListPtr gIter = rsc->children; + resource_t *last_rsc = NULL; + clone_variant_data_t *clone_data = NULL; + + get_clone_variant_data(clone_data, rsc); + + clone_internal_constraints(rsc, data_set); + master_promotion_constraints(rsc, data_set); for (; gIter != NULL; gIter = gIter->next) { resource_t *child_rsc = (resource_t *) gIter->data; diff --git a/pengine/utils.c b/pengine/utils.c index a587e58..0cc6381 100644 --- a/pengine/utils.c +++ b/pengine/utils.c @@ -422,3 +422,15 @@ can_run_any(GHashTable * nodes) return FALSE; } + +pe_action_t * +create_pseudo_resource_op(resource_t * rsc, const char *task, bool optional, bool runnable, pe_working_set_t *data_set) +{ + pe_action_t *action = custom_action(rsc, generate_op_key(rsc->id, task, 0), task, NULL, optional, TRUE, data_set); + update_action_flags(action, pe_action_pseudo, __FUNCTION__, __LINE__); + update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); + if(runnable) { + update_action_flags(action, pe_action_runnable, __FUNCTION__, __LINE__); + } + return action; +} diff --git a/pengine/utils.h b/pengine/utils.h index 79fd33d..10e7201 100644 --- a/pengine/utils.h +++ b/pengine/utils.h @@ -71,6 +71,7 @@ extern void calculate_utilization(GHashTable * current_utilization, GHashTable * utilization, gboolean plus); extern void process_utilization(resource_t * rsc, node_t ** prefer, pe_working_set_t * data_set); +pe_action_t *create_pseudo_resource_op(resource_t * rsc, const char *task, bool optional, bool runnable, pe_working_set_t *data_set); # define STONITH_UP "stonith_up" # define STONITH_DONE "stonith_complete" -- 1.8.3.1 From 356261e246b6aa46d6647eb16f09ff2dceeb1313 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Thu, 15 Jun 2017 10:47:13 +1000 Subject: [PATCH 2/8] Test: PE: Implement bundle ordering --- pengine/regression.sh | 6 + pengine/test10/bundle-order-partial-start-2.dot | 51 ++ pengine/test10/bundle-order-partial-start-2.exp | 299 ++++++++ pengine/test10/bundle-order-partial-start-2.scores | 197 +++++ .../test10/bundle-order-partial-start-2.summary | 75 ++ pengine/test10/bundle-order-partial-start-2.xml | 387 ++++++++++ pengine/test10/bundle-order-partial-start.dot | 65 ++ pengine/test10/bundle-order-partial-start.exp | 375 ++++++++++ pengine/test10/bundle-order-partial-start.scores | 197 +++++ pengine/test10/bundle-order-partial-start.summary | 82 ++ pengine/test10/bundle-order-partial-start.xml | 379 ++++++++++ pengine/test10/bundle-order-partial-stop.dot | 194 +++++ pengine/test10/bundle-order-partial-stop.exp | 734 ++++++++++++++++++ pengine/test10/bundle-order-partial-stop.scores | 199 +++++ pengine/test10/bundle-order-partial-stop.summary | 114 +++ pengine/test10/bundle-order-partial-stop.xml | 421 +++++++++++ pengine/test10/bundle-order-partial.dot | 2 + pengine/test10/bundle-order-partial.exp | 1 + pengine/test10/bundle-order-partial.scores | 197 +++++ pengine/test10/bundle-order-partial.summary | 47 ++ pengine/test10/bundle-order-partial.xml | 421 +++++++++++ pengine/test10/bundle-order-startup.dot | 139 ++++ pengine/test10/bundle-order-startup.exp | 825 +++++++++++++++++++++ pengine/test10/bundle-order-startup.scores | 197 +++++ pengine/test10/bundle-order-startup.summary | 126 ++++ pengine/test10/bundle-order-startup.xml | 315 ++++++++ pengine/test10/bundle-order-stop.dot | 194 +++++ pengine/test10/bundle-order-stop.exp | 734 ++++++++++++++++++ pengine/test10/bundle-order-stop.scores | 199 +++++ pengine/test10/bundle-order-stop.summary | 114 +++ pengine/test10/bundle-order-stop.xml | 421 +++++++++++ 31 files changed, 7707 insertions(+) create mode 100644 pengine/test10/bundle-order-partial-start-2.dot create mode 100644 pengine/test10/bundle-order-partial-start-2.exp create mode 100644 pengine/test10/bundle-order-partial-start-2.scores create mode 100644 pengine/test10/bundle-order-partial-start-2.summary create mode 100644 pengine/test10/bundle-order-partial-start-2.xml create mode 100644 pengine/test10/bundle-order-partial-start.dot create mode 100644 pengine/test10/bundle-order-partial-start.exp create mode 100644 pengine/test10/bundle-order-partial-start.scores create mode 100644 pengine/test10/bundle-order-partial-start.summary create mode 100644 pengine/test10/bundle-order-partial-start.xml create mode 100644 pengine/test10/bundle-order-partial-stop.dot create mode 100644 pengine/test10/bundle-order-partial-stop.exp create mode 100644 pengine/test10/bundle-order-partial-stop.scores create mode 100644 pengine/test10/bundle-order-partial-stop.summary create mode 100644 pengine/test10/bundle-order-partial-stop.xml create mode 100644 pengine/test10/bundle-order-partial.dot create mode 100644 pengine/test10/bundle-order-partial.exp create mode 100644 pengine/test10/bundle-order-partial.scores create mode 100644 pengine/test10/bundle-order-partial.summary create mode 100644 pengine/test10/bundle-order-partial.xml create mode 100644 pengine/test10/bundle-order-startup.dot create mode 100644 pengine/test10/bundle-order-startup.exp create mode 100644 pengine/test10/bundle-order-startup.scores create mode 100644 pengine/test10/bundle-order-startup.summary create mode 100644 pengine/test10/bundle-order-startup.xml create mode 100644 pengine/test10/bundle-order-stop.dot create mode 100644 pengine/test10/bundle-order-stop.exp create mode 100644 pengine/test10/bundle-order-stop.scores create mode 100644 pengine/test10/bundle-order-stop.summary create mode 100644 pengine/test10/bundle-order-stop.xml diff --git a/pengine/regression.sh b/pengine/regression.sh index df449e0..e97b54b 100755 --- a/pengine/regression.sh +++ b/pengine/regression.sh @@ -802,6 +802,12 @@ do_test container-is-remote-node "Place resource within container when container do_test bug-rh-1097457 "Kill user defined container/contents ordering" do_test bug-cl-5247 "Graph loop when recovering m/s resource in a container" +do_test bundle-order-startup "Bundle startup ordering" +do_test bundle-order-partial-start "Bundle startup ordering when some dependancies are already running" +do_test bundle-order-partial-start-2 "Bundle startup ordering when some dependancies and the container are already running" +do_test bundle-order-stop "Bundle stop ordering" +do_test bundle-order-partial-stop "Bundle startup ordering when some dependancies are already stopped" + echo "" do_test whitebox-fail1 "Fail whitebox container rsc." do_test whitebox-fail2 "Fail whitebox container rsc lrmd connection." diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot new file mode 100644 index 0000000..59a8b15 --- /dev/null +++ b/pengine/test10/bundle-order-partial-start-2.dot @@ -0,0 +1,51 @@ +digraph "g" { +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = bold] +"galera-bundle-master_start_0" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] +"galera:0_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] +"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] +"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] +"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] +"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] +"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] +"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] +"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] +"rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis-bundle-master_promote_0" -> "redis_promote_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_promoted_0" -> "redis-bundle_promoted_0" [ style = bold] +"redis-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] +"redis-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_promoted_0" -> "galera-bundle_start_0" [ style = bold] +"redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_promote_0 redis-bundle-0" -> "redis-bundle-master_promoted_0" [ style = bold] +"redis_promote_0 redis-bundle-0" -> "redis_monitor_20000 redis-bundle-0" [ style = bold] +"redis_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp new file mode 100644 index 0000000..621332c --- /dev/null +++ b/pengine/test10/bundle-order-partial-start-2.exp @@ -0,0 +1,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-partial-start-2.scores b/pengine/test10/bundle-order-partial-start-2.scores new file mode 100644 index 0000000..f5e86de --- /dev/null +++ b/pengine/test10/bundle-order-partial-start-2.scores @@ -0,0 +1,197 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera-bundle-master allocation score on undercloud: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on undercloud: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY +clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on undercloud: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:0 allocation score on undercloud: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle allocation score on undercloud: 0 +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on undercloud: INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on undercloud: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera:0 allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on undercloud: 0 +container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle allocation score on undercloud: 0 +container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 +container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq:0 allocation score on undercloud: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle allocation score on undercloud: 0 +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on undercloud: 0 +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on undercloud: 0 +galera:0 promotion score on galera-bundle-0: -1 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on undercloud: INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on undercloud: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on undercloud: INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY +native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +native_color: rabbitmq:0 allocation score on undercloud: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on undercloud: INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:0 allocation score on undercloud: -INFINITY +redis:0 promotion score on redis-bundle-0: 3000 diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary new file mode 100644 index 0000000..859ca25 --- /dev/null +++ b/pengine/test10/bundle-order-partial-start-2.summary @@ -0,0 +1,75 @@ + +Current cluster status: +Online: [ undercloud ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped undercloud + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Slave undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + +Transition Summary: + * Start rabbitmq:0 (rabbitmq-bundle-0) + * Start galera:0 (galera-bundle-0) + * Promote redis:0 (Slave -> Master redis-bundle-0) + * Start haproxy-bundle-docker-0 (undercloud) + +Executing cluster transition: + * Resource action: haproxy-bundle-docker-0 monitor on undercloud + * Pseudo action: haproxy-bundle_start_0 + * Pseudo action: redis-bundle_promote_0 + * Pseudo action: redis-bundle-master_promote_0 + * Pseudo action: rabbitmq-bundle_start_0 + * Resource action: redis promote on redis-bundle-0 + * Resource action: haproxy-bundle-docker-0 start on undercloud + * Pseudo action: haproxy-bundle_running_0 + * Pseudo action: redis-bundle-master_promoted_0 + * Pseudo action: rabbitmq-bundle-clone_start_0 + * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 + * Resource action: redis monitor=20000 on redis-bundle-0 + * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud + * Pseudo action: redis-bundle_promoted_0 + * Pseudo action: rabbitmq-bundle-clone_running_0 + * Pseudo action: rabbitmq-bundle_running_0 + * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 + * Pseudo action: galera-bundle_start_0 + * Pseudo action: galera-bundle-master_start_0 + * Resource action: galera:0 start on galera-bundle-0 + * Pseudo action: galera-bundle-master_running_0 + * Pseudo action: galera-bundle_running_0 + * Resource action: galera:0 monitor=30000 on galera-bundle-0 + * Resource action: galera:0 monitor=20000 on galera-bundle-0 + +Revised cluster status: +Online: [ undercloud ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Slave undercloud + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + diff --git a/pengine/test10/bundle-order-partial-start-2.xml b/pengine/test10/bundle-order-partial-start-2.xml new file mode 100644 index 0000000..9c4d40c --- /dev/null +++ b/pengine/test10/bundle-order-partial-start-2.xml @@ -0,0 +1,387 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot new file mode 100644 index 0000000..06c3620 --- /dev/null +++ b/pengine/test10/bundle-order-partial-start.dot @@ -0,0 +1,65 @@ +digraph "g" { +"galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] +"galera-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = bold] +"galera-bundle-master_start_0" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] +"galera:0_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] +"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] +"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] +"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] +"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] +"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] +"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] +"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] +"rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis-bundle-master_promote_0" -> "redis_promote_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_promoted_0" -> "redis-bundle_promoted_0" [ style = bold] +"redis-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] +"redis-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_promoted_0" -> "galera-bundle_start_0" [ style = bold] +"redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_promote_0 redis-bundle-0" -> "redis-bundle-master_promoted_0" [ style = bold] +"redis_promote_0 redis-bundle-0" -> "redis_monitor_20000 redis-bundle-0" [ style = bold] +"redis_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp new file mode 100644 index 0000000..b48bb03 --- /dev/null +++ b/pengine/test10/bundle-order-partial-start.exp @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-partial-start.scores b/pengine/test10/bundle-order-partial-start.scores new file mode 100644 index 0000000..ea702d0 --- /dev/null +++ b/pengine/test10/bundle-order-partial-start.scores @@ -0,0 +1,197 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera-bundle-master allocation score on undercloud: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on undercloud: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY +clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on undercloud: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:0 allocation score on undercloud: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle allocation score on undercloud: 0 +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on undercloud: 0 +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on undercloud: 0 +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on undercloud: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera:0 allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on undercloud: 0 +container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle allocation score on undercloud: 0 +container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 +container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq:0 allocation score on undercloud: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle allocation score on undercloud: 0 +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on undercloud: 0 +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on undercloud: 0 +galera:0 promotion score on galera-bundle-0: -1 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on undercloud: 10000 +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on undercloud: 0 +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on undercloud: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on undercloud: INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY +native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +native_color: rabbitmq:0 allocation score on undercloud: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on undercloud: INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:0 allocation score on undercloud: -INFINITY +redis:0 promotion score on redis-bundle-0: 3000 diff --git a/pengine/test10/bundle-order-partial-start.summary b/pengine/test10/bundle-order-partial-start.summary new file mode 100644 index 0000000..e56e55f --- /dev/null +++ b/pengine/test10/bundle-order-partial-start.summary @@ -0,0 +1,82 @@ + +Current cluster status: +Online: [ undercloud ] +Containers: [ rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Slave undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + +Transition Summary: + * Start rabbitmq:0 (rabbitmq-bundle-0) + * Start galera-bundle-docker-0 (undercloud) + * Start galera-bundle-0 (undercloud) + * Start galera:0 (galera-bundle-0) + * Promote redis:0 (Slave -> Master redis-bundle-0) + * Start haproxy-bundle-docker-0 (undercloud) + +Executing cluster transition: + * Resource action: galera-bundle-docker-0 monitor on undercloud + * Resource action: haproxy-bundle-docker-0 monitor on undercloud + * Pseudo action: haproxy-bundle_start_0 + * Pseudo action: redis-bundle_promote_0 + * Pseudo action: redis-bundle-master_promote_0 + * Pseudo action: rabbitmq-bundle_start_0 + * Resource action: redis promote on redis-bundle-0 + * Resource action: haproxy-bundle-docker-0 start on undercloud + * Pseudo action: haproxy-bundle_running_0 + * Pseudo action: redis-bundle-master_promoted_0 + * Pseudo action: rabbitmq-bundle-clone_start_0 + * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 + * Resource action: redis monitor=20000 on redis-bundle-0 + * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud + * Pseudo action: redis-bundle_promoted_0 + * Pseudo action: rabbitmq-bundle-clone_running_0 + * Pseudo action: rabbitmq-bundle_running_0 + * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 + * Pseudo action: galera-bundle_start_0 + * Resource action: galera-bundle-docker-0 start on undercloud + * Resource action: galera-bundle-0 start on undercloud + * Pseudo action: galera-bundle-master_start_0 + * Resource action: galera:0 start on galera-bundle-0 + * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud + * Resource action: galera-bundle-0 monitor=60000 on undercloud + * Pseudo action: galera-bundle-master_running_0 + * Pseudo action: galera-bundle_running_0 + * Resource action: galera:0 monitor=30000 on galera-bundle-0 + * Resource action: galera:0 monitor=20000 on galera-bundle-0 + +Revised cluster status: +Online: [ undercloud ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Slave undercloud + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + diff --git a/pengine/test10/bundle-order-partial-start.xml b/pengine/test10/bundle-order-partial-start.xml new file mode 100644 index 0000000..907dbfb --- /dev/null +++ b/pengine/test10/bundle-order-partial-start.xml @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-partial-stop.dot b/pengine/test10/bundle-order-partial-stop.dot new file mode 100644 index 0000000..235b634 --- /dev/null +++ b/pengine/test10/bundle-order-partial-stop.dot @@ -0,0 +1,194 @@ +digraph "g" { +"Cancel galera_monitor_10000 galera-bundle-0" -> "galera_demote_0 galera-bundle-0" [ style = bold] +"Cancel galera_monitor_10000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"Cancel redis_monitor_20000 redis-bundle-0" -> "redis_demote_0 redis-bundle-0" [ style = bold] +"Cancel redis_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"all_stopped" [ style=bold color="green" fontcolor="orange"] +"do_shutdown undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"galera-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"galera-bundle-0_stop_0 undercloud" -> "galera-bundle-docker-0_stop_0 undercloud" [ style = bold] +"galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-master_demote_0" -> "galera-bundle-master_demoted_0" [ style = bold] +"galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_demoted_0" -> "galera-bundle-master_start_0" [ style = dashed] +"galera-bundle-master_demoted_0" -> "galera-bundle-master_stop_0" [ style = bold] +"galera-bundle-master_demoted_0" -> "galera-bundle_demoted_0" [ style = bold] +"galera-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] +"galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] +"galera-bundle-master_start_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle-master_stop_0" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera-bundle-master_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_stopped_0" -> "galera-bundle-master_start_0" [ style = dashed] +"galera-bundle-master_stopped_0" -> "galera-bundle_stopped_0" [ style = bold] +"galera-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_demote_0" -> "galera-bundle-master_demote_0" [ style = bold] +"galera-bundle_demote_0" -> "galera-bundle_demoted_0" [ style = bold] +"galera-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] +"galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] +"galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] +"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] +"galera_demote_0 galera-bundle-0" -> "galera-bundle-master_demoted_0" [ style = bold] +"galera_demote_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] +"galera_demote_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] +"galera_demote_0 galera-bundle-0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera_demote_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] +"galera_start_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] +"galera_start_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] +"galera_start_0 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera_stop_0 galera-bundle-0" -> "all_stopped" [ style = bold] +"galera_stop_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] +"galera_stop_0 galera-bundle-0" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera_stop_0 galera-bundle-0" -> "galera_start_0 galera-bundle-0" [ style = dashed] +"galera_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"haproxy-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"haproxy-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle_stopped_0" [ style = bold] +"haproxy-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle_stop_0" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.247_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.248_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.249_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.250_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.253_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.254_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"ip-192.168.122.247_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.247_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.247_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.247_stop_0 undercloud" -> "ip-192.168.122.247_start_0 " [ style = dashed] +"ip-192.168.122.247_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.248_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.248_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.248_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.248_stop_0 undercloud" -> "ip-192.168.122.248_start_0 " [ style = dashed] +"ip-192.168.122.248_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.249_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.249_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.249_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.249_stop_0 undercloud" -> "ip-192.168.122.249_start_0 " [ style = dashed] +"ip-192.168.122.249_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.250_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.250_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.250_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.250_stop_0 undercloud" -> "ip-192.168.122.250_start_0 " [ style = dashed] +"ip-192.168.122.250_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.253_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.253_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.253_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.253_stop_0 undercloud" -> "ip-192.168.122.253_start_0 " [ style = dashed] +"ip-192.168.122.253_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.254_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.254_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.254_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.254_stop_0 undercloud" -> "ip-192.168.122.254_start_0 " [ style = dashed] +"ip-192.168.122.254_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "openstack-cinder-volume_stopped_0" [ style = bold] +"openstack-cinder-volume-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume_stop_0" -> "openstack-cinder-volume-docker-0_stop_0 undercloud" [ style = bold] +"openstack-cinder-volume_stop_0" [ style=bold color="green" fontcolor="orange"] +"openstack-cinder-volume_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] +"rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] +"rabbitmq-bundle-clone_start_0" [ style=dashed color="red" fontcolor="orange"] +"rabbitmq-bundle-clone_stop_0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] +"rabbitmq-bundle-clone_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle-clone_stop_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_start_0" [ style = dashed] +"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] +"rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] +"rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] +"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] +"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] +"rabbitmq_start_0 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] +"rabbitmq_stop_0 rabbitmq-bundle-0" -> "all_stopped" [ style = bold] +"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-0_stop_0 undercloud" [ style = bold] +"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] +"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] +"rabbitmq_stop_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"redis-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"redis-bundle-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] +"redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] +"redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_demoted_0" -> "redis-bundle-master_start_0" [ style = dashed] +"redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] +"redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] +"redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] +"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] +"redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] +"redis-bundle-master_start_0" [ style=dashed color="red" fontcolor="orange"] +"redis-bundle-master_stop_0" -> "redis-bundle-master_stopped_0" [ style = bold] +"redis-bundle-master_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_stopped_0" -> "redis-bundle-master_start_0" [ style = dashed] +"redis-bundle-master_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] +"redis-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] +"redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] +"redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] +"redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] +"redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] +"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] +"redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] +"redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] +"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] +"redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] +"redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] +"redis_demote_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] +"redis_demote_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] +"redis_demote_0 redis-bundle-0" -> "redis_stop_0 redis-bundle-0" [ style = bold] +"redis_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_monitor_45000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] +"redis_monitor_60000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] +"redis_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = dashed] +"redis_start_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] +"redis_start_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] +"redis_start_0 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] +"redis_stop_0 redis-bundle-0" -> "all_stopped" [ style = bold] +"redis_stop_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] +"redis_stop_0 redis-bundle-0" -> "redis-bundle-master_stopped_0" [ style = bold] +"redis_stop_0 redis-bundle-0" -> "redis_start_0 redis-bundle-0" [ style = dashed] +"redis_stop_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp new file mode 100644 index 0000000..d085433 --- /dev/null +++ b/pengine/test10/bundle-order-partial-stop.exp @@ -0,0 +1,734 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-partial-stop.scores b/pengine/test10/bundle-order-partial-stop.scores new file mode 100644 index 0000000..a662f42 --- /dev/null +++ b/pengine/test10/bundle-order-partial-stop.scores @@ -0,0 +1,199 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera-bundle-master allocation score on undercloud: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on undercloud: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY +clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on undercloud: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:0 allocation score on undercloud: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle allocation score on undercloud: 0 +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on undercloud: INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on undercloud: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera:0 allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on undercloud: 0 +container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle allocation score on undercloud: 0 +container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 +container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +container_color: rabbitmq:0 allocation score on undercloud: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle allocation score on undercloud: 0 +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on undercloud: 0 +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on undercloud: 0 +galera:0 promotion score on galera-bundle-0: 100 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on undercloud: INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on undercloud: -INFINITY +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on undercloud: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on undercloud: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: -INFINITY +native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +native_color: rabbitmq:0 allocation score on undercloud: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on undercloud: INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on undercloud: -INFINITY +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:0 allocation score on undercloud: -INFINITY +redis:0 promotion score on redis-bundle-0: 1 diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary new file mode 100644 index 0000000..bd6f937 --- /dev/null +++ b/pengine/test10/bundle-order-partial-stop.summary @@ -0,0 +1,114 @@ + +Current cluster status: +Online: [ undercloud ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Master undercloud + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + +Transition Summary: + * Shutdown undercloud + * Stop rabbitmq-bundle-docker-0 (undercloud) + * Stop rabbitmq-bundle-0 (undercloud) + * Stop rabbitmq:0 (Started rabbitmq-bundle-0) + * Stop galera-bundle-docker-0 (undercloud) + * Stop galera-bundle-0 (undercloud) + * Demote galera:0 (Master -> Slave galera-bundle-0) + * Restart galera:0 (Slave galera-bundle-0) + * Stop redis-bundle-docker-0 (undercloud) + * Stop redis-bundle-0 (undercloud) + * Demote redis:0 (Master -> Slave redis-bundle-0) + * Restart redis:0 (Slave redis-bundle-0) + * Stop ip-192.168.122.254 (undercloud) + * Stop ip-192.168.122.250 (undercloud) + * Stop ip-192.168.122.249 (undercloud) + * Stop ip-192.168.122.253 (undercloud) + * Stop ip-192.168.122.247 (undercloud) + * Stop ip-192.168.122.248 (undercloud) + * Stop haproxy-bundle-docker-0 (undercloud) + * Stop openstack-cinder-volume-docker-0 (undercloud) + +Executing cluster transition: + * Resource action: galera cancel=10000 on galera-bundle-0 + * Resource action: redis cancel=20000 on redis-bundle-0 + * Pseudo action: openstack-cinder-volume_stop_0 + * Pseudo action: redis-bundle_demote_0 + * Pseudo action: redis-bundle-master_demote_0 + * Pseudo action: galera-bundle_demote_0 + * Pseudo action: galera-bundle-master_demote_0 + * Pseudo action: rabbitmq-bundle_stop_0 + * Resource action: galera demote on galera-bundle-0 + * Resource action: redis demote on redis-bundle-0 + * Resource action: openstack-cinder-volume-docker-0 stop on undercloud + * Pseudo action: openstack-cinder-volume_stopped_0 + * Pseudo action: redis-bundle-master_demoted_0 + * Pseudo action: galera-bundle-master_demoted_0 + * Pseudo action: rabbitmq-bundle-clone_stop_0 + * Resource action: rabbitmq stop on rabbitmq-bundle-0 + * Resource action: rabbitmq-bundle-0 stop on undercloud + * Pseudo action: redis-bundle_demoted_0 + * Pseudo action: galera-bundle_demoted_0 + * Pseudo action: galera-bundle_stop_0 + * Pseudo action: rabbitmq-bundle-clone_stopped_0 + * Pseudo action: rabbitmq-bundle_stopped_0 + * Resource action: rabbitmq-bundle-docker-0 stop on undercloud + * Pseudo action: galera-bundle-master_stop_0 + * Resource action: galera stop on galera-bundle-0 + * Resource action: galera-bundle-0 stop on undercloud + * Pseudo action: galera-bundle-master_stopped_0 + * Pseudo action: galera-bundle_stopped_0 + * Resource action: galera-bundle-docker-0 stop on undercloud + * Pseudo action: redis-bundle_stop_0 + * Pseudo action: redis-bundle-master_stop_0 + * Resource action: redis stop on redis-bundle-0 + * Resource action: redis-bundle-0 stop on undercloud + * Pseudo action: redis-bundle-master_stopped_0 + * Pseudo action: redis-bundle_stopped_0 + * Pseudo action: redis-bundle_start_0 + * Resource action: redis-bundle-docker-0 stop on undercloud + * Pseudo action: haproxy-bundle_stop_0 + * Resource action: haproxy-bundle-docker-0 stop on undercloud + * Pseudo action: haproxy-bundle_stopped_0 + * Resource action: ip-192.168.122.254 stop on undercloud + * Resource action: ip-192.168.122.250 stop on undercloud + * Resource action: ip-192.168.122.249 stop on undercloud + * Resource action: ip-192.168.122.253 stop on undercloud + * Resource action: ip-192.168.122.247 stop on undercloud + * Resource action: ip-192.168.122.248 stop on undercloud + * Cluster action: do_shutdown on undercloud + * Pseudo action: all_stopped + +Revised cluster status: +Online: [ undercloud ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Stopped + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Stopped + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Stopped + diff --git a/pengine/test10/bundle-order-partial-stop.xml b/pengine/test10/bundle-order-partial-stop.xml new file mode 100644 index 0000000..467082a --- /dev/null +++ b/pengine/test10/bundle-order-partial-stop.xml @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-partial.dot b/pengine/test10/bundle-order-partial.dot new file mode 100644 index 0000000..4b30191 --- /dev/null +++ b/pengine/test10/bundle-order-partial.dot @@ -0,0 +1,2 @@ +digraph "g" { +} diff --git a/pengine/test10/bundle-order-partial.exp b/pengine/test10/bundle-order-partial.exp new file mode 100644 index 0000000..56e315f --- /dev/null +++ b/pengine/test10/bundle-order-partial.exp @@ -0,0 +1 @@ + diff --git a/pengine/test10/bundle-order-partial.scores b/pengine/test10/bundle-order-partial.scores new file mode 100644 index 0000000..be91c96 --- /dev/null +++ b/pengine/test10/bundle-order-partial.scores @@ -0,0 +1,197 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera-bundle-master allocation score on undercloud: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on undercloud: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY +clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on undercloud: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:0 allocation score on undercloud: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle allocation score on undercloud: 0 +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on undercloud: INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on undercloud: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera:0 allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on undercloud: 0 +container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle allocation score on undercloud: 0 +container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 +container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +container_color: rabbitmq:0 allocation score on undercloud: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle allocation score on undercloud: 0 +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on undercloud: 0 +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on undercloud: 0 +galera:0 promotion score on galera-bundle-0: 100 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on undercloud: INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on undercloud: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on undercloud: INFINITY +native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on undercloud: INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY +native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +native_color: rabbitmq:0 allocation score on undercloud: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on undercloud: INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:0 allocation score on undercloud: -INFINITY +redis:0 promotion score on redis-bundle-0: 1 diff --git a/pengine/test10/bundle-order-partial.summary b/pengine/test10/bundle-order-partial.summary new file mode 100644 index 0000000..6155230 --- /dev/null +++ b/pengine/test10/bundle-order-partial.summary @@ -0,0 +1,47 @@ + +Current cluster status: +Online: [ undercloud ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Master undercloud + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + +Transition Summary: + +Executing cluster transition: + +Revised cluster status: +Online: [ undercloud ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Master undercloud + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + diff --git a/pengine/test10/bundle-order-partial.xml b/pengine/test10/bundle-order-partial.xml new file mode 100644 index 0000000..eda20bb --- /dev/null +++ b/pengine/test10/bundle-order-partial.xml @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot new file mode 100644 index 0000000..73947a5 --- /dev/null +++ b/pengine/test10/bundle-order-startup.dot @@ -0,0 +1,139 @@ +digraph "g" { +"galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] +"galera-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = bold] +"galera-bundle-master_start_0" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] +"galera:0_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle_running_0" -> "redis-bundle_start_0" [ style = bold] +"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] +"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"ip-192.168.122.247_monitor_0 undercloud" -> "ip-192.168.122.247_start_0 undercloud" [ style = bold] +"ip-192.168.122.247_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.247_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.247_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] +"ip-192.168.122.247_start_0 undercloud" -> "ip-192.168.122.247_monitor_10000 undercloud" [ style = bold] +"ip-192.168.122.247_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.248_monitor_0 undercloud" -> "ip-192.168.122.248_start_0 undercloud" [ style = bold] +"ip-192.168.122.248_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.248_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.248_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] +"ip-192.168.122.248_start_0 undercloud" -> "ip-192.168.122.248_monitor_10000 undercloud" [ style = bold] +"ip-192.168.122.248_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.249_monitor_0 undercloud" -> "ip-192.168.122.249_start_0 undercloud" [ style = bold] +"ip-192.168.122.249_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.249_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.249_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] +"ip-192.168.122.249_start_0 undercloud" -> "ip-192.168.122.249_monitor_10000 undercloud" [ style = bold] +"ip-192.168.122.249_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.250_monitor_0 undercloud" -> "ip-192.168.122.250_start_0 undercloud" [ style = bold] +"ip-192.168.122.250_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.250_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.250_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] +"ip-192.168.122.250_start_0 undercloud" -> "ip-192.168.122.250_monitor_10000 undercloud" [ style = bold] +"ip-192.168.122.250_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.253_monitor_0 undercloud" -> "ip-192.168.122.253_start_0 undercloud" [ style = bold] +"ip-192.168.122.253_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.253_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.253_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] +"ip-192.168.122.253_start_0 undercloud" -> "ip-192.168.122.253_monitor_10000 undercloud" [ style = bold] +"ip-192.168.122.253_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.254_monitor_0 undercloud" -> "ip-192.168.122.254_start_0 undercloud" [ style = bold] +"ip-192.168.122.254_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.254_monitor_10000 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.254_start_0 undercloud" -> "haproxy-bundle_start_0" [ style = bold] +"ip-192.168.122.254_start_0 undercloud" -> "ip-192.168.122.254_monitor_10000 undercloud" [ style = bold] +"ip-192.168.122.254_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume-docker-0_monitor_0 undercloud" -> "openstack-cinder-volume-docker-0_start_0 undercloud" [ style = bold] +"openstack-cinder-volume-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume-docker-0_start_0 undercloud" -> "openstack-cinder-volume-docker-0_monitor_60000 undercloud" [ style = bold] +"openstack-cinder-volume-docker-0_start_0 undercloud" -> "openstack-cinder-volume_running_0" [ style = bold] +"openstack-cinder-volume-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume_running_0" [ style=bold color="green" fontcolor="orange"] +"openstack-cinder-volume_start_0" -> "openstack-cinder-volume-docker-0_start_0 undercloud" [ style = bold] +"openstack-cinder-volume_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq-bundle-0_monitor_60000 undercloud" [ style = bold] +"rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle-0_start_0 undercloud" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = bold] +"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-docker-0_monitor_0 undercloud" -> "rabbitmq-bundle-docker-0_start_0 undercloud" [ style = bold] +"rabbitmq-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-0_start_0 undercloud" [ style = bold] +"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold] +"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-docker-0_start_0 undercloud" [ style = bold] +"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] +"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = bold] +"rabbitmq:0_start_0 rabbitmq-bundle-0" -> "rabbitmq:0_monitor_10000 rabbitmq-bundle-0" [ style = bold] +"rabbitmq:0_start_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-0_start_0 undercloud" -> "redis-bundle-0_monitor_60000 undercloud" [ style = bold] +"redis-bundle-0_start_0 undercloud" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 undercloud" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] +"redis-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] +"redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"redis-bundle-docker-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = bold] +"redis-bundle-master_start_0" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_running_0" -> "galera-bundle_start_0" [ style = bold] +"redis-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_start_0" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] +"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] +"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis:0_monitor_45000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis:0_monitor_60000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis:0_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = bold] +"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] +"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] +"redis:0_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp new file mode 100644 index 0000000..51d108d --- /dev/null +++ b/pengine/test10/bundle-order-startup.exp @@ -0,0 +1,825 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-startup.scores b/pengine/test10/bundle-order-startup.scores new file mode 100644 index 0000000..565b47e --- /dev/null +++ b/pengine/test10/bundle-order-startup.scores @@ -0,0 +1,197 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera-bundle-master allocation score on undercloud: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on undercloud: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY +clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on undercloud: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:0 allocation score on undercloud: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle allocation score on undercloud: 0 +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on undercloud: 0 +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on undercloud: 0 +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on undercloud: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera:0 allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on undercloud: 0 +container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: 0 +container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle allocation score on undercloud: 0 +container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on undercloud: 0 +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 +container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: 0 +container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq:0 allocation score on undercloud: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle allocation score on undercloud: 0 +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on undercloud: 0 +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on undercloud: 0 +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on undercloud: 0 +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on undercloud: 0 +galera:0 promotion score on galera-bundle-0: -1 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on undercloud: 10000 +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on undercloud: 0 +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on undercloud: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on undercloud: 0 +native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on undercloud: 0 +native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on undercloud: 0 +native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on undercloud: 0 +native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on undercloud: 0 +native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on undercloud: 0 +native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on undercloud: 0 +native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: 0 +native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on undercloud: 10000 +native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: 0 +native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +native_color: rabbitmq:0 allocation score on undercloud: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on undercloud: 10000 +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on undercloud: 0 +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:0 allocation score on undercloud: -INFINITY +redis:0 promotion score on redis-bundle-0: -1 diff --git a/pengine/test10/bundle-order-startup.summary b/pengine/test10/bundle-order-startup.summary new file mode 100644 index 0000000..b5c2091 --- /dev/null +++ b/pengine/test10/bundle-order-startup.summary @@ -0,0 +1,126 @@ + +Current cluster status: +Online: [ undercloud ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Stopped + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Stopped + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Stopped + +Transition Summary: + * Start rabbitmq-bundle-docker-0 (undercloud) + * Start rabbitmq-bundle-0 (undercloud) + * Start rabbitmq:0 (rabbitmq-bundle-0) + * Start galera-bundle-docker-0 (undercloud) + * Start galera-bundle-0 (undercloud) + * Start galera:0 (galera-bundle-0) + * Start redis-bundle-docker-0 (undercloud) + * Start redis-bundle-0 (undercloud) + * Start redis:0 (redis-bundle-0) + * Start ip-192.168.122.254 (undercloud) + * Start ip-192.168.122.250 (undercloud) + * Start ip-192.168.122.249 (undercloud) + * Start ip-192.168.122.253 (undercloud) + * Start ip-192.168.122.247 (undercloud) + * Start ip-192.168.122.248 (undercloud) + * Start haproxy-bundle-docker-0 (undercloud) + * Start openstack-cinder-volume-docker-0 (undercloud) + +Executing cluster transition: + * Resource action: rabbitmq-bundle-docker-0 monitor on undercloud + * Resource action: galera-bundle-docker-0 monitor on undercloud + * Resource action: redis-bundle-docker-0 monitor on undercloud + * Resource action: ip-192.168.122.254 monitor on undercloud + * Resource action: ip-192.168.122.250 monitor on undercloud + * Resource action: ip-192.168.122.249 monitor on undercloud + * Resource action: ip-192.168.122.253 monitor on undercloud + * Resource action: ip-192.168.122.247 monitor on undercloud + * Resource action: ip-192.168.122.248 monitor on undercloud + * Resource action: haproxy-bundle-docker-0 monitor on undercloud + * Resource action: openstack-cinder-volume-docker-0 monitor on undercloud + * Pseudo action: openstack-cinder-volume_start_0 + * Pseudo action: rabbitmq-bundle_start_0 + * Resource action: rabbitmq-bundle-docker-0 start on undercloud + * Resource action: rabbitmq-bundle-0 start on undercloud + * Resource action: ip-192.168.122.254 start on undercloud + * Resource action: ip-192.168.122.250 start on undercloud + * Resource action: ip-192.168.122.249 start on undercloud + * Resource action: ip-192.168.122.253 start on undercloud + * Resource action: ip-192.168.122.247 start on undercloud + * Resource action: ip-192.168.122.248 start on undercloud + * Resource action: openstack-cinder-volume-docker-0 start on undercloud + * Pseudo action: openstack-cinder-volume_running_0 + * Pseudo action: haproxy-bundle_start_0 + * Pseudo action: rabbitmq-bundle-clone_start_0 + * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 + * Resource action: rabbitmq-bundle-docker-0 monitor=60000 on undercloud + * Resource action: rabbitmq-bundle-0 monitor=60000 on undercloud + * Resource action: ip-192.168.122.254 monitor=10000 on undercloud + * Resource action: ip-192.168.122.250 monitor=10000 on undercloud + * Resource action: ip-192.168.122.249 monitor=10000 on undercloud + * Resource action: ip-192.168.122.253 monitor=10000 on undercloud + * Resource action: ip-192.168.122.247 monitor=10000 on undercloud + * Resource action: ip-192.168.122.248 monitor=10000 on undercloud + * Resource action: haproxy-bundle-docker-0 start on undercloud + * Resource action: openstack-cinder-volume-docker-0 monitor=60000 on undercloud + * Pseudo action: haproxy-bundle_running_0 + * Pseudo action: redis-bundle_start_0 + * Pseudo action: rabbitmq-bundle-clone_running_0 + * Pseudo action: rabbitmq-bundle_running_0 + * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 + * Resource action: redis-bundle-docker-0 start on undercloud + * Resource action: redis-bundle-0 start on undercloud + * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud + * Pseudo action: redis-bundle-master_start_0 + * Resource action: redis:0 start on redis-bundle-0 + * Resource action: redis-bundle-docker-0 monitor=60000 on undercloud + * Resource action: redis-bundle-0 monitor=60000 on undercloud + * Pseudo action: redis-bundle-master_running_0 + * Pseudo action: redis-bundle_running_0 + * Pseudo action: galera-bundle_start_0 + * Resource action: galera-bundle-docker-0 start on undercloud + * Resource action: galera-bundle-0 start on undercloud + * Resource action: redis:0 monitor=60000 on redis-bundle-0 + * Resource action: redis:0 monitor=45000 on redis-bundle-0 + * Pseudo action: galera-bundle-master_start_0 + * Resource action: galera:0 start on galera-bundle-0 + * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud + * Resource action: galera-bundle-0 monitor=60000 on undercloud + * Pseudo action: galera-bundle-master_running_0 + * Pseudo action: galera-bundle_running_0 + * Resource action: galera:0 monitor=30000 on galera-bundle-0 + * Resource action: galera:0 monitor=20000 on galera-bundle-0 + +Revised cluster status: +Online: [ undercloud ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Slave undercloud + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Slave undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + diff --git a/pengine/test10/bundle-order-startup.xml b/pengine/test10/bundle-order-startup.xml new file mode 100644 index 0000000..3e2e8f6 --- /dev/null +++ b/pengine/test10/bundle-order-startup.xml @@ -0,0 +1,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-stop.dot b/pengine/test10/bundle-order-stop.dot new file mode 100644 index 0000000..235b634 --- /dev/null +++ b/pengine/test10/bundle-order-stop.dot @@ -0,0 +1,194 @@ +digraph "g" { +"Cancel galera_monitor_10000 galera-bundle-0" -> "galera_demote_0 galera-bundle-0" [ style = bold] +"Cancel galera_monitor_10000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"Cancel redis_monitor_20000 redis-bundle-0" -> "redis_demote_0 redis-bundle-0" [ style = bold] +"Cancel redis_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"all_stopped" [ style=bold color="green" fontcolor="orange"] +"do_shutdown undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"galera-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"galera-bundle-0_stop_0 undercloud" -> "galera-bundle-docker-0_stop_0 undercloud" [ style = bold] +"galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-master_demote_0" -> "galera-bundle-master_demoted_0" [ style = bold] +"galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_demoted_0" -> "galera-bundle-master_start_0" [ style = dashed] +"galera-bundle-master_demoted_0" -> "galera-bundle-master_stop_0" [ style = bold] +"galera-bundle-master_demoted_0" -> "galera-bundle_demoted_0" [ style = bold] +"galera-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] +"galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] +"galera-bundle-master_start_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle-master_stop_0" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera-bundle-master_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_stopped_0" -> "galera-bundle-master_start_0" [ style = dashed] +"galera-bundle-master_stopped_0" -> "galera-bundle_stopped_0" [ style = bold] +"galera-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_demote_0" -> "galera-bundle-master_demote_0" [ style = bold] +"galera-bundle_demote_0" -> "galera-bundle_demoted_0" [ style = bold] +"galera-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] +"galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] +"galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] +"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] +"galera_demote_0 galera-bundle-0" -> "galera-bundle-master_demoted_0" [ style = bold] +"galera_demote_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] +"galera_demote_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] +"galera_demote_0 galera-bundle-0" -> "galera_stop_0 galera-bundle-0" [ style = bold] +"galera_demote_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] +"galera_start_0 galera-bundle-0" -> "galera_monitor_20000 galera-bundle-0" [ style = dashed] +"galera_start_0 galera-bundle-0" -> "galera_monitor_30000 galera-bundle-0" [ style = dashed] +"galera_start_0 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera_stop_0 galera-bundle-0" -> "all_stopped" [ style = bold] +"galera_stop_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] +"galera_stop_0 galera-bundle-0" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera_stop_0 galera-bundle-0" -> "galera_start_0 galera-bundle-0" [ style = dashed] +"galera_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"haproxy-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"haproxy-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle_stopped_0" [ style = bold] +"haproxy-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle_stop_0" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.247_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.248_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.249_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.250_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.253_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" -> "ip-192.168.122.254_stop_0 undercloud" [ style = bold] +"haproxy-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"ip-192.168.122.247_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.247_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.247_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.247_stop_0 undercloud" -> "ip-192.168.122.247_start_0 " [ style = dashed] +"ip-192.168.122.247_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.248_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.248_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.248_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.248_stop_0 undercloud" -> "ip-192.168.122.248_start_0 " [ style = dashed] +"ip-192.168.122.248_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.249_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.249_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.249_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.249_stop_0 undercloud" -> "ip-192.168.122.249_start_0 " [ style = dashed] +"ip-192.168.122.249_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.250_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.250_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.250_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.250_stop_0 undercloud" -> "ip-192.168.122.250_start_0 " [ style = dashed] +"ip-192.168.122.250_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.253_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.253_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.253_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.253_stop_0 undercloud" -> "ip-192.168.122.253_start_0 " [ style = dashed] +"ip-192.168.122.253_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"ip-192.168.122.254_start_0 " [ style=dashed color="red" fontcolor="black"] +"ip-192.168.122.254_stop_0 undercloud" -> "all_stopped" [ style = bold] +"ip-192.168.122.254_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"ip-192.168.122.254_stop_0 undercloud" -> "ip-192.168.122.254_start_0 " [ style = dashed] +"ip-192.168.122.254_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"openstack-cinder-volume-docker-0_stop_0 undercloud" -> "openstack-cinder-volume_stopped_0" [ style = bold] +"openstack-cinder-volume-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"openstack-cinder-volume_stop_0" -> "openstack-cinder-volume-docker-0_stop_0 undercloud" [ style = bold] +"openstack-cinder-volume_stop_0" [ style=bold color="green" fontcolor="orange"] +"openstack-cinder-volume_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] +"rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] +"rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] +"rabbitmq-bundle-clone_start_0" [ style=dashed color="red" fontcolor="orange"] +"rabbitmq-bundle-clone_stop_0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] +"rabbitmq-bundle-clone_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle-clone_stop_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle-clone_start_0" [ style = dashed] +"rabbitmq-bundle-clone_stopped_0" -> "rabbitmq-bundle_stopped_0" [ style = bold] +"rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] +"rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] +"rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] +"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] +"rabbitmq_start_0 rabbitmq-bundle-0" -> "rabbitmq_monitor_10000 rabbitmq-bundle-0" [ style = dashed] +"rabbitmq_start_0 rabbitmq-bundle-0" [ style=dashed color="red" fontcolor="black"] +"rabbitmq_stop_0 rabbitmq-bundle-0" -> "all_stopped" [ style = bold] +"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-0_stop_0 undercloud" [ style = bold] +"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq-bundle-clone_stopped_0" [ style = bold] +"rabbitmq_stop_0 rabbitmq-bundle-0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] +"rabbitmq_stop_0 rabbitmq-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"redis-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"redis-bundle-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] +"redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] +"redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_demoted_0" -> "redis-bundle-master_start_0" [ style = dashed] +"redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] +"redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] +"redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] +"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] +"redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] +"redis-bundle-master_start_0" [ style=dashed color="red" fontcolor="orange"] +"redis-bundle-master_stop_0" -> "redis-bundle-master_stopped_0" [ style = bold] +"redis-bundle-master_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_stopped_0" -> "redis-bundle-master_start_0" [ style = dashed] +"redis-bundle-master_stopped_0" -> "redis-bundle_stopped_0" [ style = bold] +"redis-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] +"redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] +"redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] +"redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] +"redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] +"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] +"redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] +"redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] +"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] +"redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] +"redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] +"redis_demote_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] +"redis_demote_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] +"redis_demote_0 redis-bundle-0" -> "redis_stop_0 redis-bundle-0" [ style = bold] +"redis_demote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis_monitor_45000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] +"redis_monitor_60000 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] +"redis_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = dashed] +"redis_start_0 redis-bundle-0" -> "redis_monitor_45000 redis-bundle-0" [ style = dashed] +"redis_start_0 redis-bundle-0" -> "redis_monitor_60000 redis-bundle-0" [ style = dashed] +"redis_start_0 redis-bundle-0" [ style=dashed color="red" fontcolor="black"] +"redis_stop_0 redis-bundle-0" -> "all_stopped" [ style = bold] +"redis_stop_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] +"redis_stop_0 redis-bundle-0" -> "redis-bundle-master_stopped_0" [ style = bold] +"redis_stop_0 redis-bundle-0" -> "redis_start_0 redis-bundle-0" [ style = dashed] +"redis_stop_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp new file mode 100644 index 0000000..d085433 --- /dev/null +++ b/pengine/test10/bundle-order-stop.exp @@ -0,0 +1,734 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-stop.scores b/pengine/test10/bundle-order-stop.scores new file mode 100644 index 0000000..a662f42 --- /dev/null +++ b/pengine/test10/bundle-order-stop.scores @@ -0,0 +1,199 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera-bundle-master allocation score on undercloud: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on undercloud: -INFINITY +clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: rabbitmq-bundle-clone allocation score on undercloud: -INFINITY +clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +clone_color: rabbitmq:0 allocation score on undercloud: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on undercloud: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:0 allocation score on undercloud: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle allocation score on undercloud: 0 +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on undercloud: INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on undercloud: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera:0 allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle allocation score on undercloud: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: openstack-cinder-volume allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume allocation score on undercloud: 0 +container_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: openstack-cinder-volume-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle allocation score on undercloud: 0 +container_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 +container_color: rabbitmq-bundle-clone allocation score on undercloud: 0 +container_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: rabbitmq-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +container_color: rabbitmq:0 allocation score on undercloud: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle allocation score on undercloud: 0 +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on undercloud: INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on undercloud: 0 +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on undercloud: 0 +galera:0 promotion score on galera-bundle-0: 100 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on undercloud: INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on undercloud: -INFINITY +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on undercloud: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.247 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.247 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.248 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.248 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.249 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.249 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.250 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.250 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.253 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.253 allocation score on undercloud: -INFINITY +native_color: ip-192.168.122.254 allocation score on galera-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on redis-bundle-0: -INFINITY +native_color: ip-192.168.122.254 allocation score on undercloud: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: openstack-cinder-volume-docker-0 allocation score on undercloud: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-0 allocation score on undercloud: INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: rabbitmq-bundle-docker-0 allocation score on undercloud: -INFINITY +native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY +native_color: rabbitmq:0 allocation score on undercloud: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on undercloud: INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on undercloud: -INFINITY +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:0 allocation score on undercloud: -INFINITY +redis:0 promotion score on redis-bundle-0: 1 diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary new file mode 100644 index 0000000..bd6f937 --- /dev/null +++ b/pengine/test10/bundle-order-stop.summary @@ -0,0 +1,114 @@ + +Current cluster status: +Online: [ undercloud ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 redis-bundle-0:redis-bundle-docker-0 ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started undercloud + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Master undercloud + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master undercloud + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Started undercloud + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Started undercloud + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started undercloud + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started undercloud + +Transition Summary: + * Shutdown undercloud + * Stop rabbitmq-bundle-docker-0 (undercloud) + * Stop rabbitmq-bundle-0 (undercloud) + * Stop rabbitmq:0 (Started rabbitmq-bundle-0) + * Stop galera-bundle-docker-0 (undercloud) + * Stop galera-bundle-0 (undercloud) + * Demote galera:0 (Master -> Slave galera-bundle-0) + * Restart galera:0 (Slave galera-bundle-0) + * Stop redis-bundle-docker-0 (undercloud) + * Stop redis-bundle-0 (undercloud) + * Demote redis:0 (Master -> Slave redis-bundle-0) + * Restart redis:0 (Slave redis-bundle-0) + * Stop ip-192.168.122.254 (undercloud) + * Stop ip-192.168.122.250 (undercloud) + * Stop ip-192.168.122.249 (undercloud) + * Stop ip-192.168.122.253 (undercloud) + * Stop ip-192.168.122.247 (undercloud) + * Stop ip-192.168.122.248 (undercloud) + * Stop haproxy-bundle-docker-0 (undercloud) + * Stop openstack-cinder-volume-docker-0 (undercloud) + +Executing cluster transition: + * Resource action: galera cancel=10000 on galera-bundle-0 + * Resource action: redis cancel=20000 on redis-bundle-0 + * Pseudo action: openstack-cinder-volume_stop_0 + * Pseudo action: redis-bundle_demote_0 + * Pseudo action: redis-bundle-master_demote_0 + * Pseudo action: galera-bundle_demote_0 + * Pseudo action: galera-bundle-master_demote_0 + * Pseudo action: rabbitmq-bundle_stop_0 + * Resource action: galera demote on galera-bundle-0 + * Resource action: redis demote on redis-bundle-0 + * Resource action: openstack-cinder-volume-docker-0 stop on undercloud + * Pseudo action: openstack-cinder-volume_stopped_0 + * Pseudo action: redis-bundle-master_demoted_0 + * Pseudo action: galera-bundle-master_demoted_0 + * Pseudo action: rabbitmq-bundle-clone_stop_0 + * Resource action: rabbitmq stop on rabbitmq-bundle-0 + * Resource action: rabbitmq-bundle-0 stop on undercloud + * Pseudo action: redis-bundle_demoted_0 + * Pseudo action: galera-bundle_demoted_0 + * Pseudo action: galera-bundle_stop_0 + * Pseudo action: rabbitmq-bundle-clone_stopped_0 + * Pseudo action: rabbitmq-bundle_stopped_0 + * Resource action: rabbitmq-bundle-docker-0 stop on undercloud + * Pseudo action: galera-bundle-master_stop_0 + * Resource action: galera stop on galera-bundle-0 + * Resource action: galera-bundle-0 stop on undercloud + * Pseudo action: galera-bundle-master_stopped_0 + * Pseudo action: galera-bundle_stopped_0 + * Resource action: galera-bundle-docker-0 stop on undercloud + * Pseudo action: redis-bundle_stop_0 + * Pseudo action: redis-bundle-master_stop_0 + * Resource action: redis stop on redis-bundle-0 + * Resource action: redis-bundle-0 stop on undercloud + * Pseudo action: redis-bundle-master_stopped_0 + * Pseudo action: redis-bundle_stopped_0 + * Pseudo action: redis-bundle_start_0 + * Resource action: redis-bundle-docker-0 stop on undercloud + * Pseudo action: haproxy-bundle_stop_0 + * Resource action: haproxy-bundle-docker-0 stop on undercloud + * Pseudo action: haproxy-bundle_stopped_0 + * Resource action: ip-192.168.122.254 stop on undercloud + * Resource action: ip-192.168.122.250 stop on undercloud + * Resource action: ip-192.168.122.249 stop on undercloud + * Resource action: ip-192.168.122.253 stop on undercloud + * Resource action: ip-192.168.122.247 stop on undercloud + * Resource action: ip-192.168.122.248 stop on undercloud + * Cluster action: do_shutdown on undercloud + * Pseudo action: all_stopped + +Revised cluster status: +Online: [ undercloud ] + + Docker container: rabbitmq-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest] + rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Stopped + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Stopped + ip-192.168.122.254 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.250 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.249 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.253 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.247 (ocf::heartbeat:IPaddr2): Stopped + ip-192.168.122.248 (ocf::heartbeat:IPaddr2): Stopped + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped + Docker container: openstack-cinder-volume [192.168.24.1:8787/tripleoupstream/centos-binary-cinder-volume:latest] + openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Stopped + diff --git a/pengine/test10/bundle-order-stop.xml b/pengine/test10/bundle-order-stop.xml new file mode 100644 index 0000000..467082a --- /dev/null +++ b/pengine/test10/bundle-order-stop.xml @@ -0,0 +1,421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 1.8.3.1 From 00c0cda9226b04a9a95e78b9bff63419bf3b4e47 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Thu, 15 Jun 2017 14:05:45 +1000 Subject: [PATCH 3/8] PE: Basic inter-bundle ordering when both sides have children --- pengine/container.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/pengine/container.c b/pengine/container.c index d648e0f..a39aebf 100644 --- a/pengine/container.c +++ b/pengine/container.c @@ -396,15 +396,76 @@ container_action_flags(action_t * action, node_t * node) return flags; } - enum pe_graph_flags container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type) { + gboolean current = FALSE; enum pe_graph_flags changed = pe_graph_none; + container_variant_data_t *first_data = NULL; + container_variant_data_t *then_data = NULL; + // At the point we need to force container X to stop because // resource Y needs to stop, here is where we'd implement that + crm_trace("%s -> %s", first->uuid, then->uuid); + if(first->rsc == NULL || then->rsc == NULL) { + return changed; + + } else if(first->rsc->variant != then->rsc->variant) { + return changed; // For now + } + + /* Fix this - lazy */ + if (crm_ends_with(first->uuid, "_stopped_0") + || crm_ends_with(first->uuid, "_demoted_0")) { + current = TRUE; + } + + get_container_variant_data(first_data, first->rsc); + get_container_variant_data(then_data, then->rsc); + + if(first_data->child == NULL || then_data->child == NULL) { + return changed; // For now + } + + for (GListPtr gIter = then_data->tuples; gIter != NULL; gIter = gIter->next) { + container_grouping_t *tuple = (container_grouping_t *)gIter->data; + + resource_t *first_child = find_compatible_child(tuple->docker, first_data->child, RSC_ROLE_UNKNOWN, current); + if (first_child == NULL && current) { + crm_trace("Ignore"); + + } else if (first_child == NULL) { + crm_debug("No match found for %s (%d / %s / %s)", tuple->child->id, current, first->uuid, then->uuid); + + /* Me no like this hack - but what else can we do? + * + * If there is no-one active or about to be active + * on the same node as then_child, then they must + * not be allowed to start + */ + if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) { + pe_rsc_info(then->rsc, "Inhibiting %s from being active", tuple->child->id); + if(assign_node(tuple->child, NULL, TRUE)) { + changed |= pe_graph_updated_then; + } + } + + } else { + enum action_tasks task = get_complex_task(first_child, first->task, TRUE); + pe_action_t *first_action = find_first_action(first_child->actions, NULL, task2text(task), node); + pe_action_t *then_action = find_first_action(tuple->child->actions, NULL, then->task, node); + + if (order_actions(first_action, then_action, type)) { + crm_debug("Created constraint for %s -> %s", first_action->uuid, then_action->uuid); + changed |= (pe_graph_updated_first | pe_graph_updated_then); + } + changed |= tuple->child->cmds->update_actions(first_action, then_action, node, + first_child->cmds->action_flags(first_action, node), + filter, type); + } + } return changed; } -- 1.8.3.1 From 45fa91e049629a22fd69310e34235b5422b87146 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Fri, 16 Jun 2017 13:33:55 +1000 Subject: [PATCH 4/8] Fix: PE: Functional inter-bundle ordering when either side has no child Also, force containers to restart if they are found active before one of their dependancies. --- pengine/clone.c | 34 ++--- pengine/container.c | 85 ++++++++---- pengine/graph.c | 11 +- pengine/master.c | 5 +- pengine/test10/bundle-order-partial-start-2.dot | 21 +++ pengine/test10/bundle-order-partial-start-2.exp | 149 ++++++++++++++++++--- .../test10/bundle-order-partial-start-2.summary | 9 ++ pengine/test10/bundle-order-partial-start.dot | 1 + pengine/test10/bundle-order-partial-start.exp | 3 + pengine/test10/bundle-order-partial-stop.dot | 19 ++- pengine/test10/bundle-order-partial-stop.exp | 47 +++---- pengine/test10/bundle-order-partial-stop.summary | 1 - pengine/test10/bundle-order-startup.dot | 2 + pengine/test10/bundle-order-startup.exp | 6 + pengine/test10/bundle-order-stop.dot | 19 ++- pengine/test10/bundle-order-stop.exp | 47 +++---- pengine/test10/bundle-order-stop.summary | 1 - pengine/utils.h | 4 +- 18 files changed, 331 insertions(+), 133 deletions(-) diff --git a/pengine/clone.c b/pengine/clone.c index a51677a..a79271e 100644 --- a/pengine/clone.c +++ b/pengine/clone.c @@ -946,7 +946,7 @@ assign_node(resource_t * rsc, node_t * node, gboolean force) static resource_t * find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, - enum rsc_role_e filter, gboolean current) + GListPtr children, enum rsc_role_e filter, gboolean current) { GListPtr gIter = NULL; @@ -958,8 +958,7 @@ find_compatible_child_by_node(resource_t * local_child, node_t * local_node, res crm_trace("Looking for compatible child from %s for %s on %s", local_child->id, rsc->id, local_node->details->uname); - gIter = rsc->children; - for (; gIter != NULL; gIter = gIter->next) { + for (gIter = children; gIter != NULL; gIter = gIter->next) { resource_t *child_rsc = (resource_t *) gIter->data; if(is_child_compatible(child_rsc, local_node, filter, current)) { @@ -1003,8 +1002,7 @@ is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e } resource_t * -find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_e filter, - gboolean current) +find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr children, enum rsc_role_e filter, gboolean current) { resource_t *pair = NULL; GListPtr gIter = NULL; @@ -1013,7 +1011,7 @@ find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_ local_node = local_child->fns->location(local_child, NULL, current); if (local_node) { - return find_compatible_child_by_node(local_child, local_node, rsc, filter, current); + return find_compatible_child_by_node(local_child, local_node, rsc, children, filter, current); } scratch = g_hash_table_get_values(local_child->allowed_nodes); @@ -1023,7 +1021,7 @@ find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_ for (; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; - pair = find_compatible_child_by_node(local_child, node, rsc, filter, current); + pair = find_compatible_child_by_node(local_child, node, rsc, children, filter, current); if (pair) { goto done; } @@ -1084,7 +1082,7 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation } else if (do_interleave) { resource_t *rh_child = NULL; - rh_child = find_compatible_child(rsc_lh, rsc_rh, RSC_ROLE_UNKNOWN, FALSE); + rh_child = find_compatible_child(rsc_lh, rsc_rh, rsc_rh->children, RSC_ROLE_UNKNOWN, FALSE); if (rh_child) { pe_rsc_debug(rsc_rh, "Pairing %s with %s", rsc_lh->id, rh_child->id); @@ -1167,7 +1165,7 @@ clone_child_action(action_t * action) } enum pe_action_flags -clone_action_flags(action_t * action, node_t * node) +summary_action_flags(action_t * action, GListPtr children, node_t * node) { GListPtr gIter = NULL; gboolean any_runnable = FALSE; @@ -1176,15 +1174,13 @@ clone_action_flags(action_t * action, node_t * node) enum pe_action_flags flags = (pe_action_optional | pe_action_runnable | pe_action_pseudo); const char *task_s = task2text(task); - gIter = action->rsc->children; - for (; gIter != NULL; gIter = gIter->next) { + for (gIter = children; gIter != NULL; gIter = gIter->next) { action_t *child_action = NULL; resource_t *child = (resource_t *) gIter->data; - child_action = - find_first_action(child->actions, NULL, task_s, child->children ? NULL : node); - pe_rsc_trace(action->rsc, "Checking for %s in %s on %s", task_s, child->id, - node ? node->details->uname : "none"); + child_action = find_first_action(child->actions, NULL, task_s, child->children ? NULL : node); + pe_rsc_trace(action->rsc, "Checking for %s in %s on %s (%s)", task_s, child->id, + node ? node->details->uname : "none", child_action?child_action->uuid:"NA"); if (child_action) { enum pe_action_flags child_flags = child->cmds->action_flags(child_action, node); @@ -1223,6 +1219,12 @@ clone_action_flags(action_t * action, node_t * node) return flags; } +enum pe_action_flags +clone_action_flags(action_t * action, node_t * node) +{ + return summary_action_flags(action, action->rsc->children, node); +} + static enum pe_graph_flags clone_update_actions_interleave(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, enum pe_action_flags filter, @@ -1246,7 +1248,7 @@ clone_update_actions_interleave(action_t * first, action_t * then, node_t * node resource_t *then_child = (resource_t *) gIter->data; CRM_ASSERT(then_child != NULL); - first_child = find_compatible_child(then_child, first->rsc, RSC_ROLE_UNKNOWN, current); + first_child = find_compatible_child(then_child, first->rsc, first->rsc->children, RSC_ROLE_UNKNOWN, current); if (first_child == NULL && current) { crm_trace("Ignore"); diff --git a/pengine/container.c b/pengine/container.c index a39aebf..f3ea797 100644 --- a/pengine/container.c +++ b/pengine/container.c @@ -42,6 +42,19 @@ gint sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set); void distribute_children(resource_t *rsc, GListPtr children, GListPtr nodes, int max, int per_host_max, pe_working_set_t * data_set); +static GListPtr get_container_list(resource_t *rsc) +{ + GListPtr containers = NULL; + container_variant_data_t *data = NULL; + + get_container_variant_data(data, rsc); + for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { + container_grouping_t *tuple = (container_grouping_t *)gIter->data; + containers = g_list_append(containers, tuple->docker); + } + return containers; +} + node_t * container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) { @@ -54,11 +67,7 @@ container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) get_container_variant_data(container_data, rsc); set_bit(rsc->flags, pe_rsc_allocating); - - for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - containers = g_list_append(containers, tuple->docker); - } + containers = get_container_list(rsc); dump_node_scores(show_scores ? 0 : scores_log_level, rsc, __FUNCTION__, rsc->allowed_nodes); @@ -128,6 +137,7 @@ container_create_actions(resource_t * rsc, pe_working_set_t * data_set) CRM_CHECK(rsc != NULL, return); + containers = get_container_list(rsc); get_container_variant_data(container_data, rsc); for (GListPtr gIter = container_data->tuples; gIter != NULL; gIter = gIter->next) { container_grouping_t *tuple = (container_grouping_t *)gIter->data; @@ -138,7 +148,6 @@ container_create_actions(resource_t * rsc, pe_working_set_t * data_set) } if(tuple->docker) { tuple->docker->cmds->create_actions(tuple->docker, data_set); - containers = g_list_append(containers, tuple->docker); } if(tuple->remote) { tuple->remote->cmds->create_actions(tuple->remote, data_set); @@ -392,7 +401,18 @@ container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocatio enum pe_action_flags container_action_flags(action_t * action, node_t * node) { - enum pe_action_flags flags = (pe_action_optional | pe_action_runnable | pe_action_pseudo); + enum pe_action_flags flags = 0; + container_variant_data_t *data = NULL; + + get_container_variant_data(data, action->rsc); + if(data->child) { + flags = summary_action_flags(action, data->child->children, node); + + } else { + GListPtr containers = get_container_list(action->rsc); + flags = summary_action_flags(action, containers, node); + g_list_free(containers); + } return flags; } @@ -402,9 +422,8 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum { gboolean current = FALSE; enum pe_graph_flags changed = pe_graph_none; - container_variant_data_t *first_data = NULL; container_variant_data_t *then_data = NULL; - + GListPtr containers = NULL; // At the point we need to force container X to stop because // resource Y needs to stop, here is where we'd implement that @@ -422,22 +441,21 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum current = TRUE; } - get_container_variant_data(first_data, first->rsc); get_container_variant_data(then_data, then->rsc); - - if(first_data->child == NULL || then_data->child == NULL) { - return changed; // For now - } + containers = get_container_list(first->rsc); for (GListPtr gIter = then_data->tuples; gIter != NULL; gIter = gIter->next) { container_grouping_t *tuple = (container_grouping_t *)gIter->data; - resource_t *first_child = find_compatible_child(tuple->docker, first_data->child, RSC_ROLE_UNKNOWN, current); + /* We can't do the then_data->child->children trick here, + * since the node's wont match + */ + resource_t *first_child = find_compatible_child(tuple->docker, first->rsc, containers, RSC_ROLE_UNKNOWN, current); if (first_child == NULL && current) { crm_trace("Ignore"); } else if (first_child == NULL) { - crm_debug("No match found for %s (%d / %s / %s)", tuple->child->id, current, first->uuid, then->uuid); + crm_debug("No match found for %s (%d / %s / %s)", tuple->docker->id, current, first->uuid, then->uuid); /* Me no like this hack - but what else can we do? * @@ -446,27 +464,45 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum * not be allowed to start */ if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) { - pe_rsc_info(then->rsc, "Inhibiting %s from being active", tuple->child->id); - if(assign_node(tuple->child, NULL, TRUE)) { + pe_rsc_info(then->rsc, "Inhibiting %s from being active", tuple->docker->id); + if(assign_node(tuple->docker, NULL, TRUE)) { changed |= pe_graph_updated_then; } } } else { enum action_tasks task = get_complex_task(first_child, first->task, TRUE); + + /* Potentially we might want to invovle first_data->child + * if present, however we mostly just need the "you need + * to stop" signal to flow back up the ordering chain via + * the docker resources which are always present + * + * Almost certain to break if first->task or then->task is + * promote or demote + */ pe_action_t *first_action = find_first_action(first_child->actions, NULL, task2text(task), node); - pe_action_t *then_action = find_first_action(tuple->child->actions, NULL, then->task, node); + pe_action_t *then_action = find_first_action(tuple->docker->actions, NULL, then->task, node); if (order_actions(first_action, then_action, type)) { - crm_debug("Created constraint for %s -> %s", first_action->uuid, then_action->uuid); + crm_debug("Created constraint for %s (%d) -> %s (%d) %.6x", + first_action->uuid, is_set(first_action->flags, pe_action_optional), + then_action->uuid, is_set(then_action->flags, pe_action_optional), type); changed |= (pe_graph_updated_first | pe_graph_updated_then); } - changed |= tuple->child->cmds->update_actions(first_action, then_action, node, - first_child->cmds->action_flags(first_action, node), - filter, type); + if(first_action && then_action) { + changed |= tuple->docker->cmds->update_actions(first_action, then_action, node, + first_child->cmds->action_flags(first_action, node), + filter, type); + } else { + crm_err("Nothing found either for %s (%p) or %s (%p) %s", + first_child->id, first_action, + tuple->docker->id, then_action, task2text(task)); + } } } + g_list_free(containers); return changed; } @@ -492,11 +528,8 @@ container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) } if(container_data->child && (constraint->role_filter == RSC_ROLE_SLAVE || constraint->role_filter == RSC_ROLE_MASTER)) { - // Translate the node into container names running on that node - crm_err("Applying constraint %s", constraint->id); container_data->child->cmds->rsc_location(container_data->child, constraint); container_data->child->rsc_location = g_list_prepend(container_data->child->rsc_location, constraint); - crm_err("Added %d location constraints to %s", g_list_length(container_data->child->rsc_location), container_data->child->id); } } diff --git a/pengine/graph.c b/pengine/graph.c index c93745b..b774c71 100644 --- a/pengine/graph.c +++ b/pengine/graph.c @@ -231,7 +231,9 @@ graph_update_action(action_t * first, action_t * then, node_t * node, pe_action_optional, pe_order_implies_first); } else if (is_set(first_flags, pe_action_optional) == FALSE) { - pe_rsc_trace(first->rsc, "first unrunnable: %s then %s", first->uuid, then->uuid); + pe_rsc_trace(first->rsc, "first unrunnable: %s (%d) then %s (%d)", + first->uuid, is_set(first_flags, pe_action_optional), + then->uuid, is_set(then_flags, pe_action_optional)); if (update_action_flags(first, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__)) { changed |= pe_graph_updated_first; } @@ -240,7 +242,9 @@ graph_update_action(action_t * first, action_t * then, node_t * node, if (changed) { pe_rsc_trace(then->rsc, "implies left: %s then %s: changed", first->uuid, then->uuid); } else { - crm_trace("implies left: %s then %s", first->uuid, then->uuid); + crm_trace("implies left: %s (%d) then %s (%d)", + first->uuid, is_set(first_flags, pe_action_optional), + then->uuid, is_set(then_flags, pe_action_optional)); } } @@ -607,7 +611,8 @@ update_action(action_t * then) } if (changed & pe_graph_disable) { - crm_trace("Disabled constraint %s -> %s", other->action->uuid, then->uuid); + crm_trace("Disabled constraint %s -> %s in favor of %s -> %s", + other->action->uuid, then->uuid, first->uuid, then->uuid); clear_bit(changed, pe_graph_disable); other->type = pe_order_none; } diff --git a/pengine/master.c b/pengine/master.c index 93e5186..c15e740 100644 --- a/pengine/master.c +++ b/pengine/master.c @@ -153,8 +153,6 @@ static void apply_master_location(resource_t *child, GListPtr location_constrain int new_priority = merge_weights(child->priority, cons_node->weight); pe_rsc_trace(child, "\t%s[%s]: %d -> %d (%d)", child->id, cons_node->details->uname, child->priority, new_priority, cons_node->weight); - crm_err("\t%s[%s]: %d -> %d (%d)", child->id, cons_node->details->uname, - child->priority, new_priority, cons_node->weight); child->priority = new_priority; } } @@ -720,7 +718,6 @@ master_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) } apply_master_location(child_rsc, child_rsc->rsc_location, chosen); - crm_err("Applying %d location constraints for %s", g_list_length(rsc->rsc_location), rsc->id); apply_master_location(child_rsc, rsc->rsc_location, chosen); for (gIter2 = child_rsc->rsc_cons; gIter2 != NULL; gIter2 = gIter2->next) { @@ -1025,7 +1022,7 @@ master_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocatio g_list_free(rhs); } else if (constraint->role_lh == RSC_ROLE_MASTER) { - resource_t *rh_child = find_compatible_child(rsc_lh, rsc_rh, constraint->role_rh, FALSE); + resource_t *rh_child = find_compatible_child(rsc_lh, rsc_rh, rsc_rh->children, constraint->role_rh, FALSE); if (rh_child == NULL && constraint->score >= INFINITY) { pe_rsc_trace(rsc_lh, "%s can't be promoted %s", rsc_lh->id, constraint->id); diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot index 59a8b15..20afbe6 100644 --- a/pengine/test10/bundle-order-partial-start-2.dot +++ b/pengine/test10/bundle-order-partial-start-2.dot @@ -1,10 +1,30 @@ digraph "g" { +"all_stopped" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_start_0 undercloud" -> "galera-bundle-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"galera-bundle-0_stop_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] +"galera-bundle-0_stop_0 undercloud" -> "galera-bundle-docker-0_stop_0 undercloud" [ style = bold] +"galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] "galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] "galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = bold] "galera-bundle-master_start_0" -> "galera:0_start_0 galera-bundle-0" [ style = bold] "galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] "galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] "galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] "galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] "galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] @@ -16,6 +36,7 @@ digraph "g" { "haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp index 621332c..08f5084 100644 --- a/pengine/test10/bundle-order-partial-start-2.exp +++ b/pengine/test10/bundle-order-partial-start-2.exp @@ -34,6 +34,9 @@ + + + @@ -47,6 +50,9 @@ + + + @@ -60,12 +66,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -77,7 +175,7 @@ - + @@ -90,7 +188,7 @@ - + @@ -103,7 +201,7 @@ - + @@ -119,7 +217,7 @@ - + @@ -128,7 +226,7 @@ - + @@ -140,7 +238,7 @@ - + @@ -148,7 +246,7 @@ - + @@ -160,7 +258,7 @@ - + @@ -168,7 +266,7 @@ - + @@ -180,7 +278,7 @@ - + @@ -192,7 +290,7 @@ - + @@ -207,7 +305,7 @@ - + @@ -219,7 +317,7 @@ - + @@ -231,7 +329,7 @@ - + @@ -249,7 +347,7 @@ - + @@ -264,7 +362,7 @@ - + @@ -276,7 +374,7 @@ - + @@ -288,7 +386,7 @@ - + @@ -296,4 +394,19 @@ + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-partial-start-2.summary b/pengine/test10/bundle-order-partial-start-2.summary index 859ca25..5e3927c 100644 --- a/pengine/test10/bundle-order-partial-start-2.summary +++ b/pengine/test10/bundle-order-partial-start-2.summary @@ -22,21 +22,26 @@ Containers: [ galera-bundle-0:galera-bundle-docker-0 rabbitmq-bundle-0:rabbitmq- Transition Summary: * Start rabbitmq:0 (rabbitmq-bundle-0) + * Restart galera-bundle-docker-0 (Started undercloud) + * Restart galera-bundle-0 (Started undercloud) * Start galera:0 (galera-bundle-0) * Promote redis:0 (Slave -> Master redis-bundle-0) * Start haproxy-bundle-docker-0 (undercloud) Executing cluster transition: + * Resource action: galera-bundle-0 stop on undercloud * Resource action: haproxy-bundle-docker-0 monitor on undercloud * Pseudo action: haproxy-bundle_start_0 * Pseudo action: redis-bundle_promote_0 * Pseudo action: redis-bundle-master_promote_0 * Pseudo action: rabbitmq-bundle_start_0 + * Resource action: galera-bundle-docker-0 stop on undercloud * Resource action: redis promote on redis-bundle-0 * Resource action: haproxy-bundle-docker-0 start on undercloud * Pseudo action: haproxy-bundle_running_0 * Pseudo action: redis-bundle-master_promoted_0 * Pseudo action: rabbitmq-bundle-clone_start_0 + * Pseudo action: all_stopped * Resource action: rabbitmq:0 start on rabbitmq-bundle-0 * Resource action: redis monitor=20000 on redis-bundle-0 * Resource action: haproxy-bundle-docker-0 monitor=60000 on undercloud @@ -45,6 +50,10 @@ Executing cluster transition: * Pseudo action: rabbitmq-bundle_running_0 * Resource action: rabbitmq:0 monitor=10000 on rabbitmq-bundle-0 * Pseudo action: galera-bundle_start_0 + * Resource action: galera-bundle-docker-0 start on undercloud + * Resource action: galera-bundle-docker-0 monitor=60000 on undercloud + * Resource action: galera-bundle-0 start on undercloud + * Resource action: galera-bundle-0 monitor=60000 on undercloud * Pseudo action: galera-bundle-master_start_0 * Resource action: galera:0 start on galera-bundle-0 * Pseudo action: galera-bundle-master_running_0 diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot index 06c3620..c36ff04 100644 --- a/pengine/test10/bundle-order-partial-start.dot +++ b/pengine/test10/bundle-order-partial-start.dot @@ -30,6 +30,7 @@ digraph "g" { "haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp index b48bb03..4a5c01c 100644 --- a/pengine/test10/bundle-order-partial-start.exp +++ b/pengine/test10/bundle-order-partial-start.exp @@ -103,6 +103,9 @@ + + + diff --git a/pengine/test10/bundle-order-partial-stop.dot b/pengine/test10/bundle-order-partial-stop.dot index 235b634..af2493c 100644 --- a/pengine/test10/bundle-order-partial-stop.dot +++ b/pengine/test10/bundle-order-partial-stop.dot @@ -11,6 +11,7 @@ digraph "g" { "galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] "galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-master_demote_0" -> "galera-bundle-master_demoted_0" [ style = bold] "galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-0" [ style = bold] @@ -19,6 +20,7 @@ digraph "g" { "galera-bundle-master_demoted_0" -> "galera-bundle-master_stop_0" [ style = bold] "galera-bundle-master_demoted_0" -> "galera-bundle_demoted_0" [ style = bold] "galera-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = dashed] "galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] "galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] "galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] @@ -32,11 +34,16 @@ digraph "g" { "galera-bundle_demote_0" -> "galera-bundle-master_demote_0" [ style = bold] "galera-bundle_demote_0" -> "galera-bundle_demoted_0" [ style = bold] "galera-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_demoted_0" -> "galera-bundle_start_0" [ style = dashed] "galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] "galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] +"galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] "galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] "galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] "galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = dashed] "galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] "galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] "galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] @@ -110,6 +117,7 @@ digraph "g" { "rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] "rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] "rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] "rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] "rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] @@ -123,6 +131,7 @@ digraph "g" { "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] @@ -142,6 +151,7 @@ digraph "g" { "redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"redis-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] @@ -150,6 +160,7 @@ digraph "g" { "redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] "redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] "redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = dashed] "redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] "redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] "redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] @@ -163,16 +174,18 @@ digraph "g" { "redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] "redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] "redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] -"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] +"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = dashed] "redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] "redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_running_0" -> "galera-bundle_start_0" [ style = dashed] +"redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] -"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] "redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] -"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] +"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = dashed] "redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] "redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] "redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp index d085433..02a7372 100644 --- a/pengine/test10/bundle-order-partial-stop.exp +++ b/pengine/test10/bundle-order-partial-stop.exp @@ -173,6 +173,9 @@ + + + @@ -283,6 +286,9 @@ + + + @@ -505,22 +511,7 @@ - - - - - - - - - - - - - - - - + @@ -535,7 +526,7 @@ - + @@ -543,7 +534,7 @@ - + @@ -558,7 +549,7 @@ - + @@ -570,7 +561,7 @@ - + @@ -585,7 +576,7 @@ - + @@ -600,7 +591,7 @@ - + @@ -612,7 +603,7 @@ - + @@ -624,7 +615,7 @@ - + @@ -639,7 +630,7 @@ - + @@ -651,7 +642,7 @@ - + @@ -663,7 +654,7 @@ - + @@ -671,7 +662,7 @@ - + diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary index bd6f937..c341f4c 100644 --- a/pengine/test10/bundle-order-partial-stop.summary +++ b/pengine/test10/bundle-order-partial-stop.summary @@ -78,7 +78,6 @@ Executing cluster transition: * Resource action: redis-bundle-0 stop on undercloud * Pseudo action: redis-bundle-master_stopped_0 * Pseudo action: redis-bundle_stopped_0 - * Pseudo action: redis-bundle_start_0 * Resource action: redis-bundle-docker-0 stop on undercloud * Pseudo action: haproxy-bundle_stop_0 * Resource action: haproxy-bundle-docker-0 stop on undercloud diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot index 73947a5..4e60d79 100644 --- a/pengine/test10/bundle-order-startup.dot +++ b/pengine/test10/bundle-order-startup.dot @@ -32,6 +32,7 @@ digraph "g" { "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] "haproxy-bundle_running_0" -> "redis-bundle_start_0" [ style = bold] "haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] @@ -116,6 +117,7 @@ digraph "g" { "redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] "redis-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_monitor_60000 undercloud" [ style = bold] "redis-bundle-docker-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp index 51d108d..66ecb08 100644 --- a/pengine/test10/bundle-order-startup.exp +++ b/pengine/test10/bundle-order-startup.exp @@ -176,6 +176,9 @@ + + + @@ -291,6 +294,9 @@ + + + diff --git a/pengine/test10/bundle-order-stop.dot b/pengine/test10/bundle-order-stop.dot index 235b634..af2493c 100644 --- a/pengine/test10/bundle-order-stop.dot +++ b/pengine/test10/bundle-order-stop.dot @@ -11,6 +11,7 @@ digraph "g" { "galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] "galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-master_demote_0" -> "galera-bundle-master_demoted_0" [ style = bold] "galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-0" [ style = bold] @@ -19,6 +20,7 @@ digraph "g" { "galera-bundle-master_demoted_0" -> "galera-bundle-master_stop_0" [ style = bold] "galera-bundle-master_demoted_0" -> "galera-bundle_demoted_0" [ style = bold] "galera-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = dashed] "galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] "galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] "galera-bundle-master_start_0" -> "galera_start_0 galera-bundle-0" [ style = dashed] @@ -32,11 +34,16 @@ digraph "g" { "galera-bundle_demote_0" -> "galera-bundle-master_demote_0" [ style = bold] "galera-bundle_demote_0" -> "galera-bundle_demoted_0" [ style = bold] "galera-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_demoted_0" -> "galera-bundle_start_0" [ style = dashed] "galera-bundle_demoted_0" -> "galera-bundle_stop_0" [ style = bold] "galera-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] +"galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] "galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] "galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] "galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = dashed] "galera-bundle_stopped_0" -> "redis-bundle_stop_0" [ style = bold] "galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] "galera_demote_0 galera-bundle-0" -> "galera-bundle-0_stop_0 undercloud" [ style = bold] @@ -110,6 +117,7 @@ digraph "g" { "rabbitmq-bundle-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] "rabbitmq-bundle-0_stop_0 undercloud" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] "rabbitmq-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle_running_0" [ style = dashed] "rabbitmq-bundle-clone_running_0" [ style=dashed color="red" fontcolor="orange"] "rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = dashed] "rabbitmq-bundle-clone_start_0" -> "rabbitmq_start_0 rabbitmq-bundle-0" [ style = dashed] @@ -123,6 +131,7 @@ digraph "g" { "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] +"rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] @@ -142,6 +151,7 @@ digraph "g" { "redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"redis-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] @@ -150,6 +160,7 @@ digraph "g" { "redis-bundle-master_demoted_0" -> "redis-bundle-master_stop_0" [ style = bold] "redis-bundle-master_demoted_0" -> "redis-bundle_demoted_0" [ style = bold] "redis-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = dashed] "redis-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] "redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = dashed] "redis-bundle-master_start_0" -> "redis_start_0 redis-bundle-0" [ style = dashed] @@ -163,16 +174,18 @@ digraph "g" { "redis-bundle_demote_0" -> "redis-bundle-master_demote_0" [ style = bold] "redis-bundle_demote_0" -> "redis-bundle_demoted_0" [ style = bold] "redis-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] -"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = bold] +"redis-bundle_demoted_0" -> "redis-bundle_start_0" [ style = dashed] "redis-bundle_demoted_0" -> "redis-bundle_stop_0" [ style = bold] "redis-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_running_0" -> "galera-bundle_start_0" [ style = dashed] +"redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] -"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] "redis-bundle_stopped_0" -> "haproxy-bundle_stop_0" [ style = bold] -"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = bold] +"redis-bundle_stopped_0" -> "redis-bundle_start_0" [ style = dashed] "redis-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] "redis_demote_0 redis-bundle-0" -> "redis-bundle-0_stop_0 undercloud" [ style = bold] "redis_demote_0 redis-bundle-0" -> "redis-bundle-master_demoted_0" [ style = bold] diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp index d085433..02a7372 100644 --- a/pengine/test10/bundle-order-stop.exp +++ b/pengine/test10/bundle-order-stop.exp @@ -173,6 +173,9 @@ + + + @@ -283,6 +286,9 @@ + + + @@ -505,22 +511,7 @@ - - - - - - - - - - - - - - - - + @@ -535,7 +526,7 @@ - + @@ -543,7 +534,7 @@ - + @@ -558,7 +549,7 @@ - + @@ -570,7 +561,7 @@ - + @@ -585,7 +576,7 @@ - + @@ -600,7 +591,7 @@ - + @@ -612,7 +603,7 @@ - + @@ -624,7 +615,7 @@ - + @@ -639,7 +630,7 @@ - + @@ -651,7 +642,7 @@ - + @@ -663,7 +654,7 @@ - + @@ -671,7 +662,7 @@ - + diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary index bd6f937..c341f4c 100644 --- a/pengine/test10/bundle-order-stop.summary +++ b/pengine/test10/bundle-order-stop.summary @@ -78,7 +78,6 @@ Executing cluster transition: * Resource action: redis-bundle-0 stop on undercloud * Pseudo action: redis-bundle-master_stopped_0 * Pseudo action: redis-bundle_stopped_0 - * Pseudo action: redis-bundle_start_0 * Resource action: redis-bundle-docker-0 stop on undercloud * Pseudo action: haproxy-bundle_stop_0 * Resource action: haproxy-bundle-docker-0 stop on undercloud diff --git a/pengine/utils.h b/pengine/utils.h index 10e7201..1421166 100644 --- a/pengine/utils.h +++ b/pengine/utils.h @@ -50,11 +50,11 @@ extern void log_action(unsigned int log_level, const char *pre_text, action_t * action, gboolean details); extern gboolean can_run_any(GHashTable * nodes); -extern resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, +extern resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr children, enum rsc_role_e filter, gboolean current); gboolean is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e filter, gboolean current); bool assign_node(resource_t * rsc, node_t * node, gboolean force); - +enum pe_action_flags summary_action_flags(action_t * action, GListPtr children, node_t * node); enum filter_colocation_res { influence_nothing = 0, -- 1.8.3.1 From e083fa923274c908a8ef4b124a5d7e53caabd7f5 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Fri, 16 Jun 2017 14:47:37 +1000 Subject: [PATCH 5/8] Fix: PE: Default to non-interleaved bundle ordering for safety --- pengine/container.c | 89 +++++++++++++++++++----- pengine/test10/bundle-order-partial-start-2.dot | 2 +- pengine/test10/bundle-order-partial-start-2.exp | 6 +- pengine/test10/bundle-order-partial-start.dot | 2 +- pengine/test10/bundle-order-partial-start.exp | 6 +- pengine/test10/bundle-order-partial-stop.dot | 8 ++- pengine/test10/bundle-order-partial-stop.exp | 22 ++++-- pengine/test10/bundle-order-partial-stop.summary | 6 +- pengine/test10/bundle-order-startup.dot | 5 +- pengine/test10/bundle-order-startup.exp | 15 ++-- pengine/test10/bundle-order-stop.dot | 8 ++- pengine/test10/bundle-order-stop.exp | 22 ++++-- pengine/test10/bundle-order-stop.summary | 6 +- 13 files changed, 143 insertions(+), 54 deletions(-) diff --git a/pengine/container.c b/pengine/container.c index f3ea797..adee92a 100644 --- a/pengine/container.c +++ b/pengine/container.c @@ -209,13 +209,10 @@ container_internal_constraints(resource_t * rsc, pe_working_set_t * data_set) if(tuple->child) { order_stop_stop(rsc, tuple->child, pe_order_implies_first_printed); - - } else { - order_stop_stop(rsc, tuple->docker, pe_order_implies_first_printed); - new_rsc_order(tuple->docker, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); - new_rsc_order(tuple->docker, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed, - data_set); } + order_stop_stop(rsc, tuple->docker, pe_order_implies_first_printed); + new_rsc_order(tuple->docker, RSC_START, rsc, RSC_STARTED, pe_order_implies_then_printed, data_set); + new_rsc_order(tuple->docker, RSC_STOP, rsc, RSC_STOPPED, pe_order_implies_then_printed, data_set); if(tuple->ip) { tuple->ip->cmds->internal_constraints(tuple->ip, data_set); @@ -416,8 +413,8 @@ container_action_flags(action_t * action, node_t * node) return flags; } -enum pe_graph_flags -container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, +static enum pe_graph_flags +container_update_interleave_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type) { gboolean current = FALSE; @@ -425,22 +422,18 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum container_variant_data_t *then_data = NULL; GListPtr containers = NULL; - // At the point we need to force container X to stop because - // resource Y needs to stop, here is where we'd implement that - crm_trace("%s -> %s", first->uuid, then->uuid); - if(first->rsc == NULL || then->rsc == NULL) { - return changed; - - } else if(first->rsc->variant != then->rsc->variant) { - return changed; // For now - } - /* Fix this - lazy */ if (crm_ends_with(first->uuid, "_stopped_0") || crm_ends_with(first->uuid, "_demoted_0")) { current = TRUE; } + /* Eventually we may want to allow interleaving between bundles + * and clones, but for now assert both sides are bundles + */ + CRM_ASSERT(first->rsc->variant == pe_container); + CRM_ASSERT(then->rsc->variant == pe_container); + get_container_variant_data(then_data, then->rsc); containers = get_container_list(first->rsc); @@ -506,6 +499,66 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum return changed; } +enum pe_graph_flags +container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, + enum pe_action_flags filter, enum pe_ordering type) +{ + bool interleave = FALSE; + enum pe_graph_flags changed = pe_graph_none; + + crm_trace("%s -> %s", first->uuid, then->uuid); + + if(first->rsc == NULL || then->rsc == NULL) { + return changed; + + } else if(first->rsc->variant == then->rsc->variant) { + // When and how to turn on interleaving? + // interleave = TRUE; + } + + if(interleave) { + changed = container_update_interleave_actions(first, then, node, flags, filter, type); + + } else { + GListPtr gIter = then->rsc->children; + GListPtr containers = NULL; + + // Handle the 'primitive' ordering case + changed |= native_update_actions(first, then, node, flags, filter, type); + + // Now any children (or containers in the case of a bundle) + if(then->rsc->variant == pe_container) { + containers = get_container_list(then->rsc); + gIter = containers; + } + + for (; gIter != NULL; gIter = gIter->next) { + resource_t *then_child = (resource_t *) gIter->data; + enum pe_graph_flags then_child_changed = pe_graph_none; + action_t *then_child_action = find_first_action(then_child->actions, NULL, then->task, node); + + if (then_child_action) { + enum pe_action_flags then_child_flags = then_child->cmds->action_flags(then_child_action, node); + + if (is_set(then_child_flags, pe_action_runnable)) { + then_child_changed |= + then_child->cmds->update_actions(first, then_child_action, node, flags, filter, type); + } + changed |= then_child_changed; + if (then_child_changed & pe_graph_updated_then) { + for (GListPtr lpc = then_child_action->actions_after; lpc != NULL; lpc = lpc->next) { + action_wrapper_t *next = (action_wrapper_t *) lpc->data; + update_action(next->action); + } + } + } + } + + g_list_free(containers); + } + return changed; +} + void container_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) { diff --git a/pengine/test10/bundle-order-partial-start-2.dot b/pengine/test10/bundle-order-partial-start-2.dot index 20afbe6..b5ecaf5 100644 --- a/pengine/test10/bundle-order-partial-start-2.dot +++ b/pengine/test10/bundle-order-partial-start-2.dot @@ -13,6 +13,7 @@ digraph "g" { "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle_running_0" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] @@ -36,7 +37,6 @@ digraph "g" { "haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -"haproxy-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/bundle-order-partial-start-2.exp b/pengine/test10/bundle-order-partial-start-2.exp index 08f5084..a2740d7 100644 --- a/pengine/test10/bundle-order-partial-start-2.exp +++ b/pengine/test10/bundle-order-partial-start-2.exp @@ -90,9 +90,6 @@ - - - @@ -325,6 +322,9 @@ + + + diff --git a/pengine/test10/bundle-order-partial-start.dot b/pengine/test10/bundle-order-partial-start.dot index c36ff04..756acfd 100644 --- a/pengine/test10/bundle-order-partial-start.dot +++ b/pengine/test10/bundle-order-partial-start.dot @@ -10,6 +10,7 @@ digraph "g" { "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle_running_0" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] @@ -30,7 +31,6 @@ digraph "g" { "haproxy-bundle-docker-0_monitor_0 undercloud" -> "haproxy-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -"haproxy-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] diff --git a/pengine/test10/bundle-order-partial-start.exp b/pengine/test10/bundle-order-partial-start.exp index 4a5c01c..ebd5785 100644 --- a/pengine/test10/bundle-order-partial-start.exp +++ b/pengine/test10/bundle-order-partial-start.exp @@ -103,9 +103,6 @@ - - - @@ -306,6 +303,9 @@ + + + diff --git a/pengine/test10/bundle-order-partial-stop.dot b/pengine/test10/bundle-order-partial-stop.dot index af2493c..c0e6616 100644 --- a/pengine/test10/bundle-order-partial-stop.dot +++ b/pengine/test10/bundle-order-partial-stop.dot @@ -11,7 +11,7 @@ digraph "g" { "galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -"galera-bundle-docker-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" -> "galera-bundle_stopped_0" [ style = bold] "galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-master_demote_0" -> "galera-bundle-master_demoted_0" [ style = bold] "galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-0" [ style = bold] @@ -40,6 +40,7 @@ digraph "g" { "galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] "galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 undercloud" [ style = bold] "galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] "galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] "galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] @@ -130,9 +131,11 @@ digraph "g" { "rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "rabbitmq-bundle_stopped_0" [ style = bold] "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] +"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] "rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] @@ -151,7 +154,7 @@ digraph "g" { "redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -"redis-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] +"redis-bundle-docker-0_stop_0 undercloud" -> "redis-bundle_stopped_0" [ style = bold] "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] @@ -181,6 +184,7 @@ digraph "g" { "redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] "redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] +"redis-bundle_stop_0" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] diff --git a/pengine/test10/bundle-order-partial-stop.exp b/pengine/test10/bundle-order-partial-stop.exp index 02a7372..27ae320 100644 --- a/pengine/test10/bundle-order-partial-stop.exp +++ b/pengine/test10/bundle-order-partial-stop.exp @@ -26,6 +26,9 @@ + + + @@ -99,6 +102,9 @@ + + + @@ -173,10 +179,10 @@ - + - + @@ -286,9 +292,6 @@ - - - @@ -492,6 +495,9 @@ + + + @@ -599,6 +605,9 @@ + + + @@ -650,6 +659,9 @@ + + + diff --git a/pengine/test10/bundle-order-partial-stop.summary b/pengine/test10/bundle-order-partial-stop.summary index c341f4c..b30a237 100644 --- a/pengine/test10/bundle-order-partial-stop.summary +++ b/pengine/test10/bundle-order-partial-stop.summary @@ -64,21 +64,21 @@ Executing cluster transition: * Pseudo action: galera-bundle_demoted_0 * Pseudo action: galera-bundle_stop_0 * Pseudo action: rabbitmq-bundle-clone_stopped_0 - * Pseudo action: rabbitmq-bundle_stopped_0 * Resource action: rabbitmq-bundle-docker-0 stop on undercloud * Pseudo action: galera-bundle-master_stop_0 + * Pseudo action: rabbitmq-bundle_stopped_0 * Resource action: galera stop on galera-bundle-0 * Resource action: galera-bundle-0 stop on undercloud * Pseudo action: galera-bundle-master_stopped_0 - * Pseudo action: galera-bundle_stopped_0 * Resource action: galera-bundle-docker-0 stop on undercloud + * Pseudo action: galera-bundle_stopped_0 * Pseudo action: redis-bundle_stop_0 * Pseudo action: redis-bundle-master_stop_0 * Resource action: redis stop on redis-bundle-0 * Resource action: redis-bundle-0 stop on undercloud * Pseudo action: redis-bundle-master_stopped_0 - * Pseudo action: redis-bundle_stopped_0 * Resource action: redis-bundle-docker-0 stop on undercloud + * Pseudo action: redis-bundle_stopped_0 * Pseudo action: haproxy-bundle_stop_0 * Resource action: haproxy-bundle-docker-0 stop on undercloud * Pseudo action: haproxy-bundle_stopped_0 diff --git a/pengine/test10/bundle-order-startup.dot b/pengine/test10/bundle-order-startup.dot index 4e60d79..66053b9 100644 --- a/pengine/test10/bundle-order-startup.dot +++ b/pengine/test10/bundle-order-startup.dot @@ -10,6 +10,7 @@ digraph "g" { "galera-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-0_start_0 undercloud" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"galera-bundle-docker-0_start_0 undercloud" -> "galera-bundle_running_0" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" -> "galera:0_start_0 galera-bundle-0" [ style = bold] "galera-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] @@ -32,7 +33,6 @@ digraph "g" { "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle-docker-0_monitor_60000 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" -> "haproxy-bundle_running_0" [ style = bold] -"haproxy-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] "haproxy-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] "haproxy-bundle_running_0" -> "redis-bundle_start_0" [ style = bold] "haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] @@ -98,6 +98,7 @@ digraph "g" { "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-0_start_0 undercloud" [ style = bold] "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq-bundle_running_0" [ style = bold] "rabbitmq-bundle-docker-0_start_0 undercloud" -> "rabbitmq:0_start_0 rabbitmq-bundle-0" [ style = bold] "rabbitmq-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] "rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"] @@ -117,9 +118,9 @@ digraph "g" { "redis-bundle-docker-0_monitor_0 undercloud" -> "redis-bundle-docker-0_start_0 undercloud" [ style = bold] "redis-bundle-docker-0_monitor_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-docker-0_monitor_60000 undercloud" [ style=bold color="green" fontcolor="black"] -"redis-bundle-docker-0_start_0 undercloud" -> "galera-bundle-docker-0_start_0 undercloud" [ style = bold] "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-0_start_0 undercloud" [ style = bold] "redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle-docker-0_monitor_60000 undercloud" [ style = bold] +"redis-bundle-docker-0_start_0 undercloud" -> "redis-bundle_running_0" [ style = bold] "redis-bundle-docker-0_start_0 undercloud" -> "redis:0_start_0 redis-bundle-0" [ style = bold] "redis-bundle-docker-0_start_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = bold] diff --git a/pengine/test10/bundle-order-startup.exp b/pengine/test10/bundle-order-startup.exp index 66ecb08..2128d7c 100644 --- a/pengine/test10/bundle-order-startup.exp +++ b/pengine/test10/bundle-order-startup.exp @@ -176,9 +176,6 @@ - - - @@ -294,9 +291,6 @@ - - - @@ -714,6 +708,9 @@ + + + @@ -765,6 +762,9 @@ + + + @@ -816,6 +816,9 @@ + + + diff --git a/pengine/test10/bundle-order-stop.dot b/pengine/test10/bundle-order-stop.dot index af2493c..c0e6616 100644 --- a/pengine/test10/bundle-order-stop.dot +++ b/pengine/test10/bundle-order-stop.dot @@ -11,7 +11,7 @@ digraph "g" { "galera-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "galera-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -"galera-bundle-docker-0_stop_0 undercloud" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] +"galera-bundle-docker-0_stop_0 undercloud" -> "galera-bundle_stopped_0" [ style = bold] "galera-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "galera-bundle-master_demote_0" -> "galera-bundle-master_demoted_0" [ style = bold] "galera-bundle-master_demote_0" -> "galera_demote_0 galera-bundle-0" [ style = bold] @@ -40,6 +40,7 @@ digraph "g" { "galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] "galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 undercloud" [ style = bold] "galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] "galera-bundle_stop_0" -> "galera_stop_0 galera-bundle-0" [ style = bold] "galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] @@ -130,9 +131,11 @@ digraph "g" { "rabbitmq-bundle-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "rabbitmq-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] +"rabbitmq-bundle-docker-0_stop_0 undercloud" -> "rabbitmq-bundle_stopped_0" [ style = bold] "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "rabbitmq-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-clone_stop_0" [ style = bold] +"rabbitmq-bundle_stop_0" -> "rabbitmq-bundle-docker-0_stop_0 undercloud" [ style = bold] "rabbitmq-bundle_stop_0" -> "rabbitmq_stop_0 rabbitmq-bundle-0" [ style = bold] "rabbitmq-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] "rabbitmq-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] @@ -151,7 +154,7 @@ digraph "g" { "redis-bundle-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-docker-0_stop_0 undercloud" -> "all_stopped" [ style = bold] "redis-bundle-docker-0_stop_0 undercloud" -> "do_shutdown undercloud" [ style = bold] -"redis-bundle-docker-0_stop_0 undercloud" -> "haproxy-bundle-docker-0_stop_0 undercloud" [ style = bold] +"redis-bundle-docker-0_stop_0 undercloud" -> "redis-bundle_stopped_0" [ style = bold] "redis-bundle-docker-0_stop_0 undercloud" [ style=bold color="green" fontcolor="black"] "redis-bundle-master_demote_0" -> "redis-bundle-master_demoted_0" [ style = bold] "redis-bundle-master_demote_0" -> "redis_demote_0 redis-bundle-0" [ style = bold] @@ -181,6 +184,7 @@ digraph "g" { "redis-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] "redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = dashed] "redis-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] +"redis-bundle_stop_0" -> "redis-bundle-docker-0_stop_0 undercloud" [ style = bold] "redis-bundle_stop_0" -> "redis-bundle-master_stop_0" [ style = bold] "redis-bundle_stop_0" -> "redis_stop_0 redis-bundle-0" [ style = bold] "redis-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] diff --git a/pengine/test10/bundle-order-stop.exp b/pengine/test10/bundle-order-stop.exp index 02a7372..27ae320 100644 --- a/pengine/test10/bundle-order-stop.exp +++ b/pengine/test10/bundle-order-stop.exp @@ -26,6 +26,9 @@ + + + @@ -99,6 +102,9 @@ + + + @@ -173,10 +179,10 @@ - + - + @@ -286,9 +292,6 @@ - - - @@ -492,6 +495,9 @@ + + + @@ -599,6 +605,9 @@ + + + @@ -650,6 +659,9 @@ + + + diff --git a/pengine/test10/bundle-order-stop.summary b/pengine/test10/bundle-order-stop.summary index c341f4c..b30a237 100644 --- a/pengine/test10/bundle-order-stop.summary +++ b/pengine/test10/bundle-order-stop.summary @@ -64,21 +64,21 @@ Executing cluster transition: * Pseudo action: galera-bundle_demoted_0 * Pseudo action: galera-bundle_stop_0 * Pseudo action: rabbitmq-bundle-clone_stopped_0 - * Pseudo action: rabbitmq-bundle_stopped_0 * Resource action: rabbitmq-bundle-docker-0 stop on undercloud * Pseudo action: galera-bundle-master_stop_0 + * Pseudo action: rabbitmq-bundle_stopped_0 * Resource action: galera stop on galera-bundle-0 * Resource action: galera-bundle-0 stop on undercloud * Pseudo action: galera-bundle-master_stopped_0 - * Pseudo action: galera-bundle_stopped_0 * Resource action: galera-bundle-docker-0 stop on undercloud + * Pseudo action: galera-bundle_stopped_0 * Pseudo action: redis-bundle_stop_0 * Pseudo action: redis-bundle-master_stop_0 * Resource action: redis stop on redis-bundle-0 * Resource action: redis-bundle-0 stop on undercloud * Pseudo action: redis-bundle-master_stopped_0 - * Pseudo action: redis-bundle_stopped_0 * Resource action: redis-bundle-docker-0 stop on undercloud + * Pseudo action: redis-bundle_stopped_0 * Pseudo action: haproxy-bundle_stop_0 * Resource action: haproxy-bundle-docker-0 stop on undercloud * Pseudo action: haproxy-bundle_stopped_0 -- 1.8.3.1 From a189db3a8f42ee4817b9b0e1fc128ea64e945130 Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Tue, 20 Jun 2017 16:19:02 +1000 Subject: [PATCH 6/8] Feature: PE: Generic ordering for anything with bundles --- pengine/allocate.c | 4 +- pengine/allocate.h | 3 - pengine/clone.c | 220 +++------------------------------------- pengine/container.c | 287 +++++++++++++++++++++++++++++++++++++++++----------- pengine/master.c | 2 +- pengine/utils.h | 10 +- 6 files changed, 250 insertions(+), 276 deletions(-) diff --git a/pengine/allocate.c b/pengine/allocate.c index 8f15282..3a95be6 100644 --- a/pengine/allocate.c +++ b/pengine/allocate.c @@ -79,7 +79,7 @@ resource_alloc_functions_t resource_class_alloc_functions[] = { clone_rsc_colocation_rh, clone_rsc_location, clone_action_flags, - clone_update_actions, + container_update_actions, clone_expand, clone_append_meta, }, @@ -93,7 +93,7 @@ resource_alloc_functions_t resource_class_alloc_functions[] = { master_rsc_colocation_rh, clone_rsc_location, clone_action_flags, - clone_update_actions, + container_update_actions, clone_expand, master_append_meta, }, diff --git a/pengine/allocate.h b/pengine/allocate.h index 9a30b80..4ca5d65 100644 --- a/pengine/allocate.h +++ b/pengine/allocate.h @@ -168,9 +168,6 @@ extern enum pe_graph_flags native_update_actions(action_t * first, action_t * th extern enum pe_graph_flags group_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type); -extern enum pe_graph_flags clone_update_actions(action_t * first, action_t * then, node_t * node, - enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type); extern enum pe_graph_flags container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type); diff --git a/pengine/clone.c b/pengine/clone.c index a79271e..28f368e 100644 --- a/pengine/clone.c +++ b/pengine/clone.c @@ -944,34 +944,6 @@ assign_node(resource_t * rsc, node_t * node, gboolean force) return changed; } -static resource_t * -find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, - GListPtr children, enum rsc_role_e filter, gboolean current) -{ - GListPtr gIter = NULL; - - if (local_node == NULL) { - crm_err("Can't colocate unrunnable child %s with %s", local_child->id, rsc->id); - return NULL; - } - - crm_trace("Looking for compatible child from %s for %s on %s", - local_child->id, rsc->id, local_node->details->uname); - - for (gIter = children; gIter != NULL; gIter = gIter->next) { - resource_t *child_rsc = (resource_t *) gIter->data; - - if(is_child_compatible(child_rsc, local_node, filter, current)) { - crm_trace("Pairing %s with %s on %s", - local_child->id, child_rsc->id, local_node->details->uname); - return child_rsc; - } - } - - crm_trace("Can't pair %s with %s", local_child->id, rsc->id); - return NULL; -} - gboolean is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e filter, gboolean current) { @@ -1002,7 +974,7 @@ is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e } resource_t * -find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr children, enum rsc_role_e filter, gboolean current) +find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_e filter, gboolean current) { resource_t *pair = NULL; GListPtr gIter = NULL; @@ -1011,7 +983,7 @@ find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr child local_node = local_child->fns->location(local_child, NULL, current); if (local_node) { - return find_compatible_child_by_node(local_child, local_node, rsc, children, filter, current); + return find_compatible_child_by_node(local_child, local_node, rsc, filter, current); } scratch = g_hash_table_get_values(local_child->allowed_nodes); @@ -1021,7 +993,7 @@ find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr child for (; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; - pair = find_compatible_child_by_node(local_child, node, rsc, children, filter, current); + pair = find_compatible_child_by_node(local_child, node, rsc, filter, current); if (pair) { goto done; } @@ -1048,29 +1020,26 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation { GListPtr gIter = NULL; gboolean do_interleave = FALSE; - clone_variant_data_t *clone_data = NULL; - clone_variant_data_t *clone_data_lh = NULL; + const char *interleave_s = NULL; CRM_CHECK(constraint != NULL, return); CRM_CHECK(rsc_lh != NULL, pe_err("rsc_lh was NULL for %s", constraint->id); return); CRM_CHECK(rsc_rh != NULL, pe_err("rsc_rh was NULL for %s", constraint->id); return); CRM_CHECK(rsc_lh->variant == pe_native, return); - get_clone_variant_data(clone_data, constraint->rsc_rh); pe_rsc_trace(rsc_rh, "Processing constraint %s: %s -> %s %d", constraint->id, rsc_lh->id, rsc_rh->id, constraint->score); - if (pe_rsc_is_clone(constraint->rsc_lh)) { - - get_clone_variant_data(clone_data_lh, constraint->rsc_lh); - if (clone_data_lh->interleave - && clone_data->clone_node_max != clone_data_lh->clone_node_max) { - crm_config_err("Cannot interleave " XML_CIB_TAG_INCARNATION " %s and %s because" - " they do not support the same number of" " resources per node", + /* only the LHS side needs to be labeled as interleave */ + interleave_s = g_hash_table_lookup(constraint->rsc_lh->meta, XML_RSC_ATTR_INTERLEAVE); + if(crm_is_true(interleave_s) && constraint->rsc_lh->variant > pe_group) { + // TODO: Do we actually care about multiple RH copies sharing a LH copy anymore? + if (copies_per_node(constraint->rsc_lh) != copies_per_node(constraint->rsc_rh)) { + crm_config_err("Cannot interleave %s and %s because" + " they do not support the same number of copies per node", constraint->rsc_lh->id, constraint->rsc_rh->id); - /* only the LHS side needs to be labeled as interleave */ - } else if (clone_data_lh->interleave) { + } else { do_interleave = TRUE; } } @@ -1082,7 +1051,7 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation } else if (do_interleave) { resource_t *rh_child = NULL; - rh_child = find_compatible_child(rsc_lh, rsc_rh, rsc_rh->children, RSC_ROLE_UNKNOWN, FALSE); + rh_child = find_compatible_child(rsc_lh, rsc_rh, RSC_ROLE_UNKNOWN, FALSE); if (rh_child) { pe_rsc_debug(rsc_rh, "Pairing %s with %s", rsc_lh->id, rh_child->id); @@ -1125,7 +1094,7 @@ clone_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocation } } -static enum action_tasks +enum action_tasks clone_child_action(action_t * action) { enum action_tasks result = no_action; @@ -1225,167 +1194,6 @@ clone_action_flags(action_t * action, node_t * node) return summary_action_flags(action, action->rsc->children, node); } -static enum pe_graph_flags -clone_update_actions_interleave(action_t * first, action_t * then, node_t * node, - enum pe_action_flags flags, enum pe_action_flags filter, - enum pe_ordering type) -{ - gboolean current = FALSE; - resource_t *first_child = NULL; - GListPtr gIter = then->rsc->children; - enum pe_graph_flags changed = pe_graph_none; /*pe_graph_disable */ - - enum action_tasks task = clone_child_action(first); - const char *first_task = task2text(task); - - /* Fix this - lazy */ - if (crm_ends_with(first->uuid, "_stopped_0") - || crm_ends_with(first->uuid, "_demoted_0")) { - current = TRUE; - } - - for (; gIter != NULL; gIter = gIter->next) { - resource_t *then_child = (resource_t *) gIter->data; - - CRM_ASSERT(then_child != NULL); - first_child = find_compatible_child(then_child, first->rsc, first->rsc->children, RSC_ROLE_UNKNOWN, current); - if (first_child == NULL && current) { - crm_trace("Ignore"); - - } else if (first_child == NULL) { - crm_debug("No match found for %s (%d / %s / %s)", then_child->id, current, first->uuid, - then->uuid); - - /* Me no like this hack - but what else can we do? - * - * If there is no-one active or about to be active - * on the same node as then_child, then they must - * not be allowed to start - */ - if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) { - pe_rsc_info(then->rsc, "Inhibiting %s from being active", then_child->id); - if(assign_node(then_child, NULL, TRUE)) { - changed |= pe_graph_updated_then; - } - } - - } else { - action_t *first_action = NULL; - action_t *then_action = NULL; - - pe_rsc_debug(then->rsc, "Pairing %s with %s", first_child->id, then_child->id); - - first_action = find_first_action(first_child->actions, NULL, first_task, node); - then_action = find_first_action(then_child->actions, NULL, then->task, node); - - if (first_action == NULL) { - if (is_not_set(first_child->flags, pe_rsc_orphan) - && crm_str_eq(first_task, RSC_STOP, TRUE) == FALSE - && crm_str_eq(first_task, RSC_DEMOTE, TRUE) == FALSE) { - crm_err("Internal error: No action found for %s in %s (first)", - first_task, first_child->id); - - } else { - crm_trace("No action found for %s in %s%s (first)", - first_task, first_child->id, - is_set(first_child->flags, pe_rsc_orphan) ? " (ORPHAN)" : ""); - } - continue; - } - - /* We're only interested if 'then' is neither stopping nor being demoted */ - if (then_action == NULL) { - if (is_not_set(then_child->flags, pe_rsc_orphan) - && crm_str_eq(then->task, RSC_STOP, TRUE) == FALSE - && crm_str_eq(then->task, RSC_DEMOTE, TRUE) == FALSE) { - crm_err("Internal error: No action found for %s in %s (then)", - then->task, then_child->id); - - } else { - crm_trace("No action found for %s in %s%s (then)", - then->task, then_child->id, - is_set(then_child->flags, pe_rsc_orphan) ? " (ORPHAN)" : ""); - } - continue; - } - - if (order_actions(first_action, then_action, type)) { - crm_debug("Created constraint for %s -> %s", first_action->uuid, then_action->uuid); - changed |= (pe_graph_updated_first | pe_graph_updated_then); - } - changed |= - then_child->cmds->update_actions(first_action, then_action, node, - first_child->cmds->action_flags(first_action, - node), filter, - type); - } - } - return changed; -} - -enum pe_graph_flags -clone_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, - enum pe_action_flags filter, enum pe_ordering type) -{ - const char *rsc = "none"; - gboolean interleave = FALSE; - enum pe_graph_flags changed = pe_graph_none; - - if (first->rsc != then->rsc - && pe_rsc_is_clone(first->rsc) - && pe_rsc_is_clone(then->rsc)) { - clone_variant_data_t *clone_data = NULL; - - if (crm_ends_with(then->uuid, "_stop_0") - || crm_ends_with(then->uuid, "_demote_0")) { - get_clone_variant_data(clone_data, first->rsc); - rsc = first->rsc->id; - } else { - get_clone_variant_data(clone_data, then->rsc); - rsc = then->rsc->id; - } - interleave = clone_data->interleave; - } - - crm_trace("Interleave %s -> %s: %s (based on %s)", - first->uuid, then->uuid, interleave ? "yes" : "no", rsc); - - if (interleave) { - changed = clone_update_actions_interleave(first, then, node, flags, filter, type); - - } else if (then->rsc) { - GListPtr gIter = then->rsc->children; - - changed |= native_update_actions(first, then, node, flags, filter, type); - - for (; gIter != NULL; gIter = gIter->next) { - enum pe_graph_flags child_changed = pe_graph_none; - GListPtr lpc = NULL; - resource_t *child = (resource_t *) gIter->data; - action_t *child_action = find_first_action(child->actions, NULL, then->task, node); - - if (child_action) { - enum pe_action_flags child_flags = child->cmds->action_flags(child_action, node); - - if (is_set(child_flags, pe_action_runnable)) { - - child_changed |= - child->cmds->update_actions(first, child_action, node, flags, filter, type); - } - changed |= child_changed; - if (child_changed & pe_graph_updated_then) { - for (lpc = child_action->actions_after; lpc != NULL; lpc = lpc->next) { - action_wrapper_t *other = (action_wrapper_t *) lpc->data; - update_action(other->action); - } - } - } - } - } - - return changed; -} - void clone_rsc_location(resource_t * rsc, rsc_to_node_t * constraint) { diff --git a/pengine/container.c b/pengine/container.c index adee92a..f742660 100644 --- a/pengine/container.c +++ b/pengine/container.c @@ -47,14 +47,33 @@ static GListPtr get_container_list(resource_t *rsc) GListPtr containers = NULL; container_variant_data_t *data = NULL; - get_container_variant_data(data, rsc); - for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - containers = g_list_append(containers, tuple->docker); + if(rsc->variant == pe_container) { + get_container_variant_data(data, rsc); + for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { + container_grouping_t *tuple = (container_grouping_t *)gIter->data; + containers = g_list_append(containers, tuple->docker); + } } return containers; } +static GListPtr get_containers_or_children(resource_t *rsc) +{ + GListPtr containers = NULL; + container_variant_data_t *data = NULL; + + if(rsc->variant == pe_container) { + get_container_variant_data(data, rsc); + for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { + container_grouping_t *tuple = (container_grouping_t *)gIter->data; + containers = g_list_append(containers, tuple->docker); + } + return containers; + } else { + return rsc->children; + } +} + node_t * container_color(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set) { @@ -337,6 +356,39 @@ container_rsc_colocation_lh(resource_t * rsc, resource_t * rsc_rh, rsc_colocatio CRM_ASSERT(FALSE); } +int copies_per_node(resource_t * rsc) +{ + /* Strictly speaking, there should be a 'copies_per_node' addition + * to the resource function table and each case would be a + * function. However that would be serious overkill to return an + * int. In fact, it seems to me that both function tables + * could/should be replaced by resources.{c,h} full of + * rsc_{some_operation} functions containing a switch as below + * which calls out to functions named {variant}_{some_operation} + * as needed. + */ + switch(rsc->variant) { + case pe_unknown: + return 0; + case pe_native: + case pe_group: + return 1; + case pe_clone: + case pe_master: + { + const char *max_clones_node = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_INCARNATION_NODEMAX); + return crm_parse_int(max_clones_node, "1"); + } + case pe_container: + { + container_variant_data_t *data = NULL; + get_container_variant_data(data, rsc); + return data->replicas_per_host; + } + } + return 0; +} + void container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocation_t * constraint) { @@ -346,6 +398,7 @@ container_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc, rsc_colocatio CRM_CHECK(constraint != NULL, return); CRM_CHECK(rsc_lh != NULL, pe_err("rsc_lh was NULL for %s", constraint->id); return); CRM_CHECK(rsc != NULL, pe_err("rsc was NULL for %s", constraint->id); return); + CRM_ASSERT(rsc_lh->variant == pe_native); if (is_set(rsc->flags, pe_rsc_provisional)) { pe_rsc_trace(rsc, "%s is still provisional", rsc->id); @@ -413,14 +466,65 @@ container_action_flags(action_t * action, node_t * node) return flags; } +resource_t * +find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, + enum rsc_role_e filter, gboolean current) +{ + GListPtr gIter = NULL; + GListPtr children = NULL; + + if (local_node == NULL) { + crm_err("Can't colocate unrunnable child %s with %s", local_child->id, rsc->id); + return NULL; + } + + crm_trace("Looking for compatible child from %s for %s on %s", + local_child->id, rsc->id, local_node->details->uname); + + children = get_containers_or_children(rsc); + for (gIter = children; gIter != NULL; gIter = gIter->next) { + resource_t *child_rsc = (resource_t *) gIter->data; + + if(is_child_compatible(child_rsc, local_node, filter, current)) { + crm_trace("Pairing %s with %s on %s", + local_child->id, child_rsc->id, local_node->details->uname); + return child_rsc; + } + } + + crm_trace("Can't pair %s with %s", local_child->id, rsc->id); + if(children != rsc->children) { + g_list_free(children); + } + return NULL; +} + +static container_grouping_t * +tuple_for_docker(resource_t *rsc, resource_t *docker, node_t *node) +{ + if(rsc->variant == pe_container) { + container_variant_data_t *data = NULL; + get_container_variant_data(data, rsc); + for (GListPtr gIter = data->tuples; gIter != NULL; gIter = gIter->next) { + container_grouping_t *tuple = (container_grouping_t *)gIter->data; + if(tuple->child + && docker == tuple->docker + && node->details == tuple->node->details) { + return tuple; + } + } + } + return NULL; +} + static enum pe_graph_flags container_update_interleave_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type) { + GListPtr gIter = NULL; + GListPtr children = NULL; gboolean current = FALSE; enum pe_graph_flags changed = pe_graph_none; - container_variant_data_t *then_data = NULL; - GListPtr containers = NULL; /* Fix this - lazy */ if (crm_ends_with(first->uuid, "_stopped_0") @@ -428,27 +532,15 @@ container_update_interleave_actions(action_t * first, action_t * then, node_t * current = TRUE; } - /* Eventually we may want to allow interleaving between bundles - * and clones, but for now assert both sides are bundles - */ - CRM_ASSERT(first->rsc->variant == pe_container); - CRM_ASSERT(then->rsc->variant == pe_container); - - get_container_variant_data(then_data, then->rsc); - containers = get_container_list(first->rsc); - - for (GListPtr gIter = then_data->tuples; gIter != NULL; gIter = gIter->next) { - container_grouping_t *tuple = (container_grouping_t *)gIter->data; - - /* We can't do the then_data->child->children trick here, - * since the node's wont match - */ - resource_t *first_child = find_compatible_child(tuple->docker, first->rsc, containers, RSC_ROLE_UNKNOWN, current); + children = get_containers_or_children(then->rsc); + for (gIter = children; gIter != NULL; gIter = gIter->next) { + resource_t *then_child = (resource_t *) gIter->data; + resource_t *first_child = find_compatible_child(then_child, first->rsc, RSC_ROLE_UNKNOWN, current); if (first_child == NULL && current) { crm_trace("Ignore"); } else if (first_child == NULL) { - crm_debug("No match found for %s (%d / %s / %s)", tuple->docker->id, current, first->uuid, then->uuid); + crm_debug("No match found for %s (%d / %s / %s)", then_child->id, current, first->uuid, then->uuid); /* Me no like this hack - but what else can we do? * @@ -457,25 +549,76 @@ container_update_interleave_actions(action_t * first, action_t * then, node_t * * not be allowed to start */ if (type & (pe_order_runnable_left | pe_order_implies_then) /* Mandatory */ ) { - pe_rsc_info(then->rsc, "Inhibiting %s from being active", tuple->docker->id); - if(assign_node(tuple->docker, NULL, TRUE)) { + pe_rsc_info(then->rsc, "Inhibiting %s from being active", then_child->id); + if(assign_node(then_child, NULL, TRUE)) { changed |= pe_graph_updated_then; } } } else { - enum action_tasks task = get_complex_task(first_child, first->task, TRUE); + pe_action_t *first_action = NULL; + pe_action_t *then_action = NULL; - /* Potentially we might want to invovle first_data->child - * if present, however we mostly just need the "you need - * to stop" signal to flow back up the ordering chain via - * the docker resources which are always present - * - * Almost certain to break if first->task or then->task is - * promote or demote - */ - pe_action_t *first_action = find_first_action(first_child->actions, NULL, task2text(task), node); - pe_action_t *then_action = find_first_action(tuple->docker->actions, NULL, then->task, node); + enum action_tasks task = clone_child_action(first); + const char *first_task = task2text(task); + + container_grouping_t *first_tuple = tuple_for_docker(first->rsc, first_child, node); + container_grouping_t *then_tuple = tuple_for_docker(then->rsc, then_child, node); + + if(strstr(first->task, "stop") && first_tuple && first_tuple->child) { + /* Except for 'stopped' we should be looking at the + * in-container resource, actions for the child will + * happen later and are therefor more likely to align + * with the user's intent. + */ + first_action = find_first_action(first_tuple->child->actions, NULL, task2text(task), node); + } else { + first_action = find_first_action(first_child->actions, NULL, task2text(task), node); + } + + if(strstr(then->task, "mote") && then_tuple && then_tuple->child) { + /* Promote/demote actions will never be found for the + * docker resource, look in the child instead + * + * Alternatively treat: + * 'XXXX then promote YYYY' as 'XXXX then start container for YYYY', and + * 'demote XXXX then stop YYYY' as 'stop container for XXXX then stop YYYY' + */ + then_action = find_first_action(then_tuple->child->actions, NULL, then->task, node); + } else { + then_action = find_first_action(then_child->actions, NULL, then->task, node); + } + + if (first_action == NULL) { + if (is_not_set(first_child->flags, pe_rsc_orphan) + && crm_str_eq(first_task, RSC_STOP, TRUE) == FALSE + && crm_str_eq(first_task, RSC_DEMOTE, TRUE) == FALSE) { + crm_err("Internal error: No action found for %s in %s (first)", + first_task, first_child->id); + + } else { + crm_trace("No action found for %s in %s%s (first)", + first_task, first_child->id, + is_set(first_child->flags, pe_rsc_orphan) ? " (ORPHAN)" : ""); + } + continue; + } + + /* We're only interested if 'then' is neither stopping nor being demoted */ + if (then_action == NULL) { + if (is_not_set(then_child->flags, pe_rsc_orphan) + && crm_str_eq(then->task, RSC_STOP, TRUE) == FALSE + && crm_str_eq(then->task, RSC_DEMOTE, TRUE) == FALSE) { + crm_err("Internal error: No action found for %s in %s (then)", + then->task, then_child->id); + + } else { + crm_trace("No action found for %s in %s%s (then)", + then->task, then_child->id, + is_set(then_child->flags, pe_rsc_orphan) ? " (ORPHAN)" : ""); + } + continue; + } if (order_actions(first_action, then_action, type)) { crm_debug("Created constraint for %s (%d) -> %s (%d) %.6x", @@ -484,55 +627,75 @@ container_update_interleave_actions(action_t * first, action_t * then, node_t * changed |= (pe_graph_updated_first | pe_graph_updated_then); } if(first_action && then_action) { - changed |= tuple->docker->cmds->update_actions(first_action, then_action, node, - first_child->cmds->action_flags(first_action, node), - filter, type); + changed |= then_child->cmds->update_actions(first_action, then_action, node, + first_child->cmds->action_flags(first_action, node), + filter, type); } else { crm_err("Nothing found either for %s (%p) or %s (%p) %s", first_child->id, first_action, - tuple->docker->id, then_action, task2text(task)); + then_child->id, then_action, task2text(task)); } } } - g_list_free(containers); + if(children != then->rsc->children) { + g_list_free(children); + } return changed; } +bool can_interleave_actions(pe_action_t *first, pe_action_t *then) +{ + bool interleave = FALSE; + resource_t *rsc = NULL; + const char *interleave_s = NULL; + + if(first->rsc == NULL || then->rsc == NULL) { + crm_trace("Not interleaving %s with %s (both must be resources)", first->uuid, then->uuid); + return FALSE; + } else if(first->rsc == then->rsc) { + crm_trace("Not interleaving %s with %s (must belong to different resources)", first->uuid, then->uuid); + return FALSE; + } else if(first->rsc->variant < pe_clone || then->rsc->variant < pe_clone) { + crm_trace("Not interleaving %s with %s (both sides must be clones, masters, or bundles)", first->uuid, then->uuid); + return FALSE; + } + + if (crm_ends_with(then->uuid, "_stop_0") || crm_ends_with(then->uuid, "_demote_0")) { + rsc = first->rsc; + } else { + rsc = then->rsc; + } + + interleave_s = g_hash_table_lookup(rsc->meta, XML_RSC_ATTR_INTERLEAVE); + interleave = crm_is_true(interleave_s); + crm_trace("Interleave %s -> %s: %s (based on %s)", + first->uuid, then->uuid, interleave ? "yes" : "no", rsc->id); + + return interleave; +} + enum pe_graph_flags container_update_actions(action_t * first, action_t * then, node_t * node, enum pe_action_flags flags, enum pe_action_flags filter, enum pe_ordering type) { - bool interleave = FALSE; enum pe_graph_flags changed = pe_graph_none; crm_trace("%s -> %s", first->uuid, then->uuid); - if(first->rsc == NULL || then->rsc == NULL) { - return changed; - - } else if(first->rsc->variant == then->rsc->variant) { - // When and how to turn on interleaving? - // interleave = TRUE; - } - - if(interleave) { + if(can_interleave_actions(first, then)) { changed = container_update_interleave_actions(first, then, node, flags, filter, type); - } else { - GListPtr gIter = then->rsc->children; - GListPtr containers = NULL; + } else if(then->rsc) { + GListPtr gIter = NULL; + GListPtr children = NULL; // Handle the 'primitive' ordering case changed |= native_update_actions(first, then, node, flags, filter, type); // Now any children (or containers in the case of a bundle) - if(then->rsc->variant == pe_container) { - containers = get_container_list(then->rsc); - gIter = containers; - } - - for (; gIter != NULL; gIter = gIter->next) { + children = get_containers_or_children(then->rsc); + for (gIter = children; gIter != NULL; gIter = gIter->next) { resource_t *then_child = (resource_t *) gIter->data; enum pe_graph_flags then_child_changed = pe_graph_none; action_t *then_child_action = find_first_action(then_child->actions, NULL, then->task, node); @@ -554,7 +717,9 @@ container_update_actions(action_t * first, action_t * then, node_t * node, enum } } - g_list_free(containers); + if(children != then->rsc->children) { + g_list_free(children); + } } return changed; } diff --git a/pengine/master.c b/pengine/master.c index c15e740..8c39f49 100644 --- a/pengine/master.c +++ b/pengine/master.c @@ -1022,7 +1022,7 @@ master_rsc_colocation_rh(resource_t * rsc_lh, resource_t * rsc_rh, rsc_colocatio g_list_free(rhs); } else if (constraint->role_lh == RSC_ROLE_MASTER) { - resource_t *rh_child = find_compatible_child(rsc_lh, rsc_rh, rsc_rh->children, constraint->role_rh, FALSE); + resource_t *rh_child = find_compatible_child(rsc_lh, rsc_rh, constraint->role_rh, FALSE); if (rh_child == NULL && constraint->score >= INFINITY) { pe_rsc_trace(rsc_lh, "%s can't be promoted %s", rsc_lh->id, constraint->id); diff --git a/pengine/utils.h b/pengine/utils.h index 1421166..7a788f7 100644 --- a/pengine/utils.h +++ b/pengine/utils.h @@ -49,12 +49,16 @@ void native_deallocate(resource_t * rsc); extern void log_action(unsigned int log_level, const char *pre_text, action_t * action, gboolean details); -extern gboolean can_run_any(GHashTable * nodes); -extern resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, GListPtr children, - enum rsc_role_e filter, gboolean current); +gboolean can_run_any(GHashTable * nodes); +bool can_interleave_actions(pe_action_t *first, pe_action_t *then); +resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc, enum rsc_role_e filter, gboolean current); +resource_t *find_compatible_child_by_node(resource_t * local_child, node_t * local_node, resource_t * rsc, + enum rsc_role_e filter, gboolean current); gboolean is_child_compatible(resource_t *child_rsc, node_t * local_node, enum rsc_role_e filter, gboolean current); bool assign_node(resource_t * rsc, node_t * node, gboolean force); enum pe_action_flags summary_action_flags(action_t * action, GListPtr children, node_t * node); +enum action_tasks clone_child_action(action_t * action); +int copies_per_node(resource_t * rsc); enum filter_colocation_res { influence_nothing = 0, -- 1.8.3.1 From 879a52ce9f4288fde5c19d2fb677e5ad51e6c4af Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Fri, 23 Jun 2017 13:16:57 +1000 Subject: [PATCH 7/8] Test: PE: Generic ordering for anything with bundles --- lib/pengine/container.c | 14 +- pengine/regression.sh | 5 +- pengine/test10/bundle-order-startup-clone-2.dot | 335 ++++ pengine/test10/bundle-order-startup-clone-2.exp | 1697 ++++++++++++++++++++ pengine/test10/bundle-order-startup-clone-2.scores | 584 +++++++ .../test10/bundle-order-startup-clone-2.summary | 179 +++ pengine/test10/bundle-order-startup-clone-2.xml | 190 +++ pengine/test10/bundle-order-startup-clone.dot | 119 ++ pengine/test10/bundle-order-startup-clone.exp | 327 ++++ pengine/test10/bundle-order-startup-clone.scores | 174 ++ pengine/test10/bundle-order-startup-clone.summary | 69 + pengine/test10/bundle-order-startup-clone.xml | 187 +++ pengine/test10/bundle-order-stop-clone.dot | 80 + pengine/test10/bundle-order-stop-clone.exp | 345 ++++ pengine/test10/bundle-order-stop-clone.scores | 591 +++++++ pengine/test10/bundle-order-stop-clone.summary | 75 + pengine/test10/bundle-order-stop-clone.xml | 398 +++++ 17 files changed, 5366 insertions(+), 3 deletions(-) create mode 100644 pengine/test10/bundle-order-startup-clone-2.dot create mode 100644 pengine/test10/bundle-order-startup-clone-2.exp create mode 100644 pengine/test10/bundle-order-startup-clone-2.scores create mode 100644 pengine/test10/bundle-order-startup-clone-2.summary create mode 100644 pengine/test10/bundle-order-startup-clone-2.xml create mode 100644 pengine/test10/bundle-order-startup-clone.dot create mode 100644 pengine/test10/bundle-order-startup-clone.exp create mode 100644 pengine/test10/bundle-order-startup-clone.scores create mode 100644 pengine/test10/bundle-order-startup-clone.summary create mode 100644 pengine/test10/bundle-order-startup-clone.xml create mode 100644 pengine/test10/bundle-order-stop-clone.dot create mode 100644 pengine/test10/bundle-order-stop-clone.exp create mode 100644 pengine/test10/bundle-order-stop-clone.scores create mode 100644 pengine/test10/bundle-order-stop-clone.summary create mode 100644 pengine/test10/bundle-order-stop-clone.xml diff --git a/lib/pengine/container.c b/lib/pengine/container.c index cf81253..6e98e6f 100644 --- a/lib/pengine/container.c +++ b/lib/pengine/container.c @@ -727,8 +727,6 @@ container_unpack(resource_t * rsc, pe_working_set_t * data_set) } container_data->child = new_rsc; - container_data->child->orig_xml = xml_obj; // Also the trigger for common_free() - // to free xml_resource as container_data->child->xml mount = calloc(1, sizeof(container_mount_t)); mount->source = strdup(DEFAULT_REMOTE_KEY_LOCATION); @@ -1035,17 +1033,25 @@ tuple_free(container_grouping_t *tuple) if(tuple->ip) { tuple->ip->fns->free(tuple->ip); + tuple->ip->xml = NULL; + free_xml(tuple->ip->xml); tuple->ip = NULL; } if(tuple->child) { + free_xml(tuple->child->xml); + tuple->child->xml = NULL; tuple->child->fns->free(tuple->child); tuple->child = NULL; } if(tuple->docker) { + free_xml(tuple->docker->xml); + tuple->docker->xml = NULL; tuple->docker->fns->free(tuple->docker); tuple->docker = NULL; } if(tuple->remote) { + free_xml(tuple->remote->xml); + tuple->remote->xml = NULL; tuple->remote->fns->free(tuple->remote); tuple->remote = NULL; } @@ -1073,9 +1079,13 @@ container_free(resource_t * rsc) free(container_data->docker_run_command); free(container_data->docker_host_options); + if(container_data->child) { + free_xml(container_data->child->xml); + } g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free); g_list_free_full(container_data->mounts, (GDestroyNotify)mount_free); g_list_free_full(container_data->ports, (GDestroyNotify)port_free); + g_list_free(rsc->children); common_free(rsc); } diff --git a/pengine/regression.sh b/pengine/regression.sh index e97b54b..b844bb9 100755 --- a/pengine/regression.sh +++ b/pengine/regression.sh @@ -23,7 +23,6 @@ core=`dirname $0` create_mode="true" info Generating test outputs for these tests... # do_test file description - info Done. echo "" @@ -808,6 +807,10 @@ do_test bundle-order-partial-start-2 "Bundle startup ordering when some dependan do_test bundle-order-stop "Bundle stop ordering" do_test bundle-order-partial-stop "Bundle startup ordering when some dependancies are already stopped" +do_test bundle-order-startup-clone "Prevent startup because bundle isn't promoted" +do_test bundle-order-startup-clone-2 "Bundle startup with clones" +do_test bundle-order-stop-clone "Stop bundle because clone is stopping" + echo "" do_test whitebox-fail1 "Fail whitebox container rsc." do_test whitebox-fail2 "Fail whitebox container rsc lrmd connection." diff --git a/pengine/test10/bundle-order-startup-clone-2.dot b/pengine/test10/bundle-order-startup-clone-2.dot new file mode 100644 index 0000000..af90261 --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone-2.dot @@ -0,0 +1,335 @@ +digraph "g" { +"galera-bundle-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-0_start_0 metal-1" -> "galera-bundle-0_monitor_60000 metal-1" [ style = bold] +"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-1_start_0 metal-2" -> "galera-bundle-1_monitor_60000 metal-2" [ style = bold] +"galera-bundle-1_start_0 metal-2" -> "galera:1_monitor_20000 galera-bundle-1" [ style = bold] +"galera-bundle-1_start_0 metal-2" -> "galera:1_monitor_30000 galera-bundle-1" [ style = bold] +"galera-bundle-1_start_0 metal-2" -> "galera:1_start_0 galera-bundle-1" [ style = bold] +"galera-bundle-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] +"galera-bundle-2_start_0 metal-3" -> "galera-bundle-2_monitor_60000 metal-3" [ style = bold] +"galera-bundle-2_start_0 metal-3" -> "galera:2_monitor_20000 galera-bundle-2" [ style = bold] +"galera-bundle-2_start_0 metal-3" -> "galera:2_monitor_30000 galera-bundle-2" [ style = bold] +"galera-bundle-2_start_0 metal-3" -> "galera:2_start_0 galera-bundle-2" [ style = bold] +"galera-bundle-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-docker-0_monitor_60000 metal-1" [ style = bold] +"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-docker-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle-docker-1_monitor_60000 metal-2" [ style = bold] +"galera-bundle-docker-1_start_0 metal-2" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-docker-1_start_0 metal-2" -> "galera:1_start_0 galera-bundle-1" [ style = bold] +"galera-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-1" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-2" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-3" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-2_start_0 metal-3" [ style = bold] +"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle-docker-2_monitor_60000 metal-3" [ style = bold] +"galera-bundle-docker-2_start_0 metal-3" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-docker-2_start_0 metal-3" -> "galera:2_start_0 galera-bundle-2" [ style = bold] +"galera-bundle-docker-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = bold] +"galera-bundle-master_start_0" -> "galera:0_start_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_start_0" -> "galera:1_start_0 galera-bundle-1" [ style = bold] +"galera-bundle-master_start_0" -> "galera:2_start_0 galera-bundle-2" [ style = bold] +"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 metal-1" [ style = bold] +"galera-bundle_start_0" -> "galera-bundle-docker-1_start_0 metal-2" [ style = bold] +"galera-bundle_start_0" -> "galera-bundle-docker-2_start_0 metal-3" [ style = bold] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"galera:0_monitor_20000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:0_monitor_30000 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = bold] +"galera:0_start_0 galera-bundle-0" -> "galera:1_start_0 galera-bundle-1" [ style = bold] +"galera:0_start_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"galera:1_monitor_20000 galera-bundle-1" [ style=bold color="green" fontcolor="black"] +"galera:1_monitor_30000 galera-bundle-1" [ style=bold color="green" fontcolor="black"] +"galera:1_start_0 galera-bundle-1" -> "galera-bundle-master_running_0" [ style = bold] +"galera:1_start_0 galera-bundle-1" -> "galera:1_monitor_20000 galera-bundle-1" [ style = bold] +"galera:1_start_0 galera-bundle-1" -> "galera:1_monitor_30000 galera-bundle-1" [ style = bold] +"galera:1_start_0 galera-bundle-1" -> "galera:2_start_0 galera-bundle-2" [ style = bold] +"galera:1_start_0 galera-bundle-1" [ style=bold color="green" fontcolor="black"] +"galera:2_monitor_20000 galera-bundle-2" [ style=bold color="green" fontcolor="black"] +"galera:2_monitor_30000 galera-bundle-2" [ style=bold color="green" fontcolor="black"] +"galera:2_start_0 galera-bundle-2" -> "galera-bundle-master_running_0" [ style = bold] +"galera:2_start_0 galera-bundle-2" -> "galera:2_monitor_20000 galera-bundle-2" [ style = bold] +"galera:2_start_0 galera-bundle-2" -> "galera:2_monitor_30000 galera-bundle-2" [ style = bold] +"galera:2_start_0 galera-bundle-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_start_0 metal-1" -> "haproxy-bundle-docker-0_monitor_60000 metal-1" [ style = bold] +"haproxy-bundle-docker-0_start_0 metal-1" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-1_start_0 metal-2" -> "haproxy-bundle-docker-1_monitor_60000 metal-2" [ style = bold] +"haproxy-bundle-docker-1_start_0 metal-2" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-1" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-2" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-3" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-2_start_0 metal-3" -> "haproxy-bundle-docker-2_monitor_60000 metal-3" [ style = bold] +"haproxy-bundle-docker-2_start_0 metal-3" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle_running_0" -> "storage-clone_start_0" [ style = bold] +"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 metal-1" [ style = bold] +"haproxy-bundle_start_0" -> "haproxy-bundle-docker-1_start_0 metal-2" [ style = bold] +"haproxy-bundle_start_0" -> "haproxy-bundle-docker-2_start_0 metal-3" [ style = bold] +"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-0_start_0 metal-1" -> "redis-bundle-0_monitor_60000 metal-1" [ style = bold] +"redis-bundle-0_start_0 metal-1" -> "redis:0_monitor_20000 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 metal-1" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 metal-1" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-1_start_0 metal-2" -> "redis-bundle-1_monitor_60000 metal-2" [ style = bold] +"redis-bundle-1_start_0 metal-2" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] +"redis-bundle-1_start_0 metal-2" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] +"redis-bundle-1_start_0 metal-2" -> "redis:1_start_0 redis-bundle-1" [ style = bold] +"redis-bundle-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] +"redis-bundle-2_start_0 metal-3" -> "redis-bundle-2_monitor_60000 metal-3" [ style = bold] +"redis-bundle-2_start_0 metal-3" -> "redis:2_monitor_20000 redis-bundle-2" [ style = bold] +"redis-bundle-2_start_0 metal-3" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] +"redis-bundle-2_start_0 metal-3" -> "redis:2_start_0 redis-bundle-2" [ style = bold] +"redis-bundle-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_60000 metal-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle-docker-0_monitor_60000 metal-1" [ style = bold] +"redis-bundle-docker-0_start_0 metal-1" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-docker-0_start_0 metal-1" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] +"redis-bundle-docker-0_start_0 metal-1" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-docker-0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-1_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-1_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle-docker-1_monitor_60000 metal-2" [ style = bold] +"redis-bundle-docker-1_start_0 metal-2" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-docker-1_start_0 metal-2" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] +"redis-bundle-docker-1_start_0 metal-2" -> "redis:1_start_0 redis-bundle-1" [ style = bold] +"redis-bundle-docker-1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-1" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-2" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-3" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-2_monitor_60000 metal-3" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-2_start_0 metal-3" [ style = bold] +"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle-docker-2_monitor_60000 metal-3" [ style = bold] +"redis-bundle-docker-2_start_0 metal-3" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-docker-2_start_0 metal-3" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] +"redis-bundle-docker-2_start_0 metal-3" -> "redis:2_start_0 redis-bundle-2" [ style = bold] +"redis-bundle-docker-2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] +"redis-bundle-master_promote_0" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_promote_0" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] +"redis-bundle-master_promote_0" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] +"redis-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_promoted_0" -> "redis-bundle_promoted_0" [ style = bold] +"redis-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_running_0" -> "redis-bundle-master_promote_0" [ style = bold] +"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = bold] +"redis-bundle-master_start_0" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_start_0" -> "redis:1_start_0 redis-bundle-1" [ style = bold] +"redis-bundle-master_start_0" -> "redis:2_start_0 redis-bundle-2" [ style = bold] +"redis-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_promote_0" -> "redis-bundle-master_promote_0" [ style = bold] +"redis-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_promoted_0" -> "storage-clone_start_0" [ style = bold] +"redis-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_running_0" -> "redis-bundle_promote_0" [ style = bold] +"redis-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_start_0" -> "redis-bundle-docker-0_start_0 metal-1" [ style = bold] +"redis-bundle_start_0" -> "redis-bundle-docker-1_start_0 metal-2" [ style = bold] +"redis-bundle_start_0" -> "redis-bundle-docker-2_start_0 metal-3" [ style = bold] +"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] +"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis:0_monitor_20000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis:0_promote_0 redis-bundle-0" -> "redis-bundle-master_promoted_0" [ style = bold] +"redis:0_promote_0 redis-bundle-0" -> "redis:0_monitor_20000 redis-bundle-0" [ style = bold] +"redis:0_promote_0 redis-bundle-0" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] +"redis:0_promote_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis:0_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = bold] +"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_20000 redis-bundle-0" [ style = bold] +"redis:0_start_0 redis-bundle-0" -> "redis:0_promote_0 redis-bundle-0" [ style = bold] +"redis:0_start_0 redis-bundle-0" -> "redis:1_start_0 redis-bundle-1" [ style = bold] +"redis:0_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis:1_monitor_20000 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis:1_promote_0 redis-bundle-1" -> "redis-bundle-master_promoted_0" [ style = bold] +"redis:1_promote_0 redis-bundle-1" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] +"redis:1_promote_0 redis-bundle-1" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] +"redis:1_promote_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis:1_start_0 redis-bundle-1" -> "redis-bundle-master_running_0" [ style = bold] +"redis:1_start_0 redis-bundle-1" -> "redis:1_monitor_20000 redis-bundle-1" [ style = bold] +"redis:1_start_0 redis-bundle-1" -> "redis:1_promote_0 redis-bundle-1" [ style = bold] +"redis:1_start_0 redis-bundle-1" -> "redis:2_start_0 redis-bundle-2" [ style = bold] +"redis:1_start_0 redis-bundle-1" [ style=bold color="green" fontcolor="black"] +"redis:2_monitor_20000 redis-bundle-2" [ style=bold color="green" fontcolor="black"] +"redis:2_promote_0 redis-bundle-2" -> "redis-bundle-master_promoted_0" [ style = bold] +"redis:2_promote_0 redis-bundle-2" -> "redis:2_monitor_20000 redis-bundle-2" [ style = bold] +"redis:2_promote_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] +"redis:2_start_0 redis-bundle-2" -> "redis-bundle-master_running_0" [ style = bold] +"redis:2_start_0 redis-bundle-2" -> "redis:2_monitor_20000 redis-bundle-2" [ style = bold] +"redis:2_start_0 redis-bundle-2" -> "redis:2_promote_0 redis-bundle-2" [ style = bold] +"redis:2_start_0 redis-bundle-2" [ style=bold color="green" fontcolor="black"] +"storage-clone_confirmed-post_notify_running_0" -> "galera-bundle_start_0" [ style = bold] +"storage-clone_confirmed-post_notify_running_0" -> "storage:0_monitor_30000 metal-1" [ style = bold] +"storage-clone_confirmed-post_notify_running_0" -> "storage:1_monitor_30000 metal-2" [ style = bold] +"storage-clone_confirmed-post_notify_running_0" -> "storage:2_monitor_30000 metal-3" [ style = bold] +"storage-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_confirmed-pre_notify_start_0" -> "storage-clone_post_notify_running_0" [ style = bold] +"storage-clone_confirmed-pre_notify_start_0" -> "storage-clone_start_0" [ style = bold] +"storage-clone_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_post_notify_running_0" -> "storage-clone_confirmed-post_notify_running_0" [ style = bold] +"storage-clone_post_notify_running_0" -> "storage:0_post_notify_start_0 metal-1" [ style = bold] +"storage-clone_post_notify_running_0" -> "storage:1_post_notify_start_0 metal-2" [ style = bold] +"storage-clone_post_notify_running_0" -> "storage:2_post_notify_start_0 metal-3" [ style = bold] +"storage-clone_post_notify_running_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_pre_notify_start_0" -> "storage-clone_confirmed-pre_notify_start_0" [ style = bold] +"storage-clone_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_running_0" -> "storage-clone_post_notify_running_0" [ style = bold] +"storage-clone_running_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_start_0" -> "storage-clone_running_0" [ style = bold] +"storage-clone_start_0" -> "storage:0_start_0 metal-1" [ style = bold] +"storage-clone_start_0" -> "storage:1_start_0 metal-2" [ style = bold] +"storage-clone_start_0" -> "storage:2_start_0 metal-3" [ style = bold] +"storage-clone_start_0" [ style=bold color="green" fontcolor="orange"] +"storage:0_monitor_0 metal-1" -> "storage-clone_start_0" [ style = bold] +"storage:0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"storage:0_monitor_30000 metal-1" [ style=bold color="green" fontcolor="black"] +"storage:0_post_notify_start_0 metal-1" -> "storage-clone_confirmed-post_notify_running_0" [ style = bold] +"storage:0_post_notify_start_0 metal-1" [ style=bold color="green" fontcolor="black"] +"storage:0_start_0 metal-1" -> "storage-clone_running_0" [ style = bold] +"storage:0_start_0 metal-1" -> "storage:0_monitor_30000 metal-1" [ style = bold] +"storage:0_start_0 metal-1" [ style=bold color="green" fontcolor="black"] +"storage:1_monitor_0 metal-2" -> "storage-clone_start_0" [ style = bold] +"storage:1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"storage:1_monitor_30000 metal-2" [ style=bold color="green" fontcolor="black"] +"storage:1_post_notify_start_0 metal-2" -> "storage-clone_confirmed-post_notify_running_0" [ style = bold] +"storage:1_post_notify_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"storage:1_start_0 metal-2" -> "storage-clone_running_0" [ style = bold] +"storage:1_start_0 metal-2" -> "storage:1_monitor_30000 metal-2" [ style = bold] +"storage:1_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"storage:2_monitor_0 metal-3" -> "storage-clone_start_0" [ style = bold] +"storage:2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"storage:2_monitor_30000 metal-3" [ style=bold color="green" fontcolor="black"] +"storage:2_post_notify_start_0 metal-3" -> "storage-clone_confirmed-post_notify_running_0" [ style = bold] +"storage:2_post_notify_start_0 metal-3" [ style=bold color="green" fontcolor="black"] +"storage:2_start_0 metal-3" -> "storage-clone_running_0" [ style = bold] +"storage:2_start_0 metal-3" -> "storage:2_monitor_30000 metal-3" [ style = bold] +"storage:2_start_0 metal-3" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/bundle-order-startup-clone-2.exp b/pengine/test10/bundle-order-startup-clone-2.exp new file mode 100644 index 0000000..d05eb96 --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone-2.exp @@ -0,0 +1,1697 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-startup-clone-2.scores b/pengine/test10/bundle-order-startup-clone-2.scores new file mode 100644 index 0000000..493cd87 --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone-2.scores @@ -0,0 +1,584 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on galera-bundle-1: 0 +clone_color: galera-bundle-master allocation score on galera-bundle-2: 0 +clone_color: galera-bundle-master allocation score on metal-1: -INFINITY +clone_color: galera-bundle-master allocation score on metal-2: -INFINITY +clone_color: galera-bundle-master allocation score on metal-3: -INFINITY +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY +clone_color: galera:0 allocation score on metal-1: -INFINITY +clone_color: galera:0 allocation score on metal-2: -INFINITY +clone_color: galera:0 allocation score on metal-3: -INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY +clone_color: galera:1 allocation score on galera-bundle-1: INFINITY +clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY +clone_color: galera:1 allocation score on metal-1: -INFINITY +clone_color: galera:1 allocation score on metal-2: -INFINITY +clone_color: galera:1 allocation score on metal-3: -INFINITY +clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY +clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY +clone_color: galera:2 allocation score on galera-bundle-2: INFINITY +clone_color: galera:2 allocation score on metal-1: -INFINITY +clone_color: galera:2 allocation score on metal-2: -INFINITY +clone_color: galera:2 allocation score on metal-3: -INFINITY +clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY +clone_color: redis-bundle-master allocation score on metal-1: -INFINITY +clone_color: redis-bundle-master allocation score on metal-2: -INFINITY +clone_color: redis-bundle-master allocation score on metal-3: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on redis-bundle-1: 0 +clone_color: redis-bundle-master allocation score on redis-bundle-2: 0 +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY +clone_color: redis:0 allocation score on metal-1: -INFINITY +clone_color: redis:0 allocation score on metal-2: -INFINITY +clone_color: redis:0 allocation score on metal-3: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY +clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY +clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY +clone_color: redis:1 allocation score on metal-1: -INFINITY +clone_color: redis:1 allocation score on metal-2: -INFINITY +clone_color: redis:1 allocation score on metal-3: -INFINITY +clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY +clone_color: redis:1 allocation score on redis-bundle-1: INFINITY +clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY +clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY +clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY +clone_color: redis:2 allocation score on metal-1: -INFINITY +clone_color: redis:2 allocation score on metal-2: -INFINITY +clone_color: redis:2 allocation score on metal-3: -INFINITY +clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY +clone_color: redis:2 allocation score on redis-bundle-1: -INFINITY +clone_color: redis:2 allocation score on redis-bundle-2: INFINITY +clone_color: storage-clone allocation score on metal-1: 0 +clone_color: storage-clone allocation score on metal-2: 0 +clone_color: storage-clone allocation score on metal-3: 0 +clone_color: storage-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:0 allocation score on metal-1: 0 +clone_color: storage:0 allocation score on metal-2: 0 +clone_color: storage:0 allocation score on metal-3: 0 +clone_color: storage:0 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:1 allocation score on metal-1: 0 +clone_color: storage:1 allocation score on metal-2: 0 +clone_color: storage:1 allocation score on metal-3: 0 +clone_color: storage:1 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:2 allocation score on metal-1: 0 +clone_color: storage:2 allocation score on metal-2: 0 +clone_color: storage:2 allocation score on metal-3: 0 +clone_color: storage:2 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:3 allocation score on metal-1: 0 +clone_color: storage:3 allocation score on metal-2: 0 +clone_color: storage:3 allocation score on metal-3: 0 +clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle allocation score on metal-1: 0 +container_color: galera-bundle allocation score on metal-2: 0 +container_color: galera-bundle allocation score on metal-3: 0 +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-0 allocation score on metal-1: 0 +container_color: galera-bundle-0 allocation score on metal-2: 0 +container_color: galera-bundle-0 allocation score on metal-3: 0 +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-1 allocation score on metal-1: 0 +container_color: galera-bundle-1 allocation score on metal-2: 0 +container_color: galera-bundle-1 allocation score on metal-3: 0 +container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-2 allocation score on metal-1: 0 +container_color: galera-bundle-2 allocation score on metal-2: 0 +container_color: galera-bundle-2 allocation score on metal-3: 0 +container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-docker-0 allocation score on metal-1: 0 +container_color: galera-bundle-docker-0 allocation score on metal-2: 0 +container_color: galera-bundle-docker-0 allocation score on metal-3: 0 +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-docker-1 allocation score on metal-1: 0 +container_color: galera-bundle-docker-1 allocation score on metal-2: 0 +container_color: galera-bundle-docker-1 allocation score on metal-3: 0 +container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-docker-2 allocation score on metal-1: 0 +container_color: galera-bundle-docker-2 allocation score on metal-2: 0 +container_color: galera-bundle-docker-2 allocation score on metal-3: 0 +container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-master allocation score on metal-1: 0 +container_color: galera-bundle-master allocation score on metal-2: 0 +container_color: galera-bundle-master allocation score on metal-3: 0 +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on galera-bundle-1: -INFINITY +container_color: galera:0 allocation score on galera-bundle-2: -INFINITY +container_color: galera:0 allocation score on metal-1: 0 +container_color: galera:0 allocation score on metal-2: 0 +container_color: galera:0 allocation score on metal-3: 0 +container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 +container_color: galera:1 allocation score on galera-bundle-0: -INFINITY +container_color: galera:1 allocation score on galera-bundle-1: -INFINITY +container_color: galera:1 allocation score on galera-bundle-2: -INFINITY +container_color: galera:1 allocation score on metal-1: 0 +container_color: galera:1 allocation score on metal-2: 0 +container_color: galera:1 allocation score on metal-3: 0 +container_color: galera:1 allocation score on rabbitmq-bundle-0: 0 +container_color: galera:2 allocation score on galera-bundle-0: -INFINITY +container_color: galera:2 allocation score on galera-bundle-1: -INFINITY +container_color: galera:2 allocation score on galera-bundle-2: -INFINITY +container_color: galera:2 allocation score on metal-1: 0 +container_color: galera:2 allocation score on metal-2: 0 +container_color: galera:2 allocation score on metal-3: 0 +container_color: galera:2 allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle allocation score on metal-1: 0 +container_color: redis-bundle allocation score on metal-2: 0 +container_color: redis-bundle allocation score on metal-3: 0 +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-0 allocation score on metal-1: 0 +container_color: redis-bundle-0 allocation score on metal-2: 0 +container_color: redis-bundle-0 allocation score on metal-3: 0 +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-1 allocation score on metal-1: 0 +container_color: redis-bundle-1 allocation score on metal-2: 0 +container_color: redis-bundle-1 allocation score on metal-3: 0 +container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-2 allocation score on metal-1: 0 +container_color: redis-bundle-2 allocation score on metal-2: 0 +container_color: redis-bundle-2 allocation score on metal-3: 0 +container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-docker-0 allocation score on metal-1: 0 +container_color: redis-bundle-docker-0 allocation score on metal-2: 0 +container_color: redis-bundle-docker-0 allocation score on metal-3: 0 +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-docker-1 allocation score on metal-1: 0 +container_color: redis-bundle-docker-1 allocation score on metal-2: 0 +container_color: redis-bundle-docker-1 allocation score on metal-3: 0 +container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-docker-2 allocation score on metal-1: 0 +container_color: redis-bundle-docker-2 allocation score on metal-2: 0 +container_color: redis-bundle-docker-2 allocation score on metal-3: 0 +container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-master allocation score on metal-1: 0 +container_color: redis-bundle-master allocation score on metal-2: 0 +container_color: redis-bundle-master allocation score on metal-3: 0 +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 0 +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-2: -INFINITY +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on galera-bundle-1: -INFINITY +container_color: redis:0 allocation score on galera-bundle-2: -INFINITY +container_color: redis:0 allocation score on metal-1: 0 +container_color: redis:0 allocation score on metal-2: 0 +container_color: redis:0 allocation score on metal-3: 0 +container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on redis-bundle-1: -INFINITY +container_color: redis:0 allocation score on redis-bundle-2: -INFINITY +container_color: redis:1 allocation score on galera-bundle-0: -INFINITY +container_color: redis:1 allocation score on galera-bundle-1: -INFINITY +container_color: redis:1 allocation score on galera-bundle-2: -INFINITY +container_color: redis:1 allocation score on metal-1: 0 +container_color: redis:1 allocation score on metal-2: 0 +container_color: redis:1 allocation score on metal-3: 0 +container_color: redis:1 allocation score on rabbitmq-bundle-0: 0 +container_color: redis:1 allocation score on redis-bundle-0: -INFINITY +container_color: redis:1 allocation score on redis-bundle-1: -INFINITY +container_color: redis:1 allocation score on redis-bundle-2: -INFINITY +container_color: redis:2 allocation score on galera-bundle-0: -INFINITY +container_color: redis:2 allocation score on galera-bundle-1: -INFINITY +container_color: redis:2 allocation score on galera-bundle-2: -INFINITY +container_color: redis:2 allocation score on metal-1: 0 +container_color: redis:2 allocation score on metal-2: 0 +container_color: redis:2 allocation score on metal-3: 0 +container_color: redis:2 allocation score on rabbitmq-bundle-0: 0 +container_color: redis:2 allocation score on redis-bundle-0: -INFINITY +container_color: redis:2 allocation score on redis-bundle-1: -INFINITY +container_color: redis:2 allocation score on redis-bundle-2: -INFINITY +galera:0 promotion score on galera-bundle-0: -1 +galera:1 promotion score on galera-bundle-1: -1 +galera:2 promotion score on galera-bundle-2: -1 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-0 allocation score on metal-1: 10000 +native_color: galera-bundle-0 allocation score on metal-2: 0 +native_color: galera-bundle-0 allocation score on metal-3: 0 +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-1 allocation score on metal-1: 0 +native_color: galera-bundle-1 allocation score on metal-2: 10000 +native_color: galera-bundle-1 allocation score on metal-3: 0 +native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-2 allocation score on metal-1: 0 +native_color: galera-bundle-2 allocation score on metal-2: 0 +native_color: galera-bundle-2 allocation score on metal-3: 10000 +native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-docker-0 allocation score on metal-1: 0 +native_color: galera-bundle-docker-0 allocation score on metal-2: 0 +native_color: galera-bundle-docker-0 allocation score on metal-3: 0 +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-docker-1 allocation score on metal-1: -INFINITY +native_color: galera-bundle-docker-1 allocation score on metal-2: 0 +native_color: galera-bundle-docker-1 allocation score on metal-3: 0 +native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-docker-2 allocation score on metal-1: -INFINITY +native_color: galera-bundle-docker-2 allocation score on metal-2: -INFINITY +native_color: galera-bundle-docker-2 allocation score on metal-3: 0 +native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on galera-bundle-1: -INFINITY +native_color: galera:0 allocation score on galera-bundle-2: -INFINITY +native_color: galera:0 allocation score on metal-1: -INFINITY +native_color: galera:0 allocation score on metal-2: -INFINITY +native_color: galera:0 allocation score on metal-3: -INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:1 allocation score on galera-bundle-0: -INFINITY +native_color: galera:1 allocation score on galera-bundle-1: INFINITY +native_color: galera:1 allocation score on galera-bundle-2: -INFINITY +native_color: galera:1 allocation score on metal-1: -INFINITY +native_color: galera:1 allocation score on metal-2: -INFINITY +native_color: galera:1 allocation score on metal-3: -INFINITY +native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:2 allocation score on galera-bundle-0: -INFINITY +native_color: galera:2 allocation score on galera-bundle-1: -INFINITY +native_color: galera:2 allocation score on galera-bundle-2: INFINITY +native_color: galera:2 allocation score on metal-1: -INFINITY +native_color: galera:2 allocation score on metal-2: -INFINITY +native_color: galera:2 allocation score on metal-3: -INFINITY +native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 +native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on metal-2: 0 +native_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on metal-3: 0 +native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-0 allocation score on metal-1: 10000 +native_color: redis-bundle-0 allocation score on metal-2: 0 +native_color: redis-bundle-0 allocation score on metal-3: 0 +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-1 allocation score on metal-1: 0 +native_color: redis-bundle-1 allocation score on metal-2: 10000 +native_color: redis-bundle-1 allocation score on metal-3: 0 +native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-2 allocation score on metal-1: 0 +native_color: redis-bundle-2 allocation score on metal-2: 0 +native_color: redis-bundle-2 allocation score on metal-3: 10000 +native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-docker-0 allocation score on metal-1: 0 +native_color: redis-bundle-docker-0 allocation score on metal-2: -INFINITY +native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-docker-1 allocation score on metal-1: -INFINITY +native_color: redis-bundle-docker-1 allocation score on metal-2: 0 +native_color: redis-bundle-docker-1 allocation score on metal-3: -INFINITY +native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-docker-2 allocation score on metal-1: -INFINITY +native_color: redis-bundle-docker-2 allocation score on metal-2: -INFINITY +native_color: redis-bundle-docker-2 allocation score on metal-3: 0 +native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on galera-bundle-1: -INFINITY +native_color: redis:0 allocation score on galera-bundle-2: -INFINITY +native_color: redis:0 allocation score on metal-1: -INFINITY +native_color: redis:0 allocation score on metal-2: -INFINITY +native_color: redis:0 allocation score on metal-3: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:0 allocation score on redis-bundle-1: -INFINITY +native_color: redis:0 allocation score on redis-bundle-2: -INFINITY +native_color: redis:1 allocation score on galera-bundle-0: -INFINITY +native_color: redis:1 allocation score on galera-bundle-1: -INFINITY +native_color: redis:1 allocation score on galera-bundle-2: -INFINITY +native_color: redis:1 allocation score on metal-1: -INFINITY +native_color: redis:1 allocation score on metal-2: -INFINITY +native_color: redis:1 allocation score on metal-3: -INFINITY +native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:1 allocation score on redis-bundle-0: -INFINITY +native_color: redis:1 allocation score on redis-bundle-1: INFINITY +native_color: redis:1 allocation score on redis-bundle-2: -INFINITY +native_color: redis:2 allocation score on galera-bundle-0: -INFINITY +native_color: redis:2 allocation score on galera-bundle-1: -INFINITY +native_color: redis:2 allocation score on galera-bundle-2: -INFINITY +native_color: redis:2 allocation score on metal-1: -INFINITY +native_color: redis:2 allocation score on metal-2: -INFINITY +native_color: redis:2 allocation score on metal-3: -INFINITY +native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:2 allocation score on redis-bundle-0: -INFINITY +native_color: redis:2 allocation score on redis-bundle-1: -INFINITY +native_color: redis:2 allocation score on redis-bundle-2: INFINITY +native_color: storage:0 allocation score on metal-1: 0 +native_color: storage:0 allocation score on metal-2: 0 +native_color: storage:0 allocation score on metal-3: 0 +native_color: storage:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:1 allocation score on metal-1: -INFINITY +native_color: storage:1 allocation score on metal-2: 0 +native_color: storage:1 allocation score on metal-3: 0 +native_color: storage:1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:2 allocation score on metal-1: -INFINITY +native_color: storage:2 allocation score on metal-2: -INFINITY +native_color: storage:2 allocation score on metal-3: 0 +native_color: storage:2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:3 allocation score on metal-1: -INFINITY +native_color: storage:3 allocation score on metal-2: -INFINITY +native_color: storage:3 allocation score on metal-3: -INFINITY +native_color: storage:3 allocation score on rabbitmq-bundle-0: -INFINITY +redis:0 promotion score on redis-bundle-0: 99 +redis:1 promotion score on redis-bundle-1: 99 +redis:2 promotion score on redis-bundle-2: 99 diff --git a/pengine/test10/bundle-order-startup-clone-2.summary b/pengine/test10/bundle-order-startup-clone-2.summary new file mode 100644 index 0000000..e23d933 --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone-2.summary @@ -0,0 +1,179 @@ + +Current cluster status: +Online: [ metal-1 metal-2 metal-3 ] +RemoteOFFLINE: [ rabbitmq-bundle-0 ] + + Clone Set: storage-clone [storage] + Stopped: [ metal-1 metal-2 metal-3 rabbitmq-bundle-0 ] + Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped + galera-bundle-1 (ocf::heartbeat:galera): Stopped + galera-bundle-2 (ocf::heartbeat:galera): Stopped + Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped + haproxy-bundle-docker-1 (ocf::heartbeat:docker): Stopped + haproxy-bundle-docker-2 (ocf::heartbeat:docker): Stopped + Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Stopped + redis-bundle-1 (ocf::heartbeat:redis): Stopped + redis-bundle-2 (ocf::heartbeat:redis): Stopped + +Transition Summary: + * Start storage:0 (metal-1) + * Start storage:1 (metal-2) + * Start storage:2 (metal-3) + * Start galera-bundle-docker-0 (metal-1) + * Start galera-bundle-0 (metal-1) + * Start galera:0 (galera-bundle-0) + * Start galera-bundle-docker-1 (metal-2) + * Start galera-bundle-1 (metal-2) + * Start galera:1 (galera-bundle-1) + * Start galera-bundle-docker-2 (metal-3) + * Start galera-bundle-2 (metal-3) + * Start galera:2 (galera-bundle-2) + * Start haproxy-bundle-docker-0 (metal-1) + * Start haproxy-bundle-docker-1 (metal-2) + * Start haproxy-bundle-docker-2 (metal-3) + * Start redis-bundle-docker-0 (metal-1) + * Start redis-bundle-0 (metal-1) + * Start redis:0 (redis-bundle-0) + * Promote redis:0 (Stopped -> Master redis-bundle-0) + * Start redis-bundle-docker-1 (metal-2) + * Start redis-bundle-1 (metal-2) + * Start redis:1 (redis-bundle-1) + * Promote redis:1 (Stopped -> Master redis-bundle-1) + * Start redis-bundle-docker-2 (metal-3) + * Start redis-bundle-2 (metal-3) + * Start redis:2 (redis-bundle-2) + * Promote redis:2 (Stopped -> Master redis-bundle-2) + +Executing cluster transition: + * Resource action: storage:0 monitor on metal-1 + * Resource action: storage:1 monitor on metal-2 + * Resource action: storage:2 monitor on metal-3 + * Pseudo action: storage-clone_pre_notify_start_0 + * Resource action: galera-bundle-docker-0 monitor on metal-3 + * Resource action: galera-bundle-docker-0 monitor on metal-2 + * Resource action: galera-bundle-docker-0 monitor on metal-1 + * Resource action: galera-bundle-docker-1 monitor on metal-3 + * Resource action: galera-bundle-docker-1 monitor on metal-2 + * Resource action: galera-bundle-docker-1 monitor on metal-1 + * Resource action: galera-bundle-docker-2 monitor on metal-3 + * Resource action: galera-bundle-docker-2 monitor on metal-2 + * Resource action: galera-bundle-docker-2 monitor on metal-1 + * Resource action: haproxy-bundle-docker-0 monitor on metal-3 + * Resource action: haproxy-bundle-docker-0 monitor on metal-2 + * Resource action: haproxy-bundle-docker-0 monitor on metal-1 + * Resource action: haproxy-bundle-docker-1 monitor on metal-3 + * Resource action: haproxy-bundle-docker-1 monitor on metal-2 + * Resource action: haproxy-bundle-docker-1 monitor on metal-1 + * Resource action: haproxy-bundle-docker-2 monitor on metal-3 + * Resource action: haproxy-bundle-docker-2 monitor on metal-2 + * Resource action: haproxy-bundle-docker-2 monitor on metal-1 + * Resource action: redis-bundle-docker-0 monitor on metal-3 + * Resource action: redis-bundle-docker-0 monitor on metal-2 + * Resource action: redis-bundle-docker-0 monitor on metal-1 + * Resource action: redis-bundle-docker-1 monitor on metal-3 + * Resource action: redis-bundle-docker-1 monitor on metal-2 + * Resource action: redis-bundle-docker-1 monitor on metal-1 + * Resource action: redis-bundle-docker-2 monitor on metal-3 + * Resource action: redis-bundle-docker-2 monitor on metal-2 + * Resource action: redis-bundle-docker-2 monitor on metal-1 + * Pseudo action: redis-bundle_start_0 + * Pseudo action: haproxy-bundle_start_0 + * Pseudo action: storage-clone_confirmed-pre_notify_start_0 + * Resource action: haproxy-bundle-docker-0 start on metal-1 + * Resource action: haproxy-bundle-docker-1 start on metal-2 + * Resource action: haproxy-bundle-docker-2 start on metal-3 + * Resource action: redis-bundle-docker-0 start on metal-1 + * Resource action: redis-bundle-0 start on metal-1 + * Resource action: redis-bundle-docker-1 start on metal-2 + * Resource action: redis-bundle-1 start on metal-2 + * Resource action: redis-bundle-docker-2 start on metal-3 + * Resource action: redis-bundle-2 start on metal-3 + * Pseudo action: redis-bundle-master_start_0 + * Pseudo action: haproxy-bundle_running_0 + * Resource action: haproxy-bundle-docker-0 monitor=60000 on metal-1 + * Resource action: haproxy-bundle-docker-1 monitor=60000 on metal-2 + * Resource action: haproxy-bundle-docker-2 monitor=60000 on metal-3 + * Resource action: redis:0 start on redis-bundle-0 + * Resource action: redis-bundle-docker-0 monitor=60000 on metal-1 + * Resource action: redis-bundle-0 monitor=60000 on metal-1 + * Resource action: redis:1 start on redis-bundle-1 + * Resource action: redis-bundle-docker-1 monitor=60000 on metal-2 + * Resource action: redis-bundle-1 monitor=60000 on metal-2 + * Resource action: redis:2 start on redis-bundle-2 + * Resource action: redis-bundle-docker-2 monitor=60000 on metal-3 + * Resource action: redis-bundle-2 monitor=60000 on metal-3 + * Pseudo action: redis-bundle-master_running_0 + * Pseudo action: redis-bundle_running_0 + * Pseudo action: redis-bundle_promote_0 + * Pseudo action: redis-bundle-master_promote_0 + * Resource action: redis:0 promote on redis-bundle-0 + * Resource action: redis:1 promote on redis-bundle-1 + * Resource action: redis:2 promote on redis-bundle-2 + * Pseudo action: redis-bundle-master_promoted_0 + * Resource action: redis:0 monitor=20000 on redis-bundle-0 + * Resource action: redis:1 monitor=20000 on redis-bundle-1 + * Resource action: redis:2 monitor=20000 on redis-bundle-2 + * Pseudo action: redis-bundle_promoted_0 + * Pseudo action: storage-clone_start_0 + * Resource action: storage:0 start on metal-1 + * Resource action: storage:1 start on metal-2 + * Resource action: storage:2 start on metal-3 + * Pseudo action: storage-clone_running_0 + * Pseudo action: storage-clone_post_notify_running_0 + * Resource action: storage:0 notify on metal-1 + * Resource action: storage:1 notify on metal-2 + * Resource action: storage:2 notify on metal-3 + * Pseudo action: storage-clone_confirmed-post_notify_running_0 + * Pseudo action: galera-bundle_start_0 + * Resource action: storage:0 monitor=30000 on metal-1 + * Resource action: storage:1 monitor=30000 on metal-2 + * Resource action: storage:2 monitor=30000 on metal-3 + * Resource action: galera-bundle-docker-0 start on metal-1 + * Resource action: galera-bundle-0 start on metal-1 + * Resource action: galera-bundle-docker-1 start on metal-2 + * Resource action: galera-bundle-1 start on metal-2 + * Resource action: galera-bundle-docker-2 start on metal-3 + * Resource action: galera-bundle-2 start on metal-3 + * Pseudo action: galera-bundle-master_start_0 + * Resource action: galera:0 start on galera-bundle-0 + * Resource action: galera-bundle-docker-0 monitor=60000 on metal-1 + * Resource action: galera-bundle-0 monitor=60000 on metal-1 + * Resource action: galera:1 start on galera-bundle-1 + * Resource action: galera-bundle-docker-1 monitor=60000 on metal-2 + * Resource action: galera-bundle-1 monitor=60000 on metal-2 + * Resource action: galera:2 start on galera-bundle-2 + * Resource action: galera-bundle-docker-2 monitor=60000 on metal-3 + * Resource action: galera-bundle-2 monitor=60000 on metal-3 + * Pseudo action: galera-bundle-master_running_0 + * Pseudo action: galera-bundle_running_0 + * Resource action: galera:0 monitor=30000 on galera-bundle-0 + * Resource action: galera:0 monitor=20000 on galera-bundle-0 + * Resource action: galera:1 monitor=30000 on galera-bundle-1 + * Resource action: galera:1 monitor=20000 on galera-bundle-1 + * Resource action: galera:2 monitor=30000 on galera-bundle-2 + * Resource action: galera:2 monitor=20000 on galera-bundle-2 + +Revised cluster status: +Online: [ metal-1 metal-2 metal-3 ] +RemoteOFFLINE: [ rabbitmq-bundle-0 ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] + + Clone Set: storage-clone [storage] + Started: [ metal-1 metal-2 metal-3 ] + Stopped: [ rabbitmq-bundle-0 ] + Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Slave metal-1 + galera-bundle-1 (ocf::heartbeat:galera): Slave metal-2 + galera-bundle-2 (ocf::heartbeat:galera): Slave metal-3 + Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started metal-1 + haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started metal-2 + haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started metal-3 + Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master metal-1 + redis-bundle-1 (ocf::heartbeat:redis): Master metal-2 + redis-bundle-2 (ocf::heartbeat:redis): Master metal-3 + diff --git a/pengine/test10/bundle-order-startup-clone-2.xml b/pengine/test10/bundle-order-startup-clone-2.xml new file mode 100644 index 0000000..e2c248e --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone-2.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-startup-clone.dot b/pengine/test10/bundle-order-startup-clone.dot new file mode 100644 index 0000000..92f019f --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone.dot @@ -0,0 +1,119 @@ +digraph "g" { +"galera-bundle-0_monitor_60000 metal-1" [ style=dashed color="red" fontcolor="black"] +"galera-bundle-0_start_0 metal-1" -> "galera-bundle-0_monitor_60000 metal-1" [ style = dashed] +"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] +"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_30000 galera-bundle-0" [ style = dashed] +"galera-bundle-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] +"galera-bundle-0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] +"galera-bundle-docker-0_monitor_0 metal-1" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] +"galera-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_0 metal-2" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] +"galera-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_0 metal-3" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] +"galera-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_monitor_60000 metal-1" [ style=dashed color="red" fontcolor="black"] +"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] +"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle-docker-0_monitor_60000 metal-1" [ style = dashed] +"galera-bundle-docker-0_start_0 metal-1" -> "galera-bundle_running_0" [ style = dashed] +"galera-bundle-docker-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] +"galera-bundle-docker-0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = dashed] +"galera-bundle-master_running_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = dashed] +"galera-bundle-master_start_0" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] +"galera-bundle-master_start_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle_running_0" [ style=dashed color="red" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-docker-0_start_0 metal-1" [ style = dashed] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = dashed] +"galera-bundle_start_0" [ style=dashed color="red" fontcolor="orange"] +"galera:0_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera:0_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = dashed] +"galera:0_start_0 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 metal-1" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 metal-2" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_0 metal-3" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] +"haproxy-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle-docker-0_start_0 metal-2" -> "haproxy-bundle-docker-0_monitor_60000 metal-2" [ style = bold] +"haproxy-bundle-docker-0_start_0 metal-2" -> "haproxy-bundle_running_0" [ style = bold] +"haproxy-bundle-docker-0_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"haproxy-bundle_running_0" -> "storage-clone_start_0" [ style = dashed] +"haproxy-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"haproxy-bundle_start_0" -> "haproxy-bundle-docker-0_start_0 metal-2" [ style = bold] +"haproxy-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-0_start_0 metal-2" -> "redis-bundle-0_monitor_60000 metal-2" [ style = bold] +"redis-bundle-0_start_0 metal-2" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 metal-2" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 metal-2" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-0_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_0 metal-1" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_0 metal-2" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_0 metal-3" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] +"redis-bundle-docker-0_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_monitor_60000 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-0_start_0 metal-2" [ style = bold] +"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle-docker-0_monitor_60000 metal-2" [ style = bold] +"redis-bundle-docker-0_start_0 metal-2" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-docker-0_start_0 metal-2" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-docker-0_start_0 metal-2" [ style=bold color="green" fontcolor="black"] +"redis-bundle-master_running_0" -> "redis-bundle_running_0" [ style = bold] +"redis-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle-master_start_0" -> "redis-bundle-master_running_0" [ style = bold] +"redis-bundle-master_start_0" -> "redis:0_start_0 redis-bundle-0" [ style = bold] +"redis-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"redis-bundle_start_0" -> "redis-bundle-docker-0_start_0 metal-2" [ style = bold] +"redis-bundle_start_0" -> "redis-bundle-master_start_0" [ style = bold] +"redis-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"redis:0_monitor_45000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis:0_monitor_60000 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"redis:0_start_0 redis-bundle-0" -> "redis-bundle-master_running_0" [ style = bold] +"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_45000 redis-bundle-0" [ style = bold] +"redis:0_start_0 redis-bundle-0" -> "redis:0_monitor_60000 redis-bundle-0" [ style = bold] +"redis:0_start_0 redis-bundle-0" [ style=bold color="green" fontcolor="black"] +"storage-clone_confirmed-post_notify_running_0" -> "galera-bundle_start_0" [ style = dashed] +"storage-clone_confirmed-post_notify_running_0" -> "storage:0_monitor_30000 metal-1" [ style = dashed] +"storage-clone_confirmed-post_notify_running_0" -> "storage:1_monitor_30000 metal-2" [ style = dashed] +"storage-clone_confirmed-post_notify_running_0" -> "storage:2_monitor_30000 metal-3" [ style = dashed] +"storage-clone_confirmed-post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] +"storage-clone_confirmed-pre_notify_start_0" -> "storage-clone_post_notify_running_0" [ style = dashed] +"storage-clone_confirmed-pre_notify_start_0" -> "storage-clone_start_0" [ style = dashed] +"storage-clone_confirmed-pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] +"storage-clone_post_notify_running_0" -> "storage-clone_confirmed-post_notify_running_0" [ style = dashed] +"storage-clone_post_notify_running_0" [ style=dashed color="red" fontcolor="orange"] +"storage-clone_pre_notify_start_0" -> "storage-clone_confirmed-pre_notify_start_0" [ style = dashed] +"storage-clone_pre_notify_start_0" [ style=dashed color="red" fontcolor="orange"] +"storage-clone_running_0" -> "storage-clone_post_notify_running_0" [ style = dashed] +"storage-clone_running_0" [ style=dashed color="red" fontcolor="orange"] +"storage-clone_start_0" -> "storage-clone_running_0" [ style = dashed] +"storage-clone_start_0" -> "storage:0_start_0 metal-1" [ style = dashed] +"storage-clone_start_0" -> "storage:1_start_0 metal-2" [ style = dashed] +"storage-clone_start_0" -> "storage:2_start_0 metal-3" [ style = dashed] +"storage-clone_start_0" [ style=dashed color="red" fontcolor="orange"] +"storage:0_monitor_0 metal-1" -> "storage-clone_start_0" [ style = dashed] +"storage:0_monitor_0 metal-1" [ style=bold color="green" fontcolor="black"] +"storage:0_monitor_30000 metal-1" [ style=dashed color="red" fontcolor="black"] +"storage:0_start_0 metal-1" -> "storage-clone_running_0" [ style = dashed] +"storage:0_start_0 metal-1" -> "storage:0_monitor_30000 metal-1" [ style = dashed] +"storage:0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] +"storage:1_monitor_0 metal-2" -> "storage-clone_start_0" [ style = dashed] +"storage:1_monitor_0 metal-2" [ style=bold color="green" fontcolor="black"] +"storage:1_monitor_30000 metal-2" [ style=dashed color="red" fontcolor="black"] +"storage:1_start_0 metal-2" -> "storage-clone_running_0" [ style = dashed] +"storage:1_start_0 metal-2" -> "storage:1_monitor_30000 metal-2" [ style = dashed] +"storage:1_start_0 metal-2" [ style=dashed color="red" fontcolor="black"] +"storage:2_monitor_0 metal-3" -> "storage-clone_start_0" [ style = dashed] +"storage:2_monitor_0 metal-3" [ style=bold color="green" fontcolor="black"] +"storage:2_monitor_30000 metal-3" [ style=dashed color="red" fontcolor="black"] +"storage:2_start_0 metal-3" -> "storage-clone_running_0" [ style = dashed] +"storage:2_start_0 metal-3" -> "storage:2_monitor_30000 metal-3" [ style = dashed] +"storage:2_start_0 metal-3" [ style=dashed color="red" fontcolor="black"] +} diff --git a/pengine/test10/bundle-order-startup-clone.exp b/pengine/test10/bundle-order-startup-clone.exp new file mode 100644 index 0000000..c736cb9 --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone.exp @@ -0,0 +1,327 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-startup-clone.scores b/pengine/test10/bundle-order-startup-clone.scores new file mode 100644 index 0000000..d907861 --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone.scores @@ -0,0 +1,174 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on metal-1: -INFINITY +clone_color: galera-bundle-master allocation score on metal-2: -INFINITY +clone_color: galera-bundle-master allocation score on metal-3: -INFINITY +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on metal-1: -INFINITY +clone_color: galera:0 allocation score on metal-2: -INFINITY +clone_color: galera:0 allocation score on metal-3: -INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on metal-1: -INFINITY +clone_color: redis-bundle-master allocation score on metal-2: -INFINITY +clone_color: redis-bundle-master allocation score on metal-3: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on metal-1: -INFINITY +clone_color: redis:0 allocation score on metal-2: -INFINITY +clone_color: redis:0 allocation score on metal-3: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: storage-clone allocation score on metal-1: 0 +clone_color: storage-clone allocation score on metal-2: 0 +clone_color: storage-clone allocation score on metal-3: 0 +clone_color: storage-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:0 allocation score on metal-1: 0 +clone_color: storage:0 allocation score on metal-2: 0 +clone_color: storage:0 allocation score on metal-3: 0 +clone_color: storage:0 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:1 allocation score on metal-1: 0 +clone_color: storage:1 allocation score on metal-2: 0 +clone_color: storage:1 allocation score on metal-3: 0 +clone_color: storage:1 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:2 allocation score on metal-1: 0 +clone_color: storage:2 allocation score on metal-2: 0 +clone_color: storage:2 allocation score on metal-3: 0 +clone_color: storage:2 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:3 allocation score on metal-1: 0 +clone_color: storage:3 allocation score on metal-2: 0 +clone_color: storage:3 allocation score on metal-3: 0 +clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on metal-1: 0 +container_color: galera-bundle allocation score on metal-2: 0 +container_color: galera-bundle allocation score on metal-3: 0 +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on metal-1: 0 +container_color: galera-bundle-0 allocation score on metal-2: 0 +container_color: galera-bundle-0 allocation score on metal-3: 0 +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on metal-1: 0 +container_color: galera-bundle-docker-0 allocation score on metal-2: 0 +container_color: galera-bundle-docker-0 allocation score on metal-3: 0 +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on metal-1: 0 +container_color: galera-bundle-master allocation score on metal-2: 0 +container_color: galera-bundle-master allocation score on metal-3: 0 +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on metal-1: 0 +container_color: galera:0 allocation score on metal-2: 0 +container_color: galera:0 allocation score on metal-3: 0 +container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on metal-1: 0 +container_color: redis-bundle allocation score on metal-2: 0 +container_color: redis-bundle allocation score on metal-3: 0 +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on metal-1: 0 +container_color: redis-bundle-0 allocation score on metal-2: 0 +container_color: redis-bundle-0 allocation score on metal-3: 0 +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on metal-1: 0 +container_color: redis-bundle-docker-0 allocation score on metal-2: 0 +container_color: redis-bundle-docker-0 allocation score on metal-3: 0 +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on metal-1: 0 +container_color: redis-bundle-master allocation score on metal-2: 0 +container_color: redis-bundle-master allocation score on metal-3: 0 +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 0 +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on metal-1: 0 +container_color: redis:0 allocation score on metal-2: 0 +container_color: redis:0 allocation score on metal-3: 0 +container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +galera:0 promotion score on galera-bundle-0: -1 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on metal-1: 10000 +native_color: galera-bundle-0 allocation score on metal-2: 0 +native_color: galera-bundle-0 allocation score on metal-3: 0 +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on metal-1: 0 +native_color: galera-bundle-docker-0 allocation score on metal-2: 0 +native_color: galera-bundle-docker-0 allocation score on metal-3: 0 +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on metal-1: -INFINITY +native_color: galera:0 allocation score on metal-2: -INFINITY +native_color: galera:0 allocation score on metal-3: -INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on metal-1: 0 +native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on metal-1: 0 +native_color: redis-bundle-0 allocation score on metal-2: 10000 +native_color: redis-bundle-0 allocation score on metal-3: 0 +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on metal-1: -INFINITY +native_color: redis-bundle-docker-0 allocation score on metal-2: 0 +native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on metal-1: -INFINITY +native_color: redis:0 allocation score on metal-2: -INFINITY +native_color: redis:0 allocation score on metal-3: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: storage:0 allocation score on metal-1: 0 +native_color: storage:0 allocation score on metal-2: 0 +native_color: storage:0 allocation score on metal-3: 0 +native_color: storage:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:1 allocation score on metal-1: -INFINITY +native_color: storage:1 allocation score on metal-2: 0 +native_color: storage:1 allocation score on metal-3: 0 +native_color: storage:1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:2 allocation score on metal-1: -INFINITY +native_color: storage:2 allocation score on metal-2: -INFINITY +native_color: storage:2 allocation score on metal-3: 0 +native_color: storage:2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:3 allocation score on metal-1: -INFINITY +native_color: storage:3 allocation score on metal-2: -INFINITY +native_color: storage:3 allocation score on metal-3: -INFINITY +native_color: storage:3 allocation score on rabbitmq-bundle-0: -INFINITY +redis:0 promotion score on redis-bundle-0: -1 diff --git a/pengine/test10/bundle-order-startup-clone.summary b/pengine/test10/bundle-order-startup-clone.summary new file mode 100644 index 0000000..f3f8be0 --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone.summary @@ -0,0 +1,69 @@ + +Current cluster status: +Online: [ metal-1 metal-2 metal-3 ] +RemoteOFFLINE: [ rabbitmq-bundle-0 ] + + Clone Set: storage-clone [storage] + Stopped: [ metal-1 metal-2 metal-3 rabbitmq-bundle-0 ] + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Stopped + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Stopped + +Transition Summary: + * Start storage:0 (metal-1 - blocked) + * Start storage:1 (metal-2 - blocked) + * Start storage:2 (metal-3 - blocked) + * Start galera-bundle-docker-0 (metal-1 - blocked) + * Start galera-bundle-0 (metal-1 - blocked) + * Start galera:0 (galera-bundle-0 - blocked) + * Start haproxy-bundle-docker-0 (metal-2) + * Start redis-bundle-docker-0 (metal-2) + * Start redis-bundle-0 (metal-2) + * Start redis:0 (redis-bundle-0) + +Executing cluster transition: + * Resource action: storage:0 monitor on metal-1 + * Resource action: storage:1 monitor on metal-2 + * Resource action: storage:2 monitor on metal-3 + * Resource action: galera-bundle-docker-0 monitor on metal-3 + * Resource action: galera-bundle-docker-0 monitor on metal-2 + * Resource action: galera-bundle-docker-0 monitor on metal-1 + * Resource action: haproxy-bundle-docker-0 monitor on metal-3 + * Resource action: haproxy-bundle-docker-0 monitor on metal-2 + * Resource action: haproxy-bundle-docker-0 monitor on metal-1 + * Resource action: redis-bundle-docker-0 monitor on metal-3 + * Resource action: redis-bundle-docker-0 monitor on metal-2 + * Resource action: redis-bundle-docker-0 monitor on metal-1 + * Pseudo action: redis-bundle_start_0 + * Pseudo action: haproxy-bundle_start_0 + * Resource action: haproxy-bundle-docker-0 start on metal-2 + * Resource action: redis-bundle-docker-0 start on metal-2 + * Resource action: redis-bundle-0 start on metal-2 + * Pseudo action: redis-bundle-master_start_0 + * Pseudo action: haproxy-bundle_running_0 + * Resource action: haproxy-bundle-docker-0 monitor=60000 on metal-2 + * Resource action: redis:0 start on redis-bundle-0 + * Resource action: redis-bundle-docker-0 monitor=60000 on metal-2 + * Resource action: redis-bundle-0 monitor=60000 on metal-2 + * Pseudo action: redis-bundle-master_running_0 + * Pseudo action: redis-bundle_running_0 + * Resource action: redis:0 monitor=60000 on redis-bundle-0 + * Resource action: redis:0 monitor=45000 on redis-bundle-0 + +Revised cluster status: +Online: [ metal-1 metal-2 metal-3 ] +RemoteOFFLINE: [ rabbitmq-bundle-0 ] +Containers: [ redis-bundle-0:redis-bundle-docker-0 ] + + Clone Set: storage-clone [storage] + Stopped: [ metal-1 metal-2 metal-3 rabbitmq-bundle-0 ] + Docker container: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped + Docker container: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started metal-2 + Docker container: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Slave metal-2 + diff --git a/pengine/test10/bundle-order-startup-clone.xml b/pengine/test10/bundle-order-startup-clone.xml new file mode 100644 index 0000000..d24c707 --- /dev/null +++ b/pengine/test10/bundle-order-startup-clone.xml @@ -0,0 +1,187 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-stop-clone.dot b/pengine/test10/bundle-order-stop-clone.dot new file mode 100644 index 0000000..6545fb8 --- /dev/null +++ b/pengine/test10/bundle-order-stop-clone.dot @@ -0,0 +1,80 @@ +digraph "g" { +"all_stopped" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-0_monitor_60000 metal-1" [ style=dashed color="red" fontcolor="black"] +"galera-bundle-0_start_0 metal-1" -> "galera-bundle-0_monitor_60000 metal-1" [ style = dashed] +"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] +"galera-bundle-0_start_0 metal-1" -> "galera:0_monitor_30000 galera-bundle-0" [ style = dashed] +"galera-bundle-0_start_0 metal-1" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] +"galera-bundle-0_start_0 metal-1" [ style=dashed color="red" fontcolor="black"] +"galera-bundle-0_stop_0 metal-1" -> "all_stopped" [ style = bold] +"galera-bundle-0_stop_0 metal-1" -> "galera-bundle-0_start_0 metal-1" [ style = dashed] +"galera-bundle-0_stop_0 metal-1" -> "galera-bundle-docker-0_stop_0 metal-1" [ style = bold] +"galera-bundle-0_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-docker-0_stop_0 metal-1" -> "all_stopped" [ style = bold] +"galera-bundle-docker-0_stop_0 metal-1" -> "galera-bundle_stopped_0" [ style = bold] +"galera-bundle-docker-0_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] +"galera-bundle-master_running_0" -> "galera-bundle_running_0" [ style = bold] +"galera-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_start_0" -> "galera-bundle-master_running_0" [ style = bold] +"galera-bundle-master_start_0" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] +"galera-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_stop_0" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera-bundle-master_stop_0" -> "galera:0_stop_0 galera-bundle-0" [ style = bold] +"galera-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle-master_stopped_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle-master_stopped_0" -> "galera-bundle_stopped_0" [ style = bold] +"galera-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_start_0" -> "galera-bundle-master_start_0" [ style = bold] +"galera-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stop_0" -> "galera-bundle-docker-0_stop_0 metal-1" [ style = bold] +"galera-bundle_stop_0" -> "galera-bundle-master_stop_0" [ style = bold] +"galera-bundle_stop_0" -> "galera:0_stop_0 galera-bundle-0" [ style = bold] +"galera-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"galera-bundle_stopped_0" -> "galera-bundle_start_0" [ style = bold] +"galera-bundle_stopped_0" -> "storage-clone_stop_0" [ style = bold] +"galera-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"galera:0_monitor_20000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera:0_monitor_30000 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera:0_start_0 galera-bundle-0" -> "galera-bundle-master_running_0" [ style = dashed] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_20000 galera-bundle-0" [ style = dashed] +"galera:0_start_0 galera-bundle-0" -> "galera:0_monitor_30000 galera-bundle-0" [ style = dashed] +"galera:0_start_0 galera-bundle-0" [ style=dashed color="red" fontcolor="black"] +"galera:0_stop_0 galera-bundle-0" -> "all_stopped" [ style = bold] +"galera:0_stop_0 galera-bundle-0" -> "galera-bundle-0_stop_0 metal-1" [ style = bold] +"galera:0_stop_0 galera-bundle-0" -> "galera-bundle-master_stopped_0" [ style = bold] +"galera:0_stop_0 galera-bundle-0" -> "galera:0_start_0 galera-bundle-0" [ style = dashed] +"galera:0_stop_0 galera-bundle-0" [ style=bold color="green" fontcolor="black"] +"storage-clone_confirmed-post_notify_stopped_0" -> "all_stopped" [ style = bold] +"storage-clone_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_confirmed-pre_notify_stop_0" -> "storage-clone_post_notify_stopped_0" [ style = bold] +"storage-clone_confirmed-pre_notify_stop_0" -> "storage-clone_stop_0" [ style = bold] +"storage-clone_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_post_notify_stopped_0" -> "storage-clone_confirmed-post_notify_stopped_0" [ style = bold] +"storage-clone_post_notify_stopped_0" -> "storage:1_post_notify_stop_0 metal-2" [ style = bold] +"storage-clone_post_notify_stopped_0" -> "storage:2_post_notify_stop_0 metal-3" [ style = bold] +"storage-clone_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_pre_notify_stop_0" -> "storage-clone_confirmed-pre_notify_stop_0" [ style = bold] +"storage-clone_pre_notify_stop_0" -> "storage:0_pre_notify_stop_0 metal-1" [ style = bold] +"storage-clone_pre_notify_stop_0" -> "storage:1_pre_notify_stop_0 metal-2" [ style = bold] +"storage-clone_pre_notify_stop_0" -> "storage:2_pre_notify_stop_0 metal-3" [ style = bold] +"storage-clone_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_stop_0" -> "storage-clone_stopped_0" [ style = bold] +"storage-clone_stop_0" -> "storage:0_stop_0 metal-1" [ style = bold] +"storage-clone_stop_0" [ style=bold color="green" fontcolor="orange"] +"storage-clone_stopped_0" -> "storage-clone_post_notify_stopped_0" [ style = bold] +"storage-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"storage:0_pre_notify_stop_0 metal-1" -> "storage-clone_confirmed-pre_notify_stop_0" [ style = bold] +"storage:0_pre_notify_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] +"storage:0_stop_0 metal-1" -> "all_stopped" [ style = bold] +"storage:0_stop_0 metal-1" -> "storage-clone_stopped_0" [ style = bold] +"storage:0_stop_0 metal-1" [ style=bold color="green" fontcolor="black"] +"storage:1_post_notify_stop_0 metal-2" -> "storage-clone_confirmed-post_notify_stopped_0" [ style = bold] +"storage:1_post_notify_stop_0 metal-2" [ style=bold color="green" fontcolor="black"] +"storage:1_pre_notify_stop_0 metal-2" -> "storage-clone_confirmed-pre_notify_stop_0" [ style = bold] +"storage:1_pre_notify_stop_0 metal-2" [ style=bold color="green" fontcolor="black"] +"storage:2_post_notify_stop_0 metal-3" -> "storage-clone_confirmed-post_notify_stopped_0" [ style = bold] +"storage:2_post_notify_stop_0 metal-3" [ style=bold color="green" fontcolor="black"] +"storage:2_pre_notify_stop_0 metal-3" -> "storage-clone_confirmed-pre_notify_stop_0" [ style = bold] +"storage:2_pre_notify_stop_0 metal-3" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/bundle-order-stop-clone.exp b/pengine/test10/bundle-order-stop-clone.exp new file mode 100644 index 0000000..ac0ae05 --- /dev/null +++ b/pengine/test10/bundle-order-stop-clone.exp @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/bundle-order-stop-clone.scores b/pengine/test10/bundle-order-stop-clone.scores new file mode 100644 index 0000000..df53f32 --- /dev/null +++ b/pengine/test10/bundle-order-stop-clone.scores @@ -0,0 +1,591 @@ +Allocation scores: +clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 +clone_color: galera-bundle-master allocation score on galera-bundle-1: 0 +clone_color: galera-bundle-master allocation score on galera-bundle-2: 0 +clone_color: galera-bundle-master allocation score on metal-1: -INFINITY +clone_color: galera-bundle-master allocation score on metal-2: -INFINITY +clone_color: galera-bundle-master allocation score on metal-3: -INFINITY +clone_color: galera-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-0: INFINITY +clone_color: galera:0 allocation score on galera-bundle-1: -INFINITY +clone_color: galera:0 allocation score on galera-bundle-2: -INFINITY +clone_color: galera:0 allocation score on metal-1: -INFINITY +clone_color: galera:0 allocation score on metal-2: -INFINITY +clone_color: galera:0 allocation score on metal-3: -INFINITY +clone_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:1 allocation score on galera-bundle-0: -INFINITY +clone_color: galera:1 allocation score on galera-bundle-1: INFINITY +clone_color: galera:1 allocation score on galera-bundle-2: -INFINITY +clone_color: galera:1 allocation score on metal-1: -INFINITY +clone_color: galera:1 allocation score on metal-2: -INFINITY +clone_color: galera:1 allocation score on metal-3: -INFINITY +clone_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: galera:2 allocation score on galera-bundle-0: -INFINITY +clone_color: galera:2 allocation score on galera-bundle-1: -INFINITY +clone_color: galera:2 allocation score on galera-bundle-2: INFINITY +clone_color: galera:2 allocation score on metal-1: -INFINITY +clone_color: galera:2 allocation score on metal-2: -INFINITY +clone_color: galera:2 allocation score on metal-3: -INFINITY +clone_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY +clone_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY +clone_color: redis-bundle-master allocation score on metal-1: -INFINITY +clone_color: redis-bundle-master allocation score on metal-2: -INFINITY +clone_color: redis-bundle-master allocation score on metal-3: -INFINITY +clone_color: redis-bundle-master allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 +clone_color: redis-bundle-master allocation score on redis-bundle-1: 0 +clone_color: redis-bundle-master allocation score on redis-bundle-2: 0 +clone_color: redis:0 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-1: -INFINITY +clone_color: redis:0 allocation score on galera-bundle-2: -INFINITY +clone_color: redis:0 allocation score on metal-1: -INFINITY +clone_color: redis:0 allocation score on metal-2: -INFINITY +clone_color: redis:0 allocation score on metal-3: -INFINITY +clone_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-0: INFINITY +clone_color: redis:0 allocation score on redis-bundle-1: -INFINITY +clone_color: redis:0 allocation score on redis-bundle-2: -INFINITY +clone_color: redis:1 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:1 allocation score on galera-bundle-1: -INFINITY +clone_color: redis:1 allocation score on galera-bundle-2: -INFINITY +clone_color: redis:1 allocation score on metal-1: -INFINITY +clone_color: redis:1 allocation score on metal-2: -INFINITY +clone_color: redis:1 allocation score on metal-3: -INFINITY +clone_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:1 allocation score on redis-bundle-0: -INFINITY +clone_color: redis:1 allocation score on redis-bundle-1: INFINITY +clone_color: redis:1 allocation score on redis-bundle-2: -INFINITY +clone_color: redis:2 allocation score on galera-bundle-0: -INFINITY +clone_color: redis:2 allocation score on galera-bundle-1: -INFINITY +clone_color: redis:2 allocation score on galera-bundle-2: -INFINITY +clone_color: redis:2 allocation score on metal-1: -INFINITY +clone_color: redis:2 allocation score on metal-2: -INFINITY +clone_color: redis:2 allocation score on metal-3: -INFINITY +clone_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY +clone_color: redis:2 allocation score on redis-bundle-0: -INFINITY +clone_color: redis:2 allocation score on redis-bundle-1: -INFINITY +clone_color: redis:2 allocation score on redis-bundle-2: INFINITY +clone_color: storage-clone allocation score on metal-1: -INFINITY +clone_color: storage-clone allocation score on metal-2: 0 +clone_color: storage-clone allocation score on metal-3: 0 +clone_color: storage-clone allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:0 allocation score on metal-1: -INFINITY +clone_color: storage:0 allocation score on metal-2: 0 +clone_color: storage:0 allocation score on metal-3: 0 +clone_color: storage:0 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:1 allocation score on metal-1: -INFINITY +clone_color: storage:1 allocation score on metal-2: INFINITY +clone_color: storage:1 allocation score on metal-3: 0 +clone_color: storage:1 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:2 allocation score on metal-1: -INFINITY +clone_color: storage:2 allocation score on metal-2: 0 +clone_color: storage:2 allocation score on metal-3: INFINITY +clone_color: storage:2 allocation score on rabbitmq-bundle-0: 0 +clone_color: storage:3 allocation score on metal-1: -INFINITY +clone_color: storage:3 allocation score on metal-2: 0 +clone_color: storage:3 allocation score on metal-3: 0 +clone_color: storage:3 allocation score on rabbitmq-bundle-0: 0 +container_color: galera-bundle allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle allocation score on metal-1: 0 +container_color: galera-bundle allocation score on metal-2: 0 +container_color: galera-bundle allocation score on metal-3: 0 +container_color: galera-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-0 allocation score on metal-1: INFINITY +container_color: galera-bundle-0 allocation score on metal-2: 0 +container_color: galera-bundle-0 allocation score on metal-3: 0 +container_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-1 allocation score on metal-1: 0 +container_color: galera-bundle-1 allocation score on metal-2: INFINITY +container_color: galera-bundle-1 allocation score on metal-3: 0 +container_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-2 allocation score on metal-1: 0 +container_color: galera-bundle-2 allocation score on metal-2: 0 +container_color: galera-bundle-2 allocation score on metal-3: INFINITY +container_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-docker-0 allocation score on metal-1: INFINITY +container_color: galera-bundle-docker-0 allocation score on metal-2: 0 +container_color: galera-bundle-docker-0 allocation score on metal-3: 0 +container_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-docker-1 allocation score on metal-1: 0 +container_color: galera-bundle-docker-1 allocation score on metal-2: INFINITY +container_color: galera-bundle-docker-1 allocation score on metal-3: 0 +container_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-docker-2 allocation score on metal-1: 0 +container_color: galera-bundle-docker-2 allocation score on metal-2: 0 +container_color: galera-bundle-docker-2 allocation score on metal-3: INFINITY +container_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-1: -INFINITY +container_color: galera-bundle-master allocation score on galera-bundle-2: -INFINITY +container_color: galera-bundle-master allocation score on metal-1: 0 +container_color: galera-bundle-master allocation score on metal-2: 0 +container_color: galera-bundle-master allocation score on metal-3: 0 +container_color: galera-bundle-master allocation score on rabbitmq-bundle-0: 0 +container_color: galera:0 allocation score on galera-bundle-0: -INFINITY +container_color: galera:0 allocation score on galera-bundle-1: -INFINITY +container_color: galera:0 allocation score on galera-bundle-2: -INFINITY +container_color: galera:0 allocation score on metal-1: 0 +container_color: galera:0 allocation score on metal-2: 0 +container_color: galera:0 allocation score on metal-3: 0 +container_color: galera:0 allocation score on rabbitmq-bundle-0: 0 +container_color: galera:1 allocation score on galera-bundle-0: -INFINITY +container_color: galera:1 allocation score on galera-bundle-1: -INFINITY +container_color: galera:1 allocation score on galera-bundle-2: -INFINITY +container_color: galera:1 allocation score on metal-1: 0 +container_color: galera:1 allocation score on metal-2: 0 +container_color: galera:1 allocation score on metal-3: 0 +container_color: galera:1 allocation score on rabbitmq-bundle-0: 0 +container_color: galera:2 allocation score on galera-bundle-0: -INFINITY +container_color: galera:2 allocation score on galera-bundle-1: -INFINITY +container_color: galera:2 allocation score on galera-bundle-2: -INFINITY +container_color: galera:2 allocation score on metal-1: 0 +container_color: galera:2 allocation score on metal-2: 0 +container_color: galera:2 allocation score on metal-3: 0 +container_color: galera:2 allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-1: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-2: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on metal-3: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY +container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: 0 +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-1: 0 +container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-2: 0 +container_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY +container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: 0 +container_color: redis-bundle allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle allocation score on metal-1: 0 +container_color: redis-bundle allocation score on metal-2: 0 +container_color: redis-bundle allocation score on metal-3: 0 +container_color: redis-bundle allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-0 allocation score on metal-1: INFINITY +container_color: redis-bundle-0 allocation score on metal-2: 0 +container_color: redis-bundle-0 allocation score on metal-3: 0 +container_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-1 allocation score on metal-1: 0 +container_color: redis-bundle-1 allocation score on metal-2: INFINITY +container_color: redis-bundle-1 allocation score on metal-3: 0 +container_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-2 allocation score on metal-1: 0 +container_color: redis-bundle-2 allocation score on metal-2: 0 +container_color: redis-bundle-2 allocation score on metal-3: INFINITY +container_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-docker-0 allocation score on metal-1: INFINITY +container_color: redis-bundle-docker-0 allocation score on metal-2: 0 +container_color: redis-bundle-docker-0 allocation score on metal-3: 0 +container_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-docker-1 allocation score on metal-1: 0 +container_color: redis-bundle-docker-1 allocation score on metal-2: INFINITY +container_color: redis-bundle-docker-1 allocation score on metal-3: 0 +container_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-docker-2 allocation score on metal-1: 0 +container_color: redis-bundle-docker-2 allocation score on metal-2: 0 +container_color: redis-bundle-docker-2 allocation score on metal-3: INFINITY +container_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +container_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-1: -INFINITY +container_color: redis-bundle-master allocation score on galera-bundle-2: -INFINITY +container_color: redis-bundle-master allocation score on metal-1: 0 +container_color: redis-bundle-master allocation score on metal-2: 0 +container_color: redis-bundle-master allocation score on metal-3: 0 +container_color: redis-bundle-master allocation score on rabbitmq-bundle-0: 0 +container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-1: -INFINITY +container_color: redis-bundle-master allocation score on redis-bundle-2: -INFINITY +container_color: redis:0 allocation score on galera-bundle-0: -INFINITY +container_color: redis:0 allocation score on galera-bundle-1: -INFINITY +container_color: redis:0 allocation score on galera-bundle-2: -INFINITY +container_color: redis:0 allocation score on metal-1: 0 +container_color: redis:0 allocation score on metal-2: 0 +container_color: redis:0 allocation score on metal-3: 0 +container_color: redis:0 allocation score on rabbitmq-bundle-0: 0 +container_color: redis:0 allocation score on redis-bundle-0: -INFINITY +container_color: redis:0 allocation score on redis-bundle-1: -INFINITY +container_color: redis:0 allocation score on redis-bundle-2: -INFINITY +container_color: redis:1 allocation score on galera-bundle-0: -INFINITY +container_color: redis:1 allocation score on galera-bundle-1: -INFINITY +container_color: redis:1 allocation score on galera-bundle-2: -INFINITY +container_color: redis:1 allocation score on metal-1: 0 +container_color: redis:1 allocation score on metal-2: 0 +container_color: redis:1 allocation score on metal-3: 0 +container_color: redis:1 allocation score on rabbitmq-bundle-0: 0 +container_color: redis:1 allocation score on redis-bundle-0: -INFINITY +container_color: redis:1 allocation score on redis-bundle-1: -INFINITY +container_color: redis:1 allocation score on redis-bundle-2: -INFINITY +container_color: redis:2 allocation score on galera-bundle-0: -INFINITY +container_color: redis:2 allocation score on galera-bundle-1: -INFINITY +container_color: redis:2 allocation score on galera-bundle-2: -INFINITY +container_color: redis:2 allocation score on metal-1: 0 +container_color: redis:2 allocation score on metal-2: 0 +container_color: redis:2 allocation score on metal-3: 0 +container_color: redis:2 allocation score on rabbitmq-bundle-0: 0 +container_color: redis:2 allocation score on redis-bundle-0: -INFINITY +container_color: redis:2 allocation score on redis-bundle-1: -INFINITY +container_color: redis:2 allocation score on redis-bundle-2: -INFINITY +galera:0 promotion score on galera-bundle-0: -1 +galera:1 promotion score on galera-bundle-1: -1 +galera:2 promotion score on galera-bundle-2: -1 +native_color: galera-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-0 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-0 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-0 allocation score on metal-1: INFINITY +native_color: galera-bundle-0 allocation score on metal-2: -10000 +native_color: galera-bundle-0 allocation score on metal-3: -10000 +native_color: galera-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-1 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-1 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-1 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-1 allocation score on metal-1: 0 +native_color: galera-bundle-1 allocation score on metal-2: INFINITY +native_color: galera-bundle-1 allocation score on metal-3: 0 +native_color: galera-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-2 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-2 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-2 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-2 allocation score on metal-1: 0 +native_color: galera-bundle-2 allocation score on metal-2: 0 +native_color: galera-bundle-2 allocation score on metal-3: INFINITY +native_color: galera-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-docker-0 allocation score on metal-1: -INFINITY +native_color: galera-bundle-docker-0 allocation score on metal-1: -INFINITY +native_color: galera-bundle-docker-0 allocation score on metal-2: -INFINITY +native_color: galera-bundle-docker-0 allocation score on metal-2: 0 +native_color: galera-bundle-docker-0 allocation score on metal-3: -INFINITY +native_color: galera-bundle-docker-0 allocation score on metal-3: 0 +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-docker-1 allocation score on metal-1: -INFINITY +native_color: galera-bundle-docker-1 allocation score on metal-2: INFINITY +native_color: galera-bundle-docker-1 allocation score on metal-3: 0 +native_color: galera-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +native_color: galera-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +native_color: galera-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +native_color: galera-bundle-docker-2 allocation score on metal-1: -INFINITY +native_color: galera-bundle-docker-2 allocation score on metal-2: -INFINITY +native_color: galera-bundle-docker-2 allocation score on metal-3: INFINITY +native_color: galera-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:0 allocation score on galera-bundle-0: INFINITY +native_color: galera:0 allocation score on galera-bundle-1: -INFINITY +native_color: galera:0 allocation score on galera-bundle-2: -INFINITY +native_color: galera:0 allocation score on metal-1: -INFINITY +native_color: galera:0 allocation score on metal-2: -INFINITY +native_color: galera:0 allocation score on metal-3: -INFINITY +native_color: galera:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:1 allocation score on galera-bundle-0: -INFINITY +native_color: galera:1 allocation score on galera-bundle-1: INFINITY +native_color: galera:1 allocation score on galera-bundle-2: -INFINITY +native_color: galera:1 allocation score on metal-1: -INFINITY +native_color: galera:1 allocation score on metal-2: -INFINITY +native_color: galera:1 allocation score on metal-3: -INFINITY +native_color: galera:1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: galera:2 allocation score on galera-bundle-0: -INFINITY +native_color: galera:2 allocation score on galera-bundle-1: -INFINITY +native_color: galera:2 allocation score on galera-bundle-2: INFINITY +native_color: galera:2 allocation score on metal-1: -INFINITY +native_color: galera:2 allocation score on metal-2: -INFINITY +native_color: galera:2 allocation score on metal-3: -INFINITY +native_color: galera:2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +native_color: haproxy-bundle-docker-0 allocation score on metal-1: INFINITY +native_color: haproxy-bundle-docker-0 allocation score on metal-2: 0 +native_color: haproxy-bundle-docker-0 allocation score on metal-3: 0 +native_color: haproxy-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on metal-1: -INFINITY +native_color: haproxy-bundle-docker-1 allocation score on metal-2: INFINITY +native_color: haproxy-bundle-docker-1 allocation score on metal-3: 0 +native_color: haproxy-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on metal-1: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on metal-2: -INFINITY +native_color: haproxy-bundle-docker-2 allocation score on metal-3: INFINITY +native_color: haproxy-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-0 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-0 allocation score on metal-1: INFINITY +native_color: redis-bundle-0 allocation score on metal-2: 0 +native_color: redis-bundle-0 allocation score on metal-3: 0 +native_color: redis-bundle-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-0 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-1 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-1 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-1 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-1 allocation score on metal-1: 0 +native_color: redis-bundle-1 allocation score on metal-2: INFINITY +native_color: redis-bundle-1 allocation score on metal-3: 0 +native_color: redis-bundle-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-1 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-1 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-1 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-2 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-2 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-2 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-2 allocation score on metal-1: 0 +native_color: redis-bundle-2 allocation score on metal-2: 0 +native_color: redis-bundle-2 allocation score on metal-3: INFINITY +native_color: redis-bundle-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-2 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-2 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-2 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-docker-0 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-docker-0 allocation score on metal-1: INFINITY +native_color: redis-bundle-docker-0 allocation score on metal-2: -INFINITY +native_color: redis-bundle-docker-0 allocation score on metal-3: -INFINITY +native_color: redis-bundle-docker-0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-docker-0 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-docker-1 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-docker-1 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-docker-1 allocation score on metal-1: -INFINITY +native_color: redis-bundle-docker-1 allocation score on metal-2: INFINITY +native_color: redis-bundle-docker-1 allocation score on metal-3: -INFINITY +native_color: redis-bundle-docker-1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-1 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-docker-1 allocation score on redis-bundle-2: -INFINITY +native_color: redis-bundle-docker-2 allocation score on galera-bundle-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on galera-bundle-1: -INFINITY +native_color: redis-bundle-docker-2 allocation score on galera-bundle-2: -INFINITY +native_color: redis-bundle-docker-2 allocation score on metal-1: -INFINITY +native_color: redis-bundle-docker-2 allocation score on metal-2: -INFINITY +native_color: redis-bundle-docker-2 allocation score on metal-3: INFINITY +native_color: redis-bundle-docker-2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on redis-bundle-0: -INFINITY +native_color: redis-bundle-docker-2 allocation score on redis-bundle-1: -INFINITY +native_color: redis-bundle-docker-2 allocation score on redis-bundle-2: -INFINITY +native_color: redis:0 allocation score on galera-bundle-0: -INFINITY +native_color: redis:0 allocation score on galera-bundle-1: -INFINITY +native_color: redis:0 allocation score on galera-bundle-2: -INFINITY +native_color: redis:0 allocation score on metal-1: -INFINITY +native_color: redis:0 allocation score on metal-2: -INFINITY +native_color: redis:0 allocation score on metal-3: -INFINITY +native_color: redis:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:0 allocation score on redis-bundle-0: INFINITY +native_color: redis:0 allocation score on redis-bundle-1: -INFINITY +native_color: redis:0 allocation score on redis-bundle-2: -INFINITY +native_color: redis:1 allocation score on galera-bundle-0: -INFINITY +native_color: redis:1 allocation score on galera-bundle-1: -INFINITY +native_color: redis:1 allocation score on galera-bundle-2: -INFINITY +native_color: redis:1 allocation score on metal-1: -INFINITY +native_color: redis:1 allocation score on metal-2: -INFINITY +native_color: redis:1 allocation score on metal-3: -INFINITY +native_color: redis:1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:1 allocation score on redis-bundle-0: -INFINITY +native_color: redis:1 allocation score on redis-bundle-1: INFINITY +native_color: redis:1 allocation score on redis-bundle-2: -INFINITY +native_color: redis:2 allocation score on galera-bundle-0: -INFINITY +native_color: redis:2 allocation score on galera-bundle-1: -INFINITY +native_color: redis:2 allocation score on galera-bundle-2: -INFINITY +native_color: redis:2 allocation score on metal-1: -INFINITY +native_color: redis:2 allocation score on metal-2: -INFINITY +native_color: redis:2 allocation score on metal-3: -INFINITY +native_color: redis:2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: redis:2 allocation score on redis-bundle-0: -INFINITY +native_color: redis:2 allocation score on redis-bundle-1: -INFINITY +native_color: redis:2 allocation score on redis-bundle-2: INFINITY +native_color: storage:0 allocation score on metal-1: -INFINITY +native_color: storage:0 allocation score on metal-2: -INFINITY +native_color: storage:0 allocation score on metal-3: -INFINITY +native_color: storage:0 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:1 allocation score on metal-1: -INFINITY +native_color: storage:1 allocation score on metal-2: INFINITY +native_color: storage:1 allocation score on metal-3: 0 +native_color: storage:1 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:2 allocation score on metal-1: -INFINITY +native_color: storage:2 allocation score on metal-2: -INFINITY +native_color: storage:2 allocation score on metal-3: INFINITY +native_color: storage:2 allocation score on rabbitmq-bundle-0: -INFINITY +native_color: storage:3 allocation score on metal-1: -INFINITY +native_color: storage:3 allocation score on metal-2: -INFINITY +native_color: storage:3 allocation score on metal-3: -INFINITY +native_color: storage:3 allocation score on rabbitmq-bundle-0: -INFINITY +redis:0 promotion score on redis-bundle-0: 99 +redis:1 promotion score on redis-bundle-1: 99 +redis:2 promotion score on redis-bundle-2: 99 diff --git a/pengine/test10/bundle-order-stop-clone.summary b/pengine/test10/bundle-order-stop-clone.summary new file mode 100644 index 0000000..404eecd --- /dev/null +++ b/pengine/test10/bundle-order-stop-clone.summary @@ -0,0 +1,75 @@ + +Current cluster status: +Online: [ metal-1 metal-2 metal-3 ] +RemoteOFFLINE: [ rabbitmq-bundle-0 ] +Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] + + Clone Set: storage-clone [storage] + Started: [ metal-1 metal-2 metal-3 ] + Stopped: [ rabbitmq-bundle-0 ] + Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Slave metal-1 + galera-bundle-1 (ocf::heartbeat:galera): Slave metal-2 + galera-bundle-2 (ocf::heartbeat:galera): Slave metal-3 + Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started metal-1 + haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started metal-2 + haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started metal-3 + Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master metal-1 + redis-bundle-1 (ocf::heartbeat:redis): Master metal-2 + redis-bundle-2 (ocf::heartbeat:redis): Master metal-3 + +Transition Summary: + * Stop storage:0 (metal-1) + * Stop galera-bundle-docker-0 (metal-1) + * Stop galera-bundle-0 (Started metal-1) + * Stop galera:0 (Slave galera-bundle-0) + +Executing cluster transition: + * Pseudo action: storage-clone_pre_notify_stop_0 + * Pseudo action: galera-bundle_stop_0 + * Resource action: storage:0 notify on metal-1 + * Resource action: storage:1 notify on metal-2 + * Resource action: storage:2 notify on metal-3 + * Pseudo action: storage-clone_confirmed-pre_notify_stop_0 + * Pseudo action: galera-bundle-master_stop_0 + * Resource action: galera:0 stop on galera-bundle-0 + * Resource action: galera-bundle-0 stop on metal-1 + * Pseudo action: galera-bundle-master_stopped_0 + * Resource action: galera-bundle-docker-0 stop on metal-1 + * Pseudo action: galera-bundle_stopped_0 + * Pseudo action: galera-bundle_start_0 + * Pseudo action: storage-clone_stop_0 + * Pseudo action: galera-bundle-master_start_0 + * Resource action: storage:0 stop on metal-1 + * Pseudo action: storage-clone_stopped_0 + * Pseudo action: galera-bundle-master_running_0 + * Pseudo action: galera-bundle_running_0 + * Pseudo action: storage-clone_post_notify_stopped_0 + * Resource action: storage:1 notify on metal-2 + * Resource action: storage:2 notify on metal-3 + * Pseudo action: storage-clone_confirmed-post_notify_stopped_0 + * Pseudo action: all_stopped + +Revised cluster status: +Online: [ metal-1 metal-2 metal-3 ] +RemoteOFFLINE: [ rabbitmq-bundle-0 ] +Containers: [ galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] + + Clone Set: storage-clone [storage] + Started: [ metal-2 metal-3 ] + Stopped: [ metal-1 rabbitmq-bundle-0 ] + Docker container set: galera-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest] + galera-bundle-0 (ocf::heartbeat:galera): Stopped + galera-bundle-1 (ocf::heartbeat:galera): Slave metal-2 + galera-bundle-2 (ocf::heartbeat:galera): Slave metal-3 + Docker container set: haproxy-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-haproxy:latest] + haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started metal-1 + haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started metal-2 + haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started metal-3 + Docker container set: redis-bundle [192.168.24.1:8787/tripleoupstream/centos-binary-redis:latest] + redis-bundle-0 (ocf::heartbeat:redis): Master metal-1 + redis-bundle-1 (ocf::heartbeat:redis): Master metal-2 + redis-bundle-2 (ocf::heartbeat:redis): Master metal-3 + diff --git a/pengine/test10/bundle-order-stop-clone.xml b/pengine/test10/bundle-order-stop-clone.xml new file mode 100644 index 0000000..60db64d --- /dev/null +++ b/pengine/test10/bundle-order-stop-clone.xml @@ -0,0 +1,398 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 1.8.3.1 From 79fea20c78979e1d849b4ec36e3ebde185811aab Mon Sep 17 00:00:00 2001 From: Andrew Beekhof Date: Mon, 26 Jun 2017 11:02:40 +1000 Subject: [PATCH 8/8] Fix: PE: Ensure bundle nodes and child resources are correctly cleaned up --- lib/pengine/container.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/pengine/container.c b/lib/pengine/container.c index 6e98e6f..5d4e697 100644 --- a/lib/pengine/container.c +++ b/lib/pengine/container.c @@ -1029,7 +1029,10 @@ tuple_free(container_grouping_t *tuple) return; } - // TODO: Free tuple->node ? + if(tuple->node) { + free(tuple->node); + tuple->node = NULL; + } if(tuple->ip) { tuple->ip->fns->free(tuple->ip); @@ -1037,12 +1040,6 @@ tuple_free(container_grouping_t *tuple) free_xml(tuple->ip->xml); tuple->ip = NULL; } - if(tuple->child) { - free_xml(tuple->child->xml); - tuple->child->xml = NULL; - tuple->child->fns->free(tuple->child); - tuple->child = NULL; - } if(tuple->docker) { free_xml(tuple->docker->xml); tuple->docker->xml = NULL; @@ -1079,13 +1076,16 @@ container_free(resource_t * rsc) free(container_data->docker_run_command); free(container_data->docker_host_options); - if(container_data->child) { - free_xml(container_data->child->xml); - } g_list_free_full(container_data->tuples, (GDestroyNotify)tuple_free); g_list_free_full(container_data->mounts, (GDestroyNotify)mount_free); g_list_free_full(container_data->ports, (GDestroyNotify)port_free); g_list_free(rsc->children); + + if(container_data->child) { + free_xml(container_data->child->xml); + container_data->child->xml = NULL; + container_data->child->fns->free(container_data->child); + } common_free(rsc); } -- 1.8.3.1