From f1f71b3f3c342987db0058e7db0030417f3f83fa Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Thu, 28 May 2020 08:22:00 -0500 Subject: [PATCH 01/20] Refactor: scheduler: functionize comparing on-fail values The action_fail_response enum values used for the "on-fail" operation meta-attribute were initially intended to be in order of severity. However as new values were added, they were added to the end (out of severity order) to preserve API backward compatibility. This resulted in a convoluted comparison of values that will only get worse as more values are added. This commit adds a comparison function to isolate that complexity. --- include/crm/pengine/common.h | 32 ++++++++++++------ lib/pengine/unpack.c | 80 +++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 97 insertions(+), 15 deletions(-) diff --git a/include/crm/pengine/common.h b/include/crm/pengine/common.h index 3a770b7..2737b2e 100644 --- a/include/crm/pengine/common.h +++ b/include/crm/pengine/common.h @@ -22,18 +22,29 @@ extern "C" { extern gboolean was_processing_error; extern gboolean was_processing_warning; -/* order is significant here - * items listed in order of accending severeness - * more severe actions take precedent over lower ones +/* The order is (partially) significant here; the values from action_fail_ignore + * through action_fail_fence are in order of increasing severity. + * + * @COMPAT The values should be ordered and numbered per the "TODO" comments + * below, so all values are in order of severity and there is room for + * future additions, but that would break API compatibility. + * @TODO For now, we just use a function to compare the values specially, but + * at the next compatibility break, we should arrange things properly. */ enum action_fail_response { - action_fail_ignore, - action_fail_recover, - action_fail_migrate, /* recover by moving it somewhere else */ - action_fail_block, - action_fail_stop, - action_fail_standby, - action_fail_fence, + action_fail_ignore, // @TODO = 10 + // @TODO action_fail_demote = 20, + action_fail_recover, // @TODO = 30 + // @TODO action_fail_reset_remote = 40, + // @TODO action_fail_restart_container = 50, + action_fail_migrate, // @TODO = 60 + action_fail_block, // @TODO = 70 + action_fail_stop, // @TODO = 80 + action_fail_standby, // @TODO = 90 + action_fail_fence, // @TODO = 100 + + // @COMPAT Values below here are out of order for API compatibility + action_fail_restart_container, /* This is reserved for internal use for remote node connection resources. @@ -44,6 +55,7 @@ enum action_fail_response { */ action_fail_reset_remote, + action_fail_demote, }; /* the "done" action must be the "pre" action +1 */ diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 3c6606b..f688881 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2770,6 +2770,78 @@ last_change_str(xmlNode *xml_op) return ((when_s && *when_s)? when_s : "unknown time"); } +/*! + * \internal + * \brief Compare two on-fail values + * + * \param[in] first One on-fail value to compare + * \param[in] second The other on-fail value to compare + * + * \return A negative number if second is more severe than first, zero if they + * are equal, or a positive number if first is more severe than second. + * \note This is only needed until the action_fail_response values can be + * renumbered at the next API compatibility break. + */ +static int +cmp_on_fail(enum action_fail_response first, enum action_fail_response second) +{ + switch (first) { + case action_fail_reset_remote: + switch (second) { + case action_fail_ignore: + case action_fail_recover: + return 1; + case action_fail_reset_remote: + return 0; + default: + return -1; + } + break; + + case action_fail_restart_container: + switch (second) { + case action_fail_ignore: + case action_fail_recover: + case action_fail_reset_remote: + return 1; + case action_fail_restart_container: + return 0; + default: + return -1; + } + break; + + default: + break; + } + switch (second) { + case action_fail_reset_remote: + switch (first) { + case action_fail_ignore: + case action_fail_recover: + return -1; + default: + return 1; + } + break; + + case action_fail_restart_container: + switch (first) { + case action_fail_ignore: + case action_fail_recover: + case action_fail_reset_remote: + return -1; + default: + return 1; + } + break; + + default: + break; + } + return first - second; +} + static void unpack_rsc_op_failure(pe_resource_t * rsc, pe_node_t * node, int rc, xmlNode * xml_op, xmlNode ** last_failure, enum action_fail_response * on_fail, pe_working_set_t * data_set) @@ -2829,10 +2901,7 @@ unpack_rsc_op_failure(pe_resource_t * rsc, pe_node_t * node, int rc, xmlNode * x } action = custom_action(rsc, strdup(key), task, NULL, TRUE, FALSE, data_set); - if ((action->on_fail <= action_fail_fence && *on_fail < action->on_fail) || - (action->on_fail == action_fail_reset_remote && *on_fail <= action_fail_recover) || - (action->on_fail == action_fail_restart_container && *on_fail <= action_fail_recover) || - (*on_fail == action_fail_restart_container && action->on_fail >= action_fail_migrate)) { + if (cmp_on_fail(*on_fail, action->on_fail) < 0) { pe_rsc_trace(rsc, "on-fail %s -> %s for %s (%s)", fail2text(*on_fail), fail2text(action->on_fail), action->uuid, key); *on_fail = action->on_fail; @@ -3675,7 +3744,8 @@ unpack_rsc_op(pe_resource_t *rsc, pe_node_t *node, xmlNode *xml_op, record_failed_op(xml_op, node, rsc, data_set); - if (failure_strategy == action_fail_restart_container && *on_fail <= action_fail_recover) { + if ((failure_strategy == action_fail_restart_container) + && cmp_on_fail(*on_fail, action_fail_recover) <= 0) { *on_fail = failure_strategy; } -- 1.8.3.1 From ef246ff05d7459f9672b10ac1873e3191a3b46e9 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Thu, 28 May 2020 08:27:47 -0500 Subject: [PATCH 02/20] Fix: scheduler: disallow on-fail=stop for stop operations because it would loop infinitely as long as the stop continued to fail --- lib/pengine/utils.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 20a8db5..3fb7e62 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -716,16 +716,25 @@ custom_action(pe_resource_t * rsc, char *key, const char *task, return action; } +static bool +valid_stop_on_fail(const char *value) +{ + return safe_str_neq(value, "standby") + && safe_str_neq(value, "stop"); +} + static const char * unpack_operation_on_fail(pe_action_t * action) { const char *value = g_hash_table_lookup(action->meta, XML_OP_ATTR_ON_FAIL); - if (safe_str_eq(action->task, CRMD_ACTION_STOP) && safe_str_eq(value, "standby")) { + if (safe_str_eq(action->task, CRMD_ACTION_STOP) + && !valid_stop_on_fail(value)) { + pcmk__config_err("Resetting '" XML_OP_ATTR_ON_FAIL "' for %s stop " - "action to default value because 'standby' is not " - "allowed for stop", action->rsc->id); + "action to default value because '%s' is not " + "allowed for stop", action->rsc->id, value); return NULL; } else if (safe_str_eq(action->task, CRMD_ACTION_DEMOTE) && !value) { /* demote on_fail defaults to master monitor value if present */ -- 1.8.3.1 From 8dceba792ffe65cd77c3aae430067638dbba63f9 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Thu, 28 May 2020 08:50:33 -0500 Subject: [PATCH 03/20] Refactor: scheduler: use more appropriate types in a couple places --- lib/pengine/unpack.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index f688881..6a350e5 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2244,7 +2244,7 @@ unpack_lrm_rsc_state(pe_node_t * node, xmlNode * rsc_entry, pe_working_set_t * d xmlNode *rsc_op = NULL; xmlNode *last_failure = NULL; - enum action_fail_response on_fail = FALSE; + enum action_fail_response on_fail = action_fail_ignore; enum rsc_role_e saved_role = RSC_ROLE_UNKNOWN; crm_trace("[%s] Processing %s on %s", @@ -2287,7 +2287,6 @@ unpack_lrm_rsc_state(pe_node_t * node, xmlNode * rsc_entry, pe_working_set_t * d /* process operations */ saved_role = rsc->role; - on_fail = action_fail_ignore; rsc->role = RSC_ROLE_UNKNOWN; sorted_op_list = g_list_sort(op_list, sort_op_by_callid); @@ -3376,7 +3375,7 @@ int pe__target_rc_from_xml(xmlNode *xml_op) static enum action_fail_response get_action_on_fail(pe_resource_t *rsc, const char *key, const char *task, pe_working_set_t * data_set) { - int result = action_fail_recover; + enum action_fail_response result = action_fail_recover; pe_action_t *action = custom_action(rsc, strdup(key), task, NULL, TRUE, FALSE, data_set); result = action->on_fail; -- 1.8.3.1 From a4d6a20a990d1461184f888e21aa61cddff8996d Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 2 Jun 2020 12:05:57 -0500 Subject: [PATCH 04/20] Low: libpacemaker: don't force stop when skipping reload of failed resource Normal failure recovery will apply, which will stop if needed. (The stop was forced as of 2558d76f.) --- lib/pacemaker/pcmk_sched_native.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index bd8a0b5..ff2fb92 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -3362,9 +3362,19 @@ ReloadRsc(pe_resource_t * rsc, pe_node_t *node, pe_working_set_t * data_set) pe_rsc_trace(rsc, "%s: unmanaged", rsc->id); return; - } else if (is_set(rsc->flags, pe_rsc_failed) || is_set(rsc->flags, pe_rsc_start_pending)) { - pe_rsc_trace(rsc, "%s: general resource state: flags=0x%.16llx", rsc->id, rsc->flags); - stop_action(rsc, node, FALSE); /* Force a full restart, overkill? */ + } else if (is_set(rsc->flags, pe_rsc_failed)) { + /* We don't need to specify any particular actions here, normal failure + * recovery will apply. + */ + pe_rsc_trace(rsc, "%s: preventing reload because failed", rsc->id); + return; + + } else if (is_set(rsc->flags, pe_rsc_start_pending)) { + /* If a resource's configuration changed while a start was pending, + * force a full restart. + */ + pe_rsc_trace(rsc, "%s: preventing reload because start pending", rsc->id); + stop_action(rsc, node, FALSE); return; } else if (node == NULL) { -- 1.8.3.1 From f2d244bc4306297d5960c0ba54e0a85a68e864ee Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 2 Jun 2020 12:16:33 -0500 Subject: [PATCH 05/20] Test: scheduler: test forcing a restart instead of reload when start is pending --- cts/cts-scheduler.in | 1 + cts/scheduler/params-3.dot | 28 ++++++ cts/scheduler/params-3.exp | 208 +++++++++++++++++++++++++++++++++++++++++ cts/scheduler/params-3.scores | 21 +++++ cts/scheduler/params-3.summary | 45 +++++++++ cts/scheduler/params-3.xml | 154 ++++++++++++++++++++++++++++++ 6 files changed, 457 insertions(+) create mode 100644 cts/scheduler/params-3.dot create mode 100644 cts/scheduler/params-3.exp create mode 100644 cts/scheduler/params-3.scores create mode 100644 cts/scheduler/params-3.summary create mode 100644 cts/scheduler/params-3.xml diff --git a/cts/cts-scheduler.in b/cts/cts-scheduler.in index 346ada2..ae8247e 100644 --- a/cts/cts-scheduler.in +++ b/cts/cts-scheduler.in @@ -84,6 +84,7 @@ TESTS = [ [ "params-0", "Params: No change" ], [ "params-1", "Params: Changed" ], [ "params-2", "Params: Resource definition" ], + [ "params-3", "Params: Restart instead of reload if start pending" ], [ "params-4", "Params: Reload" ], [ "params-5", "Params: Restart based on probe digest" ], [ "novell-251689", "Resource definition change + target_role=stopped" ], diff --git a/cts/scheduler/params-3.dot b/cts/scheduler/params-3.dot new file mode 100644 index 0000000..d681ee5 --- /dev/null +++ b/cts/scheduler/params-3.dot @@ -0,0 +1,28 @@ + digraph "g" { +"Cancel rsc_c001n02_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black"] +"DcIPaddr_monitor_0 c001n01" -> "DcIPaddr_start_0 c001n02" [ style = bold] +"DcIPaddr_monitor_0 c001n01" [ style=bold color="green" fontcolor="black"] +"DcIPaddr_monitor_0 c001n03" -> "DcIPaddr_start_0 c001n02" [ style = bold] +"DcIPaddr_monitor_0 c001n03" [ style=bold color="green" fontcolor="black"] +"DcIPaddr_monitor_0 c001n08" -> "DcIPaddr_start_0 c001n02" [ style = bold] +"DcIPaddr_monitor_0 c001n08" [ style=bold color="green" fontcolor="black"] +"DcIPaddr_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black"] +"DcIPaddr_start_0 c001n02" -> "DcIPaddr_monitor_5000 c001n02" [ style = bold] +"DcIPaddr_start_0 c001n02" [ style=bold color="green" fontcolor="black"] +"DcIPaddr_stop_0 c001n02" -> "DcIPaddr_start_0 c001n02" [ style = bold] +"DcIPaddr_stop_0 c001n02" [ style=bold color="green" fontcolor="black"] +"rsc_c001n01_monitor_0 c001n02" [ style=bold color="green" fontcolor="black"] +"rsc_c001n01_monitor_0 c001n03" [ style=bold color="green" fontcolor="black"] +"rsc_c001n01_monitor_0 c001n08" [ style=bold color="green" fontcolor="black"] +"rsc_c001n02_monitor_0 c001n01" [ style=bold color="green" fontcolor="black"] +"rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black"] +"rsc_c001n02_monitor_0 c001n08" [ style=bold color="green" fontcolor="black"] +"rsc_c001n02_monitor_6000 c001n02" [ style=bold color="green" fontcolor="black"] +"rsc_c001n03_monitor_0 c001n01" [ style=bold color="green" fontcolor="black"] +"rsc_c001n03_monitor_0 c001n02" [ style=bold color="green" fontcolor="black"] +"rsc_c001n03_monitor_0 c001n08" [ style=bold color="green" fontcolor="black"] +"rsc_c001n08_monitor_0 c001n01" [ style=bold color="green" fontcolor="black"] +"rsc_c001n08_monitor_0 c001n02" [ style=bold color="green" fontcolor="black"] +"rsc_c001n08_monitor_0 c001n03" [ style=bold color="green" fontcolor="black"] +"rsc_c001n08_monitor_5000 c001n08" [ style=bold color="green" fontcolor="black"] +} diff --git a/cts/scheduler/params-3.exp b/cts/scheduler/params-3.exp new file mode 100644 index 0000000..5cccdec --- /dev/null +++ b/cts/scheduler/params-3.exp @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/params-3.scores b/cts/scheduler/params-3.scores new file mode 100644 index 0000000..00417ea --- /dev/null +++ b/cts/scheduler/params-3.scores @@ -0,0 +1,21 @@ +Allocation scores: +pcmk__native_allocate: DcIPaddr allocation score on c001n01: -INFINITY +pcmk__native_allocate: DcIPaddr allocation score on c001n02: 0 +pcmk__native_allocate: DcIPaddr allocation score on c001n03: -INFINITY +pcmk__native_allocate: DcIPaddr allocation score on c001n08: -INFINITY +pcmk__native_allocate: rsc_c001n01 allocation score on c001n01: 100 +pcmk__native_allocate: rsc_c001n01 allocation score on c001n02: 0 +pcmk__native_allocate: rsc_c001n01 allocation score on c001n03: 0 +pcmk__native_allocate: rsc_c001n01 allocation score on c001n08: 0 +pcmk__native_allocate: rsc_c001n02 allocation score on c001n01: 0 +pcmk__native_allocate: rsc_c001n02 allocation score on c001n02: 100 +pcmk__native_allocate: rsc_c001n02 allocation score on c001n03: 0 +pcmk__native_allocate: rsc_c001n02 allocation score on c001n08: 0 +pcmk__native_allocate: rsc_c001n03 allocation score on c001n01: 0 +pcmk__native_allocate: rsc_c001n03 allocation score on c001n02: 0 +pcmk__native_allocate: rsc_c001n03 allocation score on c001n03: 100 +pcmk__native_allocate: rsc_c001n03 allocation score on c001n08: 0 +pcmk__native_allocate: rsc_c001n08 allocation score on c001n01: 0 +pcmk__native_allocate: rsc_c001n08 allocation score on c001n02: 0 +pcmk__native_allocate: rsc_c001n08 allocation score on c001n03: 0 +pcmk__native_allocate: rsc_c001n08 allocation score on c001n08: 100 diff --git a/cts/scheduler/params-3.summary b/cts/scheduler/params-3.summary new file mode 100644 index 0000000..257f8ba --- /dev/null +++ b/cts/scheduler/params-3.summary @@ -0,0 +1,45 @@ + +Current cluster status: +Online: [ c001n01 c001n02 c001n03 c001n08 ] + + DcIPaddr (ocf::heartbeat:IPaddr): Starting c001n02 + rsc_c001n08 (ocf::heartbeat:IPaddr): Started c001n08 + rsc_c001n02 (ocf::heartbeat:IPaddr): Started c001n02 + rsc_c001n03 (ocf::heartbeat:IPaddr): Started c001n03 + rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 + +Transition Summary: + * Restart DcIPaddr ( c001n02 ) + +Executing cluster transition: + * Resource action: DcIPaddr monitor on c001n08 + * Resource action: DcIPaddr monitor on c001n03 + * Resource action: DcIPaddr monitor on c001n01 + * Resource action: DcIPaddr stop on c001n02 + * Resource action: rsc_c001n08 monitor on c001n03 + * Resource action: rsc_c001n08 monitor on c001n02 + * Resource action: rsc_c001n08 monitor on c001n01 + * Resource action: rsc_c001n08 monitor=5000 on c001n08 + * Resource action: rsc_c001n02 monitor=6000 on c001n02 + * Resource action: rsc_c001n02 monitor on c001n08 + * Resource action: rsc_c001n02 monitor on c001n03 + * Resource action: rsc_c001n02 monitor on c001n01 + * Resource action: rsc_c001n02 cancel=5000 on c001n02 + * Resource action: rsc_c001n03 monitor on c001n08 + * Resource action: rsc_c001n03 monitor on c001n02 + * Resource action: rsc_c001n03 monitor on c001n01 + * Resource action: rsc_c001n01 monitor on c001n08 + * Resource action: rsc_c001n01 monitor on c001n03 + * Resource action: rsc_c001n01 monitor on c001n02 + * Resource action: DcIPaddr start on c001n02 + * Resource action: DcIPaddr monitor=5000 on c001n02 + +Revised cluster status: +Online: [ c001n01 c001n02 c001n03 c001n08 ] + + DcIPaddr (ocf::heartbeat:IPaddr): Started c001n02 + rsc_c001n08 (ocf::heartbeat:IPaddr): Started c001n08 + rsc_c001n02 (ocf::heartbeat:IPaddr): Started c001n02 + rsc_c001n03 (ocf::heartbeat:IPaddr): Started c001n03 + rsc_c001n01 (ocf::heartbeat:IPaddr): Started c001n01 + diff --git a/cts/scheduler/params-3.xml b/cts/scheduler/params-3.xml new file mode 100644 index 0000000..ee6e157 --- /dev/null +++ b/cts/scheduler/params-3.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 1.8.3.1 From ff6aebecf8b40b882bddbd0d78e3f8702f97147e Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Mon, 13 Apr 2020 12:22:35 -0500 Subject: [PATCH 06/20] Doc: libpacemaker: improve comments when logging actions ... with slight refactoring for consistency --- lib/pacemaker/pcmk_sched_native.c | 41 ++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index ff2fb92..f14e690 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -2348,8 +2348,6 @@ native_expand(pe_resource_t * rsc, pe_working_set_t * data_set) } \ } while(0) -static int rsc_width = 5; -static int detail_width = 5; static void LogAction(const char *change, pe_resource_t *rsc, pe_node_t *origin, pe_node_t *destination, pe_action_t *action, pe_action_t *source, gboolean terminal) { @@ -2360,6 +2358,9 @@ LogAction(const char *change, pe_resource_t *rsc, pe_node_t *origin, pe_node_t * bool same_role = FALSE; bool need_role = FALSE; + static int rsc_width = 5; + static int detail_width = 5; + CRM_ASSERT(action); CRM_ASSERT(destination != NULL || origin != NULL); @@ -2384,36 +2385,40 @@ LogAction(const char *change, pe_resource_t *rsc, pe_node_t *origin, pe_node_t * same_role = TRUE; } - if(need_role && origin == NULL) { - /* Promoting from Stopped */ + if (need_role && (origin == NULL)) { + /* Starting and promoting a promotable clone instance */ details = crm_strdup_printf("%s -> %s %s", role2text(rsc->role), role2text(rsc->next_role), destination->details->uname); - } else if(need_role && destination == NULL) { - /* Demoting a Master or Stopping a Slave */ + } else if (origin == NULL) { + /* Starting a resource */ + details = crm_strdup_printf("%s", destination->details->uname); + + } else if (need_role && (destination == NULL)) { + /* Stopping a promotable clone instance */ details = crm_strdup_printf("%s %s", role2text(rsc->role), origin->details->uname); - } else if(origin == NULL || destination == NULL) { - /* Starting or stopping a resource */ - details = crm_strdup_printf("%s", origin?origin->details->uname:destination->details->uname); + } else if (destination == NULL) { + /* Stopping a resource */ + details = crm_strdup_printf("%s", origin->details->uname); - } else if(need_role && same_role && same_host) { - /* Recovering or restarting a promotable clone resource */ + } else if (need_role && same_role && same_host) { + /* Recovering, restarting or re-promoting a promotable clone instance */ details = crm_strdup_printf("%s %s", role2text(rsc->role), origin->details->uname); - } else if(same_role && same_host) { + } else if (same_role && same_host) { /* Recovering or Restarting a normal resource */ details = crm_strdup_printf("%s", origin->details->uname); - } else if(same_role && need_role) { - /* Moving a promotable clone resource */ + } else if (need_role && same_role) { + /* Moving a promotable clone instance */ details = crm_strdup_printf("%s -> %s %s", origin->details->uname, destination->details->uname, role2text(rsc->role)); - } else if(same_role) { + } else if (same_role) { /* Moving a normal resource */ details = crm_strdup_printf("%s -> %s", origin->details->uname, destination->details->uname); - } else if(same_host) { - /* Promoting or demoting a promotable clone resource */ + } else if (same_host) { + /* Promoting or demoting a promotable clone instance */ details = crm_strdup_printf("%s -> %s %s", role2text(rsc->role), role2text(rsc->next_role), origin->details->uname); } else { @@ -2560,7 +2565,7 @@ LogActions(pe_resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) pe_rsc_info(rsc, "Leave %s\t(%s %s)", rsc->id, role2text(rsc->role), next->details->uname); - } else if (start && is_set(start->flags, pe_action_runnable) == FALSE) { + } else if (is_not_set(start->flags, pe_action_runnable)) { LogAction("Stop", rsc, current, NULL, stop, (stop && stop->reason)? stop : start, terminal); STOP_SANITY_ASSERT(__LINE__); -- 1.8.3.1 From 98c3b649fa065b7e7a59029cc2f887bc462d170a Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Mon, 13 Apr 2020 12:23:22 -0500 Subject: [PATCH 07/20] Log: libpacemaker: check for re-promotes specifically If a promotable clone instance is being demoted and promoted on its current node, without also stopping and starting, it previously would be logged as "Leave" indicating unchanged, because the current and next role are the same. Now, check for this situation specifically, and log it as "Re-promote". Currently, the scheduler is not capable of generating this situation, but upcoming changes will. --- lib/pacemaker/pcmk_sched_native.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index f14e690..89952bf 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -2561,9 +2561,17 @@ LogActions(pe_resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) } else if (is_set(rsc->flags, pe_rsc_reload)) { LogAction("Reload", rsc, current, next, start, NULL, terminal); + } else if (start == NULL || is_set(start->flags, pe_action_optional)) { - pe_rsc_info(rsc, "Leave %s\t(%s %s)", rsc->id, role2text(rsc->role), - next->details->uname); + if ((demote != NULL) && (promote != NULL) + && is_not_set(demote->flags, pe_action_optional) + && is_not_set(promote->flags, pe_action_optional)) { + LogAction("Re-promote", rsc, current, next, promote, demote, + terminal); + } else { + pe_rsc_info(rsc, "Leave %s\t(%s %s)", rsc->id, + role2text(rsc->role), next->details->uname); + } } else if (is_not_set(start->flags, pe_action_runnable)) { LogAction("Stop", rsc, current, NULL, stop, -- 1.8.3.1 From fd55a6660574c0bca517fd519377340712fb443a Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Mon, 13 Apr 2020 12:51:03 -0500 Subject: [PATCH 08/20] Doc: libpacemaker: improve comments for resource state and action matrices Also, make them static, for linker efficiency. --- lib/pacemaker/pcmk_sched_native.c | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index 89952bf..b9bca80 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -41,27 +41,36 @@ gboolean PromoteRsc(pe_resource_t * rsc, pe_node_t * next, gboolean optional, gboolean RoleError(pe_resource_t * rsc, pe_node_t * next, gboolean optional, pe_working_set_t * data_set); gboolean NullOp(pe_resource_t * rsc, pe_node_t * next, gboolean optional, pe_working_set_t * data_set); -/* *INDENT-OFF* */ -enum rsc_role_e rsc_state_matrix[RSC_ROLE_MAX][RSC_ROLE_MAX] = { -/* Current State */ -/* Next State: Unknown Stopped Started Slave Master */ +/* This array says what the *next* role should be when transitioning from one + * role to another. For example going from Stopped to Master, the next role is + * RSC_ROLE_SLAVE, because the resource must be started before being promoted. + * The current state then becomes Started, which is fed into this array again, + * giving a next role of RSC_ROLE_MASTER. + */ +static enum rsc_role_e rsc_state_matrix[RSC_ROLE_MAX][RSC_ROLE_MAX] = { + /* Current state Next state*/ + /* Unknown Stopped Started Slave Master */ /* Unknown */ { RSC_ROLE_UNKNOWN, RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, }, /* Stopped */ { RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, RSC_ROLE_STARTED, RSC_ROLE_SLAVE, RSC_ROLE_SLAVE, }, /* Started */ { RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, RSC_ROLE_STARTED, RSC_ROLE_SLAVE, RSC_ROLE_MASTER, }, - /* Slave */ { RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, RSC_ROLE_SLAVE, RSC_ROLE_MASTER, }, - /* Master */ { RSC_ROLE_STOPPED, RSC_ROLE_SLAVE, RSC_ROLE_SLAVE, RSC_ROLE_SLAVE, RSC_ROLE_MASTER, }, + /* Slave */ { RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, RSC_ROLE_STOPPED, RSC_ROLE_SLAVE, RSC_ROLE_MASTER, }, + /* Master */ { RSC_ROLE_STOPPED, RSC_ROLE_SLAVE, RSC_ROLE_SLAVE, RSC_ROLE_SLAVE, RSC_ROLE_MASTER, }, }; -gboolean (*rsc_action_matrix[RSC_ROLE_MAX][RSC_ROLE_MAX])(pe_resource_t*,pe_node_t*,gboolean,pe_working_set_t*) = { -/* Current State */ -/* Next State: Unknown Stopped Started Slave Master */ - /* Unknown */ { RoleError, StopRsc, RoleError, RoleError, RoleError, }, - /* Stopped */ { RoleError, NullOp, StartRsc, StartRsc, RoleError, }, - /* Started */ { RoleError, StopRsc, NullOp, NullOp, PromoteRsc, }, - /* Slave */ { RoleError, StopRsc, StopRsc, NullOp, PromoteRsc, }, - /* Master */ { RoleError, DemoteRsc, DemoteRsc, DemoteRsc, NullOp, }, +typedef gboolean (*rsc_transition_fn)(pe_resource_t *rsc, pe_node_t *next, + gboolean optional, + pe_working_set_t *data_set); + +// This array picks the function needed to transition from one role to another +static rsc_transition_fn rsc_action_matrix[RSC_ROLE_MAX][RSC_ROLE_MAX] = { + /* Current state Next state */ + /* Unknown Stopped Started Slave Master */ + /* Unknown */ { RoleError, StopRsc, RoleError, RoleError, RoleError, }, + /* Stopped */ { RoleError, NullOp, StartRsc, StartRsc, RoleError, }, + /* Started */ { RoleError, StopRsc, NullOp, NullOp, PromoteRsc, }, + /* Slave */ { RoleError, StopRsc, StopRsc, NullOp, PromoteRsc, }, + /* Master */ { RoleError, DemoteRsc, DemoteRsc, DemoteRsc, NullOp , }, }; -/* *INDENT-ON* */ static gboolean native_choose_node(pe_resource_t * rsc, pe_node_t * prefer, pe_working_set_t * data_set) -- 1.8.3.1 From 2f1e2df1f5ec67591cddf14f9dda1c52919dd53a Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 26 May 2020 17:50:48 -0500 Subject: [PATCH 09/20] Feature: xml: add on-fail="demote" option to resources schema We don't need an XML schema version bump because it was already bumped since the last release, for the rsc_expression/op_expression feature. --- xml/resources-3.4.rng | 1 + 1 file changed, 1 insertion(+) diff --git a/xml/resources-3.4.rng b/xml/resources-3.4.rng index fbb4b65..887dc1c 100644 --- a/xml/resources-3.4.rng +++ b/xml/resources-3.4.rng @@ -388,6 +388,7 @@ ignore block + demote stop restart standby -- 1.8.3.1 From 874f75e0faad91c634860221d727e51e95d97f19 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Thu, 28 May 2020 08:29:37 -0500 Subject: [PATCH 10/20] Feature: scheduler: new on-fail="demote" recovery policy for promoted resources --- include/crm/pengine/pe_types.h | 1 + lib/pacemaker/pcmk_sched_native.c | 25 +++++++++++++++---- lib/pengine/common.c | 3 +++ lib/pengine/unpack.c | 51 ++++++++++++++++++++++++++++++++++++--- lib/pengine/utils.c | 35 +++++++++++++++++++++++---- 5 files changed, 102 insertions(+), 13 deletions(-) diff --git a/include/crm/pengine/pe_types.h b/include/crm/pengine/pe_types.h index ba88491..ed5eb12 100644 --- a/include/crm/pengine/pe_types.h +++ b/include/crm/pengine/pe_types.h @@ -246,6 +246,7 @@ struct pe_node_s { # define pe_rsc_allocating 0x00000200ULL # define pe_rsc_merging 0x00000400ULL +# define pe_rsc_stop 0x00001000ULL # define pe_rsc_reload 0x00002000ULL # define pe_rsc_allow_remote_remotes 0x00004000ULL diff --git a/lib/pacemaker/pcmk_sched_native.c b/lib/pacemaker/pcmk_sched_native.c index b9bca80..4e3bd7c 100644 --- a/lib/pacemaker/pcmk_sched_native.c +++ b/lib/pacemaker/pcmk_sched_native.c @@ -1205,6 +1205,7 @@ native_create_actions(pe_resource_t * rsc, pe_working_set_t * data_set) pe_node_t *chosen = NULL; pe_node_t *current = NULL; gboolean need_stop = FALSE; + bool need_promote = FALSE; gboolean is_moving = FALSE; gboolean allow_migrate = is_set(rsc->flags, pe_rsc_allow_migrate) ? TRUE : FALSE; @@ -1309,8 +1310,15 @@ native_create_actions(pe_resource_t * rsc, pe_working_set_t * data_set) need_stop = TRUE; } else if (is_set(rsc->flags, pe_rsc_failed)) { - pe_rsc_trace(rsc, "Recovering %s", rsc->id); - need_stop = TRUE; + if (is_set(rsc->flags, pe_rsc_stop)) { + need_stop = TRUE; + pe_rsc_trace(rsc, "Recovering %s", rsc->id); + } else { + pe_rsc_trace(rsc, "Recovering %s by demotion", rsc->id); + if (rsc->next_role == RSC_ROLE_MASTER) { + need_promote = TRUE; + } + } } else if (is_set(rsc->flags, pe_rsc_block)) { pe_rsc_trace(rsc, "Block %s", rsc->id); @@ -1344,10 +1352,16 @@ native_create_actions(pe_resource_t * rsc, pe_working_set_t * data_set) while (rsc->role <= rsc->next_role && role != rsc->role && is_not_set(rsc->flags, pe_rsc_block)) { + bool required = need_stop; + next_role = rsc_state_matrix[role][rsc->role]; + if ((next_role == RSC_ROLE_MASTER) && need_promote) { + required = true; + } pe_rsc_trace(rsc, "Up: Executing: %s->%s (%s)%s", role2text(role), role2text(next_role), - rsc->id, need_stop ? " required" : ""); - if (rsc_action_matrix[role][next_role] (rsc, chosen, !need_stop, data_set) == FALSE) { + rsc->id, (required? " required" : "")); + if (rsc_action_matrix[role][next_role](rsc, chosen, !required, + data_set) == FALSE) { break; } role = next_role; @@ -2631,7 +2645,8 @@ LogActions(pe_resource_t * rsc, pe_working_set_t * data_set, gboolean terminal) free(key); - } else if (stop && is_set(rsc->flags, pe_rsc_failed)) { + } else if (stop && is_set(rsc->flags, pe_rsc_failed) + && is_set(rsc->flags, pe_rsc_stop)) { /* 'stop' may be NULL if the failure was ignored */ LogAction("Recover", rsc, current, next, stop, start, terminal); STOP_SANITY_ASSERT(__LINE__); diff --git a/lib/pengine/common.c b/lib/pengine/common.c index ded6df8..f4f2106 100644 --- a/lib/pengine/common.c +++ b/lib/pengine/common.c @@ -326,6 +326,9 @@ fail2text(enum action_fail_response fail) case action_fail_ignore: result = "ignore"; break; + case action_fail_demote: + result = "demote"; + break; case action_fail_block: result = "block"; break; diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 6a350e5..a219805 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -108,6 +108,7 @@ pe_fence_node(pe_working_set_t * data_set, pe_node_t * node, */ node->details->remote_requires_reset = TRUE; set_bit(rsc->flags, pe_rsc_failed); + set_bit(rsc->flags, pe_rsc_stop); } } @@ -117,6 +118,7 @@ pe_fence_node(pe_working_set_t * data_set, pe_node_t * node, "and guest resource no longer exists", node->details->uname, reason); set_bit(node->details->remote_rsc->flags, pe_rsc_failed); + set_bit(node->details->remote_rsc->flags, pe_rsc_stop); } else if (pe__is_remote_node(node)) { pe_resource_t *rsc = node->details->remote_rsc; @@ -1914,6 +1916,7 @@ process_rsc_state(pe_resource_t * rsc, pe_node_t * node, */ if (pe__is_guest_node(node)) { set_bit(rsc->flags, pe_rsc_failed); + set_bit(rsc->flags, pe_rsc_stop); should_fence = TRUE; } else if (is_set(data_set->flags, pe_flag_stonith_enabled)) { @@ -1956,6 +1959,11 @@ process_rsc_state(pe_resource_t * rsc, pe_node_t * node, /* nothing to do */ break; + case action_fail_demote: + set_bit(rsc->flags, pe_rsc_failed); + demote_action(rsc, node, FALSE); + break; + case action_fail_fence: /* treat it as if it is still running * but also mark the node as unclean @@ -1992,12 +2000,14 @@ process_rsc_state(pe_resource_t * rsc, pe_node_t * node, case action_fail_recover: if (rsc->role != RSC_ROLE_STOPPED && rsc->role != RSC_ROLE_UNKNOWN) { set_bit(rsc->flags, pe_rsc_failed); + set_bit(rsc->flags, pe_rsc_stop); stop_action(rsc, node, FALSE); } break; case action_fail_restart_container: set_bit(rsc->flags, pe_rsc_failed); + set_bit(rsc->flags, pe_rsc_stop); if (rsc->container && pe_rsc_is_bundled(rsc)) { /* A bundle's remote connection can run on a different node than @@ -2016,6 +2026,7 @@ process_rsc_state(pe_resource_t * rsc, pe_node_t * node, case action_fail_reset_remote: set_bit(rsc->flags, pe_rsc_failed); + set_bit(rsc->flags, pe_rsc_stop); if (is_set(data_set->flags, pe_flag_stonith_enabled)) { tmpnode = NULL; if (rsc->is_remote_node) { @@ -2071,8 +2082,17 @@ process_rsc_state(pe_resource_t * rsc, pe_node_t * node, } native_add_running(rsc, node, data_set); - if (on_fail != action_fail_ignore) { - set_bit(rsc->flags, pe_rsc_failed); + switch (on_fail) { + case action_fail_ignore: + break; + case action_fail_demote: + case action_fail_block: + set_bit(rsc->flags, pe_rsc_failed); + break; + default: + set_bit(rsc->flags, pe_rsc_failed); + set_bit(rsc->flags, pe_rsc_stop); + break; } } else if (rsc->clone_name && strchr(rsc->clone_name, ':') != NULL) { @@ -2595,6 +2615,7 @@ unpack_migrate_to_success(pe_resource_t *rsc, pe_node_t *node, xmlNode *xml_op, } else { /* Consider it failed here - forces a restart, prevents migration */ set_bit(rsc->flags, pe_rsc_failed); + set_bit(rsc->flags, pe_rsc_stop); clear_bit(rsc->flags, pe_rsc_allow_migrate); } } @@ -2785,9 +2806,21 @@ static int cmp_on_fail(enum action_fail_response first, enum action_fail_response second) { switch (first) { + case action_fail_demote: + switch (second) { + case action_fail_ignore: + return 1; + case action_fail_demote: + return 0; + default: + return -1; + } + break; + case action_fail_reset_remote: switch (second) { case action_fail_ignore: + case action_fail_demote: case action_fail_recover: return 1; case action_fail_reset_remote: @@ -2800,6 +2833,7 @@ cmp_on_fail(enum action_fail_response first, enum action_fail_response second) case action_fail_restart_container: switch (second) { case action_fail_ignore: + case action_fail_demote: case action_fail_recover: case action_fail_reset_remote: return 1; @@ -2814,9 +2848,13 @@ cmp_on_fail(enum action_fail_response first, enum action_fail_response second) break; } switch (second) { + case action_fail_demote: + return (first == action_fail_ignore)? -1 : 1; + case action_fail_reset_remote: switch (first) { case action_fail_ignore: + case action_fail_demote: case action_fail_recover: return -1; default: @@ -2827,6 +2865,7 @@ cmp_on_fail(enum action_fail_response first, enum action_fail_response second) case action_fail_restart_container: switch (first) { case action_fail_ignore: + case action_fail_demote: case action_fail_recover: case action_fail_reset_remote: return -1; @@ -3426,7 +3465,11 @@ update_resource_state(pe_resource_t * rsc, pe_node_t * node, xmlNode * xml_op, c clear_past_failure = TRUE; } else if (safe_str_eq(task, CRMD_ACTION_DEMOTE)) { - /* Demote from Master does not clear an error */ + + if (*on_fail == action_fail_demote) { + // Demote clears an error only if on-fail=demote + clear_past_failure = TRUE; + } rsc->role = RSC_ROLE_SLAVE; } else if (safe_str_eq(task, CRMD_ACTION_MIGRATED)) { @@ -3454,6 +3497,7 @@ update_resource_state(pe_resource_t * rsc, pe_node_t * node, xmlNode * xml_op, c case action_fail_block: case action_fail_ignore: + case action_fail_demote: case action_fail_recover: case action_fail_restart_container: *on_fail = action_fail_ignore; @@ -3714,6 +3758,7 @@ unpack_rsc_op(pe_resource_t *rsc, pe_node_t *node, xmlNode *xml_op, * that, ensure the remote connection is considered failed. */ set_bit(node->details->remote_rsc->flags, pe_rsc_failed); + set_bit(node->details->remote_rsc->flags, pe_rsc_stop); } // fall through diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 3fb7e62..fee9efb 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -720,6 +720,7 @@ static bool valid_stop_on_fail(const char *value) { return safe_str_neq(value, "standby") + && safe_str_neq(value, "demote") && safe_str_neq(value, "stop"); } @@ -727,6 +728,11 @@ static const char * unpack_operation_on_fail(pe_action_t * action) { + const char *name = NULL; + const char *role = NULL; + const char *on_fail = NULL; + const char *interval_spec = NULL; + const char *enabled = NULL; const char *value = g_hash_table_lookup(action->meta, XML_OP_ATTR_ON_FAIL); if (safe_str_eq(action->task, CRMD_ACTION_STOP) @@ -736,14 +742,10 @@ unpack_operation_on_fail(pe_action_t * action) "action to default value because '%s' is not " "allowed for stop", action->rsc->id, value); return NULL; + } else if (safe_str_eq(action->task, CRMD_ACTION_DEMOTE) && !value) { /* demote on_fail defaults to master monitor value if present */ xmlNode *operation = NULL; - const char *name = NULL; - const char *role = NULL; - const char *on_fail = NULL; - const char *interval_spec = NULL; - const char *enabled = NULL; CRM_CHECK(action->rsc != NULL, return NULL); @@ -766,12 +768,31 @@ unpack_operation_on_fail(pe_action_t * action) continue; } else if (crm_parse_interval_spec(interval_spec) == 0) { continue; + } else if (safe_str_eq(on_fail, "demote")) { + continue; } value = on_fail; } } else if (safe_str_eq(action->task, CRM_OP_LRM_DELETE)) { value = "ignore"; + + } else if (safe_str_eq(value, "demote")) { + name = crm_element_value(action->op_entry, "name"); + role = crm_element_value(action->op_entry, "role"); + on_fail = crm_element_value(action->op_entry, XML_OP_ATTR_ON_FAIL); + interval_spec = crm_element_value(action->op_entry, + XML_LRM_ATTR_INTERVAL); + + if (safe_str_neq(name, CRMD_ACTION_PROMOTE) + && (safe_str_neq(name, CRMD_ACTION_STATUS) + || safe_str_neq(role, "Master") + || (crm_parse_interval_spec(interval_spec) == 0))) { + pcmk__config_err("Resetting '" XML_OP_ATTR_ON_FAIL "' for %s %s " + "action to default value because 'demote' is not " + "allowed for it", action->rsc->id, name); + return NULL; + } } return value; @@ -1170,6 +1191,10 @@ unpack_operation(pe_action_t * action, xmlNode * xml_obj, pe_resource_t * contai value = NULL; } + } else if (safe_str_eq(value, "demote")) { + action->on_fail = action_fail_demote; + value = "demote instance"; + } else { pe_err("Resource %s: Unknown failure type (%s)", action->rsc->id, value); value = NULL; -- 1.8.3.1 From d29433ea57796de000f4fea8c60f8da1d903108b Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 16 Jun 2020 16:03:14 -0500 Subject: [PATCH 11/20] Test: scheduler: add regression tests for on-fail="demote" --- cts/cts-scheduler.in | 4 + cts/scheduler/on_fail_demote1.dot | 64 ++ cts/scheduler/on_fail_demote1.exp | 360 +++++++ cts/scheduler/on_fail_demote1.scores | 470 +++++++++ cts/scheduler/on_fail_demote1.summary | 86 ++ cts/scheduler/on_fail_demote1.xml | 616 +++++++++++ cts/scheduler/on_fail_demote2.dot | 22 + cts/scheduler/on_fail_demote2.exp | 125 +++ cts/scheduler/on_fail_demote2.scores | 127 +++ cts/scheduler/on_fail_demote2.summary | 41 + cts/scheduler/on_fail_demote2.xml | 221 ++++ cts/scheduler/on_fail_demote3.dot | 12 + cts/scheduler/on_fail_demote3.exp | 63 ++ cts/scheduler/on_fail_demote3.scores | 127 +++ cts/scheduler/on_fail_demote3.summary | 34 + cts/scheduler/on_fail_demote3.xml | 221 ++++ cts/scheduler/on_fail_demote4.dot | 383 +++++++ cts/scheduler/on_fail_demote4.exp | 1818 +++++++++++++++++++++++++++++++++ cts/scheduler/on_fail_demote4.scores | 470 +++++++++ cts/scheduler/on_fail_demote4.summary | 187 ++++ cts/scheduler/on_fail_demote4.xml | 625 ++++++++++++ 21 files changed, 6076 insertions(+) create mode 100644 cts/scheduler/on_fail_demote1.dot create mode 100644 cts/scheduler/on_fail_demote1.exp create mode 100644 cts/scheduler/on_fail_demote1.scores create mode 100644 cts/scheduler/on_fail_demote1.summary create mode 100644 cts/scheduler/on_fail_demote1.xml create mode 100644 cts/scheduler/on_fail_demote2.dot create mode 100644 cts/scheduler/on_fail_demote2.exp create mode 100644 cts/scheduler/on_fail_demote2.scores create mode 100644 cts/scheduler/on_fail_demote2.summary create mode 100644 cts/scheduler/on_fail_demote2.xml create mode 100644 cts/scheduler/on_fail_demote3.dot create mode 100644 cts/scheduler/on_fail_demote3.exp create mode 100644 cts/scheduler/on_fail_demote3.scores create mode 100644 cts/scheduler/on_fail_demote3.summary create mode 100644 cts/scheduler/on_fail_demote3.xml create mode 100644 cts/scheduler/on_fail_demote4.dot create mode 100644 cts/scheduler/on_fail_demote4.exp create mode 100644 cts/scheduler/on_fail_demote4.scores create mode 100644 cts/scheduler/on_fail_demote4.summary create mode 100644 cts/scheduler/on_fail_demote4.xml diff --git a/cts/cts-scheduler.in b/cts/cts-scheduler.in index ae8247e..0e68e73 100644 --- a/cts/cts-scheduler.in +++ b/cts/cts-scheduler.in @@ -478,6 +478,10 @@ TESTS = [ [ "master-score-startup", "Use permanent master scores without LRM history" ], [ "failed-demote-recovery", "Recover resource in slave role after demote fails" ], [ "failed-demote-recovery-master", "Recover resource in master role after demote fails" ], + [ "on_fail_demote1", "Recovery with on-fail=\"demote\" on healthy cluster, remote, guest, and bundle nodes" ], + [ "on_fail_demote2", "Recovery with on-fail=\"demote\" with promotion on different node" ], + [ "on_fail_demote3", "Recovery with on-fail=\"demote\" with no promotion" ], + [ "on_fail_demote4", "Recovery with on-fail=\"demote\" on failed cluster, remote, guest, and bundle nodes" ], ], [ [ "history-1", "Correctly parse stateful-1 resource state" ], diff --git a/cts/scheduler/on_fail_demote1.dot b/cts/scheduler/on_fail_demote1.dot new file mode 100644 index 0000000..d11c1c1 --- /dev/null +++ b/cts/scheduler/on_fail_demote1.dot @@ -0,0 +1,64 @@ + digraph "g" { +"bundled_demote_0 stateful-bundle-0" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"bundled_demote_0 stateful-bundle-0" -> "stateful-bundle-master_demoted_0" [ style = bold] +"bundled_demote_0 stateful-bundle-0" [ style=bold color="green" fontcolor="black"] +"bundled_promote_0 stateful-bundle-0" -> "stateful-bundle-master_promoted_0" [ style = bold] +"bundled_promote_0 stateful-bundle-0" [ style=bold color="green" fontcolor="black"] +"lxc-ms-master_demote_0" -> "lxc-ms-master_demoted_0" [ style = bold] +"lxc-ms-master_demote_0" -> "lxc-ms_demote_0 lxc2" [ style = bold] +"lxc-ms-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_demoted_0" -> "lxc-ms-master_promote_0" [ style = bold] +"lxc-ms-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_promote_0" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"lxc-ms-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms_demote_0 lxc2" -> "lxc-ms-master_demoted_0" [ style = bold] +"lxc-ms_demote_0 lxc2" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"lxc-ms_demote_0 lxc2" [ style=bold color="green" fontcolor="black"] +"lxc-ms_promote_0 lxc2" -> "lxc-ms-master_promoted_0" [ style = bold] +"lxc-ms_promote_0 lxc2" [ style=bold color="green" fontcolor="black"] +"rsc1-clone_demote_0" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1-clone_demote_0" -> "rsc1_demote_0 rhel7-4" [ style = bold] +"rsc1-clone_demote_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_demoted_0" -> "rsc1-clone_promote_0" [ style = bold] +"rsc1-clone_demoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_promote_0" -> "rsc1_promote_0 rhel7-4" [ style = bold] +"rsc1-clone_promote_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_promoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc1_demote_0 rhel7-4" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1_demote_0 rhel7-4" -> "rsc1_promote_0 rhel7-4" [ style = bold] +"rsc1_demote_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc1_promote_0 rhel7-4" -> "rsc1-clone_promoted_0" [ style = bold] +"rsc1_promote_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc2-master_demote_0" -> "rsc2-master_demoted_0" [ style = bold] +"rsc2-master_demote_0" -> "rsc2_demote_0 remote-rhel7-2" [ style = bold] +"rsc2-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_demoted_0" -> "rsc2-master_promote_0" [ style = bold] +"rsc2-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_promote_0" -> "rsc2_promote_0 remote-rhel7-2" [ style = bold] +"rsc2-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc2_demote_0 remote-rhel7-2" -> "rsc2-master_demoted_0" [ style = bold] +"rsc2_demote_0 remote-rhel7-2" -> "rsc2_promote_0 remote-rhel7-2" [ style = bold] +"rsc2_demote_0 remote-rhel7-2" [ style=bold color="green" fontcolor="black"] +"rsc2_promote_0 remote-rhel7-2" -> "rsc2-master_promoted_0" [ style = bold] +"rsc2_promote_0 remote-rhel7-2" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-master_demote_0" -> "bundled_demote_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-master_demote_0" -> "stateful-bundle-master_demoted_0" [ style = bold] +"stateful-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_demoted_0" -> "stateful-bundle-master_promote_0" [ style = bold] +"stateful-bundle-master_demoted_0" -> "stateful-bundle_demoted_0" [ style = bold] +"stateful-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_promote_0" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_promoted_0" -> "stateful-bundle_promoted_0" [ style = bold] +"stateful-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_demote_0" -> "stateful-bundle-master_demote_0" [ style = bold] +"stateful-bundle_demote_0" -> "stateful-bundle_demoted_0" [ style = bold] +"stateful-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_demoted_0" -> "stateful-bundle_promote_0" [ style = bold] +"stateful-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_promote_0" -> "stateful-bundle-master_promote_0" [ style = bold] +"stateful-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] +} diff --git a/cts/scheduler/on_fail_demote1.exp b/cts/scheduler/on_fail_demote1.exp new file mode 100644 index 0000000..ebe1dd5 --- /dev/null +++ b/cts/scheduler/on_fail_demote1.exp @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/on_fail_demote1.scores b/cts/scheduler/on_fail_demote1.scores new file mode 100644 index 0000000..7df582f --- /dev/null +++ b/cts/scheduler/on_fail_demote1.scores @@ -0,0 +1,470 @@ +Allocation scores: +Using the original execution date of: 2020-06-16 19:23:21Z +bundled:0 promotion score on stateful-bundle-0: 10 +bundled:1 promotion score on stateful-bundle-1: 5 +bundled:2 promotion score on stateful-bundle-2: 5 +lxc-ms:0 promotion score on lxc2: INFINITY +lxc-ms:1 promotion score on lxc1: INFINITY +pcmk__bundle_allocate: bundled:0 allocation score on stateful-bundle-0: 501 +pcmk__bundle_allocate: bundled:1 allocation score on stateful-bundle-1: 501 +pcmk__bundle_allocate: bundled:2 allocation score on stateful-bundle-2: 501 +pcmk__bundle_allocate: stateful-bundle allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-0 allocation score on lxc1: -INFINITY +pcmk__bundle_allocate: stateful-bundle-0 allocation score on lxc2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-0 allocation score on remote-rhel7-2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-0 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-0 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-1 allocation score on lxc1: -INFINITY +pcmk__bundle_allocate: stateful-bundle-1 allocation score on lxc2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-1 allocation score on remote-rhel7-2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-1 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-1 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-2 allocation score on lxc1: -INFINITY +pcmk__bundle_allocate: stateful-bundle-2 allocation score on lxc2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-2 allocation score on remote-rhel7-2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-2 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-2 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-2 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-2 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on stateful-bundle-0: -INFINITY +pcmk__bundle_allocate: stateful-bundle-master allocation score on stateful-bundle-1: -INFINITY +pcmk__bundle_allocate: stateful-bundle-master allocation score on stateful-bundle-2: -INFINITY +pcmk__clone_allocate: bundled:0 allocation score on stateful-bundle-0: INFINITY +pcmk__clone_allocate: bundled:1 allocation score on stateful-bundle-1: INFINITY +pcmk__clone_allocate: bundled:2 allocation score on stateful-bundle-2: INFINITY +pcmk__clone_allocate: lxc-ms-master allocation score on lxc1: INFINITY +pcmk__clone_allocate: lxc-ms-master allocation score on lxc2: INFINITY +pcmk__clone_allocate: lxc-ms-master allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: lxc-ms-master allocation score on rhel7-1: 0 +pcmk__clone_allocate: lxc-ms-master allocation score on rhel7-3: 0 +pcmk__clone_allocate: lxc-ms-master allocation score on rhel7-4: 0 +pcmk__clone_allocate: lxc-ms-master allocation score on rhel7-5: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on lxc1: INFINITY +pcmk__clone_allocate: lxc-ms:0 allocation score on lxc2: INFINITY +pcmk__clone_allocate: lxc-ms:0 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on rhel7-4: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on lxc1: INFINITY +pcmk__clone_allocate: lxc-ms:1 allocation score on lxc2: INFINITY +pcmk__clone_allocate: lxc-ms:1 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on rhel7-3: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1-clone allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1-clone allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1-clone allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:0 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:0 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:0 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-4: 11 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:1 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:1 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:1 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-3: 6 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:2 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:2 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:2 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-5: 6 +pcmk__clone_allocate: rsc1:3 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:3 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:3 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-1: 6 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:4 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:4 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:4 allocation score on remote-rhel7-2: 6 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:5 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:5 allocation score on lxc2: 6 +pcmk__clone_allocate: rsc1:5 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:5 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:5 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:5 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:5 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:6 allocation score on lxc1: 6 +pcmk__clone_allocate: rsc1:6 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:6 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:6 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:6 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:6 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:6 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2-master allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2-master allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2-master allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:0 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:0 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:0 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-4: 11 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:1 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:1 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:1 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-3: 6 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:2 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:2 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:2 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-5: 6 +pcmk__clone_allocate: rsc2:3 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:3 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:3 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-1: 6 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:4 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:4 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:4 allocation score on remote-rhel7-2: 11 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:5 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:5 allocation score on lxc2: 6 +pcmk__clone_allocate: rsc2:5 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:5 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:5 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:5 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:5 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:6 allocation score on lxc1: 6 +pcmk__clone_allocate: rsc2:6 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:6 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:6 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:6 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:6 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:6 allocation score on rhel7-5: 0 +pcmk__clone_allocate: stateful-bundle-master allocation score on lxc1: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on lxc2: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on remote-rhel7-2: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on rhel7-1: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on rhel7-3: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on stateful-bundle-0: 0 +pcmk__clone_allocate: stateful-bundle-master allocation score on stateful-bundle-1: 0 +pcmk__clone_allocate: stateful-bundle-master allocation score on stateful-bundle-2: 0 +pcmk__native_allocate: Fencing allocation score on lxc1: -INFINITY +pcmk__native_allocate: Fencing allocation score on lxc2: -INFINITY +pcmk__native_allocate: Fencing allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: Fencing allocation score on rhel7-1: 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: 0 +pcmk__native_allocate: bundled:0 allocation score on stateful-bundle-0: INFINITY +pcmk__native_allocate: bundled:1 allocation score on stateful-bundle-1: INFINITY +pcmk__native_allocate: bundled:2 allocation score on stateful-bundle-2: INFINITY +pcmk__native_allocate: container1 allocation score on lxc1: -INFINITY +pcmk__native_allocate: container1 allocation score on lxc2: -INFINITY +pcmk__native_allocate: container1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: container1 allocation score on rhel7-1: 0 +pcmk__native_allocate: container1 allocation score on rhel7-3: INFINITY +pcmk__native_allocate: container1 allocation score on rhel7-4: 0 +pcmk__native_allocate: container1 allocation score on rhel7-5: 0 +pcmk__native_allocate: container2 allocation score on lxc1: -INFINITY +pcmk__native_allocate: container2 allocation score on lxc2: -INFINITY +pcmk__native_allocate: container2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: container2 allocation score on rhel7-1: 0 +pcmk__native_allocate: container2 allocation score on rhel7-3: INFINITY +pcmk__native_allocate: container2 allocation score on rhel7-4: 0 +pcmk__native_allocate: container2 allocation score on rhel7-5: 0 +pcmk__native_allocate: lxc-ms:0 allocation score on lxc1: -INFINITY +pcmk__native_allocate: lxc-ms:0 allocation score on lxc2: INFINITY +pcmk__native_allocate: lxc-ms:0 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: lxc-ms:0 allocation score on rhel7-1: 0 +pcmk__native_allocate: lxc-ms:0 allocation score on rhel7-3: 0 +pcmk__native_allocate: lxc-ms:0 allocation score on rhel7-4: 0 +pcmk__native_allocate: lxc-ms:0 allocation score on rhel7-5: 0 +pcmk__native_allocate: lxc-ms:1 allocation score on lxc1: INFINITY +pcmk__native_allocate: lxc-ms:1 allocation score on lxc2: INFINITY +pcmk__native_allocate: lxc-ms:1 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: lxc-ms:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: lxc-ms:1 allocation score on rhel7-3: 0 +pcmk__native_allocate: lxc-ms:1 allocation score on rhel7-4: 0 +pcmk__native_allocate: lxc-ms:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: lxc1 allocation score on lxc1: -INFINITY +pcmk__native_allocate: lxc1 allocation score on lxc2: -INFINITY +pcmk__native_allocate: lxc1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: lxc1 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: lxc1 allocation score on rhel7-3: 0 +pcmk__native_allocate: lxc1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: lxc1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: lxc2 allocation score on lxc1: -INFINITY +pcmk__native_allocate: lxc2 allocation score on lxc2: -INFINITY +pcmk__native_allocate: lxc2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: lxc2 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: lxc2 allocation score on rhel7-3: 0 +pcmk__native_allocate: lxc2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: lxc2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: remote-rhel7-2 allocation score on lxc1: -INFINITY +pcmk__native_allocate: remote-rhel7-2 allocation score on lxc2: -INFINITY +pcmk__native_allocate: remote-rhel7-2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: remote-rhel7-2 allocation score on rhel7-1: 0 +pcmk__native_allocate: remote-rhel7-2 allocation score on rhel7-3: 0 +pcmk__native_allocate: remote-rhel7-2 allocation score on rhel7-4: 0 +pcmk__native_allocate: remote-rhel7-2 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc1:0 allocation score on lxc1: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on lxc2: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-4: 11 +pcmk__native_allocate: rsc1:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on lxc1: 0 +pcmk__native_allocate: rsc1:1 allocation score on lxc2: 0 +pcmk__native_allocate: rsc1:1 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-3: 6 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc1:2 allocation score on lxc1: 0 +pcmk__native_allocate: rsc1:2 allocation score on lxc2: 0 +pcmk__native_allocate: rsc1:2 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-5: 6 +pcmk__native_allocate: rsc1:3 allocation score on lxc1: 0 +pcmk__native_allocate: rsc1:3 allocation score on lxc2: 0 +pcmk__native_allocate: rsc1:3 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-1: 6 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on lxc1: 0 +pcmk__native_allocate: rsc1:4 allocation score on lxc2: 0 +pcmk__native_allocate: rsc1:4 allocation score on remote-rhel7-2: 6 +pcmk__native_allocate: rsc1:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on lxc1: 0 +pcmk__native_allocate: rsc1:5 allocation score on lxc2: 6 +pcmk__native_allocate: rsc1:5 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:5 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on lxc1: 6 +pcmk__native_allocate: rsc1:6 allocation score on lxc2: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:6 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on lxc1: 0 +pcmk__native_allocate: rsc2:0 allocation score on lxc2: 0 +pcmk__native_allocate: rsc2:0 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-4: 11 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc2:1 allocation score on lxc1: 0 +pcmk__native_allocate: rsc2:1 allocation score on lxc2: 0 +pcmk__native_allocate: rsc2:1 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-3: 6 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc2:2 allocation score on lxc1: 0 +pcmk__native_allocate: rsc2:2 allocation score on lxc2: 0 +pcmk__native_allocate: rsc2:2 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-5: 6 +pcmk__native_allocate: rsc2:3 allocation score on lxc1: 0 +pcmk__native_allocate: rsc2:3 allocation score on lxc2: 0 +pcmk__native_allocate: rsc2:3 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-1: 6 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on lxc1: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on lxc2: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on remote-rhel7-2: 11 +pcmk__native_allocate: rsc2:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on lxc1: 0 +pcmk__native_allocate: rsc2:5 allocation score on lxc2: 6 +pcmk__native_allocate: rsc2:5 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc2:5 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on lxc1: 6 +pcmk__native_allocate: rsc2:6 allocation score on lxc2: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on remote-rhel7-2: 0 +pcmk__native_allocate: rsc2:6 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: stateful-bundle-0 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-0 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-0 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-0 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-0 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-0 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-0 allocation score on rhel7-5: 10000 +pcmk__native_allocate: stateful-bundle-1 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-1 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-1 allocation score on rhel7-1: 10000 +pcmk__native_allocate: stateful-bundle-1 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-1 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-1 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-2 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-2 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-2 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-2 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-2 allocation score on rhel7-4: 10000 +pcmk__native_allocate: stateful-bundle-2 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on lxc1: -10000 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on lxc2: -10000 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on remote-rhel7-2: -10000 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on lxc1: -10000 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on lxc2: -10000 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on remote-rhel7-2: -10000 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on lxc1: -10000 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on lxc2: -10000 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on remote-rhel7-2: -10000 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-5: -INFINITY +rsc1:0 promotion score on rhel7-4: 10 +rsc1:1 promotion score on rhel7-3: 5 +rsc1:2 promotion score on rhel7-5: 5 +rsc1:3 promotion score on rhel7-1: 5 +rsc1:4 promotion score on remote-rhel7-2: 5 +rsc1:5 promotion score on lxc2: 5 +rsc1:6 promotion score on lxc1: 5 +rsc2:0 promotion score on rhel7-4: 10 +rsc2:1 promotion score on rhel7-3: 5 +rsc2:2 promotion score on rhel7-5: 5 +rsc2:3 promotion score on rhel7-1: 5 +rsc2:4 promotion score on remote-rhel7-2: 110 +rsc2:5 promotion score on lxc2: 5 +rsc2:6 promotion score on lxc1: 5 diff --git a/cts/scheduler/on_fail_demote1.summary b/cts/scheduler/on_fail_demote1.summary new file mode 100644 index 0000000..b173582 --- /dev/null +++ b/cts/scheduler/on_fail_demote1.summary @@ -0,0 +1,86 @@ +Using the original execution date of: 2020-06-16 19:23:21Z + +Current cluster status: +Online: [ rhel7-1 rhel7-3 rhel7-4 rhel7-5 ] +RemoteOnline: [ remote-rhel7-2 ] +GuestOnline: [ lxc1:container1 lxc2:container2 stateful-bundle-0:stateful-bundle-docker-0 stateful-bundle-1:stateful-bundle-docker-1 stateful-bundle-2:stateful-bundle-docker-2 ] + + Fencing (stonith:fence_xvm): Started rhel7-4 + Clone Set: rsc1-clone [rsc1] (promotable) + rsc1 (ocf::pacemaker:Stateful): FAILED Master rhel7-4 + Slaves: [ lxc1 lxc2 remote-rhel7-2 rhel7-1 rhel7-3 rhel7-5 ] + Clone Set: rsc2-master [rsc2] (promotable) + rsc2 (ocf::pacemaker:Stateful): FAILED Master remote-rhel7-2 + Slaves: [ lxc1 lxc2 rhel7-1 rhel7-3 rhel7-4 rhel7-5 ] + remote-rhel7-2 (ocf::pacemaker:remote): Started rhel7-1 + container1 (ocf::heartbeat:VirtualDomain): Started rhel7-3 + container2 (ocf::heartbeat:VirtualDomain): Started rhel7-3 + Clone Set: lxc-ms-master [lxc-ms] (promotable) + lxc-ms (ocf::pacemaker:Stateful): FAILED Master lxc2 + Slaves: [ lxc1 ] + Stopped: [ remote-rhel7-2 rhel7-1 rhel7-3 rhel7-4 rhel7-5 ] + Container bundle set: stateful-bundle [pcmktest:http] + stateful-bundle-0 (192.168.122.131) (ocf::pacemaker:Stateful): FAILED Master rhel7-5 + stateful-bundle-1 (192.168.122.132) (ocf::pacemaker:Stateful): Slave rhel7-1 + stateful-bundle-2 (192.168.122.133) (ocf::pacemaker:Stateful): Slave rhel7-4 + +Transition Summary: + * Re-promote rsc1:0 ( Master rhel7-4 ) + * Re-promote rsc2:4 ( Master remote-rhel7-2 ) + * Re-promote lxc-ms:0 ( Master lxc2 ) + * Re-promote bundled:0 ( Master stateful-bundle-0 ) + +Executing cluster transition: + * Pseudo action: rsc1-clone_demote_0 + * Pseudo action: rsc2-master_demote_0 + * Pseudo action: lxc-ms-master_demote_0 + * Pseudo action: stateful-bundle_demote_0 + * Resource action: rsc1 demote on rhel7-4 + * Pseudo action: rsc1-clone_demoted_0 + * Pseudo action: rsc1-clone_promote_0 + * Resource action: rsc2 demote on remote-rhel7-2 + * Pseudo action: rsc2-master_demoted_0 + * Pseudo action: rsc2-master_promote_0 + * Resource action: lxc-ms demote on lxc2 + * Pseudo action: lxc-ms-master_demoted_0 + * Pseudo action: lxc-ms-master_promote_0 + * Pseudo action: stateful-bundle-master_demote_0 + * Resource action: rsc1 promote on rhel7-4 + * Pseudo action: rsc1-clone_promoted_0 + * Resource action: rsc2 promote on remote-rhel7-2 + * Pseudo action: rsc2-master_promoted_0 + * Resource action: lxc-ms promote on lxc2 + * Pseudo action: lxc-ms-master_promoted_0 + * Resource action: bundled demote on stateful-bundle-0 + * Pseudo action: stateful-bundle-master_demoted_0 + * Pseudo action: stateful-bundle_demoted_0 + * Pseudo action: stateful-bundle_promote_0 + * Pseudo action: stateful-bundle-master_promote_0 + * Resource action: bundled promote on stateful-bundle-0 + * Pseudo action: stateful-bundle-master_promoted_0 + * Pseudo action: stateful-bundle_promoted_0 +Using the original execution date of: 2020-06-16 19:23:21Z + +Revised cluster status: +Online: [ rhel7-1 rhel7-3 rhel7-4 rhel7-5 ] +RemoteOnline: [ remote-rhel7-2 ] +GuestOnline: [ lxc1:container1 lxc2:container2 stateful-bundle-0:stateful-bundle-docker-0 stateful-bundle-1:stateful-bundle-docker-1 stateful-bundle-2:stateful-bundle-docker-2 ] + + Fencing (stonith:fence_xvm): Started rhel7-4 + Clone Set: rsc1-clone [rsc1] (promotable) + Masters: [ rhel7-4 ] + Slaves: [ lxc1 lxc2 remote-rhel7-2 rhel7-1 rhel7-3 rhel7-5 ] + Clone Set: rsc2-master [rsc2] (promotable) + Masters: [ remote-rhel7-2 ] + Slaves: [ lxc1 lxc2 rhel7-1 rhel7-3 rhel7-4 rhel7-5 ] + remote-rhel7-2 (ocf::pacemaker:remote): Started rhel7-1 + container1 (ocf::heartbeat:VirtualDomain): Started rhel7-3 + container2 (ocf::heartbeat:VirtualDomain): Started rhel7-3 + Clone Set: lxc-ms-master [lxc-ms] (promotable) + Masters: [ lxc2 ] + Slaves: [ lxc1 ] + Container bundle set: stateful-bundle [pcmktest:http] + stateful-bundle-0 (192.168.122.131) (ocf::pacemaker:Stateful): Master rhel7-5 + stateful-bundle-1 (192.168.122.132) (ocf::pacemaker:Stateful): Slave rhel7-1 + stateful-bundle-2 (192.168.122.133) (ocf::pacemaker:Stateful): Slave rhel7-4 + diff --git a/cts/scheduler/on_fail_demote1.xml b/cts/scheduler/on_fail_demote1.xml new file mode 100644 index 0000000..9f3ff20 --- /dev/null +++ b/cts/scheduler/on_fail_demote1.xml @@ -0,0 +1,616 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/on_fail_demote2.dot b/cts/scheduler/on_fail_demote2.dot new file mode 100644 index 0000000..06193cb --- /dev/null +++ b/cts/scheduler/on_fail_demote2.dot @@ -0,0 +1,22 @@ + digraph "g" { +"Cancel rsc1_monitor_10000 rhel7-4" -> "rsc1_demote_0 rhel7-4" [ style = bold] +"Cancel rsc1_monitor_10000 rhel7-4" [ style=bold color="green" fontcolor="black"] +"Cancel rsc1_monitor_11000 rhel7-3" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"Cancel rsc1_monitor_11000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc1-clone_demote_0" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1-clone_demote_0" -> "rsc1_demote_0 rhel7-4" [ style = bold] +"rsc1-clone_demote_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_demoted_0" -> "rsc1-clone_promote_0" [ style = bold] +"rsc1-clone_demoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_promote_0" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"rsc1-clone_promote_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_promoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc1_demote_0 rhel7-4" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1_demote_0 rhel7-4" -> "rsc1_monitor_11000 rhel7-4" [ style = bold] +"rsc1_demote_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc1_monitor_10000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc1_monitor_11000 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc1_promote_0 rhel7-3" -> "rsc1-clone_promoted_0" [ style = bold] +"rsc1_promote_0 rhel7-3" -> "rsc1_monitor_10000 rhel7-3" [ style = bold] +"rsc1_promote_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +} diff --git a/cts/scheduler/on_fail_demote2.exp b/cts/scheduler/on_fail_demote2.exp new file mode 100644 index 0000000..492e86f --- /dev/null +++ b/cts/scheduler/on_fail_demote2.exp @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/on_fail_demote2.scores b/cts/scheduler/on_fail_demote2.scores new file mode 100644 index 0000000..25aea90 --- /dev/null +++ b/cts/scheduler/on_fail_demote2.scores @@ -0,0 +1,127 @@ +Allocation scores: +Using the original execution date of: 2020-06-16 19:23:21Z +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-4: 11 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-3: 6 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-5: 6 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-1: 6 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-2: 6 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-4: 11 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-3: 6 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-5: 6 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-1: 6 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-2: 6 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-5: 0 +pcmk__native_allocate: Fencing allocation score on rhel7-1: 0 +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: 0 +pcmk__native_allocate: rsc1:0 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-4: 11 +pcmk__native_allocate: rsc1:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-3: 6 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-5: 6 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-1: 6 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-2: 6 +pcmk__native_allocate: rsc1:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-4: 11 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-3: 6 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-5: 6 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-1: 6 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-2: 6 +pcmk__native_allocate: rsc2:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-5: -INFINITY +rsc1:0 promotion score on rhel7-4: -INFINITY +rsc1:1 promotion score on rhel7-3: 5 +rsc1:2 promotion score on rhel7-5: 5 +rsc1:3 promotion score on rhel7-1: 5 +rsc1:4 promotion score on rhel7-2: 5 +rsc2:0 promotion score on rhel7-4: 10 +rsc2:1 promotion score on rhel7-3: 5 +rsc2:2 promotion score on rhel7-5: 5 +rsc2:3 promotion score on rhel7-1: 5 +rsc2:4 promotion score on rhel7-2: 5 diff --git a/cts/scheduler/on_fail_demote2.summary b/cts/scheduler/on_fail_demote2.summary new file mode 100644 index 0000000..795a11d --- /dev/null +++ b/cts/scheduler/on_fail_demote2.summary @@ -0,0 +1,41 @@ +Using the original execution date of: 2020-06-16 19:23:21Z + +Current cluster status: +Online: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] + + Fencing (stonith:fence_xvm): Started rhel7-1 + Clone Set: rsc1-clone [rsc1] (promotable) + rsc1 (ocf::pacemaker:Stateful): FAILED Master rhel7-4 + Slaves: [ rhel7-1 rhel7-2 rhel7-3 rhel7-5 ] + Clone Set: rsc2-master [rsc2] (promotable) + Masters: [ rhel7-4 ] + Slaves: [ rhel7-1 rhel7-2 rhel7-3 rhel7-5 ] + +Transition Summary: + * Demote rsc1:0 ( Master -> Slave rhel7-4 ) + * Promote rsc1:1 ( Slave -> Master rhel7-3 ) + +Executing cluster transition: + * Resource action: rsc1 cancel=10000 on rhel7-4 + * Resource action: rsc1 cancel=11000 on rhel7-3 + * Pseudo action: rsc1-clone_demote_0 + * Resource action: rsc1 demote on rhel7-4 + * Pseudo action: rsc1-clone_demoted_0 + * Pseudo action: rsc1-clone_promote_0 + * Resource action: rsc1 monitor=11000 on rhel7-4 + * Resource action: rsc1 promote on rhel7-3 + * Pseudo action: rsc1-clone_promoted_0 + * Resource action: rsc1 monitor=10000 on rhel7-3 +Using the original execution date of: 2020-06-16 19:23:21Z + +Revised cluster status: +Online: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] + + Fencing (stonith:fence_xvm): Started rhel7-1 + Clone Set: rsc1-clone [rsc1] (promotable) + Masters: [ rhel7-3 ] + Slaves: [ rhel7-1 rhel7-2 rhel7-4 rhel7-5 ] + Clone Set: rsc2-master [rsc2] (promotable) + Masters: [ rhel7-4 ] + Slaves: [ rhel7-1 rhel7-2 rhel7-3 rhel7-5 ] + diff --git a/cts/scheduler/on_fail_demote2.xml b/cts/scheduler/on_fail_demote2.xml new file mode 100644 index 0000000..ae91633 --- /dev/null +++ b/cts/scheduler/on_fail_demote2.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/on_fail_demote3.dot b/cts/scheduler/on_fail_demote3.dot new file mode 100644 index 0000000..e78325b --- /dev/null +++ b/cts/scheduler/on_fail_demote3.dot @@ -0,0 +1,12 @@ + digraph "g" { +"Cancel rsc1_monitor_10000 rhel7-4" -> "rsc1_demote_0 rhel7-4" [ style = bold] +"Cancel rsc1_monitor_10000 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc1-clone_demote_0" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1-clone_demote_0" -> "rsc1_demote_0 rhel7-4" [ style = bold] +"rsc1-clone_demote_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_demoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc1_demote_0 rhel7-4" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1_demote_0 rhel7-4" -> "rsc1_monitor_11000 rhel7-4" [ style = bold] +"rsc1_demote_0 rhel7-4" [ style=bold color="green" fontcolor="black"] +"rsc1_monitor_11000 rhel7-4" [ style=bold color="green" fontcolor="black"] +} diff --git a/cts/scheduler/on_fail_demote3.exp b/cts/scheduler/on_fail_demote3.exp new file mode 100644 index 0000000..ed6bd6d --- /dev/null +++ b/cts/scheduler/on_fail_demote3.exp @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/on_fail_demote3.scores b/cts/scheduler/on_fail_demote3.scores new file mode 100644 index 0000000..a85639a --- /dev/null +++ b/cts/scheduler/on_fail_demote3.scores @@ -0,0 +1,127 @@ +Allocation scores: +Using the original execution date of: 2020-06-16 19:23:21Z +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-4: 11 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-3: 6 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-5: 6 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-1: 6 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-2: 6 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-4: 11 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-3: 6 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-5: 6 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-1: 6 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-2: 6 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-5: 0 +pcmk__native_allocate: Fencing allocation score on rhel7-1: 0 +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: 0 +pcmk__native_allocate: rsc1:0 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-4: 11 +pcmk__native_allocate: rsc1:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-3: 6 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-5: 6 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-1: 6 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-2: 6 +pcmk__native_allocate: rsc1:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc1:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-4: 11 +pcmk__native_allocate: rsc2:0 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-3: 6 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-5: 6 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-1: 6 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-2: 6 +pcmk__native_allocate: rsc2:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-5: -INFINITY +rsc1:0 promotion score on rhel7-4: -INFINITY +rsc1:1 promotion score on rhel7-3: -INFINITY +rsc1:2 promotion score on rhel7-5: -INFINITY +rsc1:3 promotion score on rhel7-1: -INFINITY +rsc1:4 promotion score on rhel7-2: -INFINITY +rsc2:0 promotion score on rhel7-4: 10 +rsc2:1 promotion score on rhel7-3: 5 +rsc2:2 promotion score on rhel7-5: 5 +rsc2:3 promotion score on rhel7-1: 5 +rsc2:4 promotion score on rhel7-2: 5 diff --git a/cts/scheduler/on_fail_demote3.summary b/cts/scheduler/on_fail_demote3.summary new file mode 100644 index 0000000..f1173fd --- /dev/null +++ b/cts/scheduler/on_fail_demote3.summary @@ -0,0 +1,34 @@ +Using the original execution date of: 2020-06-16 19:23:21Z + +Current cluster status: +Online: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] + + Fencing (stonith:fence_xvm): Started rhel7-1 + Clone Set: rsc1-clone [rsc1] (promotable) + rsc1 (ocf::pacemaker:Stateful): FAILED Master rhel7-4 + Slaves: [ rhel7-1 rhel7-2 rhel7-3 rhel7-5 ] + Clone Set: rsc2-master [rsc2] (promotable) + Masters: [ rhel7-4 ] + Slaves: [ rhel7-1 rhel7-2 rhel7-3 rhel7-5 ] + +Transition Summary: + * Demote rsc1:0 ( Master -> Slave rhel7-4 ) + +Executing cluster transition: + * Resource action: rsc1 cancel=10000 on rhel7-4 + * Pseudo action: rsc1-clone_demote_0 + * Resource action: rsc1 demote on rhel7-4 + * Pseudo action: rsc1-clone_demoted_0 + * Resource action: rsc1 monitor=11000 on rhel7-4 +Using the original execution date of: 2020-06-16 19:23:21Z + +Revised cluster status: +Online: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] + + Fencing (stonith:fence_xvm): Started rhel7-1 + Clone Set: rsc1-clone [rsc1] (promotable) + Slaves: [ rhel7-1 rhel7-2 rhel7-3 rhel7-4 rhel7-5 ] + Clone Set: rsc2-master [rsc2] (promotable) + Masters: [ rhel7-4 ] + Slaves: [ rhel7-1 rhel7-2 rhel7-3 rhel7-5 ] + diff --git a/cts/scheduler/on_fail_demote3.xml b/cts/scheduler/on_fail_demote3.xml new file mode 100644 index 0000000..a7b6806 --- /dev/null +++ b/cts/scheduler/on_fail_demote3.xml @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/on_fail_demote4.dot b/cts/scheduler/on_fail_demote4.dot new file mode 100644 index 0000000..4715cd3 --- /dev/null +++ b/cts/scheduler/on_fail_demote4.dot @@ -0,0 +1,383 @@ + digraph "g" { +"Cancel rsc1_monitor_11000 rhel7-3" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"Cancel rsc1_monitor_11000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"Cancel rsc2_monitor_11000 rhel7-3" -> "rsc2_promote_0 rhel7-3" [ style = bold] +"Cancel rsc2_monitor_11000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"Fencing_monitor_120000 rhel7-5" [ style=bold color="green" fontcolor="black"] +"Fencing_start_0 rhel7-5" -> "Fencing_monitor_120000 rhel7-5" [ style = bold] +"Fencing_start_0 rhel7-5" [ style=bold color="green" fontcolor="black"] +"Fencing_stop_0 rhel7-4" -> "Fencing_start_0 rhel7-5" [ style = bold] +"Fencing_stop_0 rhel7-4" [ style=bold color="green" fontcolor="orange"] +"bundled_demote_0 stateful-bundle-0" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"bundled_demote_0 stateful-bundle-0" -> "bundled_stop_0 stateful-bundle-0" [ style = bold] +"bundled_demote_0 stateful-bundle-0" -> "stateful-bundle-master_demoted_0" [ style = bold] +"bundled_demote_0 stateful-bundle-0" [ style=bold color="green" fontcolor="orange"] +"bundled_monitor_10000 stateful-bundle-0" [ style=bold color="green" fontcolor="black"] +"bundled_monitor_11000 stateful-bundle-2" [ style=bold color="green" fontcolor="black"] +"bundled_promote_0 stateful-bundle-0" -> "bundled_monitor_10000 stateful-bundle-0" [ style = bold] +"bundled_promote_0 stateful-bundle-0" -> "stateful-bundle-master_promoted_0" [ style = bold] +"bundled_promote_0 stateful-bundle-0" [ style=bold color="green" fontcolor="black"] +"bundled_start_0 stateful-bundle-0" -> "bundled_monitor_10000 stateful-bundle-0" [ style = bold] +"bundled_start_0 stateful-bundle-0" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"bundled_start_0 stateful-bundle-0" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"bundled_start_0 stateful-bundle-0" -> "stateful-bundle-master_running_0" [ style = bold] +"bundled_start_0 stateful-bundle-0" [ style=bold color="green" fontcolor="black"] +"bundled_start_0 stateful-bundle-2" -> "bundled_monitor_11000 stateful-bundle-2" [ style = bold] +"bundled_start_0 stateful-bundle-2" -> "stateful-bundle-master_running_0" [ style = bold] +"bundled_start_0 stateful-bundle-2" [ style=bold color="green" fontcolor="black"] +"bundled_stop_0 stateful-bundle-0" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"bundled_stop_0 stateful-bundle-0" -> "stateful-bundle-master_stopped_0" [ style = bold] +"bundled_stop_0 stateful-bundle-0" [ style=bold color="green" fontcolor="orange"] +"bundled_stop_0 stateful-bundle-2" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"bundled_stop_0 stateful-bundle-2" -> "bundled_stop_0 stateful-bundle-0" [ style = bold] +"bundled_stop_0 stateful-bundle-2" -> "stateful-bundle-master_stopped_0" [ style = bold] +"bundled_stop_0 stateful-bundle-2" [ style=bold color="green" fontcolor="orange"] +"container2_monitor_20000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"container2_start_0 rhel7-3" -> "container2_monitor_20000 rhel7-3" [ style = bold] +"container2_start_0 rhel7-3" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"container2_start_0 rhel7-3" -> "lxc-ms_start_0 lxc2" [ style = bold] +"container2_start_0 rhel7-3" -> "lxc2_start_0 rhel7-3" [ style = bold] +"container2_start_0 rhel7-3" -> "rsc1_start_0 lxc2" [ style = bold] +"container2_start_0 rhel7-3" -> "rsc2_start_0 lxc2" [ style = bold] +"container2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"container2_stop_0 rhel7-3" -> "container2_start_0 rhel7-3" [ style = bold] +"container2_stop_0 rhel7-3" -> "stonith 'reboot' lxc2" [ style = bold] +"container2_stop_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"lxc-ms-master_demote_0" -> "lxc-ms-master_demoted_0" [ style = bold] +"lxc-ms-master_demote_0" -> "lxc-ms_demote_0 lxc2" [ style = bold] +"lxc-ms-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_demoted_0" -> "lxc-ms-master_promote_0" [ style = bold] +"lxc-ms-master_demoted_0" -> "lxc-ms-master_start_0" [ style = bold] +"lxc-ms-master_demoted_0" -> "lxc-ms-master_stop_0" [ style = bold] +"lxc-ms-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_promote_0" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"lxc-ms-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_running_0" -> "lxc-ms-master_promote_0" [ style = bold] +"lxc-ms-master_running_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_start_0" -> "lxc-ms-master_running_0" [ style = bold] +"lxc-ms-master_start_0" -> "lxc-ms_start_0 lxc2" [ style = bold] +"lxc-ms-master_start_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_stop_0" -> "lxc-ms-master_stopped_0" [ style = bold] +"lxc-ms-master_stop_0" -> "lxc-ms_stop_0 lxc2" [ style = bold] +"lxc-ms-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms-master_stopped_0" -> "lxc-ms-master_promote_0" [ style = bold] +"lxc-ms-master_stopped_0" -> "lxc-ms-master_start_0" [ style = bold] +"lxc-ms-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"lxc-ms_demote_0 lxc2" -> "lxc-ms-master_demoted_0" [ style = bold] +"lxc-ms_demote_0 lxc2" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"lxc-ms_demote_0 lxc2" -> "lxc-ms_stop_0 lxc2" [ style = bold] +"lxc-ms_demote_0 lxc2" [ style=bold color="green" fontcolor="orange"] +"lxc-ms_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] +"lxc-ms_promote_0 lxc2" -> "lxc-ms-master_promoted_0" [ style = bold] +"lxc-ms_promote_0 lxc2" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] +"lxc-ms_promote_0 lxc2" [ style=bold color="green" fontcolor="black"] +"lxc-ms_start_0 lxc2" -> "lxc-ms-master_running_0" [ style = bold] +"lxc-ms_start_0 lxc2" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] +"lxc-ms_start_0 lxc2" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"lxc-ms_start_0 lxc2" [ style=bold color="green" fontcolor="black"] +"lxc-ms_stop_0 lxc2" -> "lxc-ms-master_stopped_0" [ style = bold] +"lxc-ms_stop_0 lxc2" -> "lxc-ms_start_0 lxc2" [ style = bold] +"lxc-ms_stop_0 lxc2" [ style=bold color="green" fontcolor="orange"] +"lxc2_monitor_30000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"lxc2_start_0 rhel7-3" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] +"lxc2_start_0 rhel7-3" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"lxc2_start_0 rhel7-3" -> "lxc-ms_start_0 lxc2" [ style = bold] +"lxc2_start_0 rhel7-3" -> "lxc2_monitor_30000 rhel7-3" [ style = bold] +"lxc2_start_0 rhel7-3" -> "rsc1_monitor_11000 lxc2" [ style = bold] +"lxc2_start_0 rhel7-3" -> "rsc1_start_0 lxc2" [ style = bold] +"lxc2_start_0 rhel7-3" -> "rsc2_monitor_11000 lxc2" [ style = bold] +"lxc2_start_0 rhel7-3" -> "rsc2_start_0 lxc2" [ style = bold] +"lxc2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"lxc2_stop_0 rhel7-3" -> "container2_stop_0 rhel7-3" [ style = bold] +"lxc2_stop_0 rhel7-3" -> "lxc2_start_0 rhel7-3" [ style = bold] +"lxc2_stop_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"remote-rhel7-2_monitor_60000 rhel7-1" [ style=bold color="green" fontcolor="black"] +"remote-rhel7-2_start_0 rhel7-1" -> "remote-rhel7-2_monitor_60000 rhel7-1" [ style = bold] +"remote-rhel7-2_start_0 rhel7-1" [ style=bold color="green" fontcolor="black"] +"remote-rhel7-2_stop_0 rhel7-1" -> "remote-rhel7-2_start_0 rhel7-1" [ style = bold] +"remote-rhel7-2_stop_0 rhel7-1" [ style=bold color="green" fontcolor="black"] +"rsc1-clone_demote_0" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1-clone_demote_0" -> "rsc1_demote_0 rhel7-4" [ style = bold] +"rsc1-clone_demote_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_demoted_0" -> "rsc1-clone_promote_0" [ style = bold] +"rsc1-clone_demoted_0" -> "rsc1-clone_start_0" [ style = bold] +"rsc1-clone_demoted_0" -> "rsc1-clone_stop_0" [ style = bold] +"rsc1-clone_demoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_promote_0" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"rsc1-clone_promote_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_promoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_running_0" -> "rsc1-clone_promote_0" [ style = bold] +"rsc1-clone_running_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_start_0" -> "rsc1-clone_running_0" [ style = bold] +"rsc1-clone_start_0" -> "rsc1_start_0 lxc2" [ style = bold] +"rsc1-clone_start_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_stop_0" -> "rsc1-clone_stopped_0" [ style = bold] +"rsc1-clone_stop_0" -> "rsc1_stop_0 lxc2" [ style = bold] +"rsc1-clone_stop_0" -> "rsc1_stop_0 remote-rhel7-2" [ style = bold] +"rsc1-clone_stop_0" -> "rsc1_stop_0 rhel7-4" [ style = bold] +"rsc1-clone_stop_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_stopped_0" -> "rsc1-clone_promote_0" [ style = bold] +"rsc1-clone_stopped_0" -> "rsc1-clone_start_0" [ style = bold] +"rsc1-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rsc1_demote_0 rhel7-4" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1_demote_0 rhel7-4" -> "rsc1_stop_0 rhel7-4" [ style = bold] +"rsc1_demote_0 rhel7-4" [ style=bold color="green" fontcolor="orange"] +"rsc1_monitor_10000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc1_monitor_11000 lxc2" [ style=bold color="green" fontcolor="black"] +"rsc1_promote_0 rhel7-3" -> "rsc1-clone_promoted_0" [ style = bold] +"rsc1_promote_0 rhel7-3" -> "rsc1_monitor_10000 rhel7-3" [ style = bold] +"rsc1_promote_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc1_start_0 lxc2" -> "rsc1-clone_running_0" [ style = bold] +"rsc1_start_0 lxc2" -> "rsc1_monitor_11000 lxc2" [ style = bold] +"rsc1_start_0 lxc2" [ style=bold color="green" fontcolor="black"] +"rsc1_stop_0 lxc2" -> "rsc1-clone_stopped_0" [ style = bold] +"rsc1_stop_0 lxc2" -> "rsc1_start_0 lxc2" [ style = bold] +"rsc1_stop_0 lxc2" [ style=bold color="green" fontcolor="orange"] +"rsc1_stop_0 remote-rhel7-2" -> "remote-rhel7-2_stop_0 rhel7-1" [ style = bold] +"rsc1_stop_0 remote-rhel7-2" -> "rsc1-clone_stopped_0" [ style = bold] +"rsc1_stop_0 remote-rhel7-2" [ style=bold color="green" fontcolor="orange"] +"rsc1_stop_0 rhel7-4" -> "rsc1-clone_stopped_0" [ style = bold] +"rsc1_stop_0 rhel7-4" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_demote_0" -> "rsc2-master_demoted_0" [ style = bold] +"rsc2-master_demote_0" -> "rsc2_demote_0 remote-rhel7-2" [ style = bold] +"rsc2-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_demoted_0" -> "rsc2-master_promote_0" [ style = bold] +"rsc2-master_demoted_0" -> "rsc2-master_start_0" [ style = bold] +"rsc2-master_demoted_0" -> "rsc2-master_stop_0" [ style = bold] +"rsc2-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_promote_0" -> "rsc2_promote_0 rhel7-3" [ style = bold] +"rsc2-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_running_0" -> "rsc2-master_promote_0" [ style = bold] +"rsc2-master_running_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_start_0" -> "rsc2-master_running_0" [ style = bold] +"rsc2-master_start_0" -> "rsc2_start_0 lxc2" [ style = bold] +"rsc2-master_start_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_stop_0" -> "rsc2-master_stopped_0" [ style = bold] +"rsc2-master_stop_0" -> "rsc2_stop_0 lxc2" [ style = bold] +"rsc2-master_stop_0" -> "rsc2_stop_0 remote-rhel7-2" [ style = bold] +"rsc2-master_stop_0" -> "rsc2_stop_0 rhel7-4" [ style = bold] +"rsc2-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"rsc2-master_stopped_0" -> "rsc2-master_promote_0" [ style = bold] +"rsc2-master_stopped_0" -> "rsc2-master_start_0" [ style = bold] +"rsc2-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"rsc2_demote_0 remote-rhel7-2" -> "rsc2-master_demoted_0" [ style = bold] +"rsc2_demote_0 remote-rhel7-2" -> "rsc2_stop_0 remote-rhel7-2" [ style = bold] +"rsc2_demote_0 remote-rhel7-2" [ style=bold color="green" fontcolor="orange"] +"rsc2_monitor_10000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc2_monitor_11000 lxc2" [ style=bold color="green" fontcolor="black"] +"rsc2_promote_0 rhel7-3" -> "rsc2-master_promoted_0" [ style = bold] +"rsc2_promote_0 rhel7-3" -> "rsc2_monitor_10000 rhel7-3" [ style = bold] +"rsc2_promote_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"rsc2_start_0 lxc2" -> "rsc2-master_running_0" [ style = bold] +"rsc2_start_0 lxc2" -> "rsc2_monitor_11000 lxc2" [ style = bold] +"rsc2_start_0 lxc2" [ style=bold color="green" fontcolor="black"] +"rsc2_stop_0 lxc2" -> "rsc2-master_stopped_0" [ style = bold] +"rsc2_stop_0 lxc2" -> "rsc2_start_0 lxc2" [ style = bold] +"rsc2_stop_0 lxc2" [ style=bold color="green" fontcolor="orange"] +"rsc2_stop_0 remote-rhel7-2" -> "remote-rhel7-2_stop_0 rhel7-1" [ style = bold] +"rsc2_stop_0 remote-rhel7-2" -> "rsc2-master_stopped_0" [ style = bold] +"rsc2_stop_0 remote-rhel7-2" [ style=bold color="green" fontcolor="orange"] +"rsc2_stop_0 rhel7-4" -> "rsc2-master_stopped_0" [ style = bold] +"rsc2_stop_0 rhel7-4" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-0_monitor_30000 rhel7-5" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-0_start_0 rhel7-5" -> "bundled_monitor_10000 stateful-bundle-0" [ style = bold] +"stateful-bundle-0_start_0 rhel7-5" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-0_start_0 rhel7-5" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-0_start_0 rhel7-5" -> "stateful-bundle-0_monitor_30000 rhel7-5" [ style = bold] +"stateful-bundle-0_start_0 rhel7-5" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-0_stop_0 rhel7-5" -> "stateful-bundle-0_start_0 rhel7-5" [ style = bold] +"stateful-bundle-0_stop_0 rhel7-5" -> "stateful-bundle-docker-0_stop_0 rhel7-5" [ style = bold] +"stateful-bundle-0_stop_0 rhel7-5" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-2_monitor_30000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-2_start_0 rhel7-3" -> "bundled_monitor_11000 stateful-bundle-2" [ style = bold] +"stateful-bundle-2_start_0 rhel7-3" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"stateful-bundle-2_start_0 rhel7-3" -> "stateful-bundle-2_monitor_30000 rhel7-3" [ style = bold] +"stateful-bundle-2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-2_stop_0 rhel7-4" -> "stateful-bundle-2_start_0 rhel7-3" [ style = bold] +"stateful-bundle-2_stop_0 rhel7-4" -> "stateful-bundle-docker-2_stop_0 rhel7-4" [ style = bold] +"stateful-bundle-2_stop_0 rhel7-4" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-docker-0_monitor_60000 rhel7-5" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-docker-0_start_0 rhel7-5" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-docker-0_start_0 rhel7-5" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-docker-0_start_0 rhel7-5" -> "stateful-bundle-0_start_0 rhel7-5" [ style = bold] +"stateful-bundle-docker-0_start_0 rhel7-5" -> "stateful-bundle-docker-0_monitor_60000 rhel7-5" [ style = bold] +"stateful-bundle-docker-0_start_0 rhel7-5" -> "stateful-bundle_running_0" [ style = bold] +"stateful-bundle-docker-0_start_0 rhel7-5" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-docker-0_stop_0 rhel7-5" -> "stateful-bundle-docker-0_start_0 rhel7-5" [ style = bold] +"stateful-bundle-docker-0_stop_0 rhel7-5" -> "stateful-bundle_stopped_0" [ style = bold] +"stateful-bundle-docker-0_stop_0 rhel7-5" -> "stonith 'reboot' stateful-bundle-0" [ style = bold] +"stateful-bundle-docker-0_stop_0 rhel7-5" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-docker-2_monitor_60000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-docker-2_start_0 rhel7-3" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"stateful-bundle-docker-2_start_0 rhel7-3" -> "stateful-bundle-2_start_0 rhel7-3" [ style = bold] +"stateful-bundle-docker-2_start_0 rhel7-3" -> "stateful-bundle-docker-2_monitor_60000 rhel7-3" [ style = bold] +"stateful-bundle-docker-2_start_0 rhel7-3" -> "stateful-bundle_running_0" [ style = bold] +"stateful-bundle-docker-2_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-docker-2_stop_0 rhel7-4" -> "stateful-bundle-docker-2_start_0 rhel7-3" [ style = bold] +"stateful-bundle-docker-2_stop_0 rhel7-4" -> "stateful-bundle-ip-192.168.122.133_stop_0 rhel7-4" [ style = bold] +"stateful-bundle-docker-2_stop_0 rhel7-4" -> "stateful-bundle_stopped_0" [ style = bold] +"stateful-bundle-docker-2_stop_0 rhel7-4" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-ip-192.168.122.133_monitor_60000 rhel7-3" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" -> "stateful-bundle-docker-2_start_0 rhel7-3" [ style = bold] +"stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" -> "stateful-bundle-ip-192.168.122.133_monitor_60000 rhel7-3" [ style = bold] +"stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" [ style=bold color="green" fontcolor="black"] +"stateful-bundle-ip-192.168.122.133_stop_0 rhel7-4" -> "stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" [ style = bold] +"stateful-bundle-ip-192.168.122.133_stop_0 rhel7-4" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_demote_0" -> "bundled_demote_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-master_demote_0" -> "stateful-bundle-master_demoted_0" [ style = bold] +"stateful-bundle-master_demote_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_demoted_0" -> "stateful-bundle-master_promote_0" [ style = bold] +"stateful-bundle-master_demoted_0" -> "stateful-bundle-master_start_0" [ style = bold] +"stateful-bundle-master_demoted_0" -> "stateful-bundle-master_stop_0" [ style = bold] +"stateful-bundle-master_demoted_0" -> "stateful-bundle_demoted_0" [ style = bold] +"stateful-bundle-master_demoted_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_promote_0" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_promoted_0" -> "stateful-bundle_promoted_0" [ style = bold] +"stateful-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_running_0" -> "stateful-bundle-master_promote_0" [ style = bold] +"stateful-bundle-master_running_0" -> "stateful-bundle_running_0" [ style = bold] +"stateful-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_start_0" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-master_start_0" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"stateful-bundle-master_start_0" -> "stateful-bundle-master_running_0" [ style = bold] +"stateful-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_stop_0" -> "bundled_stop_0 stateful-bundle-0" [ style = bold] +"stateful-bundle-master_stop_0" -> "bundled_stop_0 stateful-bundle-2" [ style = bold] +"stateful-bundle-master_stop_0" -> "stateful-bundle-master_stopped_0" [ style = bold] +"stateful-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle-master_stopped_0" -> "stateful-bundle-master_promote_0" [ style = bold] +"stateful-bundle-master_stopped_0" -> "stateful-bundle-master_start_0" [ style = bold] +"stateful-bundle-master_stopped_0" -> "stateful-bundle_stopped_0" [ style = bold] +"stateful-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_demote_0" -> "stateful-bundle-master_demote_0" [ style = bold] +"stateful-bundle_demote_0" -> "stateful-bundle_demoted_0" [ style = bold] +"stateful-bundle_demote_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_demoted_0" -> "stateful-bundle_promote_0" [ style = bold] +"stateful-bundle_demoted_0" -> "stateful-bundle_start_0" [ style = bold] +"stateful-bundle_demoted_0" -> "stateful-bundle_stop_0" [ style = bold] +"stateful-bundle_demoted_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_promote_0" -> "stateful-bundle-master_promote_0" [ style = bold] +"stateful-bundle_promote_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_running_0" -> "stateful-bundle_promote_0" [ style = bold] +"stateful-bundle_running_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_start_0" -> "stateful-bundle-docker-0_start_0 rhel7-5" [ style = bold] +"stateful-bundle_start_0" -> "stateful-bundle-docker-2_start_0 rhel7-3" [ style = bold] +"stateful-bundle_start_0" -> "stateful-bundle-master_start_0" [ style = bold] +"stateful-bundle_start_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_stop_0" -> "bundled_stop_0 stateful-bundle-0" [ style = bold] +"stateful-bundle_stop_0" -> "bundled_stop_0 stateful-bundle-2" [ style = bold] +"stateful-bundle_stop_0" -> "stateful-bundle-docker-0_stop_0 rhel7-5" [ style = bold] +"stateful-bundle_stop_0" -> "stateful-bundle-docker-2_stop_0 rhel7-4" [ style = bold] +"stateful-bundle_stop_0" -> "stateful-bundle-master_stop_0" [ style = bold] +"stateful-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] +"stateful-bundle_stopped_0" -> "stateful-bundle_promote_0" [ style = bold] +"stateful-bundle_stopped_0" -> "stateful-bundle_start_0" [ style = bold] +"stateful-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] +"stonith 'reboot' lxc2" -> "Fencing_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' lxc2" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' lxc2" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' lxc2" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"stonith 'reboot' lxc2" -> "container2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' lxc2" -> "lxc-ms-master_stop_0" [ style = bold] +"stonith 'reboot' lxc2" -> "lxc-ms_demote_0 lxc2" [ style = bold] +"stonith 'reboot' lxc2" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"stonith 'reboot' lxc2" -> "lxc-ms_start_0 lxc2" [ style = bold] +"stonith 'reboot' lxc2" -> "lxc-ms_stop_0 lxc2" [ style = bold] +"stonith 'reboot' lxc2" -> "lxc2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' lxc2" -> "remote-rhel7-2_start_0 rhel7-1" [ style = bold] +"stonith 'reboot' lxc2" -> "rsc1-clone_stop_0" [ style = bold] +"stonith 'reboot' lxc2" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' lxc2" -> "rsc1_start_0 lxc2" [ style = bold] +"stonith 'reboot' lxc2" -> "rsc1_stop_0 lxc2" [ style = bold] +"stonith 'reboot' lxc2" -> "rsc2-master_stop_0" [ style = bold] +"stonith 'reboot' lxc2" -> "rsc2_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' lxc2" -> "rsc2_start_0 lxc2" [ style = bold] +"stonith 'reboot' lxc2" -> "rsc2_stop_0 lxc2" [ style = bold] +"stonith 'reboot' lxc2" -> "stateful-bundle-0_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' lxc2" -> "stateful-bundle-2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' lxc2" -> "stateful-bundle-docker-0_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' lxc2" -> "stateful-bundle-docker-2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' lxc2" -> "stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' lxc2" [ style=bold color="green" fontcolor="orange"] +"stonith 'reboot' remote-rhel7-2" -> "Fencing_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "container2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "lxc-ms_start_0 lxc2" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "lxc2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "remote-rhel7-2_start_0 rhel7-1" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc1-clone_stop_0" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc1_start_0 lxc2" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc1_stop_0 remote-rhel7-2" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc2-master_stop_0" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc2_demote_0 remote-rhel7-2" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc2_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc2_start_0 lxc2" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "rsc2_stop_0 remote-rhel7-2" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "stateful-bundle-0_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "stateful-bundle-2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "stateful-bundle-docker-0_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "stateful-bundle-docker-2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' remote-rhel7-2" -> "stonith 'reboot' rhel7-4" [ style = bold] +"stonith 'reboot' remote-rhel7-2" [ style=bold color="green" fontcolor="black"] +"stonith 'reboot' rhel7-4" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' rhel7-4" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' rhel7-4" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"stonith 'reboot' rhel7-4" -> "container2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' rhel7-4" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"stonith 'reboot' rhel7-4" -> "lxc-ms_start_0 lxc2" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc1-clone_stop_0" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc1_demote_0 rhel7-4" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc1_start_0 lxc2" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc1_stop_0 rhel7-4" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc2-master_stop_0" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc2_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc2_start_0 lxc2" [ style = bold] +"stonith 'reboot' rhel7-4" -> "rsc2_stop_0 rhel7-4" [ style = bold] +"stonith 'reboot' rhel7-4" -> "stateful-bundle-docker-0_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' rhel7-4" -> "stateful-bundle-docker-2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' rhel7-4" -> "stateful-bundle-docker-2_stop_0 rhel7-4" [ style = bold] +"stonith 'reboot' rhel7-4" -> "stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' rhel7-4" -> "stateful-bundle-ip-192.168.122.133_stop_0 rhel7-4" [ style = bold] +"stonith 'reboot' rhel7-4" -> "stonith 'reboot' stateful-bundle-2" [ style = bold] +"stonith 'reboot' rhel7-4" [ style=bold color="green" fontcolor="black"] +"stonith 'reboot' stateful-bundle-0" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "container2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "lxc-ms_start_0 lxc2" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "rsc1_start_0 lxc2" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "rsc2_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "rsc2_start_0 lxc2" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "stateful-bundle-docker-0_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "stateful-bundle-docker-2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-0" -> "stateful-bundle-master_stop_0" [ style = bold] +"stonith 'reboot' stateful-bundle-0" [ style=bold color="green" fontcolor="orange"] +"stonith 'reboot' stateful-bundle-2" -> "bundled_promote_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "bundled_start_0 stateful-bundle-0" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "bundled_start_0 stateful-bundle-2" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "container2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "lxc-ms_promote_0 lxc2" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "lxc-ms_start_0 lxc2" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "rsc1_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "rsc1_start_0 lxc2" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "rsc2_promote_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "rsc2_start_0 lxc2" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "stateful-bundle-docker-0_start_0 rhel7-5" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "stateful-bundle-docker-2_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "stateful-bundle-ip-192.168.122.133_start_0 rhel7-3" [ style = bold] +"stonith 'reboot' stateful-bundle-2" -> "stateful-bundle-master_stop_0" [ style = bold] +"stonith 'reboot' stateful-bundle-2" [ style=bold color="green" fontcolor="orange"] +} diff --git a/cts/scheduler/on_fail_demote4.exp b/cts/scheduler/on_fail_demote4.exp new file mode 100644 index 0000000..0789a12 --- /dev/null +++ b/cts/scheduler/on_fail_demote4.exp @@ -0,0 +1,1818 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/on_fail_demote4.scores b/cts/scheduler/on_fail_demote4.scores new file mode 100644 index 0000000..cde3fec --- /dev/null +++ b/cts/scheduler/on_fail_demote4.scores @@ -0,0 +1,470 @@ +Allocation scores: +Using the original execution date of: 2020-06-16 19:23:21Z +bundled:0 promotion score on stateful-bundle-0: 10 +bundled:1 promotion score on stateful-bundle-1: 5 +bundled:2 promotion score on stateful-bundle-2: 5 +lxc-ms:0 promotion score on lxc2: INFINITY +lxc-ms:1 promotion score on lxc1: INFINITY +pcmk__bundle_allocate: bundled:0 allocation score on stateful-bundle-0: 501 +pcmk__bundle_allocate: bundled:1 allocation score on stateful-bundle-1: 501 +pcmk__bundle_allocate: bundled:2 allocation score on stateful-bundle-2: 501 +pcmk__bundle_allocate: stateful-bundle allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-0 allocation score on lxc1: -INFINITY +pcmk__bundle_allocate: stateful-bundle-0 allocation score on lxc2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-0 allocation score on remote-rhel7-2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-0 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-0 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-1 allocation score on lxc1: -INFINITY +pcmk__bundle_allocate: stateful-bundle-1 allocation score on lxc2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-1 allocation score on remote-rhel7-2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-1 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-1 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-2 allocation score on lxc1: -INFINITY +pcmk__bundle_allocate: stateful-bundle-2 allocation score on lxc2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-2 allocation score on remote-rhel7-2: -INFINITY +pcmk__bundle_allocate: stateful-bundle-2 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-2 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-2 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-2 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-docker-0 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-docker-1 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-docker-2 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on lxc1: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on lxc2: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on remote-rhel7-2: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on rhel7-1: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on rhel7-3: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on rhel7-4: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on rhel7-5: 0 +pcmk__bundle_allocate: stateful-bundle-master allocation score on stateful-bundle-0: -INFINITY +pcmk__bundle_allocate: stateful-bundle-master allocation score on stateful-bundle-1: -INFINITY +pcmk__bundle_allocate: stateful-bundle-master allocation score on stateful-bundle-2: -INFINITY +pcmk__clone_allocate: bundled:0 allocation score on stateful-bundle-0: INFINITY +pcmk__clone_allocate: bundled:1 allocation score on stateful-bundle-1: INFINITY +pcmk__clone_allocate: bundled:2 allocation score on stateful-bundle-2: INFINITY +pcmk__clone_allocate: lxc-ms-master allocation score on lxc1: INFINITY +pcmk__clone_allocate: lxc-ms-master allocation score on lxc2: INFINITY +pcmk__clone_allocate: lxc-ms-master allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: lxc-ms-master allocation score on rhel7-1: 0 +pcmk__clone_allocate: lxc-ms-master allocation score on rhel7-3: 0 +pcmk__clone_allocate: lxc-ms-master allocation score on rhel7-4: 0 +pcmk__clone_allocate: lxc-ms-master allocation score on rhel7-5: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on lxc1: INFINITY +pcmk__clone_allocate: lxc-ms:0 allocation score on lxc2: INFINITY +pcmk__clone_allocate: lxc-ms:0 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on rhel7-4: 0 +pcmk__clone_allocate: lxc-ms:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on lxc1: INFINITY +pcmk__clone_allocate: lxc-ms:1 allocation score on lxc2: INFINITY +pcmk__clone_allocate: lxc-ms:1 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on rhel7-3: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: lxc-ms:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1-clone allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1-clone allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1-clone allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:0 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:0 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:0 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-4: 1 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:1 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:1 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:1 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-3: 6 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:2 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:2 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:2 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-5: 6 +pcmk__clone_allocate: rsc1:3 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:3 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:3 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-1: 6 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:4 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:4 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:4 allocation score on remote-rhel7-2: 1 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:5 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc1:5 allocation score on lxc2: 6 +pcmk__clone_allocate: rsc1:5 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:5 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:5 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:5 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:5 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:6 allocation score on lxc1: 6 +pcmk__clone_allocate: rsc1:6 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc1:6 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc1:6 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:6 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:6 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:6 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2-master allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2-master allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2-master allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2-master allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:0 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:0 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:0 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-4: 1 +pcmk__clone_allocate: rsc2:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:1 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:1 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:1 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-3: 6 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:2 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:2 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:2 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:2 allocation score on rhel7-5: 6 +pcmk__clone_allocate: rsc2:3 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:3 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:3 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-1: 6 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:4 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:4 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:4 allocation score on remote-rhel7-2: 1 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:4 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:5 allocation score on lxc1: 0 +pcmk__clone_allocate: rsc2:5 allocation score on lxc2: 6 +pcmk__clone_allocate: rsc2:5 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:5 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:5 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:5 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:5 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc2:6 allocation score on lxc1: 6 +pcmk__clone_allocate: rsc2:6 allocation score on lxc2: 0 +pcmk__clone_allocate: rsc2:6 allocation score on remote-rhel7-2: 0 +pcmk__clone_allocate: rsc2:6 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc2:6 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc2:6 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc2:6 allocation score on rhel7-5: 0 +pcmk__clone_allocate: stateful-bundle-master allocation score on lxc1: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on lxc2: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on remote-rhel7-2: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on rhel7-1: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on rhel7-3: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on rhel7-4: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on rhel7-5: -INFINITY +pcmk__clone_allocate: stateful-bundle-master allocation score on stateful-bundle-0: 0 +pcmk__clone_allocate: stateful-bundle-master allocation score on stateful-bundle-1: 0 +pcmk__clone_allocate: stateful-bundle-master allocation score on stateful-bundle-2: 0 +pcmk__native_allocate: Fencing allocation score on lxc1: -INFINITY +pcmk__native_allocate: Fencing allocation score on lxc2: -INFINITY +pcmk__native_allocate: Fencing allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: Fencing allocation score on rhel7-1: 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: 0 +pcmk__native_allocate: bundled:0 allocation score on stateful-bundle-0: INFINITY +pcmk__native_allocate: bundled:1 allocation score on stateful-bundle-1: INFINITY +pcmk__native_allocate: bundled:2 allocation score on stateful-bundle-2: INFINITY +pcmk__native_allocate: container1 allocation score on lxc1: -INFINITY +pcmk__native_allocate: container1 allocation score on lxc2: -INFINITY +pcmk__native_allocate: container1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: container1 allocation score on rhel7-1: 0 +pcmk__native_allocate: container1 allocation score on rhel7-3: INFINITY +pcmk__native_allocate: container1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: container1 allocation score on rhel7-5: 0 +pcmk__native_allocate: container2 allocation score on lxc1: -INFINITY +pcmk__native_allocate: container2 allocation score on lxc2: -INFINITY +pcmk__native_allocate: container2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: container2 allocation score on rhel7-1: 0 +pcmk__native_allocate: container2 allocation score on rhel7-3: INFINITY +pcmk__native_allocate: container2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: container2 allocation score on rhel7-5: 0 +pcmk__native_allocate: lxc-ms:0 allocation score on lxc1: -INFINITY +pcmk__native_allocate: lxc-ms:0 allocation score on lxc2: INFINITY +pcmk__native_allocate: lxc-ms:0 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: lxc-ms:0 allocation score on rhel7-1: 0 +pcmk__native_allocate: lxc-ms:0 allocation score on rhel7-3: 0 +pcmk__native_allocate: lxc-ms:0 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: lxc-ms:0 allocation score on rhel7-5: 0 +pcmk__native_allocate: lxc-ms:1 allocation score on lxc1: INFINITY +pcmk__native_allocate: lxc-ms:1 allocation score on lxc2: INFINITY +pcmk__native_allocate: lxc-ms:1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: lxc-ms:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: lxc-ms:1 allocation score on rhel7-3: 0 +pcmk__native_allocate: lxc-ms:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: lxc-ms:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: lxc1 allocation score on lxc1: -INFINITY +pcmk__native_allocate: lxc1 allocation score on lxc2: -INFINITY +pcmk__native_allocate: lxc1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: lxc1 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: lxc1 allocation score on rhel7-3: 0 +pcmk__native_allocate: lxc1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: lxc1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: lxc2 allocation score on lxc1: -INFINITY +pcmk__native_allocate: lxc2 allocation score on lxc2: -INFINITY +pcmk__native_allocate: lxc2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: lxc2 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: lxc2 allocation score on rhel7-3: 0 +pcmk__native_allocate: lxc2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: lxc2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: remote-rhel7-2 allocation score on lxc1: -INFINITY +pcmk__native_allocate: remote-rhel7-2 allocation score on lxc2: -INFINITY +pcmk__native_allocate: remote-rhel7-2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: remote-rhel7-2 allocation score on rhel7-1: 0 +pcmk__native_allocate: remote-rhel7-2 allocation score on rhel7-3: 0 +pcmk__native_allocate: remote-rhel7-2 allocation score on rhel7-4: 0 +pcmk__native_allocate: remote-rhel7-2 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc1:0 allocation score on lxc1: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on lxc2: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on lxc1: 0 +pcmk__native_allocate: rsc1:1 allocation score on lxc2: 0 +pcmk__native_allocate: rsc1:1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-3: 6 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc1:2 allocation score on lxc1: 0 +pcmk__native_allocate: rsc1:2 allocation score on lxc2: 0 +pcmk__native_allocate: rsc1:2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc1:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-5: 6 +pcmk__native_allocate: rsc1:3 allocation score on lxc1: 0 +pcmk__native_allocate: rsc1:3 allocation score on lxc2: 0 +pcmk__native_allocate: rsc1:3 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-1: 6 +pcmk__native_allocate: rsc1:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on lxc1: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on lxc2: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on lxc1: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on lxc2: 6 +pcmk__native_allocate: rsc1:5 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:5 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on lxc1: 6 +pcmk__native_allocate: rsc1:6 allocation score on lxc2: 0 +pcmk__native_allocate: rsc1:6 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:6 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on lxc1: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on lxc2: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:1 allocation score on lxc1: 0 +pcmk__native_allocate: rsc2:1 allocation score on lxc2: 0 +pcmk__native_allocate: rsc2:1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc2:1 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-3: 6 +pcmk__native_allocate: rsc2:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:1 allocation score on rhel7-5: 0 +pcmk__native_allocate: rsc2:2 allocation score on lxc1: 0 +pcmk__native_allocate: rsc2:2 allocation score on lxc2: 0 +pcmk__native_allocate: rsc2:2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:2 allocation score on rhel7-5: 6 +pcmk__native_allocate: rsc2:3 allocation score on lxc1: 0 +pcmk__native_allocate: rsc2:3 allocation score on lxc2: 0 +pcmk__native_allocate: rsc2:3 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-1: 6 +pcmk__native_allocate: rsc2:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on lxc1: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on lxc2: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on lxc1: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on lxc2: 6 +pcmk__native_allocate: rsc2:5 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:5 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on lxc1: 6 +pcmk__native_allocate: rsc2:6 allocation score on lxc2: 0 +pcmk__native_allocate: rsc2:6 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc2:6 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: stateful-bundle-0 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-0 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-0 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-0 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-0 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-0 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-0 allocation score on rhel7-5: 10000 +pcmk__native_allocate: stateful-bundle-1 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-1 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-1 allocation score on rhel7-1: 10000 +pcmk__native_allocate: stateful-bundle-1 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-1 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-1 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-2 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-2 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-2 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-2 allocation score on rhel7-3: 10000 +pcmk__native_allocate: stateful-bundle-2 allocation score on rhel7-4: 0 +pcmk__native_allocate: stateful-bundle-2 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on lxc1: -10000 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on lxc2: -10000 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-0 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on lxc1: -10000 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on lxc2: -10000 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-1 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on lxc1: -10000 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on lxc2: -10000 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: stateful-bundle-docker-2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.131 allocation score on rhel7-5: 0 +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-1: 0 +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.132 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on lxc1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on lxc2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on remote-rhel7-2: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-3: 0 +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: stateful-bundle-ip-192.168.122.133 allocation score on rhel7-5: -INFINITY +rsc1:0 promotion score on none: 0 +rsc1:1 promotion score on rhel7-3: 5 +rsc1:2 promotion score on rhel7-5: 5 +rsc1:3 promotion score on rhel7-1: 5 +rsc1:4 promotion score on none: 0 +rsc1:5 promotion score on lxc2: 5 +rsc1:6 promotion score on lxc1: 5 +rsc2:0 promotion score on none: 0 +rsc2:1 promotion score on rhel7-3: 5 +rsc2:2 promotion score on rhel7-5: 5 +rsc2:3 promotion score on rhel7-1: 5 +rsc2:4 promotion score on none: 0 +rsc2:5 promotion score on lxc2: 5 +rsc2:6 promotion score on lxc1: 5 diff --git a/cts/scheduler/on_fail_demote4.summary b/cts/scheduler/on_fail_demote4.summary new file mode 100644 index 0000000..20520ff --- /dev/null +++ b/cts/scheduler/on_fail_demote4.summary @@ -0,0 +1,187 @@ +Using the original execution date of: 2020-06-16 19:23:21Z + +Current cluster status: +RemoteNode remote-rhel7-2: UNCLEAN (offline) +Node rhel7-4 (4): UNCLEAN (offline) +Online: [ rhel7-1 rhel7-3 rhel7-5 ] +GuestOnline: [ lxc1:container1 stateful-bundle-1:stateful-bundle-docker-1 ] + + Fencing (stonith:fence_xvm): Started rhel7-4 (UNCLEAN) + Clone Set: rsc1-clone [rsc1] (promotable) + rsc1 (ocf::pacemaker:Stateful): Master rhel7-4 (UNCLEAN) + rsc1 (ocf::pacemaker:Stateful): Slave remote-rhel7-2 (UNCLEAN) + Slaves: [ lxc1 rhel7-1 rhel7-3 rhel7-5 ] + Clone Set: rsc2-master [rsc2] (promotable) + rsc2 (ocf::pacemaker:Stateful): Slave rhel7-4 (UNCLEAN) + rsc2 (ocf::pacemaker:Stateful): Master remote-rhel7-2 (UNCLEAN) + Slaves: [ lxc1 rhel7-1 rhel7-3 rhel7-5 ] + remote-rhel7-2 (ocf::pacemaker:remote): FAILED rhel7-1 + container1 (ocf::heartbeat:VirtualDomain): Started rhel7-3 + container2 (ocf::heartbeat:VirtualDomain): FAILED rhel7-3 + Clone Set: lxc-ms-master [lxc-ms] (promotable) + Slaves: [ lxc1 ] + Stopped: [ remote-rhel7-2 rhel7-1 rhel7-3 rhel7-4 rhel7-5 ] + Container bundle set: stateful-bundle [pcmktest:http] + stateful-bundle-0 (192.168.122.131) (ocf::pacemaker:Stateful): FAILED Master rhel7-5 + stateful-bundle-1 (192.168.122.132) (ocf::pacemaker:Stateful): Slave rhel7-1 + stateful-bundle-2 (192.168.122.133) (ocf::pacemaker:Stateful): FAILED rhel7-4 (UNCLEAN) + +Transition Summary: + * Fence (reboot) stateful-bundle-2 (resource: stateful-bundle-docker-2) 'guest is unclean' + * Fence (reboot) stateful-bundle-0 (resource: stateful-bundle-docker-0) 'guest is unclean' + * Fence (reboot) lxc2 (resource: container2) 'guest is unclean' + * Fence (reboot) remote-rhel7-2 'remote connection is unrecoverable' + * Fence (reboot) rhel7-4 'peer is no longer part of the cluster' + * Move Fencing ( rhel7-4 -> rhel7-5 ) + * Stop rsc1:0 ( Master rhel7-4 ) due to node availability + * Promote rsc1:1 ( Slave -> Master rhel7-3 ) + * Stop rsc1:4 ( Slave remote-rhel7-2 ) due to node availability + * Recover rsc1:5 ( Slave lxc2 ) + * Stop rsc2:0 ( Slave rhel7-4 ) due to node availability + * Promote rsc2:1 ( Slave -> Master rhel7-3 ) + * Stop rsc2:4 ( Master remote-rhel7-2 ) due to node availability + * Recover rsc2:5 ( Slave lxc2 ) + * Recover remote-rhel7-2 ( rhel7-1 ) + * Recover container2 ( rhel7-3 ) + * Recover lxc-ms:0 ( Master lxc2 ) + * Recover stateful-bundle-docker-0 ( rhel7-5 ) + * Restart stateful-bundle-0 ( rhel7-5 ) due to required stateful-bundle-docker-0 start + * Recover bundled:0 ( Master stateful-bundle-0 ) + * Move stateful-bundle-ip-192.168.122.133 ( rhel7-4 -> rhel7-3 ) + * Recover stateful-bundle-docker-2 ( rhel7-4 -> rhel7-3 ) + * Move stateful-bundle-2 ( rhel7-4 -> rhel7-3 ) + * Recover bundled:2 ( Slave stateful-bundle-2 ) + * Restart lxc2 ( rhel7-3 ) due to required container2 start + +Executing cluster transition: + * Pseudo action: Fencing_stop_0 + * Resource action: rsc1 cancel=11000 on rhel7-3 + * Pseudo action: rsc1-clone_demote_0 + * Resource action: rsc2 cancel=11000 on rhel7-3 + * Pseudo action: rsc2-master_demote_0 + * Pseudo action: lxc-ms-master_demote_0 + * Resource action: stateful-bundle-0 stop on rhel7-5 + * Pseudo action: stateful-bundle-2_stop_0 + * Resource action: lxc2 stop on rhel7-3 + * Pseudo action: stateful-bundle_demote_0 + * Fencing remote-rhel7-2 (reboot) + * Fencing rhel7-4 (reboot) + * Pseudo action: rsc1_demote_0 + * Pseudo action: rsc1-clone_demoted_0 + * Pseudo action: rsc2_demote_0 + * Pseudo action: rsc2-master_demoted_0 + * Resource action: container2 stop on rhel7-3 + * Pseudo action: stateful-bundle-master_demote_0 + * Pseudo action: stonith-stateful-bundle-2-reboot on stateful-bundle-2 + * Pseudo action: stonith-lxc2-reboot on lxc2 + * Resource action: Fencing start on rhel7-5 + * Pseudo action: rsc1-clone_stop_0 + * Pseudo action: rsc2-master_stop_0 + * Pseudo action: lxc-ms_demote_0 + * Pseudo action: lxc-ms-master_demoted_0 + * Pseudo action: lxc-ms-master_stop_0 + * Pseudo action: bundled_demote_0 + * Pseudo action: stateful-bundle-master_demoted_0 + * Pseudo action: stateful-bundle_demoted_0 + * Pseudo action: stateful-bundle_stop_0 + * Resource action: Fencing monitor=120000 on rhel7-5 + * Pseudo action: rsc1_stop_0 + * Pseudo action: rsc1_stop_0 + * Pseudo action: rsc1_stop_0 + * Pseudo action: rsc1-clone_stopped_0 + * Pseudo action: rsc1-clone_start_0 + * Pseudo action: rsc2_stop_0 + * Pseudo action: rsc2_stop_0 + * Pseudo action: rsc2_stop_0 + * Pseudo action: rsc2-master_stopped_0 + * Pseudo action: rsc2-master_start_0 + * Resource action: remote-rhel7-2 stop on rhel7-1 + * Pseudo action: lxc-ms_stop_0 + * Pseudo action: lxc-ms-master_stopped_0 + * Pseudo action: lxc-ms-master_start_0 + * Resource action: stateful-bundle-docker-0 stop on rhel7-5 + * Pseudo action: stateful-bundle-docker-2_stop_0 + * Pseudo action: stonith-stateful-bundle-0-reboot on stateful-bundle-0 + * Resource action: remote-rhel7-2 start on rhel7-1 + * Resource action: remote-rhel7-2 monitor=60000 on rhel7-1 + * Resource action: container2 start on rhel7-3 + * Resource action: container2 monitor=20000 on rhel7-3 + * Pseudo action: stateful-bundle-master_stop_0 + * Pseudo action: stateful-bundle-ip-192.168.122.133_stop_0 + * Resource action: lxc2 start on rhel7-3 + * Resource action: lxc2 monitor=30000 on rhel7-3 + * Resource action: rsc1 start on lxc2 + * Pseudo action: rsc1-clone_running_0 + * Resource action: rsc2 start on lxc2 + * Pseudo action: rsc2-master_running_0 + * Resource action: lxc-ms start on lxc2 + * Pseudo action: lxc-ms-master_running_0 + * Pseudo action: bundled_stop_0 + * Resource action: stateful-bundle-ip-192.168.122.133 start on rhel7-3 + * Resource action: rsc1 monitor=11000 on lxc2 + * Pseudo action: rsc1-clone_promote_0 + * Resource action: rsc2 monitor=11000 on lxc2 + * Pseudo action: rsc2-master_promote_0 + * Pseudo action: lxc-ms-master_promote_0 + * Pseudo action: bundled_stop_0 + * Pseudo action: stateful-bundle-master_stopped_0 + * Resource action: stateful-bundle-ip-192.168.122.133 monitor=60000 on rhel7-3 + * Pseudo action: stateful-bundle_stopped_0 + * Pseudo action: stateful-bundle_start_0 + * Resource action: rsc1 promote on rhel7-3 + * Pseudo action: rsc1-clone_promoted_0 + * Resource action: rsc2 promote on rhel7-3 + * Pseudo action: rsc2-master_promoted_0 + * Resource action: lxc-ms promote on lxc2 + * Pseudo action: lxc-ms-master_promoted_0 + * Pseudo action: stateful-bundle-master_start_0 + * Resource action: stateful-bundle-docker-0 start on rhel7-5 + * Resource action: stateful-bundle-docker-0 monitor=60000 on rhel7-5 + * Resource action: stateful-bundle-0 start on rhel7-5 + * Resource action: stateful-bundle-0 monitor=30000 on rhel7-5 + * Resource action: stateful-bundle-docker-2 start on rhel7-3 + * Resource action: stateful-bundle-2 start on rhel7-3 + * Resource action: rsc1 monitor=10000 on rhel7-3 + * Resource action: rsc2 monitor=10000 on rhel7-3 + * Resource action: lxc-ms monitor=10000 on lxc2 + * Resource action: bundled start on stateful-bundle-0 + * Resource action: bundled start on stateful-bundle-2 + * Pseudo action: stateful-bundle-master_running_0 + * Resource action: stateful-bundle-docker-2 monitor=60000 on rhel7-3 + * Resource action: stateful-bundle-2 monitor=30000 on rhel7-3 + * Pseudo action: stateful-bundle_running_0 + * Resource action: bundled monitor=11000 on stateful-bundle-2 + * Pseudo action: stateful-bundle_promote_0 + * Pseudo action: stateful-bundle-master_promote_0 + * Resource action: bundled promote on stateful-bundle-0 + * Pseudo action: stateful-bundle-master_promoted_0 + * Pseudo action: stateful-bundle_promoted_0 + * Resource action: bundled monitor=10000 on stateful-bundle-0 +Using the original execution date of: 2020-06-16 19:23:21Z + +Revised cluster status: +Online: [ rhel7-1 rhel7-3 rhel7-5 ] +OFFLINE: [ rhel7-4 ] +RemoteOnline: [ remote-rhel7-2 ] +GuestOnline: [ lxc1:container1 lxc2:container2 stateful-bundle-0:stateful-bundle-docker-0 stateful-bundle-1:stateful-bundle-docker-1 stateful-bundle-2:stateful-bundle-docker-2 ] + + Fencing (stonith:fence_xvm): Started rhel7-5 + Clone Set: rsc1-clone [rsc1] (promotable) + Masters: [ rhel7-3 ] + Slaves: [ lxc1 lxc2 rhel7-1 rhel7-5 ] + Stopped: [ remote-rhel7-2 rhel7-4 ] + Clone Set: rsc2-master [rsc2] (promotable) + Masters: [ rhel7-3 ] + Slaves: [ lxc1 lxc2 rhel7-1 rhel7-5 ] + Stopped: [ remote-rhel7-2 rhel7-4 ] + remote-rhel7-2 (ocf::pacemaker:remote): Started rhel7-1 + container1 (ocf::heartbeat:VirtualDomain): Started rhel7-3 + container2 (ocf::heartbeat:VirtualDomain): Started rhel7-3 + Clone Set: lxc-ms-master [lxc-ms] (promotable) + Masters: [ lxc2 ] + Slaves: [ lxc1 ] + Container bundle set: stateful-bundle [pcmktest:http] + stateful-bundle-0 (192.168.122.131) (ocf::pacemaker:Stateful): Master rhel7-5 + stateful-bundle-1 (192.168.122.132) (ocf::pacemaker:Stateful): Slave rhel7-1 + stateful-bundle-2 (192.168.122.133) (ocf::pacemaker:Stateful): Slave rhel7-3 + diff --git a/cts/scheduler/on_fail_demote4.xml b/cts/scheduler/on_fail_demote4.xml new file mode 100644 index 0000000..eb4c4cc --- /dev/null +++ b/cts/scheduler/on_fail_demote4.xml @@ -0,0 +1,625 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 1.8.3.1 From 204961e95d9de140d998d71a0e53b5b9baa5d39e Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 26 May 2020 18:04:32 -0500 Subject: [PATCH 12/20] Doc: Pacemaker Explained: document new on-fail="demote" option --- doc/Pacemaker_Explained/en-US/Ch-Resources.txt | 36 ++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/doc/Pacemaker_Explained/en-US/Ch-Resources.txt b/doc/Pacemaker_Explained/en-US/Ch-Resources.txt index d8e7115..9df9243 100644 --- a/doc/Pacemaker_Explained/en-US/Ch-Resources.txt +++ b/doc/Pacemaker_Explained/en-US/Ch-Resources.txt @@ -676,6 +676,10 @@ a|The action to take if this action ever fails. Allowed values: * +ignore:+ Pretend the resource did not fail. * +block:+ Don't perform any further operations on the resource. * +stop:+ Stop the resource and do not start it elsewhere. +* +demote:+ Demote the resource, without a full restart. This is valid only for + +promote+ actions, and for +monitor+ actions with both a nonzero +interval+ + and +role+ set to +Master+; for any other action, a configuration error will + be logged, and the default behavior will be used. * +restart:+ Stop the resource and start it again (possibly on a different node). * +fence:+ STONITH the node on which the resource failed. * +standby:+ Move _all_ resources away from the node on which the resource failed. @@ -714,6 +718,38 @@ indexterm:[Action,Property,on-fail] |========================================================= +[NOTE] +==== +When +on-fail+ is set to +demote+, recovery from failure by a successful demote +causes the cluster to recalculate whether and where a new instance should be +promoted. The node with the failure is eligible, so if master scores have not +changed, it will be promoted again. + +There is no direct equivalent of +migration-threshold+ for the master role, but +the same effect can be achieved with a location constraint using a +<> with a node attribute expression for the resource's fail +count. + +For example, to immediately ban the master role from a node with any failed +promote or master monitor: +[source,XML] +---- + + + + + + +---- + +This example assumes that there is a promotable clone of the +my_primitive+ +resource (note that the primitive name, not the clone name, is used in the +rule), and that there is a recurring 10-second-interval monitor configured for +the master role (fail count attributes specify the interval in milliseconds). +==== + [[s-resource-monitoring]] === Monitoring Resources for Failure === -- 1.8.3.1 From d4b9117e72b178bb6f4458cd89bee13060f78dcb Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 26 May 2020 18:10:33 -0500 Subject: [PATCH 13/20] Doc: Pacemaker Explained: correct on-fail default --- doc/Pacemaker_Explained/en-US/Ch-Resources.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/doc/Pacemaker_Explained/en-US/Ch-Resources.txt b/doc/Pacemaker_Explained/en-US/Ch-Resources.txt index 9df9243..88892db 100644 --- a/doc/Pacemaker_Explained/en-US/Ch-Resources.txt +++ b/doc/Pacemaker_Explained/en-US/Ch-Resources.txt @@ -669,8 +669,13 @@ XML attributes take precedence over +nvpair+ elements if both are specified. indexterm:[Action,Property,timeout] |on-fail -|restart '(except for +stop+ operations, which default to' fence 'when - STONITH is enabled and' block 'otherwise)' +a|Varies by action: + +* +stop+: +fence+ if +stonith-enabled+ is true or +block+ otherwise +* +demote+: +on-fail+ of the +monitor+ action with +role+ set to +Master+, if + present, enabled, and configured to a value other than +demote+, or +restart+ + otherwise +* all other actions: +restart+ a|The action to take if this action ever fails. Allowed values: * +ignore:+ Pretend the resource did not fail. -- 1.8.3.1 From 0b683445318c783ecef8d6f023b35a6c056ee321 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 2 Jun 2020 15:05:56 -0500 Subject: [PATCH 14/20] Refactor: scheduler: functionize checking quorum policy in effect ... for readability and ease of future changes --- lib/pengine/utils.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index fee9efb..5d6b836 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -481,6 +481,17 @@ sort_rsc_priority(gconstpointer a, gconstpointer b) return 0; } +static enum pe_quorum_policy +effective_quorum_policy(pe_resource_t *rsc, pe_working_set_t *data_set) +{ + enum pe_quorum_policy policy = data_set->no_quorum_policy; + + if (is_set(data_set->flags, pe_flag_have_quorum)) { + policy = no_quorum_ignore; + } + return policy; +} + pe_action_t * custom_action(pe_resource_t * rsc, char *key, const char *task, pe_node_t * on_node, gboolean optional, gboolean save_action, @@ -593,6 +604,7 @@ custom_action(pe_resource_t * rsc, char *key, const char *task, if (rsc != NULL) { enum action_tasks a_task = text2task(action->task); + enum pe_quorum_policy quorum_policy = effective_quorum_policy(rsc, data_set); int warn_level = LOG_TRACE; if (save_action) { @@ -675,13 +687,11 @@ custom_action(pe_resource_t * rsc, char *key, const char *task, crm_trace("Action %s requires only stonith", action->uuid); action->runnable = TRUE; #endif - } else if (is_set(data_set->flags, pe_flag_have_quorum) == FALSE - && data_set->no_quorum_policy == no_quorum_stop) { + } else if (quorum_policy == no_quorum_stop) { pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, NULL, "no quorum", pe_action_runnable, TRUE); crm_debug("%s\t%s (cancelled : quorum)", action->node->details->uname, action->uuid); - } else if (is_set(data_set->flags, pe_flag_have_quorum) == FALSE - && data_set->no_quorum_policy == no_quorum_freeze) { + } else if (quorum_policy == no_quorum_freeze) { pe_rsc_trace(rsc, "Check resource is already active: %s %s %s %s", rsc->id, action->uuid, role2text(rsc->next_role), role2text(rsc->role)); if (rsc->fns->active(rsc, TRUE) == FALSE || rsc->next_role > rsc->role) { pe_action_set_flag_reason(__FUNCTION__, __LINE__, action, NULL, "quorum freeze", pe_action_runnable, TRUE); -- 1.8.3.1 From b1ae359382f15e28e90d9144ca7b1d5f04820c10 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 2 Jun 2020 15:06:32 -0500 Subject: [PATCH 15/20] Feature: scheduler: support "demote" choice for no-quorum-policy option If quorum is lost, promotable resources in the master role will be demoted but left running, and all other resources will be stopped. --- daemons/controld/controld_control.c | 2 +- include/crm/pengine/pe_types.h | 3 ++- lib/common/options.c | 1 + lib/pengine/common.c | 2 +- lib/pengine/pe_output.c | 14 ++++++++++++++ lib/pengine/unpack.c | 7 +++++++ lib/pengine/utils.c | 14 ++++++++++++++ 7 files changed, 40 insertions(+), 3 deletions(-) diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index 7d29205..059eb7b 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -626,7 +626,7 @@ static pcmk__cluster_option_t crmd_opts[] = { // Already documented in libpe_status (other values must be kept identical) { - "no-quorum-policy", NULL, "enum", "stop, freeze, ignore, suicide", + "no-quorum-policy", NULL, "enum", "stop, freeze, ignore, demote, suicide", "stop", pcmk__valid_quorum, NULL, NULL }, { diff --git a/include/crm/pengine/pe_types.h b/include/crm/pengine/pe_types.h index ed5eb12..f3cb4ef 100644 --- a/include/crm/pengine/pe_types.h +++ b/include/crm/pengine/pe_types.h @@ -61,7 +61,8 @@ enum pe_quorum_policy { no_quorum_freeze, no_quorum_stop, no_quorum_ignore, - no_quorum_suicide + no_quorum_suicide, + no_quorum_demote }; enum node_type { diff --git a/lib/common/options.c b/lib/common/options.c index 9399642..9e041c9 100644 --- a/lib/common/options.c +++ b/lib/common/options.c @@ -407,6 +407,7 @@ pcmk__valid_quorum(const char *value) return safe_str_eq(value, "stop") || safe_str_eq(value, "freeze") || safe_str_eq(value, "ignore") + || safe_str_eq(value, "demote") || safe_str_eq(value, "suicide"); } diff --git a/lib/pengine/common.c b/lib/pengine/common.c index f4f2106..37f287b 100644 --- a/lib/pengine/common.c +++ b/lib/pengine/common.c @@ -54,7 +54,7 @@ static pcmk__cluster_option_t pe_opts[] = { * long description */ { - "no-quorum-policy", NULL, "enum", "stop, freeze, ignore, suicide", + "no-quorum-policy", NULL, "enum", "stop, freeze, ignore, demote, suicide", "stop", pcmk__valid_quorum, "What to do when the cluster does not have quorum", NULL diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 75bf0d5..ad469ab 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -729,6 +729,11 @@ pe__cluster_options_html(pcmk__output_t *out, va_list args) { out->list_item(out, NULL, "No quorum policy: Stop ALL resources"); break; + case no_quorum_demote: + out->list_item(out, NULL, "No quorum policy: Demote promotable " + "resources and stop all other resources"); + break; + case no_quorum_ignore: out->list_item(out, NULL, "No quorum policy: Ignore"); break; @@ -785,6 +790,11 @@ pe__cluster_options_text(pcmk__output_t *out, va_list args) { out->list_item(out, NULL, "No quorum policy: Stop ALL resources"); break; + case no_quorum_demote: + out->list_item(out, NULL, "No quorum policy: Demote promotable " + "resources and stop all other resources"); + break; + case no_quorum_ignore: out->list_item(out, NULL, "No quorum policy: Ignore"); break; @@ -817,6 +827,10 @@ pe__cluster_options_xml(pcmk__output_t *out, va_list args) { xmlSetProp(node, (pcmkXmlStr) "no-quorum-policy", (pcmkXmlStr) "stop"); break; + case no_quorum_demote: + xmlSetProp(node, (pcmkXmlStr) "no-quorum-policy", (pcmkXmlStr) "demote"); + break; + case no_quorum_ignore: xmlSetProp(node, (pcmkXmlStr) "no-quorum-policy", (pcmkXmlStr) "ignore"); break; diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index a219805..a480680 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -268,6 +268,9 @@ unpack_config(xmlNode * config, pe_working_set_t * data_set) } else if (safe_str_eq(value, "freeze")) { data_set->no_quorum_policy = no_quorum_freeze; + } else if (safe_str_eq(value, "demote")) { + data_set->no_quorum_policy = no_quorum_demote; + } else if (safe_str_eq(value, "suicide")) { if (is_set(data_set->flags, pe_flag_stonith_enabled)) { int do_panic = 0; @@ -297,6 +300,10 @@ unpack_config(xmlNode * config, pe_working_set_t * data_set) case no_quorum_stop: crm_debug("On loss of quorum: Stop ALL resources"); break; + case no_quorum_demote: + crm_debug("On loss of quorum: " + "Demote promotable resources and stop other resources"); + break; case no_quorum_suicide: crm_notice("On loss of quorum: Fence all remaining nodes"); break; diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 5d6b836..f8b631a 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -488,6 +488,20 @@ effective_quorum_policy(pe_resource_t *rsc, pe_working_set_t *data_set) if (is_set(data_set->flags, pe_flag_have_quorum)) { policy = no_quorum_ignore; + + } else if (data_set->no_quorum_policy == no_quorum_demote) { + switch (rsc->role) { + case RSC_ROLE_MASTER: + case RSC_ROLE_SLAVE: + if (rsc->next_role > RSC_ROLE_SLAVE) { + rsc->next_role = RSC_ROLE_SLAVE; + } + policy = no_quorum_ignore; + break; + default: + policy = no_quorum_stop; + break; + } } return policy; } -- 1.8.3.1 From 5d809e136f2927259ad570e409e3bbb68f7ce7b4 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Wed, 17 Jun 2020 12:29:50 -0500 Subject: [PATCH 16/20] Test: scheduler: add regression test for no-quorum-policy="demote" --- cts/cts-scheduler.in | 1 + cts/scheduler/no_quorum_demote.dot | 22 ++++ cts/scheduler/no_quorum_demote.exp | 81 ++++++++++++ cts/scheduler/no_quorum_demote.scores | 72 +++++++++++ cts/scheduler/no_quorum_demote.summary | 38 ++++++ cts/scheduler/no_quorum_demote.xml | 224 +++++++++++++++++++++++++++++++++ 6 files changed, 438 insertions(+) create mode 100644 cts/scheduler/no_quorum_demote.dot create mode 100644 cts/scheduler/no_quorum_demote.exp create mode 100644 cts/scheduler/no_quorum_demote.scores create mode 100644 cts/scheduler/no_quorum_demote.summary create mode 100644 cts/scheduler/no_quorum_demote.xml diff --git a/cts/cts-scheduler.in b/cts/cts-scheduler.in index 0e68e73..9e34379 100644 --- a/cts/cts-scheduler.in +++ b/cts/cts-scheduler.in @@ -482,6 +482,7 @@ TESTS = [ [ "on_fail_demote2", "Recovery with on-fail=\"demote\" with promotion on different node" ], [ "on_fail_demote3", "Recovery with on-fail=\"demote\" with no promotion" ], [ "on_fail_demote4", "Recovery with on-fail=\"demote\" on failed cluster, remote, guest, and bundle nodes" ], + [ "no_quorum_demote", "Promotable demotion and primitive stop with no-quorum-policy=\"demote\"" ], ], [ [ "history-1", "Correctly parse stateful-1 resource state" ], diff --git a/cts/scheduler/no_quorum_demote.dot b/cts/scheduler/no_quorum_demote.dot new file mode 100644 index 0000000..ea5b30c --- /dev/null +++ b/cts/scheduler/no_quorum_demote.dot @@ -0,0 +1,22 @@ + digraph "g" { +"Cancel rsc1_monitor_10000 rhel7-1" -> "rsc1_demote_0 rhel7-1" [ style = bold] +"Cancel rsc1_monitor_10000 rhel7-1" [ style=bold color="green" fontcolor="black"] +"Fencing_monitor_120000 rhel7-1" [ style=dashed color="red" fontcolor="black"] +"Fencing_start_0 rhel7-1" -> "Fencing_monitor_120000 rhel7-1" [ style = dashed] +"Fencing_start_0 rhel7-1" [ style=dashed color="red" fontcolor="black"] +"Fencing_stop_0 rhel7-1" -> "Fencing_start_0 rhel7-1" [ style = dashed] +"Fencing_stop_0 rhel7-1" [ style=bold color="green" fontcolor="black"] +"rsc1-clone_demote_0" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1-clone_demote_0" -> "rsc1_demote_0 rhel7-1" [ style = bold] +"rsc1-clone_demote_0" [ style=bold color="green" fontcolor="orange"] +"rsc1-clone_demoted_0" [ style=bold color="green" fontcolor="orange"] +"rsc1_demote_0 rhel7-1" -> "rsc1-clone_demoted_0" [ style = bold] +"rsc1_demote_0 rhel7-1" -> "rsc1_monitor_11000 rhel7-1" [ style = bold] +"rsc1_demote_0 rhel7-1" [ style=bold color="green" fontcolor="black"] +"rsc1_monitor_11000 rhel7-1" [ style=bold color="green" fontcolor="black"] +"rsc2_monitor_10000 rhel7-2" [ style=dashed color="red" fontcolor="black"] +"rsc2_start_0 rhel7-2" -> "rsc2_monitor_10000 rhel7-2" [ style = dashed] +"rsc2_start_0 rhel7-2" [ style=dashed color="red" fontcolor="black"] +"rsc2_stop_0 rhel7-2" -> "rsc2_start_0 rhel7-2" [ style = dashed] +"rsc2_stop_0 rhel7-2" [ style=bold color="green" fontcolor="black"] +} diff --git a/cts/scheduler/no_quorum_demote.exp b/cts/scheduler/no_quorum_demote.exp new file mode 100644 index 0000000..245574c --- /dev/null +++ b/cts/scheduler/no_quorum_demote.exp @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/no_quorum_demote.scores b/cts/scheduler/no_quorum_demote.scores new file mode 100644 index 0000000..dddc57b --- /dev/null +++ b/cts/scheduler/no_quorum_demote.scores @@ -0,0 +1,72 @@ +Allocation scores: +Using the original execution date of: 2020-06-17 17:26:35Z +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1-clone allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-1: 11 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-2: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:0 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-1: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-2: 6 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:1 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-1: 10 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:2 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-1: 10 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:3 allocation score on rhel7-5: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-1: 10 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-2: 5 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-3: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-4: 0 +pcmk__clone_allocate: rsc1:4 allocation score on rhel7-5: 0 +pcmk__native_allocate: Fencing allocation score on rhel7-1: 0 +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: 0 +pcmk__native_allocate: rsc1:0 allocation score on rhel7-1: 11 +pcmk__native_allocate: rsc1:0 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc1:0 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:0 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on rhel7-2: 6 +pcmk__native_allocate: rsc1:1 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:1 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:2 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:3 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-1: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-2: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-3: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-4: -INFINITY +pcmk__native_allocate: rsc1:4 allocation score on rhel7-5: -INFINITY +pcmk__native_allocate: rsc2 allocation score on rhel7-1: 0 +pcmk__native_allocate: rsc2 allocation score on rhel7-2: 0 +pcmk__native_allocate: rsc2 allocation score on rhel7-3: 0 +pcmk__native_allocate: rsc2 allocation score on rhel7-4: 0 +pcmk__native_allocate: rsc2 allocation score on rhel7-5: 0 +rsc1:0 promotion score on rhel7-1: 10 +rsc1:1 promotion score on rhel7-2: 5 +rsc1:2 promotion score on none: 0 +rsc1:3 promotion score on none: 0 +rsc1:4 promotion score on none: 0 diff --git a/cts/scheduler/no_quorum_demote.summary b/cts/scheduler/no_quorum_demote.summary new file mode 100644 index 0000000..9b69ca1 --- /dev/null +++ b/cts/scheduler/no_quorum_demote.summary @@ -0,0 +1,38 @@ +Using the original execution date of: 2020-06-17 17:26:35Z + +Current cluster status: +Online: [ rhel7-1 rhel7-2 ] +OFFLINE: [ rhel7-3 rhel7-4 rhel7-5 ] + + Fencing (stonith:fence_xvm): Started rhel7-1 + Clone Set: rsc1-clone [rsc1] (promotable) + Masters: [ rhel7-1 ] + Slaves: [ rhel7-2 ] + Stopped: [ rhel7-3 rhel7-4 rhel7-5 ] + rsc2 (ocf::pacemaker:Dummy): Started rhel7-2 + +Transition Summary: + * Stop Fencing ( rhel7-1 ) due to no quorum + * Demote rsc1:0 ( Master -> Slave rhel7-1 ) + * Stop rsc2 ( rhel7-2 ) due to no quorum + +Executing cluster transition: + * Resource action: Fencing stop on rhel7-1 + * Resource action: rsc1 cancel=10000 on rhel7-1 + * Pseudo action: rsc1-clone_demote_0 + * Resource action: rsc2 stop on rhel7-2 + * Resource action: rsc1 demote on rhel7-1 + * Pseudo action: rsc1-clone_demoted_0 + * Resource action: rsc1 monitor=11000 on rhel7-1 +Using the original execution date of: 2020-06-17 17:26:35Z + +Revised cluster status: +Online: [ rhel7-1 rhel7-2 ] +OFFLINE: [ rhel7-3 rhel7-4 rhel7-5 ] + + Fencing (stonith:fence_xvm): Stopped + Clone Set: rsc1-clone [rsc1] (promotable) + Slaves: [ rhel7-1 rhel7-2 ] + Stopped: [ rhel7-3 rhel7-4 rhel7-5 ] + rsc2 (ocf::pacemaker:Dummy): Stopped + diff --git a/cts/scheduler/no_quorum_demote.xml b/cts/scheduler/no_quorum_demote.xml new file mode 100644 index 0000000..8497f0a --- /dev/null +++ b/cts/scheduler/no_quorum_demote.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 1.8.3.1 From 015b5c012ce41a8035260522f67127135937baa2 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Thu, 28 May 2020 12:13:20 -0500 Subject: [PATCH 17/20] Doc: Pacemaker Explained: document no-quorum-policy=demote --- doc/Pacemaker_Explained/en-US/Ch-Options.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Pacemaker_Explained/en-US/Ch-Options.txt b/doc/Pacemaker_Explained/en-US/Ch-Options.txt index faefe7c..b158f00 100644 --- a/doc/Pacemaker_Explained/en-US/Ch-Options.txt +++ b/doc/Pacemaker_Explained/en-US/Ch-Options.txt @@ -181,6 +181,8 @@ What to do when the cluster does not have quorum. Allowed values: * +ignore:+ continue all resource management * +freeze:+ continue resource management, but don't recover resources from nodes not in the affected partition * +stop:+ stop all resources in the affected cluster partition +* +demote:+ demote promotable resources and stop all other resources in the + affected cluster partition * +suicide:+ fence all nodes in the affected cluster partition | batch-limit | 0 | -- 1.8.3.1 From 01c5ec67e0a6ee1395d771f8fbaf619a44ab2ca2 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 2 Jun 2020 19:23:11 -0500 Subject: [PATCH 18/20] Low: scheduler: match initial no-quorum-policy struct value to actual default It doesn't matter in practice since the actual default is parsed from the option definition via pe_pref(), but it's confusing to have them different. --- lib/pengine/status.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pengine/status.c b/lib/pengine/status.c index 8dc5095..ca34639 100644 --- a/lib/pengine/status.c +++ b/lib/pengine/status.c @@ -360,7 +360,7 @@ set_working_set_defaults(pe_working_set_t * data_set) data_set->order_id = 1; data_set->action_id = 1; - data_set->no_quorum_policy = no_quorum_freeze; + data_set->no_quorum_policy = no_quorum_stop; data_set->flags = 0x0ULL; set_bit(data_set->flags, pe_flag_stop_rsc_orphans); -- 1.8.3.1 From 7eec572dbba3ade059e5206a2ba496f9da3a68bc Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Fri, 5 Jun 2020 10:02:05 -0500 Subject: [PATCH 19/20] Build: libcrmcommon: bump CRM feature set ... for op_expression/rsc_expression rules, on-fail=demote, and no-quorum-policy=demote --- include/crm/crm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/crm/crm.h b/include/crm/crm.h index d2ffb61..dc2adc1 100644 --- a/include/crm/crm.h +++ b/include/crm/crm.h @@ -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.3.0" +# define CRM_FEATURE_SET "3.4.0" # define EOS '\0' # define DIMOF(a) ((int) (sizeof(a)/sizeof(a[0])) ) -- 1.8.3.1 From c4429d86ef00bb1749adc476f9c6874e3f5d95b9 Mon Sep 17 00:00:00 2001 From: Ken Gaillot Date: Tue, 16 Jun 2020 14:38:35 -0500 Subject: [PATCH 20/20] Log: scheduler: downgrade "active on" messages to trace ... now that they're logged more often via pcmk__rsc_is_filtered() --- lib/pengine/native.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/pengine/native.c b/lib/pengine/native.c index f0d83d7..20658a0 100644 --- a/lib/pengine/native.c +++ b/lib/pengine/native.c @@ -359,22 +359,22 @@ native_parameter(pe_resource_t * rsc, pe_node_t * node, gboolean create, const c gboolean native_active(pe_resource_t * rsc, gboolean all) { - GListPtr gIter = rsc->running_on; - - for (; gIter != NULL; gIter = gIter->next) { + for (GList *gIter = rsc->running_on; gIter != NULL; gIter = gIter->next) { pe_node_t *a_node = (pe_node_t *) gIter->data; if (a_node->details->unclean) { - crm_debug("Resource %s: node %s is unclean", rsc->id, a_node->details->uname); + pe_rsc_trace(rsc, "Resource %s: node %s is unclean", + rsc->id, a_node->details->uname); return TRUE; } else if (a_node->details->online == FALSE) { - crm_debug("Resource %s: node %s is offline", rsc->id, a_node->details->uname); + pe_rsc_trace(rsc, "Resource %s: node %s is offline", + rsc->id, a_node->details->uname); } else { - crm_debug("Resource %s active on %s", rsc->id, a_node->details->uname); + pe_rsc_trace(rsc, "Resource %s active on %s", + rsc->id, a_node->details->uname); return TRUE; } } - return FALSE; } -- 1.8.3.1