From 4540ce980ae861ab1770cd3d9a4e09cf4830dd6c Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 4 Dec 2020 17:16:06 -0600 Subject: [PATCH 02/12] Low: xml: clone constraints schema in preparation for changes --- xml/constraints-3.6.rng | 256 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 xml/constraints-3.6.rng diff --git a/xml/constraints-3.6.rng b/xml/constraints-3.6.rng new file mode 100644 index 0000000..f75d7b4 --- /dev/null +++ b/xml/constraints-3.6.rng @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + group + listed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + stop + demote + fence + freeze + + + + + + + + + always + never + exclusive + + + + + + start + promote + demote + stop + + + + + + Stopped + Started + Master + Slave + + + + + + Optional + Mandatory + Serialize + + + + + + + + + + + + -- 1.8.3.1 From f836f5c61b37ca12df55cf2e2b951eeebad8d4f2 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 4 Dec 2020 17:25:23 -0600 Subject: [PATCH 03/12] Feature: xml: allow colocation constraints to take "influence" option Semantics not yet implemented --- xml/constraints-3.6.rng | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xml/constraints-3.6.rng b/xml/constraints-3.6.rng index f75d7b4..fece6b0 100644 --- a/xml/constraints-3.6.rng +++ b/xml/constraints-3.6.rng @@ -112,6 +112,9 @@ + + + -- 1.8.3.1 From 0e9ec9d6c4c1885e246fa59b6857300ddda42133 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 4 Dec 2020 17:28:51 -0600 Subject: [PATCH 04/12] Test: cts-cli: update for schema version bump --- cts/cli/regression.upgrade.exp | 7 +++++-- cts/cli/regression.validity.exp | 22 ++++++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/cts/cli/regression.upgrade.exp b/cts/cli/regression.upgrade.exp index 10f6309..2210ba7 100644 --- a/cts/cli/regression.upgrade.exp +++ b/cts/cli/regression.upgrade.exp @@ -85,8 +85,11 @@ update_validation debug: Configuration valid for schema: pacemaker-3.4 update_validation debug: pacemaker-3.4-style configuration is also valid for pacemaker-3.5 update_validation debug: Testing 'pacemaker-3.5' validation (19 of X) update_validation debug: Configuration valid for schema: pacemaker-3.5 -update_validation trace: Stopping at pacemaker-3.5 -update_validation info: Transformed the configuration from pacemaker-2.10 to pacemaker-3.5 +update_validation debug: pacemaker-3.5-style configuration is also valid for pacemaker-3.6 +update_validation debug: Testing 'pacemaker-3.6' validation (20 of X) +update_validation debug: Configuration valid for schema: pacemaker-3.6 +update_validation trace: Stopping at pacemaker-3.6 +update_validation info: Transformed the configuration from pacemaker-2.10 to pacemaker-3.6 =#=#=#= Current cib after: Upgrade to latest CIB schema (trigger 2.10.xsl + the wrapping) =#=#=#= diff --git a/cts/cli/regression.validity.exp b/cts/cli/regression.validity.exp index 88ca98e..bd6f499 100644 --- a/cts/cli/regression.validity.exp +++ b/cts/cli/regression.validity.exp @@ -113,7 +113,11 @@ update_validation debug: Testing 'pacemaker-3.5' validation (19 of X) element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order update_validation trace: pacemaker-3.5 validation failed -Cannot upgrade configuration (claiming schema pacemaker-1.2) to at least pacemaker-3.0 because it does not validate with any schema from pacemaker-1.2 to pacemaker-3.5 +update_validation debug: Testing 'pacemaker-3.6' validation (20 of X) +element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order +element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order +update_validation trace: pacemaker-3.6 validation failed +Cannot upgrade configuration (claiming schema pacemaker-1.2) to at least pacemaker-3.0 because it does not validate with any schema from pacemaker-1.2 to pacemaker-3.6 =#=#=#= End test: Run crm_simulate with invalid CIB (enum violation) - Invalid configuration (78) =#=#=#= * Passed: crm_simulate - Run crm_simulate with invalid CIB (enum violation) =#=#=#= Begin test: Try to make resulting CIB invalid (unrecognized validate-with) =#=#=#= @@ -212,7 +216,10 @@ update_validation trace: pacemaker-3.4 validation failed update_validation debug: Testing 'pacemaker-3.5' validation (19 of X) element cib: Relax-NG validity error : Invalid attribute validate-with for element cib update_validation trace: pacemaker-3.5 validation failed -Cannot upgrade configuration (claiming schema pacemaker-9999.0) to at least pacemaker-3.0 because it does not validate with any schema from unknown to pacemaker-3.5 +update_validation debug: Testing 'pacemaker-3.6' validation (20 of X) +element cib: Relax-NG validity error : Invalid attribute validate-with for element cib +update_validation trace: pacemaker-3.6 validation failed +Cannot upgrade configuration (claiming schema pacemaker-9999.0) to at least pacemaker-3.0 because it does not validate with any schema from unknown to pacemaker-3.6 =#=#=#= End test: Run crm_simulate with invalid CIB (unrecognized validate-with) - Invalid configuration (78) =#=#=#= * Passed: crm_simulate - Run crm_simulate with invalid CIB (unrecognized validate-with) =#=#=#= Begin test: Try to make resulting CIB invalid, but possibly recoverable (valid with X.Y+1) =#=#=#= @@ -306,8 +313,11 @@ update_validation debug: Configuration valid for schema: pacemaker-3.4 update_validation debug: pacemaker-3.4-style configuration is also valid for pacemaker-3.5 update_validation debug: Testing 'pacemaker-3.5' validation (19 of X) update_validation debug: Configuration valid for schema: pacemaker-3.5 -update_validation trace: Stopping at pacemaker-3.5 -update_validation info: Transformed the configuration from pacemaker-1.2 to pacemaker-3.5 +update_validation debug: pacemaker-3.5-style configuration is also valid for pacemaker-3.6 +update_validation debug: Testing 'pacemaker-3.6' validation (20 of X) +update_validation debug: Configuration valid for schema: pacemaker-3.6 +update_validation trace: Stopping at pacemaker-3.6 +update_validation info: Transformed the configuration from pacemaker-1.2 to pacemaker-3.6 unpack_resources error: Resource start-up disabled since no STONITH resources have been defined unpack_resources error: Either configure some or disable STONITH with the stonith-enabled option unpack_resources error: NOTE: Clusters with shared data need STONITH to ensure data integrity @@ -417,6 +427,8 @@ element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order +element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order +element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order =#=#=#= Current cib after: Make resulting CIB invalid, and without validate-with attribute =#=#=#= @@ -478,6 +490,8 @@ validity.bad.xml:10: element rsc_order: Relax-NG validity error : Invalid attrib validity.bad.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order validity.bad.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order validity.bad.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order +validity.bad.xml:10: element rsc_order: Relax-NG validity error : Invalid attribute first-action for element rsc_order +validity.bad.xml:10: element rsc_order: Relax-NG validity error : Element constraints has extra content: rsc_order unpack_resources error: Resource start-up disabled since no STONITH resources have been defined unpack_resources error: Either configure some or disable STONITH with the stonith-enabled option unpack_resources error: NOTE: Clusters with shared data need STONITH to ensure data integrity -- 1.8.3.1 From 2e7e02bae2432feebb9d731030da808e33ff49ad Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Thu, 10 Dec 2020 15:46:28 -0600 Subject: [PATCH 05/12] Refactor: scheduler: add and parse "critical" resource meta-attribute Semantics not yet implemented. --- include/crm/msg_xml.h | 3 ++- include/crm/pengine/pe_types.h | 1 + lib/pengine/complex.c | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h index c8b528b..d5ac418 100644 --- a/include/crm/msg_xml.h +++ b/include/crm/msg_xml.h @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -217,6 +217,7 @@ extern "C" { # define XML_RSC_ATTR_REMOTE_RA_ADDR "addr" # define XML_RSC_ATTR_REMOTE_RA_SERVER "server" # define XML_RSC_ATTR_REMOTE_RA_PORT "port" +# define XML_RSC_ATTR_CRITICAL "critical" # define XML_REMOTE_ATTR_RECONNECT_INTERVAL "reconnect_interval" diff --git a/include/crm/pengine/pe_types.h b/include/crm/pengine/pe_types.h index 1416cee..7d90c42 100644 --- a/include/crm/pengine/pe_types.h +++ b/include/crm/pengine/pe_types.h @@ -251,6 +251,7 @@ struct pe_node_s { # define pe_rsc_stop 0x00001000ULL # define pe_rsc_reload 0x00002000ULL # define pe_rsc_allow_remote_remotes 0x00004000ULL +# define pe_rsc_critical 0x00008000ULL # define pe_rsc_failed 0x00010000ULL # define pe_rsc_runnable 0x00040000ULL diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index 60199c7..5d7d628 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -608,6 +608,11 @@ common_unpack(xmlNode * xml_obj, pe_resource_t ** rsc, value = g_hash_table_lookup((*rsc)->meta, XML_CIB_ATTR_PRIORITY); (*rsc)->priority = crm_parse_int(value, "0"); + value = g_hash_table_lookup((*rsc)->meta, XML_RSC_ATTR_CRITICAL); + if ((value == NULL) || crm_is_true(value)) { + pe__set_resource_flags(*rsc, pe_rsc_critical); + } + value = g_hash_table_lookup((*rsc)->meta, XML_RSC_ATTR_NOTIFY); if (crm_is_true(value)) { pe__set_resource_flags(*rsc, pe_rsc_notify); -- 1.8.3.1 From a48e04ac54a3b9cf8292f3d06891ef6bf91a4c49 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 4 Dec 2020 16:35:35 -0600 Subject: [PATCH 06/12] Refactor: scheduler: add and parse "influence" colocation property Semantics not yet implemented. --- include/crm/msg_xml.h | 1 + include/pcmki/pcmki_sched_utils.h | 4 +- include/pcmki/pcmki_scheduler.h | 3 +- lib/pacemaker/pcmk_sched_bundle.c | 9 ++-- lib/pacemaker/pcmk_sched_constraints.c | 85 +++++++++++++++++++++++++++------- lib/pacemaker/pcmk_sched_group.c | 8 +++- lib/pacemaker/pcmk_sched_native.c | 6 ++- 7 files changed, 89 insertions(+), 27 deletions(-) diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h index d5ac418..b66ab90 100644 --- a/include/crm/msg_xml.h +++ b/include/crm/msg_xml.h @@ -328,6 +328,7 @@ extern "C" { # define XML_COLOC_ATTR_NODE_ATTR "node-attribute" # define XML_COLOC_ATTR_SOURCE_INSTANCE "rsc-instance" # define XML_COLOC_ATTR_TARGET_INSTANCE "with-rsc-instance" +# define XML_COLOC_ATTR_INFLUENCE "influence" # define XML_LOC_ATTR_SOURCE "rsc" # define XML_LOC_ATTR_SOURCE_PATTERN "rsc-pattern" diff --git a/include/pcmki/pcmki_sched_utils.h b/include/pcmki/pcmki_sched_utils.h index c7ae1b8..bed64da 100644 --- a/include/pcmki/pcmki_sched_utils.h +++ b/include/pcmki/pcmki_sched_utils.h @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -31,7 +31,7 @@ pe__location_t *rsc2node_new(const char *id, pe_resource_t *rsc, int weight, void pcmk__new_colocation(const char *id, const char *node_attr, int score, pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, const char *state_lh, const char *state_rh, - pe_working_set_t *data_set); + bool influence, pe_working_set_t *data_set); extern gboolean rsc_ticket_new(const char *id, pe_resource_t * rsc_lh, pe_ticket_t * ticket, const char *state_lh, const char *loss_policy, diff --git a/include/pcmki/pcmki_scheduler.h b/include/pcmki/pcmki_scheduler.h index b24e994..c604a32 100644 --- a/include/pcmki/pcmki_scheduler.h +++ b/include/pcmki/pcmki_scheduler.h @@ -1,5 +1,5 @@ /* - * Copyright 2014-2020 the Pacemaker project contributors + * Copyright 2014-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -46,6 +46,7 @@ typedef struct { int role_rh; int score; + bool influence; // Whether rsc_lh should influence active rsc_rh placement } pcmk__colocation_t; enum loss_ticket_policy_e { diff --git a/lib/pacemaker/pcmk_sched_bundle.c b/lib/pacemaker/pcmk_sched_bundle.c index 4f41b70..bc7009d 100644 --- a/lib/pacemaker/pcmk_sched_bundle.c +++ b/lib/pacemaker/pcmk_sched_bundle.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -9,6 +9,8 @@ #include +#include + #include #include @@ -143,7 +145,7 @@ pcmk__bundle_allocate(pe_resource_t *rsc, pe_node_t *prefer, pcmk__new_colocation("child-remote-with-docker-remote", NULL, INFINITY, replica->remote, container_host->details->remote_rsc, NULL, - NULL, data_set); + NULL, true, data_set); } if (replica->remote) { @@ -311,7 +313,8 @@ pcmk__bundle_internal_constraints(pe_resource_t *rsc, pe_order_implies_first|pe_order_preserve, data_set); pcmk__new_colocation("ip-with-docker", NULL, INFINITY, replica->ip, - replica->container, NULL, NULL, data_set); + replica->container, NULL, NULL, true, + data_set); } if (replica->remote) { diff --git a/lib/pacemaker/pcmk_sched_constraints.c b/lib/pacemaker/pcmk_sched_constraints.c index 92b9740..be93f0b 100644 --- a/lib/pacemaker/pcmk_sched_constraints.c +++ b/lib/pacemaker/pcmk_sched_constraints.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -11,6 +11,7 @@ #include #include +#include #include #include @@ -1346,7 +1347,7 @@ void pcmk__new_colocation(const char *id, const char *node_attr, int score, pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, const char *state_lh, const char *state_rh, - pe_working_set_t *data_set) + bool influence, pe_working_set_t *data_set) { pcmk__colocation_t *new_con = NULL; @@ -1376,6 +1377,7 @@ pcmk__new_colocation(const char *id, const char *node_attr, int score, new_con->role_lh = text2role(state_lh); new_con->role_rh = text2role(state_rh); new_con->node_attribute = node_attr; + new_con->influence = influence; if (node_attr == NULL) { node_attr = CRM_ATTR_UNAME; @@ -2279,8 +2281,38 @@ unpack_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set) return TRUE; } +/*! + * \internal + * \brief Return the boolean influence corresponding to configuration + * + * \param[in] coloc_id Colocation XML ID (for error logging) + * \param[in] rsc Resource involved in constraint (for default) + * \param[in] influence_s String value of influence option + * + * \return true if string evaluates true, false if string evaluates false, + * or value of resource's critical option if string is NULL or invalid + */ +static bool +unpack_influence(const char *coloc_id, const pe_resource_t *rsc, + const char *influence_s) +{ + if (influence_s != NULL) { + int influence_i = 0; + + if (crm_str_to_boolean(influence_s, &influence_i) < 0) { + pcmk__config_err("Constraint '%s' has invalid value for " + XML_COLOC_ATTR_INFLUENCE " (using default)", + coloc_id); + } else { + return (influence_i == TRUE); + } + } + return pcmk_is_set(rsc->flags, pe_rsc_critical); +} + static gboolean -unpack_colocation_set(xmlNode * set, int score, pe_working_set_t * data_set) +unpack_colocation_set(xmlNode *set, int score, const char *coloc_id, + const char *influence_s, pe_working_set_t *data_set) { xmlNode *xml_rsc = NULL; pe_resource_t *with = NULL; @@ -2314,7 +2346,10 @@ unpack_colocation_set(xmlNode * set, int score, pe_working_set_t * data_set) if (with != NULL) { pe_rsc_trace(resource, "Colocating %s with %s", resource->id, with->id); pcmk__new_colocation(set_id, NULL, local_score, resource, - with, role, role, data_set); + with, role, role, + unpack_influence(coloc_id, resource, + influence_s), + data_set); } with = resource; @@ -2330,7 +2365,10 @@ unpack_colocation_set(xmlNode * set, int score, pe_working_set_t * data_set) if (last != NULL) { pe_rsc_trace(resource, "Colocating %s with %s", last->id, resource->id); pcmk__new_colocation(set_id, NULL, local_score, last, - resource, role, role, data_set); + resource, role, role, + unpack_influence(coloc_id, last, + influence_s), + data_set); } last = resource; @@ -2348,8 +2386,10 @@ unpack_colocation_set(xmlNode * set, int score, pe_working_set_t * data_set) if (pcmk__str_eq((const char *)xml_rsc->name, XML_TAG_RESOURCE_REF, pcmk__str_none)) { xmlNode *xml_rsc_with = NULL; + bool influence = true; EXPAND_CONSTRAINT_IDREF(set_id, resource, ID(xml_rsc)); + influence = unpack_influence(coloc_id, resource, influence_s); for (xml_rsc_with = pcmk__xe_first_child(set); xml_rsc_with != NULL; @@ -2364,7 +2404,7 @@ unpack_colocation_set(xmlNode * set, int score, pe_working_set_t * data_set) with->id); pcmk__new_colocation(set_id, NULL, local_score, resource, with, role, role, - data_set); + influence, data_set); } } } @@ -2376,7 +2416,7 @@ unpack_colocation_set(xmlNode * set, int score, pe_working_set_t * data_set) static gboolean colocate_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, int score, - pe_working_set_t * data_set) + const char *influence_s, pe_working_set_t *data_set) { xmlNode *xml_rsc = NULL; pe_resource_t *rsc_1 = NULL; @@ -2416,16 +2456,19 @@ colocate_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, int score, if (rsc_1 != NULL && rsc_2 != NULL) { pcmk__new_colocation(id, NULL, score, rsc_1, rsc_2, role_1, role_2, + unpack_influence(id, rsc_1, influence_s), data_set); } else if (rsc_1 != NULL) { + bool influence = unpack_influence(id, rsc_1, influence_s); + for (xml_rsc = pcmk__xe_first_child(set2); xml_rsc != NULL; xml_rsc = pcmk__xe_next(xml_rsc)) { if (pcmk__str_eq((const char *)xml_rsc->name, XML_TAG_RESOURCE_REF, pcmk__str_none)) { EXPAND_CONSTRAINT_IDREF(id, rsc_2, ID(xml_rsc)); pcmk__new_colocation(id, NULL, score, rsc_1, rsc_2, role_1, - role_2, data_set); + role_2, influence, data_set); } } @@ -2436,7 +2479,9 @@ colocate_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, int score, if (pcmk__str_eq((const char *)xml_rsc->name, XML_TAG_RESOURCE_REF, pcmk__str_none)) { EXPAND_CONSTRAINT_IDREF(id, rsc_1, ID(xml_rsc)); pcmk__new_colocation(id, NULL, score, rsc_1, rsc_2, role_1, - role_2, data_set); + role_2, + unpack_influence(id, rsc_1, influence_s), + data_set); } } @@ -2446,8 +2491,10 @@ colocate_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, int score, if (pcmk__str_eq((const char *)xml_rsc->name, XML_TAG_RESOURCE_REF, pcmk__str_none)) { xmlNode *xml_rsc_2 = NULL; + bool influence = true; EXPAND_CONSTRAINT_IDREF(id, rsc_1, ID(xml_rsc)); + influence = unpack_influence(id, rsc_1, influence_s); for (xml_rsc_2 = pcmk__xe_first_child(set2); xml_rsc_2 != NULL; @@ -2456,7 +2503,8 @@ colocate_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, int score, if (pcmk__str_eq((const char *)xml_rsc_2->name, XML_TAG_RESOURCE_REF, pcmk__str_none)) { EXPAND_CONSTRAINT_IDREF(id, rsc_2, ID(xml_rsc_2)); pcmk__new_colocation(id, NULL, score, rsc_1, rsc_2, - role_1, role_2, data_set); + role_1, role_2, influence, + data_set); } } } @@ -2467,13 +2515,12 @@ colocate_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, int score, } static void -unpack_simple_colocation(xmlNode * xml_obj, pe_working_set_t * data_set) +unpack_simple_colocation(xmlNode *xml_obj, const char *id, + const char *influence_s, pe_working_set_t *data_set) { int score_i = 0; - const char *id = crm_element_value(xml_obj, XML_ATTR_ID); const char *score = crm_element_value(xml_obj, XML_RULE_ATTR_SCORE); - const char *id_lh = crm_element_value(xml_obj, XML_COLOC_ATTR_SOURCE); const char *id_rh = crm_element_value(xml_obj, XML_COLOC_ATTR_TARGET); const char *state_lh = crm_element_value(xml_obj, XML_COLOC_ATTR_SOURCE_ROLE); @@ -2542,7 +2589,7 @@ unpack_simple_colocation(xmlNode * xml_obj, pe_working_set_t * data_set) } pcmk__new_colocation(id, attr, score_i, rsc_lh, rsc_rh, state_lh, state_rh, - data_set); + unpack_influence(id, rsc_lh, influence_s), data_set); } static gboolean @@ -2675,6 +2722,8 @@ unpack_rsc_colocation(xmlNode *xml_obj, pe_working_set_t *data_set) const char *id = crm_element_value(xml_obj, XML_ATTR_ID); const char *score = crm_element_value(xml_obj, XML_RULE_ATTR_SCORE); + const char *influence_s = crm_element_value(xml_obj, + XML_COLOC_ATTR_INFLUENCE); if (score) { score_i = char2score(score); @@ -2694,10 +2743,12 @@ unpack_rsc_colocation(xmlNode *xml_obj, pe_working_set_t *data_set) if (pcmk__str_eq((const char *)set->name, XML_CONS_TAG_RSC_SET, pcmk__str_none)) { any_sets = TRUE; set = expand_idref(set, data_set->input); - if (!unpack_colocation_set(set, score_i, data_set)) { + if (!unpack_colocation_set(set, score_i, id, influence_s, + data_set)) { return; } - if (last && !colocate_rsc_sets(id, last, set, score_i, data_set)) { + if ((last != NULL) && !colocate_rsc_sets(id, last, set, score_i, + influence_s, data_set)) { return; } last = set; @@ -2710,7 +2761,7 @@ unpack_rsc_colocation(xmlNode *xml_obj, pe_working_set_t *data_set) } if (!any_sets) { - unpack_simple_colocation(xml_obj, data_set); + unpack_simple_colocation(xml_obj, id, influence_s, data_set); } } diff --git a/lib/pacemaker/pcmk_sched_group.c b/lib/pacemaker/pcmk_sched_group.c index 5334f23..03df5e2 100644 --- a/lib/pacemaker/pcmk_sched_group.c +++ b/lib/pacemaker/pcmk_sched_group.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -9,6 +9,8 @@ #include +#include + #include #include @@ -193,7 +195,9 @@ group_internal_constraints(pe_resource_t * rsc, pe_working_set_t * data_set) } else if (group_data->colocated) { pcmk__new_colocation("group:internal_colocation", NULL, INFINITY, - child_rsc, last_rsc, NULL, NULL, data_set); + child_rsc, last_rsc, NULL, NULL, + pcmk_is_set(child_rsc->flags, pe_rsc_critical), + data_set); } if (pcmk_is_set(top->flags, pe_rsc_promotable)) { diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index c302db6..097a033 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -9,6 +9,8 @@ #include +#include + #include #include #include @@ -1692,7 +1694,7 @@ native_internal_constraints(pe_resource_t * rsc, pe_working_set_t * data_set) score = INFINITY; /* Force them to run on the same host */ } pcmk__new_colocation("resource-with-container", NULL, score, rsc, - rsc->container, NULL, NULL, data_set); + rsc->container, NULL, NULL, true, data_set); } } -- 1.8.3.1 From 1bd66fca86c77f1dbe3d8cfc2a7da5111cec223f Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Mon, 11 Jan 2021 16:11:30 -0600 Subject: [PATCH 07/12] Revert "Refactor: scheduler: functionize checking whether colocation applies" This reverts commit 2278e01f8d951d939c172ac71e168a11199f84f7. The original idea was that additional conditions (i.e. influence) could be added to the new function, but influence should only affect whether the dependent resource's location preferences are considered, not whether the colocation constraint applies (i.e. the dependent should be stopped if it can't run where the "with" resource is). --- include/pcmki/pcmki_sched_utils.h | 3 --- lib/pacemaker/pcmk_sched_clone.c | 12 +++++++----- lib/pacemaker/pcmk_sched_group.c | 12 ++++++------ lib/pacemaker/pcmk_sched_native.c | 14 ++++++++++---- lib/pacemaker/pcmk_sched_promotable.c | 25 +++++++++++++++++-------- lib/pacemaker/pcmk_sched_utils.c | 31 ------------------------------- 6 files changed, 40 insertions(+), 57 deletions(-) diff --git a/include/pcmki/pcmki_sched_utils.h b/include/pcmki/pcmki_sched_utils.h index bed64da..f6ac263 100644 --- a/include/pcmki/pcmki_sched_utils.h +++ b/include/pcmki/pcmki_sched_utils.h @@ -72,9 +72,6 @@ enum filter_colocation_res { extern enum filter_colocation_res filter_colocation_constraint(pe_resource_t * rsc_lh, pe_resource_t * rsc_rh, pcmk__colocation_t *constraint, gboolean preview); -bool pcmk__colocation_applies(pe_resource_t *rsc, - pcmk__colocation_t *colocation, - bool promoted_only); extern int compare_capacity(const pe_node_t * node1, const pe_node_t * node2); extern void calculate_utilization(GHashTable * current_utilization, diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index 5a06151..9485a98 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.c @@ -658,12 +658,14 @@ pcmk__clone_allocate(pe_resource_t *rsc, pe_node_t *prefer, for (GListPtr gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (pcmk__colocation_applies(rsc, constraint, false)) { - rsc->allowed_nodes = constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, - rsc->id, rsc->allowed_nodes, constraint->node_attribute, - constraint->score / (float) INFINITY, - pe_weights_rollback|pe_weights_positive); + if (constraint->score == 0) { + continue; } + rsc->allowed_nodes = + constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, rsc->allowed_nodes, + constraint->node_attribute, + (float)constraint->score / INFINITY, + (pe_weights_rollback | pe_weights_positive)); } pe__show_node_weights(!show_scores, rsc, __func__, rsc->allowed_nodes); diff --git a/lib/pacemaker/pcmk_sched_group.c b/lib/pacemaker/pcmk_sched_group.c index 03df5e2..336a6f9 100644 --- a/lib/pacemaker/pcmk_sched_group.c +++ b/lib/pacemaker/pcmk_sched_group.c @@ -520,13 +520,13 @@ pcmk__group_merge_weights(pe_resource_t *rsc, const char *rhs, for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (pcmk__colocation_applies(rsc, constraint, false)) { - nodes = pcmk__native_merge_weights(constraint->rsc_lh, rsc->id, - nodes, - constraint->node_attribute, - constraint->score / (float) INFINITY, - flags); + if (constraint->score == 0) { + continue; } + nodes = pcmk__native_merge_weights(constraint->rsc_lh, rsc->id, nodes, + constraint->node_attribute, + constraint->score / (float) INFINITY, + flags); } pe__clear_resource_flags(rsc, pe_rsc_merging); diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index 097a033..70f6c2f 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -564,11 +564,17 @@ pcmk__native_allocate(pe_resource_t *rsc, pe_node_t *prefer, for (gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (pcmk__colocation_applies(rsc, constraint, false)) { - rsc->allowed_nodes = constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, - rsc->id, rsc->allowed_nodes, constraint->node_attribute, - constraint->score / (float) INFINITY, pe_weights_rollback); + if (constraint->score == 0) { + continue; } + pe_rsc_trace(rsc, "Merging score of '%s' constraint (%s with %s)", + constraint->id, constraint->rsc_lh->id, + constraint->rsc_rh->id); + rsc->allowed_nodes = + constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, rsc->allowed_nodes, + constraint->node_attribute, + (float)constraint->score / INFINITY, + pe_weights_rollback); } if (rsc->next_role == RSC_ROLE_STOPPED) { diff --git a/lib/pacemaker/pcmk_sched_promotable.c b/lib/pacemaker/pcmk_sched_promotable.c index a0eeaad..9a5474a 100644 --- a/lib/pacemaker/pcmk_sched_promotable.c +++ b/lib/pacemaker/pcmk_sched_promotable.c @@ -345,14 +345,23 @@ promotion_order(pe_resource_t *rsc, pe_working_set_t *data_set) for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (pcmk__colocation_applies(rsc, constraint, true)) { - /* (Re-)add location preferences of resource that wishes to be - * colocated with the promoted instance. - */ - rsc->allowed_nodes = constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, - rsc->id, rsc->allowed_nodes, constraint->node_attribute, - constraint->score / (float) INFINITY, - pe_weights_rollback|pe_weights_positive); + if (constraint->score == 0) { + continue; + } + + /* (re-)adds location preferences of resource that wish to be + * colocated with the master instance + */ + if (constraint->role_rh == RSC_ROLE_MASTER) { + pe_rsc_trace(rsc, "LHS: %s with %s: %d", constraint->rsc_lh->id, constraint->rsc_rh->id, + constraint->score); + rsc->allowed_nodes = + constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, + rsc->allowed_nodes, + constraint->node_attribute, + (float)constraint->score / INFINITY, + (pe_weights_rollback | + pe_weights_positive)); } } diff --git a/lib/pacemaker/pcmk_sched_utils.c b/lib/pacemaker/pcmk_sched_utils.c index aba417a..eaaf526 100644 --- a/lib/pacemaker/pcmk_sched_utils.c +++ b/lib/pacemaker/pcmk_sched_utils.c @@ -765,34 +765,3 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, free(key); return xml_op; } - -/*! - * \internal - * \brief Check whether a colocation constraint should apply - * - * \param[in] rsc Resource of interest (for logging) - * \param[in] colocation Colocation constraint to check - * \param[in] promoted_only If true, constraint applies if right-hand is promoted - */ -bool -pcmk__colocation_applies(pe_resource_t *rsc, pcmk__colocation_t *colocation, - bool promoted_only) -{ - CRM_CHECK((rsc != NULL) && (colocation != NULL), return false); - - if (colocation->score == 0) { - pe_rsc_trace(rsc, "Ignoring colocation constraint %s: 0 score", - colocation->id); - return false; - } - if (promoted_only && (colocation->role_rh != RSC_ROLE_MASTER)) { - pe_rsc_trace(rsc, "Ignoring colocation constraint %s: role", - colocation->id); - return false; - } - pe_rsc_trace(rsc, "Applying colocation constraint %s: %s with %s%s (%d)", - colocation->id, colocation->rsc_lh->id, - (promoted_only? "promoted " : ""), - colocation->rsc_rh->id, colocation->score); - return true; -} -- 1.8.3.1 From 92c83d4da20da7dcaf1063a0768563742aea6618 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Mon, 11 Jan 2021 16:38:58 -0600 Subject: [PATCH 08/12] Refactor: scheduler: don't add constraints with score 0 Previously, we parsed constraints with a score of 0 into the pcmk__colocation_t list, then ignored them wherever they were used. Now, don't add them to begin with. --- lib/pacemaker/pcmk_sched_constraints.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/pacemaker/pcmk_sched_constraints.c b/lib/pacemaker/pcmk_sched_constraints.c index be93f0b..ab6f74e 100644 --- a/lib/pacemaker/pcmk_sched_constraints.c +++ b/lib/pacemaker/pcmk_sched_constraints.c @@ -1351,6 +1351,10 @@ pcmk__new_colocation(const char *id, const char *node_attr, int score, { pcmk__colocation_t *new_con = NULL; + if (score == 0) { + crm_trace("Ignoring colocation '%s' because score is 0", id); + return; + } if ((rsc_lh == NULL) || (rsc_rh == NULL)) { pcmk__config_err("Ignoring colocation '%s' because resource " "does not exist", id); @@ -2328,6 +2332,11 @@ unpack_colocation_set(xmlNode *set, int score, const char *coloc_id, if (score_s) { local_score = char2score(score_s); } + if (local_score == 0) { + crm_trace("Ignoring colocation '%s' for set '%s' because score is 0", + coloc_id, set_id); + return TRUE; + } if(ordering == NULL) { ordering = "group"; @@ -2336,7 +2345,7 @@ unpack_colocation_set(xmlNode *set, int score, const char *coloc_id, if (sequential != NULL && crm_is_true(sequential) == FALSE) { return TRUE; - } else if ((local_score >= 0) + } else if ((local_score > 0) && pcmk__str_eq(ordering, "group", pcmk__str_casei)) { for (xml_rsc = pcmk__xe_first_child(set); xml_rsc != NULL; xml_rsc = pcmk__xe_next(xml_rsc)) { @@ -2355,7 +2364,7 @@ unpack_colocation_set(xmlNode *set, int score, const char *coloc_id, with = resource; } } - } else if (local_score >= 0) { + } else if (local_score > 0) { pe_resource_t *last = NULL; for (xml_rsc = pcmk__xe_first_child(set); xml_rsc != NULL; xml_rsc = pcmk__xe_next(xml_rsc)) { @@ -2428,6 +2437,11 @@ colocate_rsc_sets(const char *id, xmlNode * set1, xmlNode * set2, int score, const char *sequential_1 = crm_element_value(set1, "sequential"); const char *sequential_2 = crm_element_value(set2, "sequential"); + if (score == 0) { + crm_trace("Ignoring colocation '%s' between sets because score is 0", + id); + return TRUE; + } if (sequential_1 == NULL || crm_is_true(sequential_1)) { /* get the first one */ for (xml_rsc = pcmk__xe_first_child(set1); xml_rsc != NULL; -- 1.8.3.1 From cd04564fea1113d7f89622cd434f0f567998217e Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Mon, 11 Jan 2021 16:43:52 -0600 Subject: [PATCH 09/12] Refactor: scheduler: don't check colocation constraints for 0 score ... since they aren't added to begin with anymore --- lib/pacemaker/pcmk_sched_bundle.c | 3 --- lib/pacemaker/pcmk_sched_clone.c | 23 +---------------------- lib/pacemaker/pcmk_sched_group.c | 9 --------- lib/pacemaker/pcmk_sched_native.c | 26 +------------------------- lib/pacemaker/pcmk_sched_promotable.c | 16 +--------------- 5 files changed, 3 insertions(+), 74 deletions(-) diff --git a/lib/pacemaker/pcmk_sched_bundle.c b/lib/pacemaker/pcmk_sched_bundle.c index bc7009d..955a7d3 100644 --- a/lib/pacemaker/pcmk_sched_bundle.c +++ b/lib/pacemaker/pcmk_sched_bundle.c @@ -483,9 +483,6 @@ pcmk__bundle_rsc_colocation_rh(pe_resource_t *rsc_lh, pe_resource_t *rsc, CRM_CHECK(rsc != NULL, pe_err("rsc was NULL for %s", constraint->id); return); CRM_ASSERT(rsc_lh->variant == pe_native); - if (constraint->score == 0) { - return; - } if (pcmk_is_set(rsc->flags, pe_rsc_provisional)) { pe_rsc_trace(rsc, "%s is still provisional", rsc->id); return; diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index 9485a98..3cfc06c 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -239,9 +239,6 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set) for (gIter = resource1->parent->rsc_cons; gIter; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } crm_trace("Applying %s to %s", constraint->id, resource1->id); hash1 = pcmk__native_merge_weights(constraint->rsc_rh, @@ -254,9 +251,6 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set) for (gIter = resource1->parent->rsc_cons_lhs; gIter; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } crm_trace("Applying %s to %s", constraint->id, resource1->id); hash1 = pcmk__native_merge_weights(constraint->rsc_lh, @@ -501,9 +495,6 @@ append_parent_colocation(pe_resource_t * rsc, pe_resource_t * child, gboolean al for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *cons = (pcmk__colocation_t *) gIter->data; - if (cons->score == 0) { - continue; - } if (all || cons->score < 0 || cons->score == INFINITY) { child->rsc_cons = g_list_prepend(child->rsc_cons, cons); } @@ -513,9 +504,6 @@ append_parent_colocation(pe_resource_t * rsc, pe_resource_t * child, gboolean al for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *cons = (pcmk__colocation_t *) gIter->data; - if (cons->score == 0) { - continue; - } if (all || cons->score < 0) { child->rsc_cons_lhs = g_list_prepend(child->rsc_cons_lhs, cons); } @@ -647,9 +635,6 @@ pcmk__clone_allocate(pe_resource_t *rsc, pe_node_t *prefer, for (GListPtr gIter = rsc->rsc_cons; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } pe_rsc_trace(rsc, "%s: Allocating %s first", rsc->id, constraint->rsc_rh->id); constraint->rsc_rh->cmds->allocate(constraint->rsc_rh, prefer, data_set); @@ -658,9 +643,6 @@ pcmk__clone_allocate(pe_resource_t *rsc, pe_node_t *prefer, for (GListPtr gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } rsc->allowed_nodes = constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, rsc->allowed_nodes, constraint->node_attribute, @@ -1079,9 +1061,6 @@ clone_rsc_colocation_rh(pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, CRM_CHECK(rsc_rh != NULL, pe_err("rsc_rh was NULL for %s", constraint->id); return); CRM_CHECK(rsc_lh->variant == pe_native, return); - if (constraint->score == 0) { - return; - } pe_rsc_trace(rsc_rh, "Processing constraint %s: %s -> %s %d", constraint->id, rsc_lh->id, rsc_rh->id, constraint->score); diff --git a/lib/pacemaker/pcmk_sched_group.c b/lib/pacemaker/pcmk_sched_group.c index 336a6f9..439ed91 100644 --- a/lib/pacemaker/pcmk_sched_group.c +++ b/lib/pacemaker/pcmk_sched_group.c @@ -300,9 +300,6 @@ group_rsc_colocation_lh(pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, pe_err("rsc_rh was NULL for %s", constraint->id); return; } - if (constraint->score == 0) { - return; - } gIter = rsc_lh->children; pe_rsc_trace(rsc_lh, "Processing constraints from %s", rsc_lh->id); @@ -341,9 +338,6 @@ group_rsc_colocation_rh(pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, get_group_variant_data(group_data, rsc_rh); CRM_CHECK(rsc_lh->variant == pe_native, return); - if (constraint->score == 0) { - return; - } pe_rsc_trace(rsc_rh, "Processing RH %s of constraint %s (LH is %s)", rsc_rh->id, constraint->id, rsc_lh->id); @@ -520,9 +514,6 @@ pcmk__group_merge_weights(pe_resource_t *rsc, const char *rhs, for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } nodes = pcmk__native_merge_weights(constraint->rsc_lh, rsc->id, nodes, constraint->node_attribute, constraint->score / (float) INFINITY, diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index 70f6c2f..c7bf4fe 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -438,10 +438,6 @@ pcmk__native_merge_weights(pe_resource_t *rsc, const char *rhs, pe_resource_t *other = NULL; pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } - if (pcmk_is_set(flags, pe_weights_forward)) { other = constraint->rsc_rh; } else { @@ -533,10 +529,6 @@ pcmk__native_allocate(pe_resource_t *rsc, pe_node_t *prefer, GHashTable *archive = NULL; pe_resource_t *rsc_rh = constraint->rsc_rh; - if (constraint->score == 0) { - continue; - } - if (constraint->role_lh >= RSC_ROLE_MASTER || (constraint->score < 0 && constraint->score > -INFINITY)) { archive = pcmk__copy_node_table(rsc->allowed_nodes); @@ -564,9 +556,6 @@ pcmk__native_allocate(pe_resource_t *rsc, pe_node_t *prefer, for (gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } pe_rsc_trace(rsc, "Merging score of '%s' constraint (%s with %s)", constraint->id, constraint->rsc_lh->id, constraint->rsc_rh->id); @@ -1726,9 +1715,6 @@ native_rsc_colocation_lh(pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, return; } - if (constraint->score == 0) { - return; - } pe_rsc_trace(rsc_lh, "Processing colocation constraint between %s and %s", rsc_lh->id, rsc_rh->id); @@ -1739,10 +1725,6 @@ enum filter_colocation_res filter_colocation_constraint(pe_resource_t * rsc_lh, pe_resource_t * rsc_rh, pcmk__colocation_t *constraint, gboolean preview) { - if (constraint->score == 0) { - return influence_nothing; - } - /* rh side must be allocated before we can process constraint */ if (!preview && pcmk_is_set(rsc_rh->flags, pe_rsc_provisional)) { return influence_nothing; @@ -1829,9 +1811,6 @@ influence_priority(pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, const char *attribute = CRM_ATTR_ID; int score_multiplier = 1; - if (constraint->score == 0) { - return; - } if (!rsc_rh->allocated_to || !rsc_lh->allocated_to) { return; } @@ -1872,9 +1851,6 @@ colocation_match(pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, GHashTableIter iter; pe_node_t *node = NULL; - if (constraint->score == 0) { - return; - } if (constraint->node_attribute != NULL) { attribute = constraint->node_attribute; } @@ -1941,7 +1917,7 @@ native_rsc_colocation_rh(pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, CRM_ASSERT(rsc_rh); filter_results = filter_colocation_constraint(rsc_lh, rsc_rh, constraint, FALSE); pe_rsc_trace(rsc_lh, "%s %s with %s (%s, score=%d, filter=%d)", - ((constraint->score >= 0)? "Colocating" : "Anti-colocating"), + ((constraint->score > 0)? "Colocating" : "Anti-colocating"), rsc_lh->id, rsc_rh->id, constraint->id, constraint->score, filter_results); switch (filter_results) { diff --git a/lib/pacemaker/pcmk_sched_promotable.c b/lib/pacemaker/pcmk_sched_promotable.c index 9a5474a..0b4f826 100644 --- a/lib/pacemaker/pcmk_sched_promotable.c +++ b/lib/pacemaker/pcmk_sched_promotable.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -321,10 +321,6 @@ promotion_order(pe_resource_t *rsc, pe_working_set_t *data_set) for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } - /* (re-)adds location preferences of resources that the * master instance should/must be colocated with */ @@ -345,10 +341,6 @@ promotion_order(pe_resource_t *rsc, pe_working_set_t *data_set) for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; - if (constraint->score == 0) { - continue; - } - /* (re-)adds location preferences of resource that wish to be * colocated with the master instance */ @@ -740,9 +732,6 @@ pcmk__set_instance_roles(pe_resource_t *rsc, pe_working_set_t *data_set) for (gIter2 = child_rsc->rsc_cons; gIter2 != NULL; gIter2 = gIter2->next) { pcmk__colocation_t *cons = (pcmk__colocation_t *) gIter2->data; - if (cons->score == 0) { - continue; - } child_rsc->cmds->rsc_colocation_lh(child_rsc, cons->rsc_rh, cons, data_set); } @@ -986,9 +975,6 @@ promotable_colocation_rh(pe_resource_t *rsc_lh, pe_resource_t *rsc_rh, { GListPtr gIter = NULL; - if (constraint->score == 0) { - return; - } if (pcmk_is_set(rsc_lh->flags, pe_rsc_provisional)) { GListPtr rhs = NULL; -- 1.8.3.1 From 30d3c16a7fd142a84b342ad1d0bb6f8618d677c5 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Mon, 11 Jan 2021 16:53:55 -0600 Subject: [PATCH 10/12] Refactor: scheduler: convenience function for checking colocation influence --- include/pcmki/pcmki_scheduler.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/include/pcmki/pcmki_scheduler.h b/include/pcmki/pcmki_scheduler.h index c604a32..f2f3d5b 100644 --- a/include/pcmki/pcmki_scheduler.h +++ b/include/pcmki/pcmki_scheduler.h @@ -107,4 +107,30 @@ extern gboolean show_scores; extern gboolean show_utilization; extern const char *transition_idle_timeout; +/*! + * \internal + * \brief Check whether colocation's left-hand preferences should be considered + * + * \param[in] colocation Colocation constraint + * \param[in] rsc Right-hand instance (normally this will be + * colocation->rsc_rh, which NULL will be treated as, + * but for clones or bundles with multiple instances + * this can be a particular instance) + * + * \return true if colocation influence should be effective, otherwise false + */ +static inline bool +pcmk__colocation_has_influence(const pcmk__colocation_t *colocation, + const pe_resource_t *rsc) +{ + if (rsc == NULL) { + rsc = colocation->rsc_rh; + } + + /* The left hand of a colocation influences the right hand's location + * if the influence option is true, or the right hand is not yet active. + */ + return colocation->influence || (rsc->running_on == NULL); +} + #endif -- 1.8.3.1 From 7ae21be9c9a4c2aea68f74c4c8f80f7ba8053635 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Mon, 11 Jan 2021 17:02:30 -0600 Subject: [PATCH 11/12] Feature: scheduler: implement new critical and influence options The feature set is bumped because critical is a resource meta-attribute and thus not dependent on schema version, and we don't want it to flip back and forth between being respected or not. critical just sets a resource-wide default for influence, so only influence is actually used in scheduling. It's a little tricky deciding when to consider influence. The basic idea is that when a colocation constraint "A with B" has no influence, A's location preferences should not influence B's location. But the colocation still matters for things like where A is allowed to run. Thus we only consider it when cycling through a resource's ->rsc_cons_lhs to add the dependents' preferences. --- include/crm/crm.h | 4 ++-- lib/pacemaker/pcmk_sched_clone.c | 12 ++++++++++++ lib/pacemaker/pcmk_sched_native.c | 5 +++++ lib/pacemaker/pcmk_sched_promotable.c | 4 ++++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/include/crm/crm.h b/include/crm/crm.h index 4bbf46a..3f22c4b 100644 --- a/include/crm/crm.h +++ b/include/crm/crm.h @@ -1,5 +1,5 @@ /* - * Copyright 2004-2020 the Pacemaker project contributors + * Copyright 2004-2021 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -51,7 +51,7 @@ extern "C" { * >=3.0.13: Fail counts include operation name and interval * >=3.2.0: DC supports PCMK_LRM_OP_INVALID and PCMK_LRM_OP_NOT_CONNECTED */ -# define CRM_FEATURE_SET "3.6.4" +# define CRM_FEATURE_SET "3.7.0" # define EOS '\0' # define DIMOF(a) ((int) (sizeof(a)/sizeof(a[0])) ) diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index 3cfc06c..dd6ff48 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.c @@ -251,6 +251,9 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set) for (gIter = resource1->parent->rsc_cons_lhs; gIter; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; + if (!pcmk__colocation_has_influence(constraint, resource1)) { + continue; + } crm_trace("Applying %s to %s", constraint->id, resource1->id); hash1 = pcmk__native_merge_weights(constraint->rsc_lh, @@ -277,6 +280,9 @@ sort_clone_instance(gconstpointer a, gconstpointer b, gpointer data_set) for (gIter = resource2->parent->rsc_cons_lhs; gIter; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; + if (!pcmk__colocation_has_influence(constraint, resource2)) { + continue; + } crm_trace("Applying %s to %s", constraint->id, resource2->id); hash2 = pcmk__native_merge_weights(constraint->rsc_lh, @@ -504,6 +510,9 @@ append_parent_colocation(pe_resource_t * rsc, pe_resource_t * child, gboolean al for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *cons = (pcmk__colocation_t *) gIter->data; + if (!pcmk__colocation_has_influence(cons, child)) { + continue; + } if (all || cons->score < 0) { child->rsc_cons_lhs = g_list_prepend(child->rsc_cons_lhs, cons); } @@ -643,6 +652,9 @@ pcmk__clone_allocate(pe_resource_t *rsc, pe_node_t *prefer, for (GListPtr gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; + if (!pcmk__colocation_has_influence(constraint, NULL)) { + continue; + } rsc->allowed_nodes = constraint->rsc_lh->cmds->merge_weights(constraint->rsc_lh, rsc->id, rsc->allowed_nodes, constraint->node_attribute, diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index c7bf4fe..0e50eda 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -440,6 +440,8 @@ pcmk__native_merge_weights(pe_resource_t *rsc, const char *rhs, if (pcmk_is_set(flags, pe_weights_forward)) { other = constraint->rsc_rh; + } else if (!pcmk__colocation_has_influence(constraint, NULL)) { + continue; } else { other = constraint->rsc_lh; } @@ -556,6 +558,9 @@ pcmk__native_allocate(pe_resource_t *rsc, pe_node_t *prefer, for (gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; + if (!pcmk__colocation_has_influence(constraint, NULL)) { + continue; + } pe_rsc_trace(rsc, "Merging score of '%s' constraint (%s with %s)", constraint->id, constraint->rsc_lh->id, constraint->rsc_rh->id); diff --git a/lib/pacemaker/pcmk_sched_promotable.c b/lib/pacemaker/pcmk_sched_promotable.c index 0b4f826..40d07e9 100644 --- a/lib/pacemaker/pcmk_sched_promotable.c +++ b/lib/pacemaker/pcmk_sched_promotable.c @@ -341,6 +341,10 @@ promotion_order(pe_resource_t *rsc, pe_working_set_t *data_set) for (; gIter != NULL; gIter = gIter->next) { pcmk__colocation_t *constraint = (pcmk__colocation_t *) gIter->data; + if (!pcmk__colocation_has_influence(constraint, NULL)) { + continue; + } + /* (re-)adds location preferences of resource that wish to be * colocated with the master instance */ -- 1.8.3.1 From 3bc2288f65a72d83f15f008d01054f9cb8663865 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 12 Jan 2021 14:24:21 -0600 Subject: [PATCH 12/12] Test: cts-scheduler: add regression test for colocation influence --- cts/cts-scheduler.in | 3 +- cts/scheduler/colocation-influence.dot | 92 ++ cts/scheduler/colocation-influence.exp | 455 ++++++++++ cts/scheduler/colocation-influence.scores | 673 ++++++++++++++ cts/scheduler/colocation-influence.summary | 168 ++++ cts/scheduler/colocation-influence.xml | 1298 ++++++++++++++++++++++++++++ 6 files changed, 2688 insertions(+), 1 deletion(-) create mode 100644 cts/scheduler/colocation-influence.dot create mode 100644 cts/scheduler/colocation-influence.exp create mode 100644 cts/scheduler/colocation-influence.scores create mode 100644 cts/scheduler/colocation-influence.summary create mode 100644 cts/scheduler/colocation-influence.xml diff --git a/cts/cts-scheduler.in b/cts/cts-scheduler.in index 919d3ed..027ddf9 100644 --- a/cts/cts-scheduler.in +++ b/cts/cts-scheduler.in @@ -231,6 +231,7 @@ TESTS = [ [ "complex_enforce_colo", "Always enforce B with A INFINITY. (make sure heat-engine stops)" ], [ "coloc-dependee-should-stay", "Stickiness outweighs group colocation" ], [ "coloc-dependee-should-move", "Group colocation outweighs stickiness" ], + [ "colocation-influence", "Respect colocation influence" ], ], [ [ "rsc-sets-seq-true", "Resource Sets - sequential=false" ], diff --git a/cts/scheduler/colocation-influence.dot b/cts/scheduler/colocation-influence.dot new file mode 100644 index 0000000..9573ab3 --- /dev/null +++ b/cts/scheduler/colocation-influence.dot @@ -0,0 +1,92 @@ + digraph "g" { +"bundle11-1_monitor_0 rhel7-1" -> "bundle11-1_start_0 rhel7-5" [ style = dashed] +"bundle11-1_monitor_0 rhel7-1" [ style=dashed color="red" fontcolor="black"] +"bundle11-1_monitor_0 rhel7-2" -> "bundle11-1_start_0 rhel7-5" [ style = dashed] +"bundle11-1_monitor_0 rhel7-2" [ style=dashed color="red" fontcolor="black"] +"bundle11-1_monitor_0 rhel7-3" -> "bundle11-1_start_0 rhel7-5" [ style = dashed] +"bundle11-1_monitor_0 rhel7-3" [ style=dashed color="red" fontcolor="black"] +"bundle11-1_monitor_0 rhel7-4" -> "bundle11-1_start_0 rhel7-5" [ style = dashed] +"bundle11-1_monitor_0 rhel7-4" [ style=dashed color="red" fontcolor="black"] +"bundle11-1_monitor_0 rhel7-5" -> "bundle11-1_start_0 rhel7-5" [ style = dashed] +"bundle11-1_monitor_0 rhel7-5" [ style=dashed color="red" fontcolor="black"] +"bundle11-1_monitor_30000 rhel7-5" [ style=dashed color="red" fontcolor="black"] +"bundle11-1_start_0 rhel7-5" -> "bundle11-1_monitor_30000 rhel7-5" [ style = dashed] +"bundle11-1_start_0 rhel7-5" -> "bundle11a:1_monitor_15000 bundle11-1" [ style = dashed] +"bundle11-1_start_0 rhel7-5" -> "bundle11a:1_start_0 bundle11-1" [ style = dashed] +"bundle11-1_start_0 rhel7-5" [ style=dashed color="red" fontcolor="black"] +"bundle11-clone_running_0" -> "bundle11_running_0" [ style = bold] +"bundle11-clone_running_0" [ style=bold color="green" fontcolor="orange"] +"bundle11-clone_start_0" -> "bundle11-clone_running_0" [ style = bold] +"bundle11-clone_start_0" -> "bundle11a:1_start_0 bundle11-1" [ style = dashed] +"bundle11-clone_start_0" [ style=bold color="green" fontcolor="orange"] +"bundle11_running_0" [ style=bold color="green" fontcolor="orange"] +"bundle11_start_0" -> "bundle11-clone_start_0" [ style = bold] +"bundle11_start_0" [ style=bold color="green" fontcolor="orange"] +"bundle11a:1_monitor_15000 bundle11-1" [ style=dashed color="red" fontcolor="black"] +"bundle11a:1_start_0 bundle11-1" -> "bundle11-clone_running_0" [ style = dashed] +"bundle11a:1_start_0 bundle11-1" -> "bundle11a:1_monitor_15000 bundle11-1" [ style = dashed] +"bundle11a:1_start_0 bundle11-1" [ style=dashed color="red" fontcolor="black"] +"group6a_stop_0" -> "group6a_stopped_0" [ style = bold] +"group6a_stop_0" -> "rsc6a1_stop_0 rhel7-2" [ style = bold] +"group6a_stop_0" -> "rsc6a2_stop_0 rhel7-2" [ style = bold] +"group6a_stop_0" [ style=bold color="green" fontcolor="orange"] +"group6a_stopped_0" [ style=bold color="green" fontcolor="orange"] +"group7a_stop_0" -> "group7a_stopped_0" [ style = bold] +"group7a_stop_0" -> "rsc7a2_stop_0 rhel7-3" [ style = bold] +"group7a_stop_0" [ style=bold color="green" fontcolor="orange"] +"group7a_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rsc10a_monitor_10000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc10a_start_0 rhel7-3" -> "rsc10a_monitor_10000 rhel7-3" [ style = bold] +"rsc10a_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc10a_stop_0 rhel7-2" -> "rsc10a_start_0 rhel7-3" [ style = bold] +"rsc10a_stop_0 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc12b_stop_0 rhel7-1" [ style=bold color="green" fontcolor="black"] +"rsc13a_stop_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc14a-clone_demote_0" -> "rsc14a-clone_demoted_0" [ style = bold] +"rsc14a-clone_demote_0" -> "rsc14a_demote_0 rhel7-4" [ style = bold] +"rsc14a-clone_demote_0" [ style=bold color="green" fontcolor="orange"] +"rsc14a-clone_demoted_0" -> "rsc14a-clone_stop_0" [ style = bold] +"rsc14a-clone_demoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc14a-clone_stop_0" -> "rsc14a-clone_stopped_0" [ style = bold] +"rsc14a-clone_stop_0" -> "rsc14a_stop_0 rhel7-4" [ style = bold] +"rsc14a-clone_stop_0" [ style=bold color="green" fontcolor="orange"] +"rsc14a-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rsc14a_demote_0 rhel7-4" -> "rsc14a-clone_demoted_0" [ style = bold] +"rsc14a_demote_0 rhel7-4" -> "rsc14a_stop_0 rhel7-4" [ style = bold] +"rsc14a_demote_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc14a_stop_0 rhel7-4" -> "rsc14a-clone_stopped_0" [ style = bold] +"rsc14a_stop_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc1a_monitor_10000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc1a_start_0 rhel7-3" -> "rsc1a_monitor_10000 rhel7-3" [ style = bold] +"rsc1a_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc1a_stop_0 rhel7-2" -> "rsc1a_start_0 rhel7-3" [ style = bold] +"rsc1a_stop_0 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc1b_monitor_10000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc1b_start_0 rhel7-3" -> "rsc1b_monitor_10000 rhel7-3" [ style = bold] +"rsc1b_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc1b_stop_0 rhel7-2" -> "rsc1b_start_0 rhel7-3" [ style = bold] +"rsc1b_stop_0 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc2a_stop_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc3a_monitor_10000 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc3a_start_0 rhel7-2" -> "rsc3a_monitor_10000 rhel7-2" [ style = bold] +"rsc3a_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc3b_monitor_10000 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc3b_start_0 rhel7-2" -> "rsc3b_monitor_10000 rhel7-2" [ style = bold] +"rsc3b_start_0 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc4a_stop_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc5a_stop_0 rhel7-1" [ style=bold color="green" fontcolor="black"] +"rsc6a1_stop_0 rhel7-2" -> "group6a_stopped_0" [ style = bold] +"rsc6a1_stop_0 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc6a2_stop_0 rhel7-2" -> "group6a_stopped_0" [ style = bold] +"rsc6a2_stop_0 rhel7-2" -> "rsc6a1_stop_0 rhel7-2" [ style = bold] +"rsc6a2_stop_0 rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc7a2_stop_0 rhel7-3" -> "group7a_stopped_0" [ style = bold] +"rsc7a2_stop_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc8a-clone_stop_0" -> "rsc8a-clone_stopped_0" [ style = bold] +"rsc8a-clone_stop_0" -> "rsc8a_stop_0 rhel7-4" [ style = bold] +"rsc8a-clone_stop_0" [ style=bold color="green" fontcolor="orange"] +"rsc8a-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rsc8a_stop_0 rhel7-4" -> "rsc8a-clone_stopped_0" [ style = bold] +"rsc8a_stop_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc9c_stop_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +} diff --git a/cts/scheduler/colocation-influence.exp b/cts/scheduler/colocation-influence.exp new file mode 100644 index 0000000..410c46f --- /dev/null +++ b/cts/scheduler/colocation-influence.exp @@ -0,0 +1,455 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/colocation-influence.scores b/cts/scheduler/colocation-influence.scores new file mode 100644 index 0000000..1437263 --- /dev/null +++ b/cts/scheduler/colocation-influence.scores @@ -0,0 +1,673 @@ +Allocation scores: +pcmk__bundle_allocate: bundle10 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle10 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle10 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle10 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle10 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-2: 10 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-2: 10010 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: bundle10-0 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-3: 10 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-3: 10010 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: bundle10-1 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: bundle10-clone allocation score on bundle10-0: -INFINITY +pcmk__bundle_allocate: bundle10-clone allocation score on bundle10-0: 0 +pcmk__bundle_allocate: bundle10-clone allocation score on bundle10-1: -INFINITY +pcmk__bundle_allocate: bundle10-clone allocation score on bundle10-1: 0 +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-1: -INFINITY +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-2: -INFINITY +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-3: -INFINITY +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-4: -INFINITY +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-clone allocation score on rhel7-5: 0 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-2: 10 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-2: 21 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-docker-0 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-2: -INFINITY +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-3: 10 +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-3: 21 +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-docker-1 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-1: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-2: 10 +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-2: 10 +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-3: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-4: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-1: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-2: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-3: 10 +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-3: 10 +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-4: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle11 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle11 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle11 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle11 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle11 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle11-0 allocation score on rhel7-1: 10 +pcmk__bundle_allocate: bundle11-0 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle11-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle11-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle11-0 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: bundle11-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle11-1 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle11-1 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle11-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle11-1 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: bundle11-clone allocation score on bundle11-0: -INFINITY +pcmk__bundle_allocate: bundle11-clone allocation score on bundle11-1: -INFINITY +pcmk__bundle_allocate: bundle11-clone allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle11-clone allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle11-clone allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle11-clone allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle11-clone allocation score on rhel7-5: 0 +pcmk__bundle_allocate: bundle11-docker-0 allocation score on rhel7-1: 10 +pcmk__bundle_allocate: bundle11-docker-0 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle11-docker-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle11-docker-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle11-docker-0 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle11-docker-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle11-docker-1 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle11-docker-1 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle11-docker-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle11-docker-1 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-1: 10 +pcmk__bundle_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-2: 0 +pcmk__bundle_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-5: -INFINITY +pcmk__bundle_allocate: bundle11a:0 allocation score on bundle11-0: 510 +pcmk__bundle_allocate: bundle11a:1 allocation score on bundle11-1: 500 +pcmk__bundle_allocate: httpd:0 allocation score on bundle10-0: 510 +pcmk__bundle_allocate: httpd:0 allocation score on bundle10-0: INFINITY +pcmk__bundle_allocate: httpd:1 allocation score on bundle10-1: 510 +pcmk__bundle_allocate: httpd:1 allocation score on bundle10-1: INFINITY +pcmk__clone_allocate: bundle10-clone allocation score on bundle10-0: 0 +pcmk__clone_allocate: bundle10-clone allocation score on bundle10-1: 0 +pcmk__clone_allocate: bundle10-clone allocation score on rhel7-1: -INFINITY +pcmk__clone_allocate: bundle10-clone allocation score on rhel7-2: -INFINITY +pcmk__clone_allocate: bundle10-clone allocation score on rhel7-3: -INFINITY +pcmk__clone_allocate: bundle10-clone allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: bundle10-clone allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: bundle11-clone allocation score on bundle11-0: 0 +pcmk__clone_allocate: bundle11-clone allocation score on bundle11-1: 0 +pcmk__clone_allocate: bundle11-clone allocation score on rhel7-1: -INFINITY +pcmk__clone_allocate: bundle11-clone allocation score on rhel7-2: -INFINITY +pcmk__clone_allocate: bundle11-clone allocation score on rhel7-3: -INFINITY +pcmk__clone_allocate: bundle11-clone allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: bundle11-clone allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: bundle11a:0 allocation score on bundle11-0: INFINITY +pcmk__clone_allocate: bundle11a:1 allocation score on bundle11-1: INFINITY +pcmk__clone_allocate: httpd:0 allocation score on bundle10-0: INFINITY +pcmk__clone_allocate: httpd:1 allocation score on bundle10-1: INFINITY +pcmk__clone_allocate: rsc13b-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc13b-clone allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc13b-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc13b-clone allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc13b-clone allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc13b:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc13b:0 allocation score on rhel7-3: 20 +pcmk__clone_allocate: rsc13b:0 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc13b:0 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc13b:1 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc13b:1 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc13b:1 allocation score on rhel7-4: 15 +pcmk__clone_allocate: rsc13b:1 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:2 allocation score on rhel7-1: 15 +pcmk__clone_allocate: rsc13b:2 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc13b:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc13b:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc13b:2 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:3 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc13b:3 allocation score on rhel7-2: 15 +pcmk__clone_allocate: rsc13b:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc13b:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc13b:3 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:4 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc13b:4 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc13b:4 allocation score on rhel7-3: 10 +pcmk__clone_allocate: rsc13b:4 allocation score on rhel7-4: 5 +pcmk__clone_allocate: rsc13b:4 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:5 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc13b:5 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc13b:5 allocation score on rhel7-3: 10 +pcmk__clone_allocate: rsc13b:5 allocation score on rhel7-4: 5 +pcmk__clone_allocate: rsc13b:5 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:6 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc13b:6 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc13b:6 allocation score on rhel7-3: 10 +pcmk__clone_allocate: rsc13b:6 allocation score on rhel7-4: 5 +pcmk__clone_allocate: rsc13b:6 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:7 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc13b:7 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc13b:7 allocation score on rhel7-3: 10 +pcmk__clone_allocate: rsc13b:7 allocation score on rhel7-4: 5 +pcmk__clone_allocate: rsc13b:7 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc13b:8 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc13b:8 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc13b:8 allocation score on rhel7-3: 10 +pcmk__clone_allocate: rsc13b:8 allocation score on rhel7-4: 5 +pcmk__clone_allocate: rsc13b:8 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc14a-clone allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc14a-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc14a-clone allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a-clone allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc14a:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc14a:0 allocation score on rhel7-3: 15 +pcmk__clone_allocate: rsc14a:0 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:0 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc14a:1 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc14a:1 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc14a:1 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:1 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:2 allocation score on rhel7-1: 15 +pcmk__clone_allocate: rsc14a:2 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc14a:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc14a:2 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:2 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:3 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc14a:3 allocation score on rhel7-2: 15 +pcmk__clone_allocate: rsc14a:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc14a:3 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:3 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:4 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc14a:4 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc14a:4 allocation score on rhel7-3: 5 +pcmk__clone_allocate: rsc14a:4 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:4 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:5 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc14a:5 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc14a:5 allocation score on rhel7-3: 5 +pcmk__clone_allocate: rsc14a:5 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:5 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:6 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc14a:6 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc14a:6 allocation score on rhel7-3: 5 +pcmk__clone_allocate: rsc14a:6 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:6 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:7 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc14a:7 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc14a:7 allocation score on rhel7-3: 5 +pcmk__clone_allocate: rsc14a:7 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:7 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc14a:8 allocation score on rhel7-1: 5 +pcmk__clone_allocate: rsc14a:8 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc14a:8 allocation score on rhel7-3: 5 +pcmk__clone_allocate: rsc14a:8 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc14a:8 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc8a-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc8a-clone allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc8a-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc8a-clone allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc8a-clone allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc8a:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc8a:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc8a:0 allocation score on rhel7-3: 10 +pcmk__clone_allocate: rsc8a:0 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc8a:0 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc8a:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc8a:1 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc8a:1 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc8a:1 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc8a:1 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc8a:2 allocation score on rhel7-1: 10 +pcmk__clone_allocate: rsc8a:2 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc8a:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc8a:2 allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: rsc8a:2 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc8b-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc8b-clone allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc8b-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc8b-clone allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc8b-clone allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc8b:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc8b:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc8b:0 allocation score on rhel7-3: 10 +pcmk__clone_allocate: rsc8b:0 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc8b:0 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc8b:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc8b:1 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc8b:1 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc8b:1 allocation score on rhel7-4: 10 +pcmk__clone_allocate: rsc8b:1 allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: rsc8b:2 allocation score on rhel7-1: 10 +pcmk__clone_allocate: rsc8b:2 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc8b:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc8b:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc8b:2 allocation score on rhel7-5: -INFINITY +pcmk__group_allocate: group5a allocation score on rhel7-1: 0 +pcmk__group_allocate: group5a allocation score on rhel7-2: 0 +pcmk__group_allocate: group5a allocation score on rhel7-3: 0 +pcmk__group_allocate: group5a allocation score on rhel7-4: 0 +pcmk__group_allocate: group5a allocation score on rhel7-5: -INFINITY +pcmk__group_allocate: group6a allocation score on rhel7-1: 0 +pcmk__group_allocate: group6a allocation score on rhel7-2: 0 +pcmk__group_allocate: group6a allocation score on rhel7-3: 0 +pcmk__group_allocate: group6a allocation score on rhel7-4: 0 +pcmk__group_allocate: group6a allocation score on rhel7-5: -INFINITY +pcmk__group_allocate: group7a allocation score on rhel7-1: 0 +pcmk__group_allocate: group7a allocation score on rhel7-2: 0 +pcmk__group_allocate: group7a allocation score on rhel7-3: 0 +pcmk__group_allocate: group7a allocation score on rhel7-4: 0 +pcmk__group_allocate: group7a allocation score on rhel7-5: -INFINITY +pcmk__group_allocate: rsc5a1 allocation score on rhel7-1: 10 +pcmk__group_allocate: rsc5a1 allocation score on rhel7-2: 0 +pcmk__group_allocate: rsc5a1 allocation score on rhel7-3: 0 +pcmk__group_allocate: rsc5a1 allocation score on rhel7-4: 0 +pcmk__group_allocate: rsc5a1 allocation score on rhel7-5: -INFINITY +pcmk__group_allocate: rsc5a2 allocation score on rhel7-1: 10 +pcmk__group_allocate: rsc5a2 allocation score on rhel7-2: 0 +pcmk__group_allocate: rsc5a2 allocation score on rhel7-3: 0 +pcmk__group_allocate: rsc5a2 allocation score on rhel7-4: 0 +pcmk__group_allocate: rsc5a2 allocation score on rhel7-5: 0 +pcmk__group_allocate: rsc6a1 allocation score on rhel7-1: 0 +pcmk__group_allocate: rsc6a1 allocation score on rhel7-2: -INFINITY +pcmk__group_allocate: rsc6a1 allocation score on rhel7-3: 0 +pcmk__group_allocate: rsc6a1 allocation score on rhel7-4: 0 +pcmk__group_allocate: rsc6a1 allocation score on rhel7-5: -INFINITY +pcmk__group_allocate: rsc6a2 allocation score on rhel7-1: 0 +pcmk__group_allocate: rsc6a2 allocation score on rhel7-2: 10 +pcmk__group_allocate: rsc6a2 allocation score on rhel7-3: 0 +pcmk__group_allocate: rsc6a2 allocation score on rhel7-4: 0 +pcmk__group_allocate: rsc6a2 allocation score on rhel7-5: 0 +pcmk__group_allocate: rsc7a1 allocation score on rhel7-1: 0 +pcmk__group_allocate: rsc7a1 allocation score on rhel7-2: 0 +pcmk__group_allocate: rsc7a1 allocation score on rhel7-3: 10 +pcmk__group_allocate: rsc7a1 allocation score on rhel7-4: 0 +pcmk__group_allocate: rsc7a1 allocation score on rhel7-5: -INFINITY +pcmk__group_allocate: rsc7a2 allocation score on rhel7-1: 0 +pcmk__group_allocate: rsc7a2 allocation score on rhel7-2: 0 +pcmk__group_allocate: rsc7a2 allocation score on rhel7-3: -INFINITY +pcmk__group_allocate: rsc7a2 allocation score on rhel7-4: 0 +pcmk__group_allocate: rsc7a2 allocation score on rhel7-5: 0 +pcmk__native_allocate: Fencing allocation score on rhel7-1: 10 +pcmk__native_allocate: Fencing allocation score on rhel7-2: 0 +pcmk__native_allocate: Fencing allocation score on rhel7-3: 0 +pcmk__native_allocate: Fencing allocation score on rhel7-4: 0 +pcmk__native_allocate: Fencing allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle10-0 allocation score on rhel7-1: 0 +pcmk__native_allocate: bundle10-0 allocation score on rhel7-2: 10010 +pcmk__native_allocate: bundle10-0 allocation score on rhel7-3: 0 +pcmk__native_allocate: bundle10-0 allocation score on rhel7-4: 0 +pcmk__native_allocate: bundle10-0 allocation score on rhel7-5: 0 +pcmk__native_allocate: bundle10-1 allocation score on rhel7-1: 0 +pcmk__native_allocate: bundle10-1 allocation score on rhel7-2: 0 +pcmk__native_allocate: bundle10-1 allocation score on rhel7-3: 10010 +pcmk__native_allocate: bundle10-1 allocation score on rhel7-4: 0 +pcmk__native_allocate: bundle10-1 allocation score on rhel7-5: 0 +pcmk__native_allocate: bundle10-docker-0 allocation score on rhel7-1: 0 +pcmk__native_allocate: bundle10-docker-0 allocation score on rhel7-2: 21 +pcmk__native_allocate: bundle10-docker-0 allocation score on rhel7-3: 0 +pcmk__native_allocate: bundle10-docker-0 allocation score on rhel7-4: 0 +pcmk__native_allocate: bundle10-docker-0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle10-docker-1 allocation score on rhel7-1: 0 +pcmk__native_allocate: bundle10-docker-1 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: bundle10-docker-1 allocation score on rhel7-3: 21 +pcmk__native_allocate: bundle10-docker-1 allocation score on rhel7-4: 0 +pcmk__native_allocate: bundle10-docker-1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-2: 10 +pcmk__native_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: bundle10-ip-192.168.122.131 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-3: 10 +pcmk__native_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: bundle10-ip-192.168.122.132 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle11-0 allocation score on rhel7-1: 10010 +pcmk__native_allocate: bundle11-0 allocation score on rhel7-2: 0 +pcmk__native_allocate: bundle11-0 allocation score on rhel7-3: 0 +pcmk__native_allocate: bundle11-0 allocation score on rhel7-4: 0 +pcmk__native_allocate: bundle11-0 allocation score on rhel7-5: 0 +pcmk__native_allocate: bundle11-1 allocation score on rhel7-1: 0 +pcmk__native_allocate: bundle11-1 allocation score on rhel7-2: 0 +pcmk__native_allocate: bundle11-1 allocation score on rhel7-3: 0 +pcmk__native_allocate: bundle11-1 allocation score on rhel7-4: 0 +pcmk__native_allocate: bundle11-1 allocation score on rhel7-5: 0 +pcmk__native_allocate: bundle11-docker-0 allocation score on rhel7-1: 21 +pcmk__native_allocate: bundle11-docker-0 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: bundle11-docker-0 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: bundle11-docker-0 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: bundle11-docker-0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle11-docker-1 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: bundle11-docker-1 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: bundle11-docker-1 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: bundle11-docker-1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: bundle11-docker-1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-1: 10 +pcmk__native_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.134 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: bundle11-ip-192.168.122.135 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: bundle11a:0 allocation score on bundle11-0: INFINITY +pcmk__native_allocate: bundle11a:1 allocation score on bundle11-1: INFINITY +pcmk__native_allocate: httpd:0 allocation score on bundle10-0: INFINITY +pcmk__native_allocate: httpd:1 allocation score on bundle10-1: INFINITY +pcmk__native_allocate: rsc10a allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc10a allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc10a allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc10a allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc10a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc11a allocation score on rhel7-1: 10 +pcmk__native_allocate: rsc11a allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc11a allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc11a allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc11a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc12a allocation score on rhel7-1: 10 +pcmk__native_allocate: rsc12a allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc12a allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc12a allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc12a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc12b allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc12b allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc12b allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc12b allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc12b allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc12c allocation score on rhel7-1: 10 +pcmk__native_allocate: rsc12c allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc12c allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc12c allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc12c allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13a allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc13a allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc13a allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13a allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc13a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:0 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc13b:0 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc13b:0 allocation score on rhel7-3: 20 +pcmk__native_allocate: rsc13b:0 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc13b:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc13b:1 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc13b:1 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13b:1 allocation score on rhel7-4: 15 +pcmk__native_allocate: rsc13b:1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:2 allocation score on rhel7-1: 15 +pcmk__native_allocate: rsc13b:2 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc13b:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13b:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc13b:2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:3 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc13b:3 allocation score on rhel7-2: 15 +pcmk__native_allocate: rsc13b:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13b:3 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc13b:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc13b:4 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc13b:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13b:4 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc13b:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:5 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc13b:5 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc13b:5 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13b:5 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc13b:5 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:6 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc13b:6 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc13b:6 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13b:6 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc13b:6 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:7 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc13b:7 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc13b:7 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13b:7 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc13b:7 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc13b:8 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc13b:8 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc13b:8 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc13b:8 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc13b:8 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:0 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc14a:0 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc14a:0 allocation score on rhel7-3: 15 +pcmk__native_allocate: rsc14a:0 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:1 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc14a:1 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc14a:1 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc14a:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:2 allocation score on rhel7-1: 15 +pcmk__native_allocate: rsc14a:2 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc14a:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc14a:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:3 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc14a:3 allocation score on rhel7-2: 15 +pcmk__native_allocate: rsc14a:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc14a:3 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc14a:4 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc14a:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc14a:4 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:5 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc14a:5 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc14a:5 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc14a:5 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:5 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:6 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc14a:6 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc14a:6 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc14a:6 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:6 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:7 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc14a:7 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc14a:7 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc14a:7 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:7 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14a:8 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc14a:8 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc14a:8 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc14a:8 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc14a:8 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc14b allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc14b allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc14b allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc14b allocation score on rhel7-4: 10 +pcmk__native_allocate: rsc14b allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1a allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1a allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc1a allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc1a allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1b allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1b allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc1b allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc1b allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1b allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2a allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2a allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc2a allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2a allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2b allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2b allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2b allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc2b allocation score on rhel7-4: 10 +pcmk__native_allocate: rsc2b allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc3a allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc3a allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc3a allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc3a allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc3a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc3b allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc3b allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc3b allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc3b allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc3b allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc4a allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc4a allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc4a allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc4a allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc4a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc4b allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc4b allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc4b allocation score on rhel7-3: 10 +pcmk__native_allocate: rsc4b allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc4b allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc5a allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc5a allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc5a allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc5a allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc5a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc5a1 allocation score on rhel7-1: 20 +pcmk__native_allocate: rsc5a1 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc5a1 allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc5a1 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc5a1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc5a2 allocation score on rhel7-1: 10 +pcmk__native_allocate: rsc5a2 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc5a2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc5a2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc5a2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc6a allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc6a allocation score on rhel7-2: 10 +pcmk__native_allocate: rsc6a allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc6a allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc6a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc6a1 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc6a1 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc6a1 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc6a1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc6a1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc6a2 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc6a2 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc6a2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc6a2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc6a2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc7a1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc7a1 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc7a1 allocation score on rhel7-3: 10 +pcmk__native_allocate: rsc7a1 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc7a1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc7a2 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc7a2 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc7a2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc7a2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc7a2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc8a:0 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc8a:0 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc8a:0 allocation score on rhel7-3: 10 +pcmk__native_allocate: rsc8a:0 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc8a:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc8a:1 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc8a:1 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc8a:1 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc8a:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc8a:1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc8a:2 allocation score on rhel7-1: 10 +pcmk__native_allocate: rsc8a:2 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc8a:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc8a:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc8a:2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc8b:0 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc8b:0 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc8b:0 allocation score on rhel7-3: 10 +pcmk__native_allocate: rsc8b:0 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc8b:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc8b:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc8b:1 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc8b:1 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc8b:1 allocation score on rhel7-4: 10 +pcmk__native_allocate: rsc8b:1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc8b:2 allocation score on rhel7-1: 10 +pcmk__native_allocate: rsc8b:2 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc8b:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc8b:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc8b:2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc9a allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc9a allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc9a allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc9a allocation score on rhel7-4: 10 +pcmk__native_allocate: rsc9a allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc9b allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc9b allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc9b allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc9b allocation score on rhel7-4: 10 +pcmk__native_allocate: rsc9b allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc9c allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc9c allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc9c allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc9c allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc9c allocation score on rhel7-5: -INFINITY +rsc13b:0 promotion score on rhel7-3: 10 +rsc13b:1 promotion score on rhel7-4: 5 +rsc13b:2 promotion score on rhel7-1: 5 +rsc13b:3 promotion score on rhel7-2: 5 +rsc13b:4 promotion score on none: 0 +rsc13b:5 promotion score on none: 0 +rsc13b:6 promotion score on none: 0 +rsc13b:7 promotion score on none: 0 +rsc13b:8 promotion score on none: 0 +rsc14a:0 promotion score on rhel7-3: -INFINITY +rsc14a:1 promotion score on none: 0 +rsc14a:2 promotion score on rhel7-1: -INFINITY +rsc14a:3 promotion score on rhel7-2: -INFINITY +rsc14a:4 promotion score on none: 0 +rsc14a:5 promotion score on none: 0 +rsc14a:6 promotion score on none: 0 +rsc14a:7 promotion score on none: 0 +rsc14a:8 promotion score on none: 0 diff --git a/cts/scheduler/colocation-influence.summary b/cts/scheduler/colocation-influence.summary new file mode 100644 index 0000000..626e87a --- /dev/null +++ b/cts/scheduler/colocation-influence.summary @@ -0,0 +1,168 @@ + +Current cluster status: +Online: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] +GuestOnline: [ bundle10-0:bundle10-docker-0 bundle10-1:bundle10-docker-1 bundle11-0:bundle11-docker-0 ] + + Fencing (stonith:fence_xvm): Started rhel7-1 + rsc1a (ocf::pacemaker:Dummy): Started rhel7-2 + rsc1b (ocf::pacemaker:Dummy): Started rhel7-2 + rsc2a (ocf::pacemaker:Dummy): Started rhel7-4 + rsc2b (ocf::pacemaker:Dummy): Started rhel7-4 + rsc3a (ocf::pacemaker:Dummy): Stopped + rsc3b (ocf::pacemaker:Dummy): Stopped + rsc4a (ocf::pacemaker:Dummy): Started rhel7-3 + rsc4b (ocf::pacemaker:Dummy): Started rhel7-3 + rsc5a (ocf::pacemaker:Dummy): Started rhel7-1 + Resource Group: group5a + rsc5a1 (ocf::pacemaker:Dummy): Started rhel7-1 + rsc5a2 (ocf::pacemaker:Dummy): Started rhel7-1 + Resource Group: group6a + rsc6a1 (ocf::pacemaker:Dummy): Started rhel7-2 + rsc6a2 (ocf::pacemaker:Dummy): Started rhel7-2 + rsc6a (ocf::pacemaker:Dummy): Started rhel7-2 + Resource Group: group7a + rsc7a1 (ocf::pacemaker:Dummy): Started rhel7-3 + rsc7a2 (ocf::pacemaker:Dummy): Started rhel7-3 + Clone Set: rsc8a-clone [rsc8a] + Started: [ rhel7-1 rhel7-3 rhel7-4 ] + Clone Set: rsc8b-clone [rsc8b] + Started: [ rhel7-1 rhel7-3 rhel7-4 ] + rsc9a (ocf::pacemaker:Dummy): Started rhel7-4 + rsc9b (ocf::pacemaker:Dummy): Started rhel7-4 + rsc9c (ocf::pacemaker:Dummy): Started rhel7-4 + rsc10a (ocf::pacemaker:Dummy): Started rhel7-2 + rsc11a (ocf::pacemaker:Dummy): Started rhel7-1 + rsc12a (ocf::pacemaker:Dummy): Started rhel7-1 + rsc12b (ocf::pacemaker:Dummy): Started rhel7-1 + rsc12c (ocf::pacemaker:Dummy): Started rhel7-1 + Container bundle set: bundle10 [pcmktest:http] + bundle10-0 (192.168.122.131) (ocf::heartbeat:apache): Started rhel7-2 + bundle10-1 (192.168.122.132) (ocf::heartbeat:apache): Started rhel7-3 + Container bundle set: bundle11 [pcmktest:http] + bundle11-0 (192.168.122.134) (ocf::pacemaker:Dummy): Started rhel7-1 + bundle11-1 (192.168.122.135) (ocf::pacemaker:Dummy): Stopped + rsc13a (ocf::pacemaker:Dummy): Started rhel7-3 + Clone Set: rsc13b-clone [rsc13b] (promotable) + Masters: [ rhel7-3 ] + Slaves: [ rhel7-1 rhel7-2 rhel7-4 ] + Stopped: [ rhel7-5 ] + rsc14b (ocf::pacemaker:Dummy): Started rhel7-4 + Clone Set: rsc14a-clone [rsc14a] (promotable) + Masters: [ rhel7-4 ] + Slaves: [ rhel7-1 rhel7-2 rhel7-3 ] + Stopped: [ rhel7-5 ] + +Transition Summary: + * Move rsc1a ( rhel7-2 -> rhel7-3 ) + * Move rsc1b ( rhel7-2 -> rhel7-3 ) + * Stop rsc2a ( rhel7-4 ) due to node availability + * Start rsc3a ( rhel7-2 ) + * Start rsc3b ( rhel7-2 ) + * Stop rsc4a ( rhel7-3 ) due to node availability + * Stop rsc5a ( rhel7-1 ) due to node availability + * Stop rsc6a1 ( rhel7-2 ) due to node availability + * Stop rsc6a2 ( rhel7-2 ) due to node availability + * Stop rsc7a2 ( rhel7-3 ) due to node availability + * Stop rsc8a:1 ( rhel7-4 ) due to node availability + * Stop rsc9c ( rhel7-4 ) due to node availability + * Move rsc10a ( rhel7-2 -> rhel7-3 ) + * Stop rsc12b ( rhel7-1 ) due to node availability + * Start bundle11-1 ( rhel7-5 ) due to unrunnable bundle11-docker-1 start (blocked) + * Start bundle11a:1 ( bundle11-1 ) due to unrunnable bundle11-docker-1 start (blocked) + * Stop rsc13a ( rhel7-3 ) due to node availability + * Stop rsc14a:1 ( Master rhel7-4 ) due to node availability + +Executing cluster transition: + * Resource action: rsc1a stop on rhel7-2 + * Resource action: rsc1b stop on rhel7-2 + * Resource action: rsc2a stop on rhel7-4 + * Resource action: rsc3a start on rhel7-2 + * Resource action: rsc3b start on rhel7-2 + * Resource action: rsc4a stop on rhel7-3 + * Resource action: rsc5a stop on rhel7-1 + * Pseudo action: group6a_stop_0 + * Resource action: rsc6a2 stop on rhel7-2 + * Pseudo action: group7a_stop_0 + * Resource action: rsc7a2 stop on rhel7-3 + * Pseudo action: rsc8a-clone_stop_0 + * Resource action: rsc9c stop on rhel7-4 + * Resource action: rsc10a stop on rhel7-2 + * Resource action: rsc12b stop on rhel7-1 + * Resource action: rsc13a stop on rhel7-3 + * Pseudo action: rsc14a-clone_demote_0 + * Pseudo action: bundle11_start_0 + * Resource action: rsc1a start on rhel7-3 + * Resource action: rsc1b start on rhel7-3 + * Resource action: rsc3a monitor=10000 on rhel7-2 + * Resource action: rsc3b monitor=10000 on rhel7-2 + * Resource action: rsc6a1 stop on rhel7-2 + * Pseudo action: group7a_stopped_0 + * Resource action: rsc8a stop on rhel7-4 + * Pseudo action: rsc8a-clone_stopped_0 + * Resource action: rsc10a start on rhel7-3 + * Pseudo action: bundle11-clone_start_0 + * Resource action: rsc14a demote on rhel7-4 + * Pseudo action: rsc14a-clone_demoted_0 + * Pseudo action: rsc14a-clone_stop_0 + * Resource action: rsc1a monitor=10000 on rhel7-3 + * Resource action: rsc1b monitor=10000 on rhel7-3 + * Pseudo action: group6a_stopped_0 + * Resource action: rsc10a monitor=10000 on rhel7-3 + * Pseudo action: bundle11-clone_running_0 + * Resource action: rsc14a stop on rhel7-4 + * Pseudo action: rsc14a-clone_stopped_0 + * Pseudo action: bundle11_running_0 + +Revised cluster status: +Online: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] +GuestOnline: [ bundle10-0:bundle10-docker-0 bundle10-1:bundle10-docker-1 bundle11-0:bundle11-docker-0 ] + + Fencing (stonith:fence_xvm): Started rhel7-1 + rsc1a (ocf::pacemaker:Dummy): Started rhel7-3 + rsc1b (ocf::pacemaker:Dummy): Started rhel7-3 + rsc2a (ocf::pacemaker:Dummy): Stopped + rsc2b (ocf::pacemaker:Dummy): Started rhel7-4 + rsc3a (ocf::pacemaker:Dummy): Started rhel7-2 + rsc3b (ocf::pacemaker:Dummy): Started rhel7-2 + rsc4a (ocf::pacemaker:Dummy): Stopped + rsc4b (ocf::pacemaker:Dummy): Started rhel7-3 + rsc5a (ocf::pacemaker:Dummy): Stopped + Resource Group: group5a + rsc5a1 (ocf::pacemaker:Dummy): Started rhel7-1 + rsc5a2 (ocf::pacemaker:Dummy): Started rhel7-1 + Resource Group: group6a + rsc6a1 (ocf::pacemaker:Dummy): Stopped + rsc6a2 (ocf::pacemaker:Dummy): Stopped + rsc6a (ocf::pacemaker:Dummy): Started rhel7-2 + Resource Group: group7a + rsc7a1 (ocf::pacemaker:Dummy): Started rhel7-3 + rsc7a2 (ocf::pacemaker:Dummy): Stopped + Clone Set: rsc8a-clone [rsc8a] + Started: [ rhel7-1 rhel7-3 ] + Stopped: [ rhel7-2 rhel7-4 rhel7-5 ] + Clone Set: rsc8b-clone [rsc8b] + Started: [ rhel7-1 rhel7-3 rhel7-4 ] + rsc9a (ocf::pacemaker:Dummy): Started rhel7-4 + rsc9b (ocf::pacemaker:Dummy): Started rhel7-4 + rsc9c (ocf::pacemaker:Dummy): Stopped + rsc10a (ocf::pacemaker:Dummy): Started rhel7-3 + rsc11a (ocf::pacemaker:Dummy): Started rhel7-1 + rsc12a (ocf::pacemaker:Dummy): Started rhel7-1 + rsc12b (ocf::pacemaker:Dummy): Stopped + rsc12c (ocf::pacemaker:Dummy): Started rhel7-1 + Container bundle set: bundle10 [pcmktest:http] + bundle10-0 (192.168.122.131) (ocf::heartbeat:apache): Started rhel7-2 + bundle10-1 (192.168.122.132) (ocf::heartbeat:apache): Started rhel7-3 + Container bundle set: bundle11 [pcmktest:http] + bundle11-0 (192.168.122.134) (ocf::pacemaker:Dummy): Started rhel7-1 + bundle11-1 (192.168.122.135) (ocf::pacemaker:Dummy): Stopped + rsc13a (ocf::pacemaker:Dummy): Stopped + Clone Set: rsc13b-clone [rsc13b] (promotable) + Masters: [ rhel7-3 ] + Slaves: [ rhel7-1 rhel7-2 rhel7-4 ] + Stopped: [ rhel7-5 ] + rsc14b (ocf::pacemaker:Dummy): Started rhel7-4 + Clone Set: rsc14a-clone [rsc14a] (promotable) + Slaves: [ rhel7-1 rhel7-2 rhel7-3 ] + Stopped: [ rhel7-4 rhel7-5 ] + diff --git a/cts/scheduler/colocation-influence.xml b/cts/scheduler/colocation-influence.xml new file mode 100644 index 0000000..5962cd2 --- /dev/null +++ b/cts/scheduler/colocation-influence.xml @@ -0,0 +1,1298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 1.8.3.1