From 04b076c34b36c6e39030050573f27843096df761 Mon Sep 17 00:00:00 2001 From: David Vossel Date: Mon, 18 Nov 2013 21:10:59 -0600 Subject: [PATCH 1/5] High: ipc: Have the ipc server enforce a minimum buffer size all clients must use. --- configure.ac | 2 +- include/crm/common/ipc.h | 1 + lib/common/ipc.c | 15 +++++++++++++++ lib/common/mainloop.c | 6 ++++++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 5d8843e554a..5b716dbb39a 100644 --- a/configure.ac +++ b/configure.ac @@ -1017,7 +1017,7 @@ AC_CHECK_LIB(qb, qb_ipcs_connection_auth_set) LIBQB_LOG=1 PCMK_FEATURES="$PCMK_FEATURES libqb-logging libqb-ipc" -AC_CHECK_FUNCS(qb_ipcs_connection_get_buffer_size, AC_DEFINE(HAVE_IPCS_GET_BUFFER_SIZE, 1, [Have qb_ipcs_connection_get_buffer_size function])) +AC_CHECK_FUNCS(qb_ipcs_connection_get_buffer_size, AC_DEFINE(HAVE_IPCS_GET_BUFFER_SIZE, 1, [Have qb_ipcc_get_buffer_size function])) if ! pkg-config --atleast-version 0.13 libqb diff --git a/include/crm/common/ipc.h b/include/crm/common/ipc.h index 8492a625023..3118cf70583 100644 --- a/include/crm/common/ipc.h +++ b/include/crm/common/ipc.h @@ -73,6 +73,7 @@ int crm_ipc_ready(crm_ipc_t * client); long crm_ipc_read(crm_ipc_t * client); const char *crm_ipc_buffer(crm_ipc_t * client); const char *crm_ipc_name(crm_ipc_t * client); +int crm_ipc_default_buffer_size(void); /* Utils */ xmlNode *create_hello_message(const char *uuid, const char *client_name, diff --git a/lib/common/ipc.c b/lib/common/ipc.c index 175bb3c685c..4fca382c140 100644 --- a/lib/common/ipc.c +++ b/lib/common/ipc.c @@ -60,6 +60,12 @@ crm_ipc_init(void) } } +int +crm_ipc_default_buffer_size(void) +{ + return pick_ipc_buffer(0); +} + static char * generateReference(const char *custom1, const char *custom2) { @@ -790,6 +796,15 @@ crm_ipc_connect(crm_ipc_t * client) qb_ipcc_context_set(client->ipc, client); +#ifdef HAVE_IPCS_GET_BUFFER_SIZE + client->max_buf_size = qb_ipcc_get_buffer_size(client->ipc); + if (client->max_buf_size < client->buf_size) { + free(client->buffer); + client->buffer = calloc(1, client->max_buf_size); + client->buf_size = client->max_buf_size; + } +#endif + return TRUE; } diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index 7df6fa26b64..4f21d69724f 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.c @@ -573,6 +573,12 @@ mainloop_add_ipc_server(const char *name, enum qb_ipc_type type, crm_client_init(); server = qb_ipcs_create(name, 0, pick_ipc_type(type), callbacks); + +#ifdef HAVE_IPCS_GET_BUFFER_SIZE + /* All clients should use at least ipc_buffer_max as their buffer size */ + qb_ipcs_enforce_buffer_size(server, crm_ipc_default_buffer_size()); +#endif + qb_ipcs_poll_handlers_set(server, &gio_poll_funcs); rc = qb_ipcs_run(server); From f7681840053fabd2cef64b14b1de15a4c22c16e0 Mon Sep 17 00:00:00 2001 From: David Vossel Date: Mon, 18 Nov 2013 21:17:13 -0600 Subject: [PATCH 2/5] Low: cib: We can now guarantee all clients will have at least a minimum size event buffer --- cib/notify.c | 22 ---------------------- lib/common/ipc.c | 10 +--------- 2 files changed, 1 insertion(+), 31 deletions(-) diff --git a/cib/notify.c b/cib/notify.c index 14d52fb1d7e..3f633ee5288 100644 --- a/cib/notify.c +++ b/cib/notify.c @@ -116,28 +116,6 @@ cib_notify_send_one(gpointer key, gpointer value, gpointer user_data) if (do_send) { switch (client->kind) { case CRM_CLIENT_IPC: -#ifdef HAVE_IPCS_GET_BUFFER_SIZE - { - int max_send_size = qb_ipcs_connection_get_buffer_size(client->ipcs); - if (max_send_size < update->iov_size) { - struct iovec *iov; - int new_size = crm_ipc_prepare(0, update->msg, &iov, max_send_size); - - if (new_size > 0) { - free(update->iov[0].iov_base); - free(update->iov[1].iov_base); - free(update->iov); - - update->iov = iov; - update->iov_size = new_size; - } else { - crm_warn("Preparing notification for client %s/%s failed", client->name, client->id); - return FALSE; - } - } - } -#endif - if (crm_ipcs_sendv(client, update->iov, crm_ipc_server_event) < 0) { crm_warn("Notification of client %s/%s failed", client->name, client->id); } diff --git a/lib/common/ipc.c b/lib/common/ipc.c index 4fca382c140..0fe275901c1 100644 --- a/lib/common/ipc.c +++ b/lib/common/ipc.c @@ -674,21 +674,13 @@ crm_ipcs_send(crm_client_t * c, uint32_t request, xmlNode * message, { struct iovec *iov = NULL; ssize_t rc = 0; - int32_t max_msg_size = 0; if(c == NULL) { return -EDESTADDRREQ; } crm_ipc_init(); - /* when sending from server to client, we need to use the client's - * max buffer size if possible */ - max_msg_size = ipc_buffer_max; -#ifdef HAVE_IPCS_GET_BUFFER_SIZE - max_msg_size = qb_ipcs_connection_get_buffer_size(c->ipcs); -#endif - - rc = crm_ipc_prepare(request, message, &iov, max_msg_size); + rc = crm_ipc_prepare(request, message, &iov, ipc_buffer_max); if (rc > 0) { rc = crm_ipcs_sendv(c, iov, flags | crm_ipc_server_free); From f5d8a8f16bddd07e440cdc752dd43fa436a00842 Mon Sep 17 00:00:00 2001 From: David Vossel Date: Mon, 18 Nov 2013 23:10:47 -0600 Subject: [PATCH 3/5] High: pengine: Disable container node probes due to constraint conflicts --- include/crm/pengine/status.h | 1 - lib/pengine/common.c | 2 - lib/pengine/unpack.c | 5 - pengine/allocate.c | 4 +- pengine/native.c | 2 +- pengine/regression.sh | 1 - .../test10/master-partially-demoted-group.xml | 1 - pengine/test10/whitebox-asymmetric.dot | 16 -- pengine/test10/whitebox-asymmetric.exp | 110 +------- pengine/test10/whitebox-asymmetric.summary | 7 +- pengine/test10/whitebox-disable-probes.dot | 17 -- pengine/test10/whitebox-disable-probes.exp | 92 ------- pengine/test10/whitebox-disable-probes.scores | 101 ------- .../test10/whitebox-disable-probes.summary | 44 --- pengine/test10/whitebox-disable-probes.xml | 260 ------------------ pengine/test10/whitebox-fail1.dot | 23 -- pengine/test10/whitebox-fail1.exp | 208 +++----------- pengine/test10/whitebox-fail1.summary | 13 +- pengine/test10/whitebox-fail2.dot | 23 -- pengine/test10/whitebox-fail2.exp | 208 +++----------- pengine/test10/whitebox-fail2.summary | 13 +- pengine/test10/whitebox-fail3.dot | 16 -- pengine/test10/whitebox-fail3.exp | 164 +++-------- pengine/test10/whitebox-fail3.summary | 12 +- pengine/test10/whitebox-move.dot | 10 - pengine/test10/whitebox-move.exp | 142 +++------- pengine/test10/whitebox-move.summary | 4 +- pengine/test10/whitebox-ms-ordering.dot | 4 - pengine/test10/whitebox-ms-ordering.exp | 153 +++++------ pengine/test10/whitebox-orphaned.dot | 12 - pengine/test10/whitebox-orphaned.exp | 144 +++------- pengine/test10/whitebox-orphaned.summary | 4 - pengine/test10/whitebox-start.dot | 18 -- pengine/test10/whitebox-start.exp | 137 ++------- pengine/test10/whitebox-start.summary | 6 - pengine/test10/whitebox-stop.dot | 10 - pengine/test10/whitebox-stop.exp | 108 ++------ pengine/test10/whitebox-stop.summary | 4 - 38 files changed, 337 insertions(+), 1762 deletions(-) delete mode 100644 pengine/test10/whitebox-disable-probes.dot delete mode 100644 pengine/test10/whitebox-disable-probes.exp delete mode 100644 pengine/test10/whitebox-disable-probes.scores delete mode 100644 pengine/test10/whitebox-disable-probes.summary delete mode 100644 pengine/test10/whitebox-disable-probes.xml diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h index 02e3e04e198..689555a5c82 100644 --- a/include/crm/pengine/status.h +++ b/include/crm/pengine/status.h @@ -72,7 +72,6 @@ enum pe_find { # define pe_flag_startup_probes 0x00010000ULL # define pe_flag_have_status 0x00020000ULL # define pe_flag_have_remote_nodes 0x00040000ULL -# define pe_flag_container_probes 0x00080000ULL # define pe_flag_quick_location 0x00100000ULL diff --git a/lib/pengine/common.c b/lib/pengine/common.c index 8874c38ca83..6f32490ca5c 100644 --- a/lib/pengine/common.c +++ b/lib/pengine/common.c @@ -116,8 +116,6 @@ pe_cluster_option pe_opts[] = { "This was the old default. However when set to FALSE, the cluster will instead use the resource's failcount and value for resource-failure-stickiness" }, { "enable-startup-probes", NULL, "boolean", NULL, "true", &check_boolean, "Should the cluster check for active resources during startup", NULL }, - { "enable-container-probes", NULL, "boolean", NULL, "true", &check_boolean, - "Should the cluster check for active resources on container nodes during startup", NULL }, /* Stonith Options */ { "stonith-enabled", "stonith_enabled", "boolean", NULL, "true", &check_boolean, diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 6dffd565372..892d0f0db0d 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -88,11 +88,6 @@ unpack_config(xmlNode * config, pe_working_set_t * data_set) crm_info("Startup probes: disabled (dangerous)"); } - set_config_flag(data_set, "enable-container-probes", pe_flag_container_probes); - if(is_not_set(data_set->flags, pe_flag_container_probes)) { - crm_info("Container probes: disabled"); - } - value = pe_pref(data_set->config_hash, "stonith-timeout"); data_set->stonith_timeout = crm_get_msec(value); crm_debug("STONITH timeout: %d", data_set->stonith_timeout); diff --git a/pengine/allocate.c b/pengine/allocate.c index f3b0f627544..ebe6b669778 100644 --- a/pengine/allocate.c +++ b/pengine/allocate.c @@ -850,8 +850,8 @@ probe_resources(pe_working_set_t * data_set) * it is being shutdown. */ continue; - } else if (is_container_remote_node(node) && is_not_set(data_set->flags, pe_flag_container_probes)) { - /* skip container nodes if container node probes are disabled */ + } else if (is_container_remote_node(node)) { + /* TODO enable container node probes once ordered probing is implemented. */ continue; } else if (probe_complete == NULL) { diff --git a/pengine/native.c b/pengine/native.c index 0a6e1492a92..0a323fef0ee 100644 --- a/pengine/native.c +++ b/pengine/native.c @@ -2414,7 +2414,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete, if (force == FALSE && is_not_set(data_set->flags, pe_flag_startup_probes)) { pe_rsc_trace(rsc, "Skipping active resource detection for %s", rsc->id); return FALSE; - } else if (force == FALSE && is_container_remote_node(node) && is_not_set(data_set->flags, pe_flag_container_probes)) { + } else if (force == FALSE && is_container_remote_node(node)) { pe_rsc_trace(rsc, "Skipping active resource detection for %s on container %s", rsc->id, node->details->id); return FALSE; diff --git a/pengine/regression.sh b/pengine/regression.sh index 7b086bb4f59..98dfb274172 100755 --- a/pengine/regression.sh +++ b/pengine/regression.sh @@ -714,7 +714,6 @@ do_test whitebox-ms-ordering "Verify promote/demote can not occur before connect do_test whitebox-ms-ordering "Verify promote/demote can not occur before connection is established" do_test whitebox-orphaned "Properly shutdown orphaned whitebox container" do_test whitebox-orphan-ms "Properly tear down orphan ms resources on remote-nodes" -do_test whitebox-disable-probes "Verify probes are not executed when container probes are disabled" echo "" do_test remote-startup-probes "Baremetal remote-node startup probes" diff --git a/pengine/test10/master-partially-demoted-group.xml b/pengine/test10/master-partially-demoted-group.xml index 56582d11f8b..13760ba9c03 100644 --- a/pengine/test10/master-partially-demoted-group.xml +++ b/pengine/test10/master-partially-demoted-group.xml @@ -23,7 +23,6 @@ - diff --git a/pengine/test10/whitebox-asymmetric.dot b/pengine/test10/whitebox-asymmetric.dot index 0c4ee01ef8e..896f66a790a 100644 --- a/pengine/test10/whitebox-asymmetric.dot +++ b/pengine/test10/whitebox-asymmetric.dot @@ -1,26 +1,10 @@ digraph "g" { "18node2_monitor_30000 18builder" [ style=bold color="green" fontcolor="black"] "18node2_start_0 18builder" -> "18node2_monitor_30000 18builder" [ style = bold] -"18node2_start_0 18builder" -> "nfs_mount_monitor_0 18node2" [ style = bold] "18node2_start_0 18builder" -> "nfs_mount_monitor_10000 18node2" [ style = bold] "18node2_start_0 18builder" -> "nfs_mount_start_0 18node2" [ style = bold] -"18node2_start_0 18builder" -> "vg_tags_dup_monitor_0 18node2" [ style = bold] -"18node2_start_0 18builder" -> "vg_tags_monitor_0 18node2" [ style = bold] -"18node2_start_0 18builder" -> "webserver_monitor_0 18node2" [ style = bold] "18node2_start_0 18builder" [ style=bold color="green" fontcolor="black"] -"nfs_mount_monitor_0 18node2" -> "probe_complete 18node2" [ style = bold] -"nfs_mount_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] "nfs_mount_monitor_10000 18node2" [ style=bold color="green" fontcolor="black"] "nfs_mount_start_0 18node2" -> "nfs_mount_monitor_10000 18node2" [ style = bold] "nfs_mount_start_0 18node2" [ style=bold color="green" fontcolor="black"] -"probe_complete 18node2" -> "probe_complete" [ style = bold] -"probe_complete 18node2" [ style=bold color="green" fontcolor="black"] -"probe_complete" -> "nfs_mount_start_0 18node2" [ style = bold] -"probe_complete" [ style=bold color="green" fontcolor="orange"] -"vg_tags_dup_monitor_0 18node2" -> "probe_complete 18node2" [ style = bold] -"vg_tags_dup_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] -"vg_tags_monitor_0 18node2" -> "probe_complete 18node2" [ style = bold] -"vg_tags_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] -"webserver_monitor_0 18node2" -> "probe_complete 18node2" [ style = bold] -"webserver_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] } diff --git a/pengine/test10/whitebox-asymmetric.exp b/pengine/test10/whitebox-asymmetric.exp index 8b2eede9d62..c6a69bc0794 100644 --- a/pengine/test10/whitebox-asymmetric.exp +++ b/pengine/test10/whitebox-asymmetric.exp @@ -1,141 +1,53 @@ - - - - - - - - - - - - - - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pengine/test10/whitebox-asymmetric.summary b/pengine/test10/whitebox-asymmetric.summary index 7d7597707ea..1a688022bc7 100644 --- a/pengine/test10/whitebox-asymmetric.summary +++ b/pengine/test10/whitebox-asymmetric.summary @@ -16,13 +16,8 @@ Transition Summary: Executing cluster transition: * Resource action: 18node2 start on 18builder - * Resource action: webserver monitor on 18node2 - * Resource action: nfs_mount monitor on 18node2 - * Resource action: vg_tags monitor on 18node2 - * Resource action: vg_tags_dup monitor on 18node2 - * Resource action: 18node2 monitor=30000 on 18builder - * Pseudo action: probe_complete * Resource action: nfs_mount start on 18node2 + * Resource action: 18node2 monitor=30000 on 18builder * Resource action: nfs_mount monitor=10000 on 18node2 Revised cluster status: diff --git a/pengine/test10/whitebox-disable-probes.dot b/pengine/test10/whitebox-disable-probes.dot deleted file mode 100644 index 9a64dea567d..00000000000 --- a/pengine/test10/whitebox-disable-probes.dot +++ /dev/null @@ -1,17 +0,0 @@ - digraph "g" { -"M-clone_running_0" [ style=bold color="green" fontcolor="orange"] -"M-clone_start_0" -> "M-clone_running_0" [ style = bold] -"M-clone_start_0" -> "M_start_0 lxc1" [ style = bold] -"M-clone_start_0" [ style=bold color="green" fontcolor="orange"] -"M_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"] -"M_start_0 lxc1" -> "M-clone_running_0" [ style = bold] -"M_start_0 lxc1" -> "M_monitor_10000 lxc1" [ style = bold] -"M_start_0 lxc1" [ style=bold color="green" fontcolor="black"] -"container1_start_0 18node1" -> "lxc1_start_0 18node1" [ style = bold] -"container1_start_0 18node1" [ style=bold color="green" fontcolor="black"] -"lxc1_monitor_30000 18node1" [ style=bold color="green" fontcolor="black"] -"lxc1_start_0 18node1" -> "M_monitor_10000 lxc1" [ style = bold] -"lxc1_start_0 18node1" -> "M_start_0 lxc1" [ style = bold] -"lxc1_start_0 18node1" -> "lxc1_monitor_30000 18node1" [ style = bold] -"lxc1_start_0 18node1" [ style=bold color="green" fontcolor="black"] -} diff --git a/pengine/test10/whitebox-disable-probes.exp b/pengine/test10/whitebox-disable-probes.exp deleted file mode 100644 index 9ade280ceef..00000000000 --- a/pengine/test10/whitebox-disable-probes.exp +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pengine/test10/whitebox-disable-probes.scores b/pengine/test10/whitebox-disable-probes.scores deleted file mode 100644 index 1a00b280d51..00000000000 --- a/pengine/test10/whitebox-disable-probes.scores +++ /dev/null @@ -1,101 +0,0 @@ -Allocation scores: -clone_color: M-clone allocation score on 18node1: 0 -clone_color: M-clone allocation score on 18node2: 0 -clone_color: M-clone allocation score on 18node3: 0 -clone_color: M-clone allocation score on lxc1: 0 -clone_color: M-clone allocation score on lxc2: 0 -clone_color: M:0 allocation score on 18node1: 100 -clone_color: M:0 allocation score on 18node2: 0 -clone_color: M:0 allocation score on 18node3: 0 -clone_color: M:0 allocation score on lxc1: 0 -clone_color: M:0 allocation score on lxc2: 0 -clone_color: M:1 allocation score on 18node1: 0 -clone_color: M:1 allocation score on 18node2: 100 -clone_color: M:1 allocation score on 18node3: 0 -clone_color: M:1 allocation score on lxc1: 0 -clone_color: M:1 allocation score on lxc2: 0 -clone_color: M:2 allocation score on 18node1: 0 -clone_color: M:2 allocation score on 18node2: 0 -clone_color: M:2 allocation score on 18node3: 100 -clone_color: M:2 allocation score on lxc1: 0 -clone_color: M:2 allocation score on lxc2: 0 -clone_color: M:3 allocation score on 18node1: 0 -clone_color: M:3 allocation score on 18node2: 0 -clone_color: M:3 allocation score on 18node3: 0 -clone_color: M:3 allocation score on lxc1: 0 -clone_color: M:3 allocation score on lxc2: 100 -clone_color: M:4 allocation score on 18node1: 0 -clone_color: M:4 allocation score on 18node2: 0 -clone_color: M:4 allocation score on 18node3: 0 -clone_color: M:4 allocation score on lxc1: 0 -clone_color: M:4 allocation score on lxc2: 0 -native_color: A allocation score on 18node1: 100 -native_color: A allocation score on 18node2: 0 -native_color: A allocation score on 18node3: 0 -native_color: A allocation score on lxc1: 0 -native_color: A allocation score on lxc2: 0 -native_color: B allocation score on 18node1: 0 -native_color: B allocation score on 18node2: 0 -native_color: B allocation score on 18node3: 0 -native_color: B allocation score on lxc1: 0 -native_color: B allocation score on lxc2: 100 -native_color: C allocation score on 18node1: 0 -native_color: C allocation score on 18node2: 0 -native_color: C allocation score on 18node3: 0 -native_color: C allocation score on lxc1: 0 -native_color: C allocation score on lxc2: 100 -native_color: D allocation score on 18node1: 100 -native_color: D allocation score on 18node2: 0 -native_color: D allocation score on 18node3: 0 -native_color: D allocation score on lxc1: 0 -native_color: D allocation score on lxc2: 0 -native_color: M:0 allocation score on 18node1: 100 -native_color: M:0 allocation score on 18node2: 0 -native_color: M:0 allocation score on 18node3: -INFINITY -native_color: M:0 allocation score on lxc1: 0 -native_color: M:0 allocation score on lxc2: -INFINITY -native_color: M:1 allocation score on 18node1: -INFINITY -native_color: M:1 allocation score on 18node2: 100 -native_color: M:1 allocation score on 18node3: -INFINITY -native_color: M:1 allocation score on lxc1: 0 -native_color: M:1 allocation score on lxc2: -INFINITY -native_color: M:2 allocation score on 18node1: 0 -native_color: M:2 allocation score on 18node2: 0 -native_color: M:2 allocation score on 18node3: 100 -native_color: M:2 allocation score on lxc1: 0 -native_color: M:2 allocation score on lxc2: -INFINITY -native_color: M:3 allocation score on 18node1: 0 -native_color: M:3 allocation score on 18node2: 0 -native_color: M:3 allocation score on 18node3: 0 -native_color: M:3 allocation score on lxc1: 0 -native_color: M:3 allocation score on lxc2: 100 -native_color: M:4 allocation score on 18node1: -INFINITY -native_color: M:4 allocation score on 18node2: -INFINITY -native_color: M:4 allocation score on 18node3: -INFINITY -native_color: M:4 allocation score on lxc1: 0 -native_color: M:4 allocation score on lxc2: -INFINITY -native_color: container1 allocation score on 18node1: 0 -native_color: container1 allocation score on 18node2: 0 -native_color: container1 allocation score on 18node3: 0 -native_color: container1 allocation score on lxc1: -INFINITY -native_color: container1 allocation score on lxc2: -INFINITY -native_color: container2 allocation score on 18node1: 0 -native_color: container2 allocation score on 18node2: 200 -native_color: container2 allocation score on 18node3: 0 -native_color: container2 allocation score on lxc1: -INFINITY -native_color: container2 allocation score on lxc2: -INFINITY -native_color: lxc1 allocation score on 18node1: 0 -native_color: lxc1 allocation score on 18node2: -INFINITY -native_color: lxc1 allocation score on 18node3: -INFINITY -native_color: lxc1 allocation score on lxc1: -INFINITY -native_color: lxc1 allocation score on lxc2: -INFINITY -native_color: lxc2 allocation score on 18node1: -INFINITY -native_color: lxc2 allocation score on 18node2: 100 -native_color: lxc2 allocation score on 18node3: -INFINITY -native_color: lxc2 allocation score on lxc1: -INFINITY -native_color: lxc2 allocation score on lxc2: -INFINITY -native_color: shoot1 allocation score on 18node1: 0 -native_color: shoot1 allocation score on 18node2: 0 -native_color: shoot1 allocation score on 18node3: 100 -native_color: shoot1 allocation score on lxc1: -INFINITY -native_color: shoot1 allocation score on lxc2: -INFINITY diff --git a/pengine/test10/whitebox-disable-probes.summary b/pengine/test10/whitebox-disable-probes.summary deleted file mode 100644 index 99cbad0ffb9..00000000000 --- a/pengine/test10/whitebox-disable-probes.summary +++ /dev/null @@ -1,44 +0,0 @@ - -Current cluster status: -Online: [ 18node1 18node2 18node3 ] -Containers: [ lxc2:container2 ] - - container1 (ocf::heartbeat:VirtualDomain): Stopped - container2 (ocf::heartbeat:VirtualDomain): Started 18node2 - shoot1 (stonith:fence_xvm): Started 18node3 - Clone Set: M-clone [M] - Started: [ 18node1 18node2 18node3 lxc2 ] - Stopped: [ lxc1 ] - A (ocf::pacemaker:Dummy): Started 18node1 - B (ocf::pacemaker:Dummy): Started lxc2 - C (ocf::pacemaker:Dummy): Started lxc2 - D (ocf::pacemaker:Dummy): Started 18node1 - -Transition Summary: - * Start container1 (18node1) - * Start M:4 (lxc1) - * Start lxc1 (18node1) - -Executing cluster transition: - * Resource action: container1 start on 18node1 - * Pseudo action: M-clone_start_0 - * Resource action: lxc1 start on 18node1 - * Resource action: M start on lxc1 - * Pseudo action: M-clone_running_0 - * Resource action: lxc1 monitor=30000 on 18node1 - * Resource action: M monitor=10000 on lxc1 - -Revised cluster status: -Online: [ 18node1 18node2 18node3 ] -Containers: [ lxc1:container1 lxc2:container2 ] - - container1 (ocf::heartbeat:VirtualDomain): Started 18node1 - container2 (ocf::heartbeat:VirtualDomain): Started 18node2 - shoot1 (stonith:fence_xvm): Started 18node3 - Clone Set: M-clone [M] - Started: [ 18node1 18node2 18node3 lxc1 lxc2 ] - A (ocf::pacemaker:Dummy): Started 18node1 - B (ocf::pacemaker:Dummy): Started lxc2 - C (ocf::pacemaker:Dummy): Started lxc2 - D (ocf::pacemaker:Dummy): Started 18node1 - diff --git a/pengine/test10/whitebox-disable-probes.xml b/pengine/test10/whitebox-disable-probes.xml deleted file mode 100644 index ef2bd31df86..00000000000 --- a/pengine/test10/whitebox-disable-probes.xml +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pengine/test10/whitebox-fail1.dot b/pengine/test10/whitebox-fail1.dot index 008ee4d1b8f..b595015d262 100644 --- a/pengine/test10/whitebox-fail1.dot +++ b/pengine/test10/whitebox-fail1.dot @@ -1,22 +1,10 @@ digraph "g" { -"A_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"A_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"A_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -"B_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"B_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"] "B_start_0 lxc1" -> "B_monitor_10000 lxc1" [ style = bold] "B_start_0 lxc1" [ style=bold color="green" fontcolor="black"] "B_stop_0 lxc1" -> "B_start_0 lxc1" [ style = bold] "B_stop_0 lxc1" -> "all_stopped" [ style = bold] "B_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] -"C_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"C_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"D_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"D_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"D_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "M-clone_running_0" [ style=bold color="green" fontcolor="orange"] "M-clone_start_0" -> "M-clone_running_0" [ style = bold] "M-clone_start_0" -> "M_start_0 lxc1" [ style = bold] @@ -43,11 +31,8 @@ digraph "g" { "container1_stop_0 18node2" -> "container1_start_0 18node2" [ style = bold] "container1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_monitor_30000 18node2" [ style=bold color="green" fontcolor="black"] -"lxc1_start_0 18node2" -> "A_monitor_0 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "B_monitor_10000 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "B_start_0 lxc1" [ style = bold] -"lxc1_start_0 18node2" -> "C_monitor_0 lxc1" [ style = bold] -"lxc1_start_0 18node2" -> "D_monitor_0 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "M_monitor_10000 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "lxc1_monitor_30000 18node2" [ style = bold] @@ -56,12 +41,4 @@ digraph "g" { "lxc1_stop_0 18node2" -> "container1_stop_0 18node2" [ style = bold] "lxc1_stop_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] "lxc1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc1" -> "probe_complete" [ style = bold] -"probe_complete lxc1" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc2" -> "probe_complete" [ style = bold] -"probe_complete lxc2" [ style=bold color="green" fontcolor="black"] -"probe_complete" -> "B_start_0 lxc1" [ style = bold] -"probe_complete" -> "B_stop_0 lxc1" [ style = bold] -"probe_complete" -> "M_stop_0 lxc1" [ style = bold] -"probe_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-fail1.exp b/pengine/test10/whitebox-fail1.exp index 6e10cf302a0..d4c37114002 100644 --- a/pengine/test10/whitebox-fail1.exp +++ b/pengine/test10/whitebox-fail1.exp @@ -1,7 +1,7 @@ - + @@ -21,48 +21,48 @@ - + - + - + - + - + - + - + - + - + @@ -71,31 +71,28 @@ - - - - + - + - + - + - + @@ -103,91 +100,66 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - - - - + - + - + - + @@ -195,81 +167,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + @@ -278,62 +203,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + @@ -344,13 +218,13 @@ - + - + - + diff --git a/pengine/test10/whitebox-fail1.summary b/pengine/test10/whitebox-fail1.summary index 6d9531877d7..5e5887b4ce1 100644 --- a/pengine/test10/whitebox-fail1.summary +++ b/pengine/test10/whitebox-fail1.summary @@ -21,23 +21,16 @@ Transition Summary: Executing cluster transition: * Pseudo action: M-clone_stop_0 - * Resource action: A monitor on lxc2 - * Resource action: B monitor on lxc2 - * Resource action: D monitor on lxc2 * Resource action: lxc1 stop on 18node2 * Resource action: container1 stop on 18node2 - * Resource action: container1 start on 18node2 - * Resource action: lxc1 start on 18node2 - * Resource action: lxc1 monitor=30000 on 18node2 - * Resource action: A monitor on lxc1 - * Resource action: C monitor on lxc1 - * Resource action: D monitor on lxc1 - * Pseudo action: probe_complete * Pseudo action: M_stop_0 * Pseudo action: M-clone_stopped_0 * Pseudo action: M-clone_start_0 * Pseudo action: B_stop_0 * Pseudo action: all_stopped + * Resource action: container1 start on 18node2 + * Resource action: lxc1 start on 18node2 + * Resource action: lxc1 monitor=30000 on 18node2 * Resource action: M start on lxc1 * Pseudo action: M-clone_running_0 * Resource action: B start on lxc1 diff --git a/pengine/test10/whitebox-fail2.dot b/pengine/test10/whitebox-fail2.dot index 008ee4d1b8f..b595015d262 100644 --- a/pengine/test10/whitebox-fail2.dot +++ b/pengine/test10/whitebox-fail2.dot @@ -1,22 +1,10 @@ digraph "g" { -"A_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"A_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"A_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -"B_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"B_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"] "B_start_0 lxc1" -> "B_monitor_10000 lxc1" [ style = bold] "B_start_0 lxc1" [ style=bold color="green" fontcolor="black"] "B_stop_0 lxc1" -> "B_start_0 lxc1" [ style = bold] "B_stop_0 lxc1" -> "all_stopped" [ style = bold] "B_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] -"C_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"C_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"D_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"D_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"D_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "M-clone_running_0" [ style=bold color="green" fontcolor="orange"] "M-clone_start_0" -> "M-clone_running_0" [ style = bold] "M-clone_start_0" -> "M_start_0 lxc1" [ style = bold] @@ -43,11 +31,8 @@ digraph "g" { "container1_stop_0 18node2" -> "container1_start_0 18node2" [ style = bold] "container1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_monitor_30000 18node2" [ style=bold color="green" fontcolor="black"] -"lxc1_start_0 18node2" -> "A_monitor_0 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "B_monitor_10000 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "B_start_0 lxc1" [ style = bold] -"lxc1_start_0 18node2" -> "C_monitor_0 lxc1" [ style = bold] -"lxc1_start_0 18node2" -> "D_monitor_0 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "M_monitor_10000 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "lxc1_monitor_30000 18node2" [ style = bold] @@ -56,12 +41,4 @@ digraph "g" { "lxc1_stop_0 18node2" -> "container1_stop_0 18node2" [ style = bold] "lxc1_stop_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] "lxc1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc1" -> "probe_complete" [ style = bold] -"probe_complete lxc1" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc2" -> "probe_complete" [ style = bold] -"probe_complete lxc2" [ style=bold color="green" fontcolor="black"] -"probe_complete" -> "B_start_0 lxc1" [ style = bold] -"probe_complete" -> "B_stop_0 lxc1" [ style = bold] -"probe_complete" -> "M_stop_0 lxc1" [ style = bold] -"probe_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-fail2.exp b/pengine/test10/whitebox-fail2.exp index 6e10cf302a0..d4c37114002 100644 --- a/pengine/test10/whitebox-fail2.exp +++ b/pengine/test10/whitebox-fail2.exp @@ -1,7 +1,7 @@ - + @@ -21,48 +21,48 @@ - + - + - + - + - + - + - + - + - + @@ -71,31 +71,28 @@ - - - - + - + - + - + - + @@ -103,91 +100,66 @@ - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - - - - + - + - + - + @@ -195,81 +167,34 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + @@ -278,62 +203,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + @@ -344,13 +218,13 @@ - + - + - + diff --git a/pengine/test10/whitebox-fail2.summary b/pengine/test10/whitebox-fail2.summary index 6b3bc9b6d7e..338173dbe29 100644 --- a/pengine/test10/whitebox-fail2.summary +++ b/pengine/test10/whitebox-fail2.summary @@ -21,23 +21,16 @@ Transition Summary: Executing cluster transition: * Pseudo action: M-clone_stop_0 - * Resource action: A monitor on lxc2 - * Resource action: B monitor on lxc2 - * Resource action: D monitor on lxc2 * Resource action: lxc1 stop on 18node2 * Resource action: container1 stop on 18node2 - * Resource action: container1 start on 18node2 - * Resource action: lxc1 start on 18node2 - * Resource action: lxc1 monitor=30000 on 18node2 - * Resource action: A monitor on lxc1 - * Resource action: C monitor on lxc1 - * Resource action: D monitor on lxc1 - * Pseudo action: probe_complete * Pseudo action: M_stop_0 * Pseudo action: M-clone_stopped_0 * Pseudo action: M-clone_start_0 * Pseudo action: B_stop_0 * Pseudo action: all_stopped + * Resource action: container1 start on 18node2 + * Resource action: lxc1 start on 18node2 + * Resource action: lxc1 monitor=30000 on 18node2 * Resource action: M start on lxc1 * Pseudo action: M-clone_running_0 * Resource action: B start on lxc1 diff --git a/pengine/test10/whitebox-fail3.dot b/pengine/test10/whitebox-fail3.dot index 8b0b77ebc69..123acd0ef02 100644 --- a/pengine/test10/whitebox-fail3.dot +++ b/pengine/test10/whitebox-fail3.dot @@ -1,17 +1,12 @@ digraph "g" { "18builder_monitor_30000 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] "18builder_start_0 dvossel-laptop2" -> "18builder_monitor_30000 dvossel-laptop2" [ style = bold] -"18builder_start_0 dvossel-laptop2" -> "FAKE_monitor_0 18builder" [ style = bold] "18builder_start_0 dvossel-laptop2" -> "FAKE_start_0 18builder" [ style = bold] -"18builder_start_0 dvossel-laptop2" -> "W:1_monitor_0 18builder" [ style = bold] "18builder_start_0 dvossel-laptop2" -> "W:1_monitor_10000 18builder" [ style = bold] "18builder_start_0 dvossel-laptop2" -> "W:1_start_0 18builder" [ style = bold] -"18builder_start_0 dvossel-laptop2" -> "X:1_monitor_0 18builder" [ style = bold] "18builder_start_0 dvossel-laptop2" -> "X:1_monitor_10000 18builder" [ style = bold] "18builder_start_0 dvossel-laptop2" -> "X:1_start_0 18builder" [ style = bold] "18builder_start_0 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] -"FAKE_monitor_0 18builder" -> "probe_complete 18builder" [ style = bold] -"FAKE_monitor_0 18builder" [ style=bold color="green" fontcolor="black"] "FAKE_start_0 18builder" [ style=bold color="green" fontcolor="black"] "FAKE_stop_0 dvossel-laptop2" -> "FAKE_start_0 18builder" [ style = bold] "FAKE_stop_0 dvossel-laptop2" -> "all_stopped" [ style = bold] @@ -20,8 +15,6 @@ digraph "g" { "W-master_start_0" -> "W-master_running_0" [ style = bold] "W-master_start_0" -> "W:1_start_0 18builder" [ style = bold] "W-master_start_0" [ style=bold color="green" fontcolor="orange"] -"W:1_monitor_0 18builder" -> "probe_complete 18builder" [ style = bold] -"W:1_monitor_0 18builder" [ style=bold color="green" fontcolor="black"] "W:1_monitor_10000 18builder" [ style=bold color="green" fontcolor="black"] "W:1_start_0 18builder" -> "W-master_running_0" [ style = bold] "W:1_start_0 18builder" -> "W:1_monitor_10000 18builder" [ style = bold] @@ -30,20 +23,11 @@ digraph "g" { "X-master_start_0" -> "X-master_running_0" [ style = bold] "X-master_start_0" -> "X:1_start_0 18builder" [ style = bold] "X-master_start_0" [ style=bold color="green" fontcolor="orange"] -"X:1_monitor_0 18builder" -> "probe_complete 18builder" [ style = bold] -"X:1_monitor_0 18builder" [ style=bold color="green" fontcolor="black"] "X:1_monitor_10000 18builder" [ style=bold color="green" fontcolor="black"] "X:1_start_0 18builder" -> "X-master_running_0" [ style = bold] "X:1_start_0 18builder" -> "X:1_monitor_10000 18builder" [ style = bold] "X:1_start_0 18builder" [ style=bold color="green" fontcolor="black"] "all_stopped" [ style=bold color="green" fontcolor="orange"] -"probe_complete 18builder" -> "probe_complete" [ style = bold] -"probe_complete 18builder" [ style=bold color="green" fontcolor="black"] -"probe_complete" -> "FAKE_start_0 18builder" [ style = bold] -"probe_complete" -> "FAKE_stop_0 dvossel-laptop2" [ style = bold] -"probe_complete" -> "W:1_start_0 18builder" [ style = bold] -"probe_complete" -> "X:1_start_0 18builder" [ style = bold] -"probe_complete" [ style=bold color="green" fontcolor="orange"] "vm_start_0 dvossel-laptop2" -> "18builder_start_0 dvossel-laptop2" [ style = bold] "vm_start_0 dvossel-laptop2" [ style=bold color="green" fontcolor="black"] } diff --git a/pengine/test10/whitebox-fail3.exp b/pengine/test10/whitebox-fail3.exp index 4035f952cb8..0f7c43b16a1 100644 --- a/pengine/test10/whitebox-fail3.exp +++ b/pengine/test10/whitebox-fail3.exp @@ -1,7 +1,7 @@ - + @@ -10,248 +10,166 @@ - + - + - - - - + - + - - - - - + - - - - - - - - - - - - - - + - + - + - + - + - + - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - + - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -259,7 +177,7 @@ - + diff --git a/pengine/test10/whitebox-fail3.summary b/pengine/test10/whitebox-fail3.summary index ec9b2ab000f..7acf1b6c8d0 100644 --- a/pengine/test10/whitebox-fail3.summary +++ b/pengine/test10/whitebox-fail3.summary @@ -21,21 +21,17 @@ Transition Summary: Executing cluster transition: * Resource action: vm start on dvossel-laptop2 + * Resource action: FAKE stop on dvossel-laptop2 * Pseudo action: W-master_start_0 * Pseudo action: X-master_start_0 * Resource action: 18builder start on dvossel-laptop2 - * Resource action: FAKE monitor on 18builder - * Resource action: W monitor on 18builder - * Resource action: X monitor on 18builder - * Resource action: 18builder monitor=30000 on dvossel-laptop2 - * Pseudo action: probe_complete - * Resource action: FAKE stop on dvossel-laptop2 + * Pseudo action: all_stopped + * Resource action: FAKE start on 18builder * Resource action: W start on 18builder * Pseudo action: W-master_running_0 * Resource action: X start on 18builder * Pseudo action: X-master_running_0 - * Pseudo action: all_stopped - * Resource action: FAKE start on 18builder + * Resource action: 18builder monitor=30000 on dvossel-laptop2 * Resource action: W monitor=10000 on 18builder * Resource action: X monitor=10000 on 18builder diff --git a/pengine/test10/whitebox-move.dot b/pengine/test10/whitebox-move.dot index 762a0fe1c16..7368b1e0052 100644 --- a/pengine/test10/whitebox-move.dot +++ b/pengine/test10/whitebox-move.dot @@ -1,6 +1,4 @@ digraph "g" { -"A_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "A_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"] "A_start_0 lxc1" -> "A_monitor_10000 lxc1" [ style = bold] "A_start_0 lxc1" [ style=bold color="green" fontcolor="black"] @@ -43,12 +41,4 @@ digraph "g" { "lxc1_stop_0 18node1" -> "container1_stop_0 18node1" [ style = bold] "lxc1_stop_0 18node1" -> "lxc1_start_0 18node2" [ style = bold] "lxc1_stop_0 18node1" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc1" -> "probe_complete" [ style = bold] -"probe_complete lxc1" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc2" -> "probe_complete" [ style = bold] -"probe_complete lxc2" [ style=bold color="green" fontcolor="black"] -"probe_complete" -> "A_start_0 lxc1" [ style = bold] -"probe_complete" -> "A_stop_0 lxc1" [ style = bold] -"probe_complete" -> "M_stop_0 lxc1" [ style = bold] -"probe_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-move.exp b/pengine/test10/whitebox-move.exp index f54d5b8305d..5a9fea622fd 100644 --- a/pengine/test10/whitebox-move.exp +++ b/pengine/test10/whitebox-move.exp @@ -1,62 +1,59 @@ - + - + - + - + - + - + - + - + - + - - - - + @@ -69,31 +66,31 @@ - + - + - + - + - + - + @@ -101,73 +98,57 @@ - + - + - + - + - + - + - - - - + - + - + - - - - - - - - - - - - - - + @@ -176,94 +157,59 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -271,16 +217,16 @@ - + - + - + - + diff --git a/pengine/test10/whitebox-move.summary b/pengine/test10/whitebox-move.summary index 33b31549b2f..3422ac78906 100644 --- a/pengine/test10/whitebox-move.summary +++ b/pengine/test10/whitebox-move.summary @@ -18,12 +18,10 @@ Transition Summary: Executing cluster transition: * Pseudo action: M-clone_stop_0 - * Resource action: A monitor on lxc2 - * Pseudo action: probe_complete + * Resource action: A stop on lxc1 * Resource action: M stop on lxc1 * Pseudo action: M-clone_stopped_0 * Pseudo action: M-clone_start_0 - * Resource action: A stop on lxc1 * Resource action: lxc1 stop on 18node1 * Resource action: container1 stop on 18node1 * Pseudo action: all_stopped diff --git a/pengine/test10/whitebox-ms-ordering.dot b/pengine/test10/whitebox-ms-ordering.dot index 8cd47985439..74401309e45 100644 --- a/pengine/test10/whitebox-ms-ordering.dot +++ b/pengine/test10/whitebox-ms-ordering.dot @@ -83,10 +83,6 @@ "probe_complete 18node2" [ style=bold color="green" fontcolor="black"] "probe_complete 18node3" -> "probe_nodes_complete" [ style = bold] "probe_complete 18node3" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc1" -> "probe_complete" [ style = bold] -"probe_complete lxc1" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc2" -> "probe_complete" [ style = bold] -"probe_complete lxc2" [ style=bold color="green" fontcolor="black"] "probe_complete" -> "lxc-ms_start_0 lxc1" [ style = bold] "probe_complete" -> "lxc-ms_start_0 lxc2" [ style = bold] "probe_complete" -> "lxc-ms_stop_0 lxc1" [ style = bold] diff --git a/pengine/test10/whitebox-ms-ordering.exp b/pengine/test10/whitebox-ms-ordering.exp index bbb667184c4..f8915297f61 100644 --- a/pengine/test10/whitebox-ms-ordering.exp +++ b/pengine/test10/whitebox-ms-ordering.exp @@ -1,7 +1,7 @@ - + @@ -41,7 +41,7 @@ - + @@ -81,29 +81,29 @@ - + - + - + - + - + - + @@ -113,19 +113,19 @@ - + - + - + - + @@ -134,26 +134,26 @@ - + - + - + - + - + @@ -186,23 +186,23 @@ - + - + - + - + @@ -212,19 +212,19 @@ - + - + - + - + @@ -233,28 +233,28 @@ - + - + - + - + - + @@ -262,166 +262,150 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - @@ -439,7 +423,7 @@ - + @@ -457,7 +441,7 @@ - + @@ -475,7 +459,7 @@ - + @@ -493,22 +477,15 @@ - + - - - - - - - - + - + @@ -516,10 +493,10 @@ - + - + diff --git a/pengine/test10/whitebox-orphaned.dot b/pengine/test10/whitebox-orphaned.dot index 0f30e7c24d5..289a8f6dc13 100644 --- a/pengine/test10/whitebox-orphaned.dot +++ b/pengine/test10/whitebox-orphaned.dot @@ -1,8 +1,4 @@ digraph "g" { -"A_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -"B_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"B_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] "B_start_0 lxc2" -> "B_monitor_10000 lxc2" [ style = bold] "B_start_0 lxc2" [ style=bold color="green" fontcolor="black"] @@ -10,8 +6,6 @@ "B_stop_0 lxc1" -> "all_stopped" [ style = bold] "B_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] "B_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] -"D_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "M-clone_stop_0" -> "M-clone_stopped_0" [ style = bold] "M-clone_stop_0" -> "M_stop_0 lxc1" [ style = bold] "M-clone_stop_0" [ style=bold color="green" fontcolor="orange"] @@ -21,7 +15,6 @@ "M_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] "M_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] "all_stopped" [ style=bold color="green" fontcolor="orange"] -"container1_clear_failcount 18node2" -> "probe_complete" [ style = bold] "container1_clear_failcount 18node2" [ style=bold color="green" fontcolor="black"] "container1_delete_0 18node1" [ style=bold color="green" fontcolor="black"] "container1_delete_0 18node2" [ style=bold color="green" fontcolor="black"] @@ -31,7 +24,6 @@ "container1_stop_0 18node2" -> "container1_delete_0 18node2" [ style = bold] "container1_stop_0 18node2" -> "container1_delete_0 18node3" [ style = bold] "container1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] -"lxc1_clear_failcount 18node2" -> "probe_complete" [ style = bold] "lxc1_clear_failcount 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_delete_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc1_delete_0 18node2" [ style=bold color="green" fontcolor="black"] @@ -42,8 +34,4 @@ "lxc1_stop_0 18node2" -> "lxc1_delete_0 18node2" [ style = bold] "lxc1_stop_0 18node2" -> "lxc1_delete_0 18node3" [ style = bold] "lxc1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc2" -> "probe_complete" [ style = bold] -"probe_complete lxc2" [ style=bold color="green" fontcolor="black"] -"probe_complete" -> "B_start_0 lxc2" [ style = bold] -"probe_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-orphaned.exp b/pengine/test10/whitebox-orphaned.exp index 30ffa5ea535..fe96a211d38 100644 --- a/pengine/test10/whitebox-orphaned.exp +++ b/pengine/test10/whitebox-orphaned.exp @@ -1,35 +1,35 @@ - + - + - + - + - + - + @@ -37,83 +37,53 @@ - - - - - - - - - - + - + - + - + - - - - + - + - + - - - - - - - - - - - - - - - - - - - + - + - + - + @@ -122,11 +92,11 @@ - + - + @@ -135,11 +105,11 @@ - + - + @@ -148,11 +118,11 @@ - + - + @@ -161,23 +131,23 @@ - + - + - + - + - + @@ -186,11 +156,11 @@ - + - + @@ -199,11 +169,11 @@ - + - + @@ -212,11 +182,11 @@ - + - + @@ -225,25 +195,7 @@ - - - - - - - - - - - - - - - - - - - + @@ -251,34 +203,16 @@ - + - - - - - - - - - - - - - - - - - - - + - + - + diff --git a/pengine/test10/whitebox-orphaned.summary b/pengine/test10/whitebox-orphaned.summary index 34841491857..7be845326ae 100644 --- a/pengine/test10/whitebox-orphaned.summary +++ b/pengine/test10/whitebox-orphaned.summary @@ -23,13 +23,9 @@ Transition Summary: Executing cluster transition: * Pseudo action: M-clone_stop_0 - * Resource action: A monitor on lxc2 * Resource action: B stop on lxc1 - * Resource action: B monitor on lxc2 - * Resource action: D monitor on lxc2 * Cluster action: clear_failcount for container1 on 18node2 * Cluster action: clear_failcount for lxc1 on 18node2 - * Pseudo action: probe_complete * Resource action: M stop on lxc1 * Pseudo action: M-clone_stopped_0 * Resource action: B start on lxc2 diff --git a/pengine/test10/whitebox-start.dot b/pengine/test10/whitebox-start.dot index f9866021e3d..bec57b08451 100644 --- a/pengine/test10/whitebox-start.dot +++ b/pengine/test10/whitebox-start.dot @@ -1,14 +1,4 @@ digraph "g" { -"A_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"A_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"A_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -"C_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"C_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"D_monitor_0 lxc1" -> "probe_complete lxc1" [ style = bold] -"D_monitor_0 lxc1" [ style=bold color="green" fontcolor="black"] -"D_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "M-clone_running_0" [ style=bold color="green" fontcolor="orange"] "M-clone_start_0" -> "M-clone_running_0" [ style = bold] "M-clone_start_0" -> "M_start_0 lxc1" [ style = bold] @@ -20,16 +10,8 @@ digraph "g" { "container1_start_0 18node1" -> "lxc1_start_0 18node1" [ style = bold] "container1_start_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc1_monitor_30000 18node1" [ style=bold color="green" fontcolor="black"] -"lxc1_start_0 18node1" -> "A_monitor_0 lxc1" [ style = bold] -"lxc1_start_0 18node1" -> "C_monitor_0 lxc1" [ style = bold] -"lxc1_start_0 18node1" -> "D_monitor_0 lxc1" [ style = bold] "lxc1_start_0 18node1" -> "M_monitor_10000 lxc1" [ style = bold] "lxc1_start_0 18node1" -> "M_start_0 lxc1" [ style = bold] "lxc1_start_0 18node1" -> "lxc1_monitor_30000 18node1" [ style = bold] "lxc1_start_0 18node1" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc1" -> "probe_complete" [ style = bold] -"probe_complete lxc1" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc2" -> "probe_complete" [ style = bold] -"probe_complete lxc2" [ style=bold color="green" fontcolor="black"] -"probe_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-start.exp b/pengine/test10/whitebox-start.exp index 1b8938e27ab..049fc6d1ecd 100644 --- a/pengine/test10/whitebox-start.exp +++ b/pengine/test10/whitebox-start.exp @@ -1,7 +1,7 @@ - + @@ -10,54 +10,54 @@ - + - + - + - + - + - + - + - + - + - + @@ -65,132 +65,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/pengine/test10/whitebox-start.summary b/pengine/test10/whitebox-start.summary index 777fe62ea36..2801abe21f5 100644 --- a/pengine/test10/whitebox-start.summary +++ b/pengine/test10/whitebox-start.summary @@ -22,16 +22,10 @@ Transition Summary: Executing cluster transition: * Resource action: container1 start on 18node1 * Pseudo action: M-clone_start_0 - * Resource action: A monitor on lxc2 - * Resource action: D monitor on lxc2 * Resource action: lxc1 start on 18node1 * Resource action: M start on lxc1 * Pseudo action: M-clone_running_0 - * Resource action: A monitor on lxc1 - * Resource action: C monitor on lxc1 - * Resource action: D monitor on lxc1 * Resource action: lxc1 monitor=30000 on 18node1 - * Pseudo action: probe_complete * Resource action: M monitor=10000 on lxc1 Revised cluster status: diff --git a/pengine/test10/whitebox-stop.dot b/pengine/test10/whitebox-stop.dot index 26dcb24112a..99004830988 100644 --- a/pengine/test10/whitebox-stop.dot +++ b/pengine/test10/whitebox-stop.dot @@ -1,8 +1,4 @@ digraph "g" { -"A_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] -"B_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"B_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] "B_start_0 lxc2" -> "B_monitor_10000 lxc2" [ style = bold] "B_start_0 lxc2" [ style=bold color="green" fontcolor="black"] @@ -10,8 +6,6 @@ digraph "g" { "B_stop_0 lxc1" -> "all_stopped" [ style = bold] "B_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] "B_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] -"D_monitor_0 lxc2" -> "probe_complete lxc2" [ style = bold] -"D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "M-clone_stop_0" -> "M-clone_stopped_0" [ style = bold] "M-clone_stop_0" -> "M_stop_0 lxc1" [ style = bold] "M-clone_stop_0" [ style=bold color="green" fontcolor="orange"] @@ -26,8 +20,4 @@ digraph "g" { "lxc1_stop_0 18node2" -> "all_stopped" [ style = bold] "lxc1_stop_0 18node2" -> "container1_stop_0 18node2" [ style = bold] "lxc1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] -"probe_complete lxc2" -> "probe_complete" [ style = bold] -"probe_complete lxc2" [ style=bold color="green" fontcolor="black"] -"probe_complete" -> "B_start_0 lxc2" [ style = bold] -"probe_complete" [ style=bold color="green" fontcolor="orange"] } diff --git a/pengine/test10/whitebox-stop.exp b/pengine/test10/whitebox-stop.exp index d32fdeabf77..71f1bf0e1b8 100644 --- a/pengine/test10/whitebox-stop.exp +++ b/pengine/test10/whitebox-stop.exp @@ -1,48 +1,48 @@ - + - + - + - + - + - + - + - + @@ -50,116 +50,56 @@ - - - - - - - - - - + - + - + - + - - - - + - + - + - - - - - - - - - - - - - - - - - - - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -167,16 +107,16 @@ - + - + - + - + diff --git a/pengine/test10/whitebox-stop.summary b/pengine/test10/whitebox-stop.summary index 8862c4b075b..51357b9552a 100644 --- a/pengine/test10/whitebox-stop.summary +++ b/pengine/test10/whitebox-stop.summary @@ -21,11 +21,7 @@ Transition Summary: Executing cluster transition: * Pseudo action: M-clone_stop_0 - * Resource action: A monitor on lxc2 * Resource action: B stop on lxc1 - * Resource action: B monitor on lxc2 - * Resource action: D monitor on lxc2 - * Pseudo action: probe_complete * Resource action: M stop on lxc1 * Pseudo action: M-clone_stopped_0 * Resource action: B start on lxc2 From e21a4d002684b5bb30071c7f66bb4db2ef4a7858 Mon Sep 17 00:00:00 2001 From: David Vossel Date: Tue, 19 Nov 2013 15:50:39 -0600 Subject: [PATCH 4/5] High: pengine: Recover unexpectedly running container nodes. Container node probes have been disabled because probing into containers has proven to introduce transition conflicts when certain ordering constraints are in use. Probing into container nodes is not entirely necessary though if we can be certain that when the container node starts, it is clean of any cluster resources. This patch allows us to safely assume that container nodes will always be started and controlled by the cluster. If a container node is started outside of the control of the cluster, the cluster will recover the container node to regain and guarantee control over it. In the future, we would like to enable probing into container nodes again. There a substantial amount of work to be done involving the order in which probes are executed before container probes can become a reality. --- include/crm/pengine/internal.h | 2 +- include/crm/pengine/status.h | 1 + lib/pengine/unpack.c | 28 ++++++++++++++++++++++++++-- lib/pengine/utils.c | 8 ++++---- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h index 04c8494afcb..46e63c4eb17 100644 --- a/include/crm/pengine/internal.h +++ b/include/crm/pengine/internal.h @@ -264,5 +264,5 @@ gboolean xml_contains_remote_node(xmlNode *xml); gboolean is_baremetal_remote_node(node_t *node); gboolean is_container_remote_node(node_t *node); gboolean is_remote_node(node_t *node); -gboolean rsc_contains_remote_node(pe_working_set_t * data_set, resource_t *rsc); +resource_t * rsc_contains_remote_node(pe_working_set_t * data_set, resource_t *rsc); #endif diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h index 689555a5c82..b7468130417 100644 --- a/include/crm/pengine/status.h +++ b/include/crm/pengine/status.h @@ -185,6 +185,7 @@ struct node_s { # define pe_rsc_migrating 0x00400000ULL # define pe_rsc_failure_ignored 0x01000000ULL +# define pe_rsc_unexpectedly_running 0x02000000ULL # define pe_rsc_needs_quorum 0x10000000ULL # define pe_rsc_needs_fencing 0x20000000ULL diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 892d0f0db0d..772fc91e373 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2057,6 +2057,9 @@ unpack_lrm_resources(node_t * node, xmlNode * lrm_rsc_list, pe_working_set_t * d { xmlNode *rsc_entry = NULL; gboolean found_orphaned_container_filler = FALSE; + GListPtr unexpected_containers = NULL; + GListPtr gIter = NULL; + resource_t *remote = NULL; CRM_CHECK(node != NULL, return FALSE); @@ -2068,9 +2071,29 @@ unpack_lrm_resources(node_t * node, xmlNode * lrm_rsc_list, pe_working_set_t * d if (crm_str_eq((const char *)rsc_entry->name, XML_LRM_TAG_RESOURCE, TRUE)) { resource_t *rsc; rsc = unpack_lrm_rsc_state(node, rsc_entry, data_set); - if (rsc && is_set(rsc->flags, pe_rsc_orphan_container_filler)) { + if (!rsc) { + continue; + } + if (is_set(rsc->flags, pe_rsc_orphan_container_filler)) { found_orphaned_container_filler = TRUE; } + if (is_set(rsc->flags, pe_rsc_unexpectedly_running)) { + remote = rsc_contains_remote_node(data_set, rsc); + if (remote) { + unexpected_containers = g_list_append(unexpected_containers, remote); + } + } + } + } + + /* If a container resource is unexpectedly up... and the remote-node + * connection resource for that container is not up, the entire container + * must be recovered. */ + for (gIter = unexpected_containers; gIter != NULL; gIter = gIter->next) { + remote = (resource_t *) gIter->data; + if (remote->role != RSC_ROLE_STARTED) { + crm_warn("Recovering container resource %s. Resource is unexpectedly running and involves a remote-node."); + set_bit(remote->container->flags, pe_rsc_failed); } } @@ -2080,7 +2103,7 @@ unpack_lrm_resources(node_t * node, xmlNode * lrm_rsc_list, pe_working_set_t * d if (found_orphaned_container_filler) { handle_orphaned_container_fillers(lrm_rsc_list, data_set); } - + g_list_free(unexpected_containers); return TRUE; } @@ -2464,6 +2487,7 @@ determine_op_status( result = PCMK_LRM_OP_DONE; pe_rsc_info(rsc, "Operation %s found resource %s active on %s", task, rsc->id, node->details->uname); + set_bit(rsc->flags, pe_rsc_unexpectedly_running); /* legacy code for pre-0.6.5 operations */ } else if (target_rc < 0 && interval > 0 && rsc->role == RSC_ROLE_MASTER) { diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index ac71de6c0f9..5d7ac23bfb3 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -1805,11 +1805,11 @@ is_remote_node(node_t *node) return FALSE; } -gboolean +resource_t * rsc_contains_remote_node(pe_working_set_t * data_set, resource_t *rsc) { if (is_set(data_set->flags, pe_flag_have_remote_nodes) == FALSE) { - return FALSE; + return NULL; } if (rsc->fillers) { @@ -1818,11 +1818,11 @@ rsc_contains_remote_node(pe_working_set_t * data_set, resource_t *rsc) resource_t *filler = (resource_t *) gIter->data; if (filler->is_remote_node) { - return TRUE; + return filler; } } } - return FALSE; + return NULL; } gboolean From 30df597af41770cfeccc29e3ce814e3e7c247a42 Mon Sep 17 00:00:00 2001 From: David Vossel Date: Tue, 19 Nov 2013 16:10:13 -0600 Subject: [PATCH 5/5] Low: pengine: Regression tests for recovering unexpectedly running container nodes --- pengine/regression.sh | 1 + .../test10/whitebox-unexpectedly-running.dot | 13 ++++ .../test10/whitebox-unexpectedly-running.exp | 75 +++++++++++++++++++ .../whitebox-unexpectedly-running.scores | 5 ++ .../whitebox-unexpectedly-running.summary | 24 ++++++ .../test10/whitebox-unexpectedly-running.xml | 44 +++++++++++ 6 files changed, 162 insertions(+) create mode 100644 pengine/test10/whitebox-unexpectedly-running.dot create mode 100644 pengine/test10/whitebox-unexpectedly-running.exp create mode 100644 pengine/test10/whitebox-unexpectedly-running.scores create mode 100644 pengine/test10/whitebox-unexpectedly-running.summary create mode 100644 pengine/test10/whitebox-unexpectedly-running.xml diff --git a/pengine/regression.sh b/pengine/regression.sh index 98dfb274172..06ab17cc961 100755 --- a/pengine/regression.sh +++ b/pengine/regression.sh @@ -714,6 +714,7 @@ do_test whitebox-ms-ordering "Verify promote/demote can not occur before connect do_test whitebox-ms-ordering "Verify promote/demote can not occur before connection is established" do_test whitebox-orphaned "Properly shutdown orphaned whitebox container" do_test whitebox-orphan-ms "Properly tear down orphan ms resources on remote-nodes" +do_test whitebox-unexpectedly-running "Recover container nodes the cluster did not start." echo "" do_test remote-startup-probes "Baremetal remote-node startup probes" diff --git a/pengine/test10/whitebox-unexpectedly-running.dot b/pengine/test10/whitebox-unexpectedly-running.dot new file mode 100644 index 00000000000..d87344a9849 --- /dev/null +++ b/pengine/test10/whitebox-unexpectedly-running.dot @@ -0,0 +1,13 @@ + digraph "g" { +"FAKE_monitor_60000 18builder" [ style=bold color="green" fontcolor="black"] +"FAKE_start_0 18builder" -> "FAKE_monitor_60000 18builder" [ style = bold] +"FAKE_start_0 18builder" -> "remote1_start_0 18builder" [ style = bold] +"FAKE_start_0 18builder" [ style=bold color="green" fontcolor="black"] +"FAKE_stop_0 18builder" -> "FAKE_start_0 18builder" [ style = bold] +"FAKE_stop_0 18builder" -> "all_stopped" [ style = bold] +"FAKE_stop_0 18builder" [ style=bold color="green" fontcolor="black"] +"all_stopped" [ style=bold color="green" fontcolor="orange"] +"remote1_monitor_30000 18builder" [ style=bold color="green" fontcolor="black"] +"remote1_start_0 18builder" -> "remote1_monitor_30000 18builder" [ style = bold] +"remote1_start_0 18builder" [ style=bold color="green" fontcolor="black"] +} diff --git a/pengine/test10/whitebox-unexpectedly-running.exp b/pengine/test10/whitebox-unexpectedly-running.exp new file mode 100644 index 00000000000..69994074bf1 --- /dev/null +++ b/pengine/test10/whitebox-unexpectedly-running.exp @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pengine/test10/whitebox-unexpectedly-running.scores b/pengine/test10/whitebox-unexpectedly-running.scores new file mode 100644 index 00000000000..7f8a1d91c58 --- /dev/null +++ b/pengine/test10/whitebox-unexpectedly-running.scores @@ -0,0 +1,5 @@ +Allocation scores: +native_color: FAKE allocation score on 18builder: 0 +native_color: FAKE allocation score on remote1: -INFINITY +native_color: remote1 allocation score on 18builder: 0 +native_color: remote1 allocation score on remote1: -INFINITY diff --git a/pengine/test10/whitebox-unexpectedly-running.summary b/pengine/test10/whitebox-unexpectedly-running.summary new file mode 100644 index 00000000000..f834e417a74 --- /dev/null +++ b/pengine/test10/whitebox-unexpectedly-running.summary @@ -0,0 +1,24 @@ + +Current cluster status: +Online: [ 18builder ] + + FAKE (ocf::pacemaker:Dummy): FAILED 18builder + +Transition Summary: + * Recover FAKE (Started 18builder) + * Start remote1 (18builder) + +Executing cluster transition: + * Resource action: FAKE stop on 18builder + * Pseudo action: all_stopped + * Resource action: FAKE start on 18builder + * Resource action: remote1 start on 18builder + * Resource action: FAKE monitor=60000 on 18builder + * Resource action: remote1 monitor=30000 on 18builder + +Revised cluster status: +Online: [ 18builder ] +Containers: [ remote1:FAKE ] + + FAKE (ocf::pacemaker:Dummy): Started 18builder + diff --git a/pengine/test10/whitebox-unexpectedly-running.xml b/pengine/test10/whitebox-unexpectedly-running.xml new file mode 100644 index 00000000000..4ec20c472cf --- /dev/null +++ b/pengine/test10/whitebox-unexpectedly-running.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +