From e7308f95f4a368d5c582ca114a4b29dde56d0556 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= Date: Wed, 2 May 2018 19:17:17 +0200 Subject: [PATCH] 2.0.0-0.1.rc3 - Update for new upstream tarball MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ...for release candidate: Pacemaker-2.0.0-rc3, for full details, see included ChangeLog file or https://github.com/ClusterLabs/pacemaker/releases/tag/Pacemaker-2.0.0-rc3 Adapt spec file more akin to upstream version including: . new --without legacy_links conditional (c8a7e5225) . reflect name change of the auxiliary daemons (e4f4a0d64, db5536e40, e2fdc2bac + 9ecbfea1c, 038c465e2 + ed8ce4055a) . new dummy systemd service for -cts (bf0a22812) . honor system-wide crypto policies once for all, via package-build-time configurable "pcmk_gnutls_priorities" defaulting to @SYSTEM as prescribed in https://fedoraproject.org/wiki/Packaging:CryptoPolicies (based on b3dfce1d3) Adapt spec file akin to current packaging guidelines including: . make -nagios-plugins-metadata package noarch Drop patches that got subsumed in upstream Signed-off-by: Jan Pokorný --- ...-Ensure-failures-that-cause-fencing-.patch | 43 - ...7-Ensure-failures-that-cause-fencing.patch | 2739 ----------------- ...-create_mode-is-now-controlled-by-up.patch | 29 - ...-scripts-to-use-new-BASH_PATH-subsit.patch | 178 -- ...on-t-use-readlink-e-unless-supported.patch | 104 - ...ommon-move-PID-functions-to-own-file.patch | 511 --- ...ommon-shuffle-some-internal-declarat.patch | 66 - ...-resource-from-lrmd-when-appropriate.patch | 29 - ...ate-expected-results-for-recent-chan.patch | 49 - ...Test-cts-cli-cts-pengine-avoid-sed-i.patch | 106 - ...nly-link-against-necessary-libraries.patch | 171 - ...-dynamic-memory-at-stonithd-shutdown.patch | 268 -- ...d-memory-leaks-when-freeing-remote-o.patch | 33 - ...-fix-memory-leak-in-schema-workaroun.patch | 25 - ...-free-signal-triggers-when-cleaning-.patch | 86 - ...uild-and-clean-but-not-install-CTS-b.patch | 68 - ...crmcommon-avoid-new-as-variable-name.patch | 196 -- ...x-thinko-leading-to-system-wide-shad.patch | 92 - ...toconf-variable-substitution-in-the-.patch | 23 - bz1179335-system-wide-crypto-policies.patch | 14 - pacemaker.spec | 122 +- sources | 2 +- 22 files changed, 72 insertions(+), 4882 deletions(-) delete mode 100644 0001-Fix-rhbz-1565187-Ensure-failures-that-cause-fencing-.patch delete mode 100644 0002-Test-rhbz-1565187-Ensure-failures-that-cause-fencing.patch delete mode 100644 0003-Test-cts-pengine-create_mode-is-now-controlled-by-up.patch delete mode 100644 0004-Build-cts-update-scripts-to-use-new-BASH_PATH-subsit.patch delete mode 100644 0005-Test-cts-don-t-use-readlink-e-unless-supported.patch delete mode 100644 0006-Refactor-libcrmcommon-move-PID-functions-to-own-file.patch delete mode 100644 0007-Refactor-libcrmcommon-shuffle-some-internal-declarat.patch delete mode 100644 0008-High-crmd-delete-resource-from-lrmd-when-appropriate.patch delete mode 100644 0009-Test-cts-cli-update-expected-results-for-recent-chan.patch delete mode 100644 0010-Test-cts-cli-cts-pengine-avoid-sed-i.patch delete mode 100644 0011-Build-tools-only-link-against-necessary-libraries.patch delete mode 100644 0012-Low-fencing-free-dynamic-memory-at-stonithd-shutdown.patch delete mode 100644 0013-Low-fencing-avoid-memory-leaks-when-freeing-remote-o.patch delete mode 100644 0014-Low-libcrmcommon-fix-memory-leak-in-schema-workaroun.patch delete mode 100644 0015-Low-libcrmcommon-free-signal-triggers-when-cleaning-.patch delete mode 100644 0016-Build-Makefile-build-and-clean-but-not-install-CTS-b.patch delete mode 100644 0017-Refactor-libcrmcommon-avoid-new-as-variable-name.patch delete mode 100644 0018-Tests-cts-cli-fix-thinko-leading-to-system-wide-shad.patch delete mode 100644 0019-Build-cts-fix-autoconf-variable-substitution-in-the-.patch delete mode 100644 bz1179335-system-wide-crypto-policies.patch diff --git a/0001-Fix-rhbz-1565187-Ensure-failures-that-cause-fencing-.patch b/0001-Fix-rhbz-1565187-Ensure-failures-that-cause-fencing-.patch deleted file mode 100644 index c20d745..0000000 --- a/0001-Fix-rhbz-1565187-Ensure-failures-that-cause-fencing-.patch +++ /dev/null @@ -1,43 +0,0 @@ -From b2bd800e70547990c00b8e8efc67b930e699887b Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 11 Apr 2018 11:48:13 +1000 -Subject: [PATCH 01/17] Fix: rhbz#1565187 - Ensure failures that cause fencing - are not removed until after fencing completes - ---- - lib/pengine/unpack.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c -index fcfd7ccbf..6b1e519c7 100644 ---- a/lib/pengine/unpack.c -+++ b/lib/pengine/unpack.c -@@ -2807,6 +2807,7 @@ static bool check_operation_expiry(resource_t *rsc, node_t *node, int rc, xmlNod - } - - if (clear_reason != NULL) { -+ node_t *remote_node = pe_find_node(data_set->nodes, rsc->id); - char *key = generate_op_key(rsc->id, CRM_OP_CLEAR_FAILCOUNT, 0); - action_t *clear_op = custom_action(rsc, key, CRM_OP_CLEAR_FAILCOUNT, - node, FALSE, TRUE, data_set); -@@ -2815,6 +2816,17 @@ static bool check_operation_expiry(resource_t *rsc, node_t *node, int rc, xmlNod - - crm_notice("Clearing failure of %s on %s because %s " CRM_XS " %s", - rsc->id, node->details->uname, clear_reason, clear_op->uuid); -+ -+ if (is_set(data_set->flags, pe_flag_stonith_enabled) -+ && rsc->remote_reconnect_ms -+ && remote_node -+ && remote_node->details->unclean) { -+ -+ action_t *fence = pe_fence_op(remote_node, NULL, TRUE, NULL, data_set); -+ crm_notice("Waiting for %s to complete before clearing %s failure for remote node %s", fence?fence->uuid:"nil", task, rsc->id); -+ -+ order_actions(fence, clear_op, pe_order_implies_then); -+ } - } - - if (expired && (interval_ms == 0) && safe_str_eq(task, CRMD_ACTION_STATUS)) { --- -2.17.0 - diff --git a/0002-Test-rhbz-1565187-Ensure-failures-that-cause-fencing.patch b/0002-Test-rhbz-1565187-Ensure-failures-that-cause-fencing.patch deleted file mode 100644 index d34c770..0000000 --- a/0002-Test-rhbz-1565187-Ensure-failures-that-cause-fencing.patch +++ /dev/null @@ -1,2739 +0,0 @@ -From f135bf40868601f456eb20afd2c9a8ec20f54bc6 Mon Sep 17 00:00:00 2001 -From: Andrew Beekhof -Date: Wed, 11 Apr 2018 12:11:29 +1000 -Subject: [PATCH 02/17] Test: rhbz#1565187 - Ensure failures that cause fencing - are not removed until after fencing completes - ---- - cts/cts-pengine.in | 6 + - cts/pengine/order-expired-failure.dot | 50 + - cts/pengine/order-expired-failure.exp | 343 ++++++ - cts/pengine/order-expired-failure.scores | 938 ++++++++++++++++ - cts/pengine/order-expired-failure.stderr | 1 + - cts/pengine/order-expired-failure.summary | 131 +++ - cts/pengine/order-expired-failure.xml | 1191 +++++++++++++++++++++ - 7 files changed, 2660 insertions(+) - create mode 100644 cts/pengine/order-expired-failure.dot - create mode 100644 cts/pengine/order-expired-failure.exp - create mode 100644 cts/pengine/order-expired-failure.scores - create mode 100644 cts/pengine/order-expired-failure.stderr - create mode 100644 cts/pengine/order-expired-failure.summary - create mode 100644 cts/pengine/order-expired-failure.xml - -diff --git a/cts/cts-pengine.in b/cts/cts-pengine.in -index 0f8ad7fce..ca29d76c3 100644 ---- a/cts/cts-pengine.in -+++ b/cts/cts-pengine.in -@@ -391,6 +391,11 @@ if [ -n "$single_test" ]; then - fi - - DO_VERSIONED_TESTS=0 -+create_mode=true -+# info Creating the following tests from $io_dir -+# do_test order-expired-failure "Order failcount cleanup after remote fencing" -+ -+create_mode=false - - info Performing the following tests from $io_dir - echo "" -@@ -916,6 +921,7 @@ do_test obsolete-lrm-resource "cl#5115 - Do not use obsolete lrm_resource sectio - do_test expire-non-blocked-failure "Ignore failure-timeout only if the failed operation has on-fail=block" - do_test asymmetrical-order-move "Respect asymmetrical ordering when trying to move resources" - do_test start-then-stop-with-unfence "Avoid graph loop with start-then-stop constraint plus unfencing" -+do_test order-expired-failure "Order failcount cleanup after remote fencing" - - do_test ignore_stonith_rsc_order1 "cl#5056- Ignore order constraint between stonith and non-stonith rsc." - do_test ignore_stonith_rsc_order2 "cl#5056- Ignore order constraint with group rsc containing mixed stonith and non-stonith." -diff --git a/cts/pengine/order-expired-failure.dot b/cts/pengine/order-expired-failure.dot -new file mode 100644 -index 000000000..91a257309 ---- /dev/null -+++ b/cts/pengine/order-expired-failure.dot -@@ -0,0 +1,50 @@ -+digraph "g" { -+"Cancel galera-bundle-0_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"Cancel galera-bundle-1_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"Cancel galera-bundle-2_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] -+"Cancel rabbitmq-bundle-0_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"Cancel rabbitmq-bundle-1_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"Cancel rabbitmq-bundle-2_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] -+"Cancel redis-bundle-0_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"Cancel redis-bundle-1_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"] -+"Cancel redis-bundle-2_monitor_60000 controller-1" [ style=bold color="green" fontcolor="black"] -+"all_stopped" [ style=bold color="green" fontcolor="orange"] -+"compute-unfence-trigger-clone_stop_0" -> "compute-unfence-trigger-clone_stopped_0" [ style = bold] -+"compute-unfence-trigger-clone_stop_0" -> "compute-unfence-trigger_stop_0 overcloud-novacompute-1" [ style = bold] -+"compute-unfence-trigger-clone_stop_0" [ style=bold color="green" fontcolor="orange"] -+"compute-unfence-trigger-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] -+"compute-unfence-trigger_stop_0 overcloud-novacompute-1" -> "all_stopped" [ style = bold] -+"compute-unfence-trigger_stop_0 overcloud-novacompute-1" -> "compute-unfence-trigger-clone_stopped_0" [ style = bold] -+"compute-unfence-trigger_stop_0 overcloud-novacompute-1" -> "overcloud-novacompute-1_stop_0 controller-1" [ style = bold] -+"compute-unfence-trigger_stop_0 overcloud-novacompute-1" [ style=bold color="green" fontcolor="orange"] -+"galera-bundle-0_monitor_30000 controller-2" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-1_monitor_30000 controller-0" [ style=bold color="green" fontcolor="black"] -+"galera-bundle-2_monitor_30000 controller-1" [ style=bold color="green" fontcolor="black"] -+"ip-10.0.0.110_monitor_10000 controller-1" [ style=bold color="green" fontcolor="black"] -+"ip-10.0.0.110_start_0 controller-1" -> "ip-10.0.0.110_monitor_10000 controller-1" [ style = bold] -+"ip-10.0.0.110_start_0 controller-1" [ style=bold color="green" fontcolor="black"] -+"overcloud-novacompute-1_clear_failcount_0 controller-1" [ style=bold color="green" fontcolor="black"] -+"overcloud-novacompute-1_stop_0 controller-1" -> "all_stopped" [ style = bold] -+"overcloud-novacompute-1_stop_0 controller-1" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-0_monitor_30000 controller-2" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-1_monitor_30000 controller-0" [ style=bold color="green" fontcolor="black"] -+"rabbitmq-bundle-2_monitor_30000 controller-1" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-0_monitor_30000 controller-2" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-1_monitor_30000 controller-0" [ style=bold color="green" fontcolor="black"] -+"redis-bundle-2_monitor_30000 controller-1" [ style=bold color="green" fontcolor="black"] -+"stonith 'reboot' overcloud-novacompute-1" -> "compute-unfence-trigger-clone_stop_0" [ style = bold] -+"stonith 'reboot' overcloud-novacompute-1" -> "compute-unfence-trigger_stop_0 overcloud-novacompute-1" [ style = bold] -+"stonith 'reboot' overcloud-novacompute-1" -> "overcloud-novacompute-1_clear_failcount_0 controller-1" [ style = bold] -+"stonith 'reboot' overcloud-novacompute-1" -> "stonith_complete" [ style = bold] -+"stonith 'reboot' overcloud-novacompute-1" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_compute-fence-nova_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_compute-fence-nova_start_0 controller-2" -> "stonith-fence_compute-fence-nova_monitor_60000 controller-2" [ style = bold] -+"stonith-fence_compute-fence-nova_start_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith-fence_compute-fence-nova_stop_0 controller-2" -> "all_stopped" [ style = bold] -+"stonith-fence_compute-fence-nova_stop_0 controller-2" -> "stonith-fence_compute-fence-nova_start_0 controller-2" [ style = bold] -+"stonith-fence_compute-fence-nova_stop_0 controller-2" [ style=bold color="green" fontcolor="black"] -+"stonith_complete" -> "all_stopped" [ style = bold] -+"stonith_complete" -> "ip-10.0.0.110_start_0 controller-1" [ style = bold] -+"stonith_complete" -> "stonith-fence_compute-fence-nova_start_0 controller-2" [ style = bold] -+"stonith_complete" [ style=bold color="green" fontcolor="orange"] -+} -diff --git a/cts/pengine/order-expired-failure.exp b/cts/pengine/order-expired-failure.exp -new file mode 100644 -index 000000000..4e4203b1a ---- /dev/null -+++ b/cts/pengine/order-expired-failure.exp -@@ -0,0 +1,343 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/cts/pengine/order-expired-failure.scores b/cts/pengine/order-expired-failure.scores -new file mode 100644 -index 000000000..78d27e38e ---- /dev/null -+++ b/cts/pengine/order-expired-failure.scores -@@ -0,0 +1,938 @@ -+Allocation scores: -+Using the original execution date of: 2018-04-09 07:55:35Z -+clone_color: compute-unfence-trigger-clone allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger-clone allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger-clone allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger-clone allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on overcloud-novacompute-0: 1 -+clone_color: compute-unfence-trigger:0 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:0 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:1 allocation score on overcloud-novacompute-1: 1 -+clone_color: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:1 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:10 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:10 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:11 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:11 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:12 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:12 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:13 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:13 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:2 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:2 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:3 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:3 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:4 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:4 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:5 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:5 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:6 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:6 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:7 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:7 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:8 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:8 allocation score on redis-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on controller-0: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on controller-1: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on controller-2: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on galera-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on galera-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on galera-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on overcloud-novacompute-0: 0 -+clone_color: compute-unfence-trigger:9 allocation score on overcloud-novacompute-1: 0 -+clone_color: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-2: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on redis-bundle-0: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on redis-bundle-1: -INFINITY -+clone_color: compute-unfence-trigger:9 allocation score on redis-bundle-2: -INFINITY -+clone_color: galera-bundle-master allocation score on controller-0: -INFINITY -+clone_color: galera-bundle-master allocation score on controller-1: -INFINITY -+clone_color: galera-bundle-master allocation score on controller-2: -INFINITY -+clone_color: galera-bundle-master allocation score on galera-bundle-0: 0 -+clone_color: galera-bundle-master allocation score on galera-bundle-1: 0 -+clone_color: galera-bundle-master allocation score on galera-bundle-2: 0 -+clone_color: galera-bundle-master allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: galera-bundle-master allocation score on overcloud-novacompute-1: -INFINITY -+clone_color: galera:0 allocation score on galera-bundle-0: INFINITY -+clone_color: galera:1 allocation score on galera-bundle-1: INFINITY -+clone_color: galera:2 allocation score on galera-bundle-2: INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on controller-0: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on controller-1: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on controller-2: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on overcloud-novacompute-1: -INFINITY -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0 -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: 0 -+clone_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: 0 -+clone_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+clone_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+clone_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY -+clone_color: redis-bundle-master allocation score on controller-0: -INFINITY -+clone_color: redis-bundle-master allocation score on controller-1: -INFINITY -+clone_color: redis-bundle-master allocation score on controller-2: -INFINITY -+clone_color: redis-bundle-master allocation score on overcloud-novacompute-0: -INFINITY -+clone_color: redis-bundle-master allocation score on overcloud-novacompute-1: -INFINITY -+clone_color: redis-bundle-master allocation score on redis-bundle-0: 0 -+clone_color: redis-bundle-master allocation score on redis-bundle-1: 0 -+clone_color: redis-bundle-master allocation score on redis-bundle-2: 0 -+clone_color: redis:0 allocation score on redis-bundle-0: INFINITY -+clone_color: redis:1 allocation score on redis-bundle-1: INFINITY -+clone_color: redis:2 allocation score on redis-bundle-2: INFINITY -+container_color: galera-bundle allocation score on controller-0: 0 -+container_color: galera-bundle allocation score on controller-1: 0 -+container_color: galera-bundle allocation score on controller-2: 0 -+container_color: galera-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: galera-bundle-0 allocation score on controller-0: 0 -+container_color: galera-bundle-0 allocation score on controller-1: 0 -+container_color: galera-bundle-0 allocation score on controller-2: 0 -+container_color: galera-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: galera-bundle-1 allocation score on controller-0: 0 -+container_color: galera-bundle-1 allocation score on controller-1: 0 -+container_color: galera-bundle-1 allocation score on controller-2: 0 -+container_color: galera-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: galera-bundle-2 allocation score on controller-0: 0 -+container_color: galera-bundle-2 allocation score on controller-1: 0 -+container_color: galera-bundle-2 allocation score on controller-2: 0 -+container_color: galera-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on controller-0: 0 -+container_color: galera-bundle-docker-0 allocation score on controller-1: 0 -+container_color: galera-bundle-docker-0 allocation score on controller-2: 0 -+container_color: galera-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on controller-0: 0 -+container_color: galera-bundle-docker-1 allocation score on controller-1: 0 -+container_color: galera-bundle-docker-1 allocation score on controller-2: 0 -+container_color: galera-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on controller-0: 0 -+container_color: galera-bundle-docker-2 allocation score on controller-1: 0 -+container_color: galera-bundle-docker-2 allocation score on controller-2: 0 -+container_color: galera-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: galera-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: galera-bundle-master allocation score on controller-0: 0 -+container_color: galera-bundle-master allocation score on controller-1: 0 -+container_color: galera-bundle-master allocation score on controller-2: 0 -+container_color: galera-bundle-master allocation score on galera-bundle-0: -INFINITY -+container_color: galera-bundle-master allocation score on galera-bundle-1: -INFINITY -+container_color: galera-bundle-master allocation score on galera-bundle-2: -INFINITY -+container_color: galera-bundle-master allocation score on overcloud-novacompute-0: 0 -+container_color: galera-bundle-master allocation score on overcloud-novacompute-1: 0 -+container_color: galera:0 allocation score on galera-bundle-0: 501 -+container_color: galera:1 allocation score on galera-bundle-1: 501 -+container_color: galera:2 allocation score on galera-bundle-2: 501 -+container_color: haproxy-bundle allocation score on controller-0: 0 -+container_color: haproxy-bundle allocation score on controller-0: 0 -+container_color: haproxy-bundle allocation score on controller-0: 0 -+container_color: haproxy-bundle allocation score on controller-0: 0 -+container_color: haproxy-bundle allocation score on controller-0: 0 -+container_color: haproxy-bundle allocation score on controller-0: 0 -+container_color: haproxy-bundle allocation score on controller-0: 0 -+container_color: haproxy-bundle allocation score on controller-1: 0 -+container_color: haproxy-bundle allocation score on controller-1: 0 -+container_color: haproxy-bundle allocation score on controller-1: 0 -+container_color: haproxy-bundle allocation score on controller-1: 0 -+container_color: haproxy-bundle allocation score on controller-1: 0 -+container_color: haproxy-bundle allocation score on controller-1: 0 -+container_color: haproxy-bundle allocation score on controller-1: 0 -+container_color: haproxy-bundle allocation score on controller-2: 0 -+container_color: haproxy-bundle allocation score on controller-2: 0 -+container_color: haproxy-bundle allocation score on controller-2: 0 -+container_color: haproxy-bundle allocation score on controller-2: 0 -+container_color: haproxy-bundle allocation score on controller-2: 0 -+container_color: haproxy-bundle allocation score on controller-2: 0 -+container_color: haproxy-bundle allocation score on controller-2: 0 -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-0: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 -+container_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on controller-2: 0 -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: openstack-cinder-volume allocation score on controller-0: 0 -+container_color: openstack-cinder-volume allocation score on controller-1: 0 -+container_color: openstack-cinder-volume allocation score on controller-2: 0 -+container_color: openstack-cinder-volume allocation score on overcloud-novacompute-0: -INFINITY -+container_color: openstack-cinder-volume allocation score on overcloud-novacompute-1: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on controller-0: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on controller-1: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on controller-2: 0 -+container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: openstack-cinder-volume-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: rabbitmq-bundle allocation score on controller-0: 0 -+container_color: rabbitmq-bundle allocation score on controller-1: 0 -+container_color: rabbitmq-bundle allocation score on controller-2: 0 -+container_color: rabbitmq-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-0 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-0 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-1 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-1 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-2 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-2 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: rabbitmq-bundle-clone allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-clone allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-novacompute-0: 0 -+container_color: rabbitmq-bundle-clone allocation score on overcloud-novacompute-1: 0 -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: -INFINITY -+container_color: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-docker-1 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-docker-1 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on controller-0: 0 -+container_color: rabbitmq-bundle-docker-2 allocation score on controller-1: 0 -+container_color: rabbitmq-bundle-docker-2 allocation score on controller-2: 0 -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: rabbitmq-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: 501 -+container_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: 501 -+container_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: 501 -+container_color: redis-bundle allocation score on controller-0: 0 -+container_color: redis-bundle allocation score on controller-1: 0 -+container_color: redis-bundle allocation score on controller-2: 0 -+container_color: redis-bundle allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle allocation score on overcloud-novacompute-1: -INFINITY -+container_color: redis-bundle-0 allocation score on controller-0: 0 -+container_color: redis-bundle-0 allocation score on controller-1: 0 -+container_color: redis-bundle-0 allocation score on controller-2: 0 -+container_color: redis-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: redis-bundle-1 allocation score on controller-0: 0 -+container_color: redis-bundle-1 allocation score on controller-1: 0 -+container_color: redis-bundle-1 allocation score on controller-2: 0 -+container_color: redis-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: redis-bundle-2 allocation score on controller-0: 0 -+container_color: redis-bundle-2 allocation score on controller-1: 0 -+container_color: redis-bundle-2 allocation score on controller-2: 0 -+container_color: redis-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on controller-0: 0 -+container_color: redis-bundle-docker-0 allocation score on controller-1: 0 -+container_color: redis-bundle-docker-0 allocation score on controller-2: 0 -+container_color: redis-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on controller-0: 0 -+container_color: redis-bundle-docker-1 allocation score on controller-1: 0 -+container_color: redis-bundle-docker-1 allocation score on controller-2: 0 -+container_color: redis-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on controller-0: 0 -+container_color: redis-bundle-docker-2 allocation score on controller-1: 0 -+container_color: redis-bundle-docker-2 allocation score on controller-2: 0 -+container_color: redis-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+container_color: redis-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+container_color: redis-bundle-master allocation score on controller-0: 0 -+container_color: redis-bundle-master allocation score on controller-1: 0 -+container_color: redis-bundle-master allocation score on controller-2: 0 -+container_color: redis-bundle-master allocation score on overcloud-novacompute-0: 0 -+container_color: redis-bundle-master allocation score on overcloud-novacompute-1: 0 -+container_color: redis-bundle-master allocation score on redis-bundle-0: -INFINITY -+container_color: redis-bundle-master allocation score on redis-bundle-1: -INFINITY -+container_color: redis-bundle-master allocation score on redis-bundle-2: -INFINITY -+container_color: redis:0 allocation score on redis-bundle-0: 501 -+container_color: redis:1 allocation score on redis-bundle-1: 501 -+container_color: redis:2 allocation score on redis-bundle-2: 501 -+galera:0 promotion score on galera-bundle-0: 100 -+galera:1 promotion score on galera-bundle-1: 100 -+galera:2 promotion score on galera-bundle-2: 100 -+native_color: compute-unfence-trigger:0 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on overcloud-novacompute-0: 1 -+native_color: compute-unfence-trigger:0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:0 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:1 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:10 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:11 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:12 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:13 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:2 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:3 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:4 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:5 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:6 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:7 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:8 allocation score on redis-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on controller-0: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on controller-1: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on controller-2: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on galera-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on galera-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on galera-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on redis-bundle-0: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on redis-bundle-1: -INFINITY -+native_color: compute-unfence-trigger:9 allocation score on redis-bundle-2: -INFINITY -+native_color: galera-bundle-0 allocation score on controller-0: 0 -+native_color: galera-bundle-0 allocation score on controller-1: 0 -+native_color: galera-bundle-0 allocation score on controller-2: 10000 -+native_color: galera-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: galera-bundle-1 allocation score on controller-0: 10000 -+native_color: galera-bundle-1 allocation score on controller-1: 0 -+native_color: galera-bundle-1 allocation score on controller-2: 0 -+native_color: galera-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: galera-bundle-2 allocation score on controller-0: 0 -+native_color: galera-bundle-2 allocation score on controller-1: 10000 -+native_color: galera-bundle-2 allocation score on controller-2: 0 -+native_color: galera-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-2 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on controller-0: 0 -+native_color: galera-bundle-docker-0 allocation score on controller-1: 0 -+native_color: galera-bundle-docker-0 allocation score on controller-2: 0 -+native_color: galera-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on controller-0: 0 -+native_color: galera-bundle-docker-1 allocation score on controller-1: 0 -+native_color: galera-bundle-docker-1 allocation score on controller-2: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on controller-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on controller-1: 0 -+native_color: galera-bundle-docker-2 allocation score on controller-2: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: galera-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: galera:0 allocation score on galera-bundle-0: INFINITY -+native_color: galera:1 allocation score on galera-bundle-1: INFINITY -+native_color: galera:2 allocation score on galera-bundle-2: INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on controller-0: 0 -+native_color: haproxy-bundle-docker-0 allocation score on controller-1: 0 -+native_color: haproxy-bundle-docker-0 allocation score on controller-2: 0 -+native_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: haproxy-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on controller-0: 0 -+native_color: haproxy-bundle-docker-1 allocation score on controller-1: 0 -+native_color: haproxy-bundle-docker-1 allocation score on controller-2: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: haproxy-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on controller-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on controller-1: 0 -+native_color: haproxy-bundle-docker-2 allocation score on controller-2: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: haproxy-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: ip-10.0.0.110 allocation score on controller-0: 0 -+native_color: ip-10.0.0.110 allocation score on controller-1: 0 -+native_color: ip-10.0.0.110 allocation score on controller-2: 0 -+native_color: ip-10.0.0.110 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-10.0.0.110 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: ip-172.17.1.14 allocation score on controller-0: 0 -+native_color: ip-172.17.1.14 allocation score on controller-1: 0 -+native_color: ip-172.17.1.14 allocation score on controller-2: 0 -+native_color: ip-172.17.1.14 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-172.17.1.14 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: ip-172.17.1.17 allocation score on controller-0: 0 -+native_color: ip-172.17.1.17 allocation score on controller-1: 0 -+native_color: ip-172.17.1.17 allocation score on controller-2: 0 -+native_color: ip-172.17.1.17 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-172.17.1.17 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: ip-172.17.3.11 allocation score on controller-0: 0 -+native_color: ip-172.17.3.11 allocation score on controller-1: 0 -+native_color: ip-172.17.3.11 allocation score on controller-2: 0 -+native_color: ip-172.17.3.11 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-172.17.3.11 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: ip-172.17.4.17 allocation score on controller-0: 0 -+native_color: ip-172.17.4.17 allocation score on controller-1: 0 -+native_color: ip-172.17.4.17 allocation score on controller-2: 0 -+native_color: ip-172.17.4.17 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-172.17.4.17 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: ip-192.168.24.11 allocation score on controller-0: 0 -+native_color: ip-192.168.24.11 allocation score on controller-1: 0 -+native_color: ip-192.168.24.11 allocation score on controller-2: 0 -+native_color: ip-192.168.24.11 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: ip-192.168.24.11 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: nova-evacuate allocation score on controller-0: 0 -+native_color: nova-evacuate allocation score on controller-1: 0 -+native_color: nova-evacuate allocation score on controller-2: 0 -+native_color: nova-evacuate allocation score on overcloud-novacompute-0: -INFINITY -+native_color: nova-evacuate allocation score on overcloud-novacompute-1: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on controller-0: 0 -+native_color: openstack-cinder-volume-docker-0 allocation score on controller-1: 0 -+native_color: openstack-cinder-volume-docker-0 allocation score on controller-2: 0 -+native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: openstack-cinder-volume-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on controller-0: 0 -+native_color: overcloud-novacompute-0 allocation score on controller-1: 0 -+native_color: overcloud-novacompute-0 allocation score on controller-2: 0 -+native_color: overcloud-novacompute-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: overcloud-novacompute-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on controller-0: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on controller-1: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on controller-2: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on galera-bundle-0: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on galera-bundle-1: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on galera-bundle-2: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on rabbitmq-bundle-0: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on rabbitmq-bundle-1: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on rabbitmq-bundle-2: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on redis-bundle-0: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on redis-bundle-1: -INFINITY -+native_color: overcloud-novacompute-1 allocation score on redis-bundle-2: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on controller-0: 0 -+native_color: rabbitmq-bundle-0 allocation score on controller-1: 0 -+native_color: rabbitmq-bundle-0 allocation score on controller-2: 10000 -+native_color: rabbitmq-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on controller-0: 10000 -+native_color: rabbitmq-bundle-1 allocation score on controller-1: 0 -+native_color: rabbitmq-bundle-1 allocation score on controller-2: 0 -+native_color: rabbitmq-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on controller-0: 0 -+native_color: rabbitmq-bundle-2 allocation score on controller-1: 10000 -+native_color: rabbitmq-bundle-2 allocation score on controller-2: 0 -+native_color: rabbitmq-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-2 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on controller-0: 0 -+native_color: rabbitmq-bundle-docker-0 allocation score on controller-1: 0 -+native_color: rabbitmq-bundle-docker-0 allocation score on controller-2: 0 -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on controller-0: 0 -+native_color: rabbitmq-bundle-docker-1 allocation score on controller-1: 0 -+native_color: rabbitmq-bundle-docker-1 allocation score on controller-2: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on controller-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on controller-1: 0 -+native_color: rabbitmq-bundle-docker-2 allocation score on controller-2: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: rabbitmq-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY -+native_color: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY -+native_color: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY -+native_color: redis-bundle-0 allocation score on controller-0: 0 -+native_color: redis-bundle-0 allocation score on controller-1: 0 -+native_color: redis-bundle-0 allocation score on controller-2: 10000 -+native_color: redis-bundle-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: redis-bundle-1 allocation score on controller-0: 10000 -+native_color: redis-bundle-1 allocation score on controller-1: 0 -+native_color: redis-bundle-1 allocation score on controller-2: 0 -+native_color: redis-bundle-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: redis-bundle-2 allocation score on controller-0: 0 -+native_color: redis-bundle-2 allocation score on controller-1: 10000 -+native_color: redis-bundle-2 allocation score on controller-2: 0 -+native_color: redis-bundle-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-2 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on controller-0: 0 -+native_color: redis-bundle-docker-0 allocation score on controller-1: 0 -+native_color: redis-bundle-docker-0 allocation score on controller-2: 0 -+native_color: redis-bundle-docker-0 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-docker-0 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on controller-0: 0 -+native_color: redis-bundle-docker-1 allocation score on controller-1: 0 -+native_color: redis-bundle-docker-1 allocation score on controller-2: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-docker-1 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on controller-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on controller-1: 0 -+native_color: redis-bundle-docker-2 allocation score on controller-2: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: redis-bundle-docker-2 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: redis:0 allocation score on redis-bundle-0: INFINITY -+native_color: redis:1 allocation score on redis-bundle-1: INFINITY -+native_color: redis:2 allocation score on redis-bundle-2: INFINITY -+native_color: stonith-fence_compute-fence-nova allocation score on controller-0: 0 -+native_color: stonith-fence_compute-fence-nova allocation score on controller-1: 0 -+native_color: stonith-fence_compute-fence-nova allocation score on controller-2: 0 -+native_color: stonith-fence_compute-fence-nova allocation score on overcloud-novacompute-0: -INFINITY -+native_color: stonith-fence_compute-fence-nova allocation score on overcloud-novacompute-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400803f9e allocation score on controller-0: 0 -+native_color: stonith-fence_ipmilan-525400803f9e allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400803f9e allocation score on controller-2: -INFINITY -+native_color: stonith-fence_ipmilan-525400803f9e allocation score on overcloud-novacompute-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400803f9e allocation score on overcloud-novacompute-1: -INFINITY -+native_color: stonith-fence_ipmilan-5254008be2cc allocation score on controller-0: 0 -+native_color: stonith-fence_ipmilan-5254008be2cc allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-5254008be2cc allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-5254008be2cc allocation score on overcloud-novacompute-0: -INFINITY -+native_color: stonith-fence_ipmilan-5254008be2cc allocation score on overcloud-novacompute-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400953d48 allocation score on controller-0: 0 -+native_color: stonith-fence_ipmilan-525400953d48 allocation score on controller-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400953d48 allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-525400953d48 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400953d48 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400b02b86 allocation score on controller-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b02b86 allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400b02b86 allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-525400b02b86 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400b02b86 allocation score on overcloud-novacompute-1: -INFINITY -+native_color: stonith-fence_ipmilan-525400fca120 allocation score on controller-0: 0 -+native_color: stonith-fence_ipmilan-525400fca120 allocation score on controller-1: 0 -+native_color: stonith-fence_ipmilan-525400fca120 allocation score on controller-2: 0 -+native_color: stonith-fence_ipmilan-525400fca120 allocation score on overcloud-novacompute-0: -INFINITY -+native_color: stonith-fence_ipmilan-525400fca120 allocation score on overcloud-novacompute-1: -INFINITY -+redis:0 promotion score on redis-bundle-0: 1 -+redis:1 promotion score on redis-bundle-1: 1 -+redis:2 promotion score on redis-bundle-2: 1 -diff --git a/cts/pengine/order-expired-failure.stderr b/cts/pengine/order-expired-failure.stderr -new file mode 100644 -index 000000000..a9e7a8967 ---- /dev/null -+++ b/cts/pengine/order-expired-failure.stderr -@@ -0,0 +1 @@ -+Resources-operation: moving requires under meta_attributes as requires unless already defined there for matching start|promote -diff --git a/cts/pengine/order-expired-failure.summary b/cts/pengine/order-expired-failure.summary -new file mode 100644 -index 000000000..07c5af53a ---- /dev/null -+++ b/cts/pengine/order-expired-failure.summary -@@ -0,0 +1,131 @@ -+Resources-operation: moving requires under meta_attributes as requires unless already defined there for matching start|promote -+Using the original execution date of: 2018-04-09 07:55:35Z -+ -+Current cluster status: -+RemoteNode overcloud-novacompute-1: UNCLEAN (offline) -+Online: [ controller-0 controller-1 controller-2 ] -+RemoteOnline: [ overcloud-novacompute-0 ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] -+ -+ overcloud-novacompute-0 (ocf::pacemaker:remote): Started controller-0 -+ overcloud-novacompute-1 (ocf::pacemaker:remote): FAILED controller-1 -+ Docker container set: rabbitmq-bundle [192.168.24.1:8787/rhosp13/openstack-rabbitmq:pcmklatest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started controller-2 -+ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started controller-0 -+ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started controller-1 -+ Docker container set: galera-bundle [192.168.24.1:8787/rhosp13/openstack-mariadb:pcmklatest] -+ galera-bundle-0 (ocf::heartbeat:galera): Master controller-2 -+ galera-bundle-1 (ocf::heartbeat:galera): Master controller-0 -+ galera-bundle-2 (ocf::heartbeat:galera): Master controller-1 -+ Docker container set: redis-bundle [192.168.24.1:8787/rhosp13/openstack-redis:pcmklatest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master controller-2 -+ redis-bundle-1 (ocf::heartbeat:redis): Slave controller-0 -+ redis-bundle-2 (ocf::heartbeat:redis): Slave controller-1 -+ ip-192.168.24.11 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-10.0.0.110 (ocf::heartbeat:IPaddr2): Stopped -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-1 -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.11 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.17 (ocf::heartbeat:IPaddr2): Started controller-1 -+ Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp13/openstack-haproxy:pcmklatest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started controller-2 -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started controller-0 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started controller-1 -+ stonith-fence_compute-fence-nova (stonith:fence_compute): FAILED controller-2 -+ Clone Set: compute-unfence-trigger-clone [compute-unfence-trigger] -+ compute-unfence-trigger (ocf::pacemaker:Dummy): Started overcloud-novacompute-1 (UNCLEAN) -+ Started: [ overcloud-novacompute-0 ] -+ Stopped: [ controller-0 controller-1 controller-2 ] -+ nova-evacuate (ocf::openstack:NovaEvacuate): Started controller-0 -+ stonith-fence_ipmilan-5254008be2cc (stonith:fence_ipmilan): Started controller-1 -+ stonith-fence_ipmilan-525400803f9e (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400fca120 (stonith:fence_ipmilan): Started controller-2 -+ stonith-fence_ipmilan-525400953d48 (stonith:fence_ipmilan): Started controller-2 -+ stonith-fence_ipmilan-525400b02b86 (stonith:fence_ipmilan): Started controller-1 -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/rhosp13/openstack-cinder-volume:pcmklatest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started controller-0 -+ -+Transition Summary: -+ * Fence (reboot) overcloud-novacompute-1 'remote connection is unrecoverable' -+ * Stop overcloud-novacompute-1 ( controller-1 ) due to node availability -+ * Start ip-10.0.0.110 ( controller-1 ) -+ * Recover stonith-fence_compute-fence-nova ( controller-2 ) -+ * Stop compute-unfence-trigger:1 ( overcloud-novacompute-1 ) due to node availability -+ -+Executing cluster transition: -+ * Resource action: rabbitmq-bundle-0 monitor=30000 on controller-2 -+ * Resource action: rabbitmq-bundle-0 cancel=60000 on controller-2 -+ * Resource action: rabbitmq-bundle-1 monitor=30000 on controller-0 -+ * Resource action: rabbitmq-bundle-1 cancel=60000 on controller-0 -+ * Resource action: rabbitmq-bundle-2 monitor=30000 on controller-1 -+ * Resource action: rabbitmq-bundle-2 cancel=60000 on controller-1 -+ * Resource action: galera-bundle-0 monitor=30000 on controller-2 -+ * Resource action: galera-bundle-0 cancel=60000 on controller-2 -+ * Resource action: galera-bundle-1 monitor=30000 on controller-0 -+ * Resource action: galera-bundle-1 cancel=60000 on controller-0 -+ * Resource action: galera-bundle-2 monitor=30000 on controller-1 -+ * Resource action: galera-bundle-2 cancel=60000 on controller-1 -+ * Resource action: redis-bundle-0 monitor=30000 on controller-2 -+ * Resource action: redis-bundle-0 cancel=60000 on controller-2 -+ * Resource action: redis-bundle-1 monitor=30000 on controller-0 -+ * Resource action: redis-bundle-1 cancel=60000 on controller-0 -+ * Resource action: redis-bundle-2 monitor=30000 on controller-1 -+ * Resource action: redis-bundle-2 cancel=60000 on controller-1 -+ * Resource action: stonith-fence_compute-fence-nova stop on controller-2 -+ * Fencing overcloud-novacompute-1 (reboot) -+ * Cluster action: clear_failcount for overcloud-novacompute-1 on controller-1 -+ * Pseudo action: compute-unfence-trigger-clone_stop_0 -+ * Pseudo action: stonith_complete -+ * Resource action: ip-10.0.0.110 start on controller-1 -+ * Resource action: stonith-fence_compute-fence-nova start on controller-2 -+ * Resource action: stonith-fence_compute-fence-nova monitor=60000 on controller-2 -+ * Pseudo action: compute-unfence-trigger_stop_0 -+ * Pseudo action: compute-unfence-trigger-clone_stopped_0 -+ * Resource action: overcloud-novacompute-1 stop on controller-1 -+ * Resource action: ip-10.0.0.110 monitor=10000 on controller-1 -+ * Pseudo action: all_stopped -+Using the original execution date of: 2018-04-09 07:55:35Z -+ -+Revised cluster status: -+RemoteNode overcloud-novacompute-1: UNCLEAN (offline) -+Online: [ controller-0 controller-1 controller-2 ] -+RemoteOnline: [ overcloud-novacompute-0 ] -+Containers: [ galera-bundle-0:galera-bundle-docker-0 galera-bundle-1:galera-bundle-docker-1 galera-bundle-2:galera-bundle-docker-2 rabbitmq-bundle-0:rabbitmq-bundle-docker-0 rabbitmq-bundle-1:rabbitmq-bundle-docker-1 rabbitmq-bundle-2:rabbitmq-bundle-docker-2 redis-bundle-0:redis-bundle-docker-0 redis-bundle-1:redis-bundle-docker-1 redis-bundle-2:redis-bundle-docker-2 ] -+ -+ overcloud-novacompute-0 (ocf::pacemaker:remote): Started controller-0 -+ overcloud-novacompute-1 (ocf::pacemaker:remote): FAILED -+ Docker container set: rabbitmq-bundle [192.168.24.1:8787/rhosp13/openstack-rabbitmq:pcmklatest] -+ rabbitmq-bundle-0 (ocf::heartbeat:rabbitmq-cluster): Started controller-2 -+ rabbitmq-bundle-1 (ocf::heartbeat:rabbitmq-cluster): Started controller-0 -+ rabbitmq-bundle-2 (ocf::heartbeat:rabbitmq-cluster): Started controller-1 -+ Docker container set: galera-bundle [192.168.24.1:8787/rhosp13/openstack-mariadb:pcmklatest] -+ galera-bundle-0 (ocf::heartbeat:galera): Master controller-2 -+ galera-bundle-1 (ocf::heartbeat:galera): Master controller-0 -+ galera-bundle-2 (ocf::heartbeat:galera): Master controller-1 -+ Docker container set: redis-bundle [192.168.24.1:8787/rhosp13/openstack-redis:pcmklatest] -+ redis-bundle-0 (ocf::heartbeat:redis): Master controller-2 -+ redis-bundle-1 (ocf::heartbeat:redis): Slave controller-0 -+ redis-bundle-2 (ocf::heartbeat:redis): Slave controller-1 -+ ip-192.168.24.11 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-10.0.0.110 (ocf::heartbeat:IPaddr2): Started controller-1 -+ ip-172.17.1.14 (ocf::heartbeat:IPaddr2): Started controller-1 -+ ip-172.17.1.17 (ocf::heartbeat:IPaddr2): Started controller-2 -+ ip-172.17.3.11 (ocf::heartbeat:IPaddr2): Started controller-0 -+ ip-172.17.4.17 (ocf::heartbeat:IPaddr2): Started controller-1 -+ Docker container set: haproxy-bundle [192.168.24.1:8787/rhosp13/openstack-haproxy:pcmklatest] -+ haproxy-bundle-docker-0 (ocf::heartbeat:docker): Started controller-2 -+ haproxy-bundle-docker-1 (ocf::heartbeat:docker): Started controller-0 -+ haproxy-bundle-docker-2 (ocf::heartbeat:docker): Started controller-1 -+ stonith-fence_compute-fence-nova (stonith:fence_compute): Started controller-2 -+ Clone Set: compute-unfence-trigger-clone [compute-unfence-trigger] -+ Started: [ overcloud-novacompute-0 ] -+ Stopped: [ controller-0 controller-1 controller-2 overcloud-novacompute-1 ] -+ nova-evacuate (ocf::openstack:NovaEvacuate): Started controller-0 -+ stonith-fence_ipmilan-5254008be2cc (stonith:fence_ipmilan): Started controller-1 -+ stonith-fence_ipmilan-525400803f9e (stonith:fence_ipmilan): Started controller-0 -+ stonith-fence_ipmilan-525400fca120 (stonith:fence_ipmilan): Started controller-2 -+ stonith-fence_ipmilan-525400953d48 (stonith:fence_ipmilan): Started controller-2 -+ stonith-fence_ipmilan-525400b02b86 (stonith:fence_ipmilan): Started controller-1 -+ Docker container: openstack-cinder-volume [192.168.24.1:8787/rhosp13/openstack-cinder-volume:pcmklatest] -+ openstack-cinder-volume-docker-0 (ocf::heartbeat:docker): Started controller-0 -+ -diff --git a/cts/pengine/order-expired-failure.xml b/cts/pengine/order-expired-failure.xml -new file mode 100644 -index 000000000..bce8a1410 ---- /dev/null -+++ b/cts/pengine/order-expired-failure.xml -@@ -0,0 +1,1191 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ --- -2.17.0 - diff --git a/0003-Test-cts-pengine-create_mode-is-now-controlled-by-up.patch b/0003-Test-cts-pengine-create_mode-is-now-controlled-by-up.patch deleted file mode 100644 index d525ad6..0000000 --- a/0003-Test-cts-pengine-create_mode-is-now-controlled-by-up.patch +++ /dev/null @@ -1,29 +0,0 @@ -From faefccc1dc3108853bc7cfa35681a1ac261c5461 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 11 Apr 2018 11:28:43 -0500 -Subject: [PATCH 03/17] Test: cts-pengine: create_mode is now controlled by - --update - ---- - cts/cts-pengine.in | 5 ----- - 1 file changed, 5 deletions(-) - -diff --git a/cts/cts-pengine.in b/cts/cts-pengine.in -index ca29d76c3..905354db2 100644 ---- a/cts/cts-pengine.in -+++ b/cts/cts-pengine.in -@@ -391,11 +391,6 @@ if [ -n "$single_test" ]; then - fi - - DO_VERSIONED_TESTS=0 --create_mode=true --# info Creating the following tests from $io_dir --# do_test order-expired-failure "Order failcount cleanup after remote fencing" -- --create_mode=false - - info Performing the following tests from $io_dir - echo "" --- -2.17.0 - diff --git a/0004-Build-cts-update-scripts-to-use-new-BASH_PATH-subsit.patch b/0004-Build-cts-update-scripts-to-use-new-BASH_PATH-subsit.patch deleted file mode 100644 index 657e4ea..0000000 --- a/0004-Build-cts-update-scripts-to-use-new-BASH_PATH-subsit.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 5f370802061ea4e8d5a194fd5ed4f1020e195145 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 9 Apr 2018 10:57:40 -0500 -Subject: [PATCH 04/17] Build: cts: update scripts to use new @BASH_PATH@ - subsitution variable - ---- - configure.ac | 5 ++++ - cts/{CTS.py => CTS.py.in} | 28 +++++------------------ - cts/{cluster_test => cluster_test.in} | 8 ++++++- - cts/{cts-cli => cts-cli.in} | 8 ++++++- - cts/{cts-regression => cts-regression.in} | 7 +++++- - cts/{cts => cts.in} | 8 ++++++- - 7 files changed, 38 insertions(+), 26 deletions(-) - rename cts/{CTS.py => CTS.py.in} (97%) - rename cts/{cluster_test => cluster_test.in} (96%) - rename cts/{cts-cli => cts-cli.in} (99%) - rename cts/{cts-regression => cts-regression.in} (96%) - rename cts/{cts => cts.in} (97%) - -diff --git a/configure.ac b/configure.ac -index c39954272..41676ed61 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1700,9 +1700,13 @@ dnl Files we output that need to be executable - AC_CONFIG_FILES([cts/CTSlab.py], [chmod +x cts/CTSlab.py]) - AC_CONFIG_FILES([cts/LSBDummy], [chmod +x cts/LSBDummy]) - AC_CONFIG_FILES([cts/OCFIPraTest.py], [chmod +x cts/OCFIPraTest.py]) -+AC_CONFIG_FILES([cts/cluster_test], [chmod +x cts/cluster_test]) -+AC_CONFIG_FILES([cts/cts], [chmod +x cts/cts]) -+AC_CONFIG_FILES([cts/cts-cli], [chmod +x cts/cts-cli]) - AC_CONFIG_FILES([cts/cts-coverage], [chmod +x cts/cts-coverage]) - AC_CONFIG_FILES([cts/cts-lrmd], [chmod +x cts/cts-lrmd]) - AC_CONFIG_FILES([cts/cts-pengine], [chmod +x cts/cts-pengine]) -+AC_CONFIG_FILES([cts/cts-regression], [chmod +x cts/cts-regression]) - AC_CONFIG_FILES([cts/cts-stonithd], [chmod +x cts/cts-stonithd]) - AC_CONFIG_FILES([cts/lxc_autogen.sh], [chmod +x cts/lxc_autogen.sh]) - AC_CONFIG_FILES([cts/benchmark/clubench], [chmod +x cts/benchmark/clubench]) -@@ -1718,6 +1722,7 @@ dnl Other files we output - AC_CONFIG_FILES(Makefile \ - Doxyfile \ - cts/Makefile \ -+ cts/CTS.py \ - cts/CTSvars.py \ - cts/benchmark/Makefile \ - cib/Makefile \ -diff --git a/cts/CTS.py b/cts/CTS.py.in -similarity index 97% -rename from cts/CTS.py -rename to cts/CTS.py.in -index e78b54d56..30ecfba88 100644 ---- a/cts/CTS.py -+++ b/cts/CTS.py.in -@@ -3,27 +3,11 @@ - Classes related to testing high-availability clusters... - ''' - --from __future__ import print_function -- --__copyright__ = ''' --Copyright (C) 2000, 2001 Alan Robertson --Licensed under the GNU GPL. --''' -- --# --# This program is free software; you can redistribute it and/or --# modify it under the terms of the GNU General Public License --# as published by the Free Software Foundation; either version 2 --# of the License, or (at your option) any later version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. --# --# You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -+# Pacemaker targets compatibility with Python 2.7 and 3.2+ -+from __future__ import print_function, unicode_literals, absolute_import, division -+ -+__copyright__ = "Copyright 2000-2018 Alan Robertson " -+__license__ = "GNU General Public License version 2 or later (GPLv2+) WITHOUT ANY WARRANTY" - - import string, sys, time, re, os, traceback - -@@ -42,7 +26,7 @@ from cts.patterns import PatternSelector - has_log_stats = {} - log_stats_bin = CTSvars.CRM_DAEMON_DIR + "/cts_log_stats.sh" - log_stats = """ --#!/bin/bash -+#!@BASH_PATH@ - # Tool for generating system load reports while CTS runs - - trap "" 1 -diff --git a/cts/cluster_test b/cts/cluster_test.in -similarity index 96% -rename from cts/cluster_test -rename to cts/cluster_test.in -index 0cc8c26af..603bfe2f7 100755 ---- a/cts/cluster_test -+++ b/cts/cluster_test.in -@@ -1,4 +1,10 @@ --#!/bin/bash -+#!@BASH_PATH@ -+# -+# Copyright 2008-2018 Andrew Beekhof -+# -+# This source code is licensed under the GNU General Public License version 2 -+# or later (GPLv2+) WITHOUT ANY WARRANTY. -+# - if [ -e ~/.cts ]; then - . ~/.cts - fi -diff --git a/cts/cts-cli b/cts/cts-cli.in -similarity index 99% -rename from cts/cts-cli -rename to cts/cts-cli.in -index 75751c662..e62e5e2fe 100755 ---- a/cts/cts-cli -+++ b/cts/cts-cli.in -@@ -1,4 +1,10 @@ --#!/bin/bash -+#!@BASH_PATH@ -+# -+# Copyright 2008-2018 Andrew Beekhof -+# -+# This source code is licensed under the GNU General Public License version 2 -+# or later (GPLv2+) WITHOUT ANY WARRANTY. -+# - - USAGE_TEXT="Usage: cts-cli [] - Options: -diff --git a/cts/cts-regression b/cts/cts-regression.in -similarity index 96% -rename from cts/cts-regression -rename to cts/cts-regression.in -index fbc6319f8..6c9931f79 100755 ---- a/cts/cts-regression -+++ b/cts/cts-regression.in -@@ -1,9 +1,14 @@ --#!/bin/bash -+#!@BASH_PATH@ - # - # cts-regression - # - # Convenience wrapper for running any of the Pacemaker regression tests - # -+# Copyright 2012-2018 Andrew Beekhof -+# -+# This source code is licensed under the GNU General Public License version 2 -+# or later (GPLv2+) WITHOUT ANY WARRANTY. -+# - - USAGE_TEXT="Usage: cts-regression [] [ ...] - Options: -diff --git a/cts/cts b/cts/cts.in -similarity index 97% -rename from cts/cts -rename to cts/cts.in -index 5a2ee0c47..9ff107c66 100755 ---- a/cts/cts -+++ b/cts/cts.in -@@ -1,4 +1,10 @@ --#!/bin/bash -+#!@BASH_PATH -+# -+# Copyright 2012-2018 Andrew Beekhof -+# -+# This source code is licensed under the GNU General Public License version 2 -+# or later (GPLv2+) WITHOUT ANY WARRANTY. -+# - - if [ -e $PWD/cts/CTSlab.py ]; then - cts_root=$PWD/cts --- -2.17.0 - diff --git a/0005-Test-cts-don-t-use-readlink-e-unless-supported.patch b/0005-Test-cts-don-t-use-readlink-e-unless-supported.patch deleted file mode 100644 index 3f2f88d..0000000 --- a/0005-Test-cts-don-t-use-readlink-e-unless-supported.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 25698bc62f4b1bf14112012809e1c70b57a44cd9 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 9 Apr 2018 14:05:55 -0500 -Subject: [PATCH 05/17] Test: cts: don't use readlink -e unless supported - -BSD readlink doesn't ---- - cts/cts-cli.in | 9 ++++++++- - cts/cts-pengine.in | 32 ++++++++++++++------------------ - cts/cts-regression.in | 9 ++++++++- - 3 files changed, 30 insertions(+), 20 deletions(-) - -diff --git a/cts/cts-cli.in b/cts/cts-cli.in -index e62e5e2fe..365f4b10b 100755 ---- a/cts/cts-cli.in -+++ b/cts/cts-cli.in -@@ -15,8 +15,15 @@ Options: - -v, --valgrind Run all commands under valgrind - -s Save actual output as expected output" - -+# If readlink supports -e (i.e. GNU), use it -+readlink -e / >/dev/null 2>/dev/null -+if [ $? -eq 0 ]; then -+ test_home="$(dirname $(readlink -e $0))" -+else -+ test_home="$(dirname $0)" -+fi -+ - : ${shadow=cts-cli} --test_home="$(dirname $(readlink -e $0))" - shadow_dir=$(mktemp -td cts-cli.shadow.XXXXXXXXXX) - num_errors=0 - num_passed=0 -diff --git a/cts/cts-pengine.in b/cts/cts-pengine.in -index 905354db2..fb0952580 100644 ---- a/cts/cts-pengine.in -+++ b/cts/cts-pengine.in -@@ -1,21 +1,10 @@ - #!@BASH_PATH@ -- -- # Copyright (C) 2004 Andrew Beekhof -- # -- # This program is free software; you can redistribute it and/or -- # modify it under the terms of the GNU General Public -- # License as published by the Free Software Foundation; either -- # version 2 of the License, or (at your option) any later version. -- # -- # This software is distributed in the hope that it will be useful, -- # but WITHOUT ANY WARRANTY; without even the implied warranty of -- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- # General Public License for more details. -- # -- # You should have received a copy of the GNU General Public -- # License along with this library; if not, write to the Free Software -- # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -- # -+# -+# Copyright 2004-2018 Andrew Beekhof -+# -+# This source code is licensed under the GNU General Public License version 2 -+# or later (GPLv2+) WITHOUT ANY WARRANTY. -+# - - USAGE_TEXT="Usage: cts-pengine [] - Options: -@@ -34,7 +23,14 @@ SBINDIR="@sbindir@" - BUILDDIR="@abs_top_builddir@" - CRM_SCHEMA_DIRECTORY="@CRM_SCHEMA_DIRECTORY@" - --test_home=$(dirname $(readlink -e $0)) -+# If readlink supports -e (i.e. GNU), use it -+readlink -e / >/dev/null 2>/dev/null -+if [ $? -eq 0 ]; then -+ test_home="$(dirname $(readlink -e $0))" -+else -+ test_home="$(dirname $0)" -+fi -+ - io_dir="$test_home/pengine" - failed="$test_home/.regression.failed.diff" - test_binary= -diff --git a/cts/cts-regression.in b/cts/cts-regression.in -index 6c9931f79..e89394b69 100755 ---- a/cts/cts-regression.in -+++ b/cts/cts-regression.in -@@ -24,7 +24,14 @@ Tests (default tests are 'pengine cli lrmd'): - fencing Fencing daemon - all Synonym for 'pengine cli lrmd fencing'" - --test_home="$(dirname $(readlink -e $0))" -+# If readlink supports -e (i.e. GNU), use it -+readlink -e / >/dev/null 2>/dev/null -+if [ $? -eq 0 ]; then -+ test_home="$(dirname $(readlink -e $0))" -+else -+ test_home="$(dirname $0)" -+fi -+ - valgrind="" - verbose="" - tests="" --- -2.17.0 - diff --git a/0006-Refactor-libcrmcommon-move-PID-functions-to-own-file.patch b/0006-Refactor-libcrmcommon-move-PID-functions-to-own-file.patch deleted file mode 100644 index 7bc2164..0000000 --- a/0006-Refactor-libcrmcommon-move-PID-functions-to-own-file.patch +++ /dev/null @@ -1,511 +0,0 @@ -From c7abf9bc0b3596b41981ee10af60c24a68287e78 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 9 Apr 2018 14:15:23 -0500 -Subject: [PATCH 06/17] Refactor: libcrmcommon: move PID functions to own file - -Line counts before: - 1515 lib/common/utils.c - -and after: - 1353 lib/common/utils.c - 183 lib/common/pid.c ---- - include/crm/common/internal.h | 26 ++--- - include/crm_internal.h | 23 +---- - lib/common/Makefile.am | 19 +--- - lib/common/pid.c | 183 ++++++++++++++++++++++++++++++++++ - lib/common/utils.c | 162 ------------------------------ - 5 files changed, 201 insertions(+), 212 deletions(-) - create mode 100644 lib/common/pid.c - -diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h -index 076b9f60b..064e983b6 100644 ---- a/include/crm/common/internal.h -+++ b/include/crm/common/internal.h -@@ -1,20 +1,8 @@ - /* -- * Copyright (C) 2015 -- * Andrew Beekhof -+ * Copyright 2015-2018 Andrew Beekhof - * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU Lesser General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU Lesser General Public License for more details. -- * -- * You should have received a copy of the GNU Lesser General Public -- * License along with this library; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ * This source code is licensed under the GNU Lesser General Public License -+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. - */ - - #ifndef CRM_COMMON_INTERNAL__H -@@ -59,6 +47,14 @@ void crm_schema_init(void); - void crm_schema_cleanup(void); - - -+/* internal functions related to process IDs (from pid.c) */ -+ -+int crm_pid_active(long pid, const char *daemon); -+long crm_pidfile_inuse(const char *filename, long mypid, const char *daemon); -+long crm_read_pidfile(const char *filename); -+int crm_lock_pidfile(const char *filename, const char *name); -+ -+ - /* internal generic string functions (from strings.c) */ - - long long crm_int_helper(const char *text, char **end_text); -diff --git a/include/crm_internal.h b/include/crm_internal.h -index 4c6fb0d4a..78d947905 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -1,22 +1,8 @@ --/* crm_internal.h */ -- - /* -- * Copyright (C) 2006 - 2008 -- * Andrew Beekhof -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU Lesser General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU Lesser General Public License for more details. -+ * Copyright 2006-2018 Andrew Beekhof - * -- * You should have received a copy of the GNU Lesser General Public -- * License along with this library; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ * This source code is licensed under the GNU Lesser General Public License -+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. - */ - - #ifndef CRM_INTERNAL__H -@@ -141,7 +127,6 @@ extern int node_score_green; - extern int node_score_yellow; - - /* Assorted convenience functions */ --int crm_pid_active(long pid, const char *daemon); - void crm_make_daemon(const char *name, gboolean daemonize, const char *pidfile); - - /* from operations.c */ -@@ -251,8 +236,6 @@ void strip_text_nodes(xmlNode * xml); - void pcmk_panic(const char *origin); - void sysrq_init(void); - pid_t pcmk_locate_sbd(void); --long crm_pidfile_inuse(const char *filename, long mypid, const char *daemon); --long crm_read_pidfile(const char *filename); - - # define crm_config_err(fmt...) { crm_config_error = TRUE; crm_err(fmt); } - # define crm_config_warn(fmt...) { crm_config_warning = TRUE; crm_warn(fmt); } -diff --git a/lib/common/Makefile.am b/lib/common/Makefile.am -index 1fce0b927..7546fe9fc 100644 ---- a/lib/common/Makefile.am -+++ b/lib/common/Makefile.am -@@ -1,19 +1,8 @@ - # --# Copyright (C) 2004 Andrew Beekhof -+# Copyright 2004-2018 Andrew Beekhof - # --# This program is free software; you can redistribute it and/or --# modify it under the terms of the GNU General Public License --# as published by the Free Software Foundation; either version 2 --# of the License, or (at your option) any later version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. --# --# You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+# This source code is licensed under the GNU General Public License version 2 -+# or later (GPLv2+) WITHOUT ANY WARRANTY. - # - include $(top_srcdir)/Makefile.common - -@@ -40,7 +29,7 @@ libcrmcommon_la_LIBADD = @LIBADD_DL@ $(GNUTLSLIBS) - libcrmcommon_la_SOURCES = compat.c digest.c ipc.c io.c procfs.c utils.c xml.c \ - iso8601.c remote.c mainloop.c logging.c watchdog.c \ - schemas.c strings.c xpath.c attrd_client.c alerts.c \ -- operations.c results.c -+ operations.c pid.c results.c - if BUILD_CIBSECRETS - libcrmcommon_la_SOURCES += cib_secrets.c - endif -diff --git a/lib/common/pid.c b/lib/common/pid.c -new file mode 100644 -index 000000000..803799e64 ---- /dev/null -+++ b/lib/common/pid.c -@@ -0,0 +1,183 @@ -+/* -+ * Copyright 2004-2018 Andrew Beekhof -+ * -+ * This source code is licensed under the GNU Lesser General Public License -+ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. -+ */ -+ -+#include -+ -+#ifndef _GNU_SOURCE -+# define _GNU_SOURCE -+#endif -+ -+#include -+#include -+#include -+ -+#include -+ -+int -+crm_pid_active(long pid, const char *daemon) -+{ -+ static int have_proc_pid = 0; -+ -+ if (have_proc_pid == 0) { -+ char proc_path[PATH_MAX], exe_path[PATH_MAX]; -+ -+ // Make sure pid hasn't been reused by another process -+ snprintf(proc_path, sizeof(proc_path), "/proc/%lu/exe", -+ (long unsigned int)getpid()); -+ -+ have_proc_pid = 1; -+ if (readlink(proc_path, exe_path, PATH_MAX - 1) < 0) { -+ have_proc_pid = -1; -+ } -+ } -+ -+ if (pid <= 0) { -+ return -1; -+ -+ } else if ((kill(pid, 0) < 0) && (errno == ESRCH)) { -+ return 0; -+ -+ } else if ((daemon == NULL) || (have_proc_pid == -1)) { -+ return 1; -+ -+ } else { -+ int rc = 0; -+ char proc_path[PATH_MAX], exe_path[PATH_MAX], myexe_path[PATH_MAX]; -+ -+ // Make sure pid hasn't been reused by another process -+ snprintf(proc_path, sizeof(proc_path), "/proc/%ld/exe", pid); -+ -+ rc = readlink(proc_path, exe_path, PATH_MAX - 1); -+ if ((rc < 0) && (errno == EACCES)) { -+ crm_perror(LOG_INFO, "Could not read from %s", proc_path); -+ return 1; -+ } else if (rc < 0) { -+ crm_perror(LOG_ERR, "Could not read from %s", proc_path); -+ return 0; -+ } -+ -+ exe_path[rc] = 0; -+ -+ if (daemon[0] != '/') { -+ rc = snprintf(myexe_path, sizeof(proc_path), CRM_DAEMON_DIR"/%s", -+ daemon); -+ myexe_path[rc] = 0; -+ } else { -+ rc = snprintf(myexe_path, sizeof(proc_path), "%s", daemon); -+ myexe_path[rc] = 0; -+ } -+ -+ if (strcmp(exe_path, myexe_path) == 0) { -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+#define LOCKSTRLEN 11 -+ -+long -+crm_read_pidfile(const char *filename) -+{ -+ int fd; -+ struct stat sbuf; -+ long pid = -ENOENT; -+ char buf[LOCKSTRLEN + 1]; -+ -+ fd = open(filename, O_RDONLY); -+ if (fd < 0) { -+ goto bail; -+ } -+ -+ if ((fstat(fd, &sbuf) >= 0) && (sbuf.st_size < LOCKSTRLEN)) { -+ sleep(2); /* if someone was about to create one, -+ * give'm a sec to do so -+ */ -+ } -+ -+ if (read(fd, buf, sizeof(buf)) < 1) { -+ goto bail; -+ } -+ -+ if (sscanf(buf, "%ld", &pid) > 0) { -+ if (pid <= 0) { -+ pid = -ESRCH; -+ } else { -+ crm_trace("Got pid %lu from %s\n", pid, filename); -+ } -+ } -+ -+ bail: -+ if (fd >= 0) { -+ close(fd); -+ } -+ return pid; -+} -+ -+long -+crm_pidfile_inuse(const char *filename, long mypid, const char *daemon) -+{ -+ long pid = crm_read_pidfile(filename); -+ -+ if (pid < 2) { -+ // Invalid pid -+ pid = -ENOENT; -+ unlink(filename); -+ -+ } else if (mypid && (pid == mypid)) { -+ // In use by us -+ pid = pcmk_ok; -+ -+ } else if (crm_pid_active(pid, daemon) == FALSE) { -+ // Contains a stale value -+ unlink(filename); -+ pid = -ENOENT; -+ -+ } else if (mypid && (pid != mypid)) { -+ // Locked by existing process -+ pid = -EEXIST; -+ } -+ -+ return pid; -+} -+ -+int -+crm_lock_pidfile(const char *filename, const char *name) -+{ -+ long mypid = 0; -+ int fd = 0; -+ int rc = 0; -+ char buf[LOCKSTRLEN + 2]; -+ -+ mypid = (unsigned long) getpid(); -+ -+ rc = crm_pidfile_inuse(filename, 0, name); -+ if (rc == -ENOENT) { -+ // Exists, but the process is not active -+ -+ } else if (rc != pcmk_ok) { -+ // Locked by existing process -+ return rc; -+ } -+ -+ fd = open(filename, O_CREAT | O_WRONLY | O_EXCL, 0644); -+ if (fd < 0) { -+ return -errno; -+ } -+ -+ snprintf(buf, sizeof(buf), "%*ld\n", LOCKSTRLEN - 1, mypid); -+ rc = write(fd, buf, LOCKSTRLEN); -+ close(fd); -+ -+ if (rc != LOCKSTRLEN) { -+ crm_perror(LOG_ERR, "Incomplete write to %s", filename); -+ return -errno; -+ } -+ -+ return crm_pidfile_inuse(filename, mypid, name); -+} -diff --git a/lib/common/utils.c b/lib/common/utils.c -index 582838e46..07ba1b7d1 100644 ---- a/lib/common/utils.c -+++ b/lib/common/utils.c -@@ -681,168 +681,6 @@ crm_abort(const char *file, const char *function, int line, - crm_perror(LOG_ERR, "Cannot wait on forked child %d", pid); - } - --int --crm_pid_active(long pid, const char *daemon) --{ -- static int have_proc_pid = 0; -- -- if(have_proc_pid == 0) { -- char proc_path[PATH_MAX], exe_path[PATH_MAX]; -- -- /* check to make sure pid hasn't been reused by another process */ -- snprintf(proc_path, sizeof(proc_path), "/proc/%lu/exe", (long unsigned int)getpid()); -- -- have_proc_pid = 1; -- if(readlink(proc_path, exe_path, PATH_MAX - 1) < 0) { -- have_proc_pid = -1; -- } -- } -- -- if (pid <= 0) { -- return -1; -- -- } else if (kill(pid, 0) < 0 && errno == ESRCH) { -- return 0; -- -- } else if(daemon == NULL || have_proc_pid == -1) { -- return 1; -- -- } else { -- int rc = 0; -- char proc_path[PATH_MAX], exe_path[PATH_MAX], myexe_path[PATH_MAX]; -- -- /* check to make sure pid hasn't been reused by another process */ -- snprintf(proc_path, sizeof(proc_path), "/proc/%ld/exe", pid); -- -- rc = readlink(proc_path, exe_path, PATH_MAX - 1); -- if (rc < 0 && errno == EACCES) { -- crm_perror(LOG_INFO, "Could not read from %s", proc_path); -- return 1; -- } else if (rc < 0) { -- crm_perror(LOG_ERR, "Could not read from %s", proc_path); -- return 0; -- } -- -- -- exe_path[rc] = 0; -- -- if(daemon[0] != '/') { -- rc = snprintf(myexe_path, sizeof(proc_path), CRM_DAEMON_DIR"/%s", daemon); -- myexe_path[rc] = 0; -- } else { -- rc = snprintf(myexe_path, sizeof(proc_path), "%s", daemon); -- myexe_path[rc] = 0; -- } -- -- if (strcmp(exe_path, myexe_path) == 0) { -- return 1; -- } -- } -- -- return 0; --} -- --#define LOCKSTRLEN 11 -- --long --crm_read_pidfile(const char *filename) --{ -- int fd; -- struct stat sbuf; -- long pid = -ENOENT; -- char buf[LOCKSTRLEN + 1]; -- -- if ((fd = open(filename, O_RDONLY)) < 0) { -- goto bail; -- } -- -- if (fstat(fd, &sbuf) >= 0 && sbuf.st_size < LOCKSTRLEN) { -- sleep(2); /* if someone was about to create one, -- * give'm a sec to do so -- */ -- } -- -- if (read(fd, buf, sizeof(buf)) < 1) { -- goto bail; -- } -- -- if (sscanf(buf, "%ld", &pid) > 0) { -- if (pid <= 0) { -- pid = -ESRCH; -- } else { -- crm_trace("Got pid %lu from %s\n", pid, filename); -- } -- } -- -- bail: -- if (fd >= 0) { -- close(fd); -- } -- return pid; --} -- --long --crm_pidfile_inuse(const char *filename, long mypid, const char *daemon) --{ -- long pid = crm_read_pidfile(filename); -- -- if (pid < 2) { -- /* Invalid pid */ -- pid = -ENOENT; -- unlink(filename); -- -- } else if (mypid && pid == mypid) { -- /* In use by us */ -- pid = pcmk_ok; -- -- } else if (crm_pid_active(pid, daemon) == FALSE) { -- /* Contains a stale value */ -- unlink(filename); -- pid = -ENOENT; -- -- } else if (mypid && pid != mypid) { -- /* locked by existing process - give up */ -- pid = -EEXIST; -- } -- -- return pid; --} -- --static int --crm_lock_pidfile(const char *filename, const char *name) --{ -- long mypid = 0; -- int fd = 0, rc = 0; -- char buf[LOCKSTRLEN + 2]; -- -- mypid = (unsigned long)getpid(); -- -- rc = crm_pidfile_inuse(filename, 0, name); -- if (rc == -ENOENT) { -- /* exists but the process is not active */ -- -- } else if (rc != pcmk_ok) { -- /* locked by existing process - give up */ -- return rc; -- } -- -- if ((fd = open(filename, O_CREAT | O_WRONLY | O_EXCL, 0644)) < 0) { -- /* Hmmh, why did we fail? Anyway, nothing we can do about it */ -- return -errno; -- } -- -- snprintf(buf, sizeof(buf), "%*ld\n", LOCKSTRLEN - 1, mypid); -- rc = write(fd, buf, LOCKSTRLEN); -- close(fd); -- -- if (rc != LOCKSTRLEN) { -- crm_perror(LOG_ERR, "Incomplete write to %s", filename); -- return -errno; -- } -- -- return crm_pidfile_inuse(filename, mypid, name); --} -- - void - crm_make_daemon(const char *name, gboolean daemonize, const char *pidfile) - { --- -2.17.0 - diff --git a/0007-Refactor-libcrmcommon-shuffle-some-internal-declarat.patch b/0007-Refactor-libcrmcommon-shuffle-some-internal-declarat.patch deleted file mode 100644 index 84cdcc0..0000000 --- a/0007-Refactor-libcrmcommon-shuffle-some-internal-declarat.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 07f7ab1d805b7508889c9298d2ee1b2a44836ab9 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 9 Apr 2018 14:23:27 -0500 -Subject: [PATCH 07/17] Refactor: libcrmcommon: shuffle some internal - declarations around - -trying to keep all internal header stuff for libcrmcommon in -include/crm/common/internal.h ---- - include/crm/common/internal.h | 17 +++++++++++++++++ - include/crm_internal.h | 11 ----------- - 2 files changed, 17 insertions(+), 11 deletions(-) - -diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h -index 064e983b6..4aa0c49c6 100644 ---- a/include/crm/common/internal.h -+++ b/include/crm/common/internal.h -@@ -55,6 +55,23 @@ long crm_read_pidfile(const char *filename); - int crm_lock_pidfile(const char *filename, const char *name); - - -+/* interal functions related to resource operations (from operations.c) */ -+ -+char *generate_op_key(const char *rsc_id, const char *op_type, -+ guint interval_ms); -+char *generate_notify_key(const char *rsc_id, const char *notify_type, -+ const char *op_type); -+char *generate_transition_magic(const char *transition_key, int op_status, -+ int op_rc); -+char *generate_transition_key(int action, int transition_id, int target_rc, -+ const char *node); -+void filter_action_parameters(xmlNode *param_set, const char *version); -+xmlNode *create_operation_update(xmlNode *parent, lrmd_event_data_t *event, -+ const char *caller_version, int target_rc, -+ const char *node, const char *origin, -+ int level); -+ -+ - /* internal generic string functions (from strings.c) */ - - long long crm_int_helper(const char *text, char **end_text); -diff --git a/include/crm_internal.h b/include/crm_internal.h -index 78d947905..63dca974a 100644 ---- a/include/crm_internal.h -+++ b/include/crm_internal.h -@@ -129,17 +129,6 @@ extern int node_score_yellow; - /* Assorted convenience functions */ - void crm_make_daemon(const char *name, gboolean daemonize, const char *pidfile); - --/* from operations.c */ --char *generate_op_key(const char *rsc_id, const char *op_type, guint interval_ms); --char *generate_notify_key(const char *rsc_id, const char *notify_type, const char *op_type); --char *generate_transition_magic(const char *transition_key, int op_status, int op_rc); --char *generate_transition_key(int action, int transition_id, int target_rc, const char *node); --void filter_action_parameters(xmlNode *param_set, const char *version); --xmlNode *create_operation_update(xmlNode *parent, lrmd_event_data_t *event, -- const char *caller_version, int target_rc, -- const char *node, const char *origin, -- int level); -- - // printf-style format to create operation ID from resource, action, interval - #define CRM_OP_FMT "%s_%s_%u" - --- -2.17.0 - diff --git a/0008-High-crmd-delete-resource-from-lrmd-when-appropriate.patch b/0008-High-crmd-delete-resource-from-lrmd-when-appropriate.patch deleted file mode 100644 index 7ec8566..0000000 --- a/0008-High-crmd-delete-resource-from-lrmd-when-appropriate.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 720e8bc0524e436eefb8167bc3aff4b4d795f02c Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 9 Apr 2018 15:20:01 -0500 -Subject: [PATCH 08/17] High: crmd: delete resource from lrmd when appropriate - -Regression introduced in e8802834 (2.0.0-rc2): a missing return value check -meant that crmd would always delete resource from its LRM state only, and -not from the lrmd itself. As a side effect, this also introduced a memory leak -when deleting a resource. ---- - crmd/lrm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/crmd/lrm.c b/crmd/lrm.c -index 7d4f05748..90300334d 100644 ---- a/crmd/lrm.c -+++ b/crmd/lrm.c -@@ -1820,7 +1820,7 @@ do_lrm_invoke(long long action, - PCMK_OCF_CONNECTION_DIED); - return; - -- } else if (!create_rsc) { -+ } else if ((rc < 0) && !create_rsc) { - /* Delete of malformed or nonexistent resource - * (deleting something that does not exist is a success) - */ --- -2.17.0 - diff --git a/0009-Test-cts-cli-update-expected-results-for-recent-chan.patch b/0009-Test-cts-cli-update-expected-results-for-recent-chan.patch deleted file mode 100644 index d30112e..0000000 --- a/0009-Test-cts-cli-update-expected-results-for-recent-chan.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 621bea158d57dd5c2f9ccc1ebe2f5978d5b638b6 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 9 Apr 2018 17:49:49 -0500 -Subject: [PATCH 09/17] Test: cts-cli: update expected results for recent - changes - -should have been done with 0a21e9ca3 ---- - cts/cli/regression.acls.exp | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git a/cts/cli/regression.acls.exp b/cts/cli/regression.acls.exp -index cc3163621..0bef6f447 100644 ---- a/cts/cli/regression.acls.exp -+++ b/cts/cli/regression.acls.exp -@@ -1182,8 +1182,8 @@ Call failed: Permission denied - * Passed: cibadmin - bob: Replace - delete attribute (allow) - - -- !#!#!#!#! Upgrading to pacemaker-2.0 and retesting !#!#!#!#! --=#=#=#= Begin test: root: Upgrade to pacemaker-2.0 =#=#=#= -+ !#!#!#!#! Upgrading to latest CIB schema and re-testing !#!#!#!#! -+=#=#=#= Begin test: root: Upgrade to latest CIB schema =#=#=#= - __xml_acl_post_process: Creation of acl_permission=observer-read-1 is allowed - __xml_acl_post_process: Creation of acl_permission=observer-write-1 is allowed - __xml_acl_post_process: Creation of acl_permission=observer-write-2 is allowed -@@ -1206,7 +1206,7 @@ __xml_acl_post_process: Creation of role=auto-betteridea is allowed - __xml_acl_post_process: Creation of acl_role=auto-betteridea is allowed - __xml_acl_post_process: Creation of acl_permission=betteridea-nothing is allowed - __xml_acl_post_process: Creation of acl_permission=betteridea-resources is allowed --=#=#=#= Current cib after: root: Upgrade to pacemaker-2.0 =#=#=#= -+=#=#=#= Current cib after: root: Upgrade to latest CIB schema =#=#=#= - - - -@@ -1260,8 +1260,8 @@ __xml_acl_post_process: Creation of acl_permission=betteridea-resources is allow - - - --=#=#=#= End test: root: Upgrade to pacemaker-2.0 - OK (0) =#=#=#= --* Passed: cibadmin - root: Upgrade to pacemaker-2.0 -+=#=#=#= End test: root: Upgrade to latest CIB schema - OK (0) =#=#=#= -+* Passed: cibadmin - root: Upgrade to latest CIB schema - =#=#=#= Begin test: unknownguy: Query configuration =#=#=#= - Call failed: Permission denied - =#=#=#= End test: unknownguy: Query configuration - Insufficient privileges (4) =#=#=#= --- -2.17.0 - diff --git a/0010-Test-cts-cli-cts-pengine-avoid-sed-i.patch b/0010-Test-cts-cli-cts-pengine-avoid-sed-i.patch deleted file mode 100644 index 1131d8a..0000000 --- a/0010-Test-cts-cli-cts-pengine-avoid-sed-i.patch +++ /dev/null @@ -1,106 +0,0 @@ -From ea62ae820b0fa71e5f582f844db21a79db268c1e Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Mon, 9 Apr 2018 17:50:23 -0500 -Subject: [PATCH 10/17] Test: cts-cli,cts-pengine: avoid sed -i - -"sed -i" isn't POSIX, and its usage differs in GNU sed and BSD sed, -so avoid it in regression tests. - -It should be handled similarly in other places where it remains, but this will -help get the BSD build working. ---- - cts/cts-cli.in | 25 +++++++++---------------- - cts/cts-pengine.in | 13 ++++++++++++- - 2 files changed, 21 insertions(+), 17 deletions(-) - -diff --git a/cts/cts-cli.in b/cts/cts-cli.in -index 365f4b10b..38045b944 100755 ---- a/cts/cts-cli.in -+++ b/cts/cts-cli.in -@@ -433,18 +433,6 @@ function test_dates() { - test_assert $CRM_EX_OK 0 - } - --function get_epoch() { -- CIB_user=root CIB_file=$1 CIB_shadow="" cibadmin -Q | head -n 1 | sed -e 's/.* epoch=\"\([0-9]*\).*/\1/' --} -- --function restore_epoch() { -- infile=$1; shift -- old=$1; shift -- new=$(get_epoch $infile) -- -- sed -i 's/epoch=.$old/epoch=\"$new/g' $infile --} -- - function test_acl_loop() { - local TMPXML="$1" - -@@ -693,8 +681,11 @@ EOF - test_assert $CRM_EX_OK - - SHADOWPATH="$(crm_shadow --file)" -- sed -i 's/epoch=.2/epoch=\"6/g' "$SHADOWPATH" -- sed -i 's/admin_epoch=.1/admin_epoch=\"0/g' "$SHADOWPATH" -+ # sed -i isn't portable :-( -+ cp -p "$SHADOWPATH" "${SHADOWPATH}.$$" # to keep permissions -+ sed -e 's/epoch=.2/epoch=\"6/g' -e 's/admin_epoch=.1/admin_epoch=\"0/g' \ -+ "$SHADOWPATH" > "${SHADOWPATH}.$$" -+ mv -- "${SHADOWPATH}.$$" "$SHADOWPATH" - - test_acl_loop "$TMPXML" - -@@ -845,7 +836,8 @@ for t in $tests; do - eval TMPFILE_$t="$TMPFILE" - test_$t > "$TMPFILE" - -- sed -i -e 's/cib-last-written.*>/>/'\ -+ # sed -i isn't portable :-( -+ sed -e 's/cib-last-written.*>/>/'\ - -e 's/ last-run=\"[0-9]*\"//'\ - -e 's/crm_feature_set="[^"]*" //'\ - -e 's/validate-with="[^"]*" //'\ -@@ -859,7 +851,8 @@ for t in $tests; do - -e 's/schemas\.c:\([0-9][0-9]*\)/schemas.c:NNN/' \ - -e 's/constraints\.:\([0-9][0-9]*\)/constraints.:NNN/' \ - -e 's/\(validation ([0-9][0-9]* of \)[0-9][0-9]*\().*\)/\1X\2/' \ -- "$TMPFILE" -+ "$TMPFILE" > "${TMPFILE}.$$" -+ mv -- "${TMPFILE}.$$" "$TMPFILE" - - if [ $do_save -eq 1 ]; then - cp "$TMPFILE" $test_home/cli/regression.$t.exp -diff --git a/cts/cts-pengine.in b/cts/cts-pengine.in -index fb0952580..060708439 100644 ---- a/cts/cts-pengine.in -+++ b/cts/cts-pengine.in -@@ -84,6 +84,17 @@ function show_test() { - printf " Test %-25s $*\n" "$name:" - } - -+# Normalize policy engine output for comparison -+normalize() { -+ for NORMALIZE_FILE in "$@"; do -+ # sed -i is not portable :-( -+ sed -e 's/crm_feature_set="[^"]*"//' \ -+ -e 's/batch-limit="[0-9]*"//' \ -+ "$NORMALIZE_FILE" > "${NORMALIZE_FILE}.$$" -+ mv -- "${NORMALIZE_FILE}.$$" "$NORMALIZE_FILE" -+ done -+} -+ - info "Test home is:\t$test_home" - - create_mode="false" -@@ -332,7 +343,7 @@ do_test() { - rm -f $dot_output - fi - -- sed -i -e 's/crm_feature_set="[^"]*"//' -e 's/batch-limit="[0-9]*"//' $expected $output -+ normalize "$expected" "$output" - diff $diff_opts $expected $output >/dev/null - rc2=$? - if [ $rc2 -ne 0 ]; then --- -2.17.0 - diff --git a/0011-Build-tools-only-link-against-necessary-libraries.patch b/0011-Build-tools-only-link-against-necessary-libraries.patch deleted file mode 100644 index be3d1dd..0000000 --- a/0011-Build-tools-only-link-against-necessary-libraries.patch +++ /dev/null @@ -1,171 +0,0 @@ -From 560281f7479d3526fd974a0c21c09ae930151df1 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 10 Apr 2018 10:43:35 -0500 -Subject: [PATCH 11/17] Build: tools: only link against necessary libraries - -COMMONLIBS was not ---- - tools/Makefile.am | 103 ++++++++++++++++++++++------------------------ - 1 file changed, 50 insertions(+), 53 deletions(-) - -diff --git a/tools/Makefile.am b/tools/Makefile.am -index f1cc92ed2..24b1d8bdd 100644 ---- a/tools/Makefile.am -+++ b/tools/Makefile.am -@@ -1,19 +1,8 @@ - # --# Copyright (C) 2004-2009 Andrew Beekhof -+# Copyright 2004-2018 Andrew Beekhof - # --# This program is free software; you can redistribute it and/or --# modify it under the terms of the GNU General Public License --# as published by the Free Software Foundation; either version 2 --# of the License, or (at your option) any later version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU General Public License for more details. --# --# You should have received a copy of the GNU General Public License --# along with this program; if not, write to the Free Software --# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+# This source code is licensed under the GNU General Public License version 2 -+# or later (GPLv2+) WITHOUT ANY WARRANTY. - # - include $(top_srcdir)/Makefile.common - -@@ -21,11 +10,6 @@ if BUILD_SYSTEMD - systemdunit_DATA = crm_mon.service - endif - --COMMONLIBS = \ -- $(top_builddir)/lib/common/libcrmcommon.la \ -- $(top_builddir)/lib/cib/libcib.la \ -- $(CURSESLIBS) $(CLUSTERLIBS) -- - noinst_HEADERS = crm_resource.h fake_transition.h - - pcmkdir = $(datadir)/$(PACKAGE) -@@ -52,71 +36,84 @@ endif - MAN8DEPS = crm_attribute crm_node - - crmadmin_SOURCES = crmadmin.c --crmadmin_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \ -- $(COMMONLIBS) $(CLUSTERLIBS) -+crmadmin_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \ -+ $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la \ -+ $(CLUSTERLIBS) - - crm_error_SOURCES = crm_error.c --crm_error_LDADD = $(COMMONLIBS) -+crm_error_LDADD = $(top_builddir)/lib/common/libcrmcommon.la - - cibadmin_SOURCES = cibadmin.c --cibadmin_LDADD = $(COMMONLIBS) -+cibadmin_LDADD = $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la - - crm_shadow_SOURCES = cib_shadow.c --crm_shadow_LDADD = $(COMMONLIBS) -+crm_shadow_LDADD = $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la - - crm_node_SOURCES = crm_node.c --crm_node_LDADD = $(top_builddir)/lib/cluster/libcrmcluster.la \ -- $(COMMONLIBS) $(CLUSTERLIBS) -+crm_node_LDADD = $(top_builddir)/lib/cluster/libcrmcluster.la \ -+ $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la \ -+ $(CLUSTERLIBS) - - crm_simulate_SOURCES = crm_simulate.c fake_transition.c - crm_simulate_CFLAGS = -I$(top_srcdir)/pengine - --crm_simulate_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \ -- $(top_builddir)/pengine/libpengine.la \ -- $(top_builddir)/lib/cib/libcib.la \ -- $(top_builddir)/lib/lrmd/liblrmd.la \ -- $(top_builddir)/lib/transition/libtransitioner.la \ -- $(COMMONLIBS) -+crm_simulate_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \ -+ $(top_builddir)/pengine/libpengine.la \ -+ $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/lrmd/liblrmd.la \ -+ $(top_builddir)/lib/transition/libtransitioner.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la - - crm_diff_SOURCES = crm_diff.c --crm_diff_LDADD = $(COMMONLIBS) -+crm_diff_LDADD = $(top_builddir)/lib/common/libcrmcommon.la - - crm_mon_SOURCES = crm_mon.c --crm_mon_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \ -- $(top_builddir)/lib/fencing/libstonithd.la \ -- $(top_builddir)/pengine/libpengine.la \ -- $(COMMONLIBS) -+crm_mon_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \ -+ $(top_builddir)/lib/fencing/libstonithd.la \ -+ $(top_builddir)/pengine/libpengine.la \ -+ $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la \ -+ $(CURSESLIBS) - - # Arguments could be made that this should live in crm/pengine - crm_verify_SOURCES = crm_verify.c - crm_verify_LDADD = $(top_builddir)/lib/pengine/libpe_status.la \ -- $(top_builddir)/pengine/libpengine.la \ -- $(COMMONLIBS) -+ $(top_builddir)/pengine/libpengine.la \ -+ $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la - - crm_attribute_SOURCES = crm_attribute.c --crm_attribute_LDADD = $(top_builddir)/lib/cluster/libcrmcluster.la $(COMMONLIBS) -+crm_attribute_LDADD = $(top_builddir)/lib/cluster/libcrmcluster.la \ -+ $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la - - crm_resource_SOURCES = crm_resource.c crm_resource_ban.c crm_resource_runtime.c crm_resource_print.c fake_transition.c - crm_resource_CFLAGS = -I$(top_srcdir)/pengine --crm_resource_LDADD = $(top_builddir)/lib/pengine/libpe_rules.la \ -- $(top_builddir)/lib/lrmd/liblrmd.la \ -- $(top_builddir)/lib/services/libcrmservice.la \ -- $(top_builddir)/lib/pengine/libpe_status.la \ -- $(top_builddir)/pengine/libpengine.la \ -- $(top_builddir)/lib/transition/libtransitioner.la \ -- $(COMMONLIBS) -+crm_resource_LDADD = $(top_builddir)/lib/pengine/libpe_rules.la \ -+ $(top_builddir)/lib/lrmd/liblrmd.la \ -+ $(top_builddir)/lib/services/libcrmservice.la \ -+ $(top_builddir)/lib/pengine/libpe_status.la \ -+ $(top_builddir)/pengine/libpengine.la \ -+ $(top_builddir)/lib/transition/libtransitioner.la \ -+ $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la - - iso8601_SOURCES = test.iso8601.c --iso8601_LDADD = $(COMMONLIBS) -+iso8601_LDADD = $(top_builddir)/lib/common/libcrmcommon.la - - attrd_updater_SOURCES = attrd_updater.c --attrd_updater_LDADD = $(COMMONLIBS) -+attrd_updater_LDADD = $(top_builddir)/lib/common/libcrmcommon.la - - crm_ticket_SOURCES = crm_ticket.c --crm_ticket_LDADD = $(top_builddir)/lib/pengine/libpe_rules.la \ -- $(top_builddir)/lib/pengine/libpe_status.la \ -- $(top_builddir)/pengine/libpengine.la \ -- $(COMMONLIBS) -+crm_ticket_LDADD = $(top_builddir)/lib/pengine/libpe_rules.la \ -+ $(top_builddir)/lib/pengine/libpe_status.la \ -+ $(top_builddir)/pengine/libpengine.la \ -+ $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/common/libcrmcommon.la - - if BUILD_SERVICELOG - notifyServicelogEvent_SOURCES = notifyServicelogEvent.c --- -2.17.0 - diff --git a/0012-Low-fencing-free-dynamic-memory-at-stonithd-shutdown.patch b/0012-Low-fencing-free-dynamic-memory-at-stonithd-shutdown.patch deleted file mode 100644 index 014afe0..0000000 --- a/0012-Low-fencing-free-dynamic-memory-at-stonithd-shutdown.patch +++ /dev/null @@ -1,268 +0,0 @@ -From b8745b20b966076f1218d9a3c476ec7537330122 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 10 Apr 2018 12:25:25 -0500 -Subject: [PATCH 12/17] Low: fencing: free dynamic memory at stonithd shutdown - -No serious effect since it's shutting down anyway, but clean up for the sake of -completeness, and making memory analysis happy ---- - fencing/commands.c | 59 +++++++++++++++++++++++++++++++++++++++++----- - fencing/internal.h | 11 +++++---- - fencing/main.c | 34 +++++++++----------------- - fencing/remote.c | 29 +++++++++++------------ - 4 files changed, 85 insertions(+), 48 deletions(-) - -diff --git a/fencing/commands.c b/fencing/commands.c -index 809be518c..fe624da7d 100644 ---- a/fencing/commands.c -+++ b/fencing/commands.c -@@ -485,7 +485,7 @@ schedule_stonith_command(async_command_t * cmd, stonith_device_t * device) - } - } - --void -+static void - free_device(gpointer data) - { - GListPtr gIter = NULL; -@@ -514,6 +514,23 @@ free_device(gpointer data) - free(device); - } - -+void free_device_list() -+{ -+ if (device_list != NULL) { -+ g_hash_table_destroy(device_list); -+ device_list = NULL; -+ } -+} -+ -+void -+init_device_list() -+{ -+ if (device_list == NULL) { -+ device_list = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, -+ free_device); -+ } -+} -+ - static GHashTable * - build_port_aliases(const char *hostmap, GListPtr * targets) - { -@@ -670,16 +687,28 @@ parse_host_list(const char *hosts) - - GHashTable *metadata_cache = NULL; - -+void -+free_metadata_cache() { -+ if (metadata_cache != NULL) { -+ g_hash_table_destroy(metadata_cache); -+ metadata_cache = NULL; -+ } -+} -+ -+static void -+init_metadata_cache() { -+ if (metadata_cache == NULL) { -+ metadata_cache = crm_str_table_new(); -+ } -+} -+ - static xmlNode * - get_agent_metadata(const char *agent) - { - xmlNode *xml = NULL; - char *buffer = NULL; - -- if(metadata_cache == NULL) { -- metadata_cache = crm_str_table_new(); -- } -- -+ init_metadata_cache(); - buffer = g_hash_table_lookup(metadata_cache, agent); - if(safe_str_eq(agent, STONITH_WATCHDOG_AGENT)) { - return NULL; -@@ -1228,7 +1257,7 @@ count_active_levels(stonith_topology_t * tp) - return count; - } - --void -+static void - free_topology_entry(gpointer data) - { - stonith_topology_t *tp = data; -@@ -1247,6 +1276,24 @@ free_topology_entry(gpointer data) - free(tp); - } - -+void -+free_topology_list() -+{ -+ if (topology != NULL) { -+ g_hash_table_destroy(topology); -+ topology = NULL; -+ } -+} -+ -+void -+init_topology_list() -+{ -+ if (topology == NULL) { -+ topology = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, -+ free_topology_entry); -+ } -+} -+ - char *stonith_level_key(xmlNode *level, int mode) - { - if(mode == -1) { -diff --git a/fencing/internal.h b/fencing/internal.h -index 9687b63c4..34d82c901 100644 ---- a/fencing/internal.h -+++ b/fencing/internal.h -@@ -177,6 +177,13 @@ typedef struct stonith_topology_s { - - } stonith_topology_t; - -+void init_device_list(void); -+void free_device_list(void); -+void init_topology_list(void); -+void free_topology_list(void); -+void free_remote_op_list(void); -+void free_metadata_cache(void); -+ - long long get_stonith_flag(const char *name); - - void stonith_command(crm_client_t * client, uint32_t id, uint32_t flags, -@@ -218,10 +225,6 @@ void *create_remote_stonith_op(const char *client, xmlNode * request, gboolean p - - int stonith_fence_history(xmlNode * msg, xmlNode ** output); - --void free_device(gpointer data); -- --void free_topology_entry(gpointer data); -- - bool fencing_peer_active(crm_node_t *peer); - - int stonith_manual_ack(xmlNode * msg, remote_fencing_op_t * op); -diff --git a/fencing/main.c b/fencing/main.c -index 7f0dad581..888f9605e 100644 ---- a/fencing/main.c -+++ b/fencing/main.c -@@ -1,19 +1,8 @@ - /* -- * Copyright (C) 2009 Andrew Beekhof -+ * Copyright 2009-2018 Andrew Beekhof - * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public -- * License as published by the Free Software Foundation; either -- * version 2 of the License, or (at your option) any later version. -- * -- * This software is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * General Public License for more details. -- * -- * You should have received a copy of the GNU General Public -- * License along with this library; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ * This source code is licensed under the GNU General Public License version 2 -+ * or later (GPLv2+) WITHOUT ANY WARRANTY. - */ - - #include -@@ -532,11 +521,8 @@ fencing_topology_init() - const char *xpath = "//" XML_TAG_FENCING_LEVEL; - - crm_trace("Full topology refresh"); -- -- if(topology) { -- g_hash_table_destroy(topology); -- topology = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, free_topology_entry); -- } -+ free_topology_list(); -+ init_topology_list(); - - /* Grab everything */ - xpathObj = xpath_search(local_cib, xpath); -@@ -1160,6 +1146,10 @@ stonith_cleanup(void) - - crm_peer_destroy(); - crm_client_cleanup(); -+ free_remote_op_list(); -+ free_topology_list(); -+ free_device_list(); -+ free_metadata_cache(); - free(stonith_our_uname); - free_xml(local_cib); - } -@@ -1466,10 +1456,8 @@ main(int argc, char **argv) - stonith_our_uname = strdup("localhost"); - } - -- -- device_list = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, free_device); -- -- topology = g_hash_table_new_full(crm_str_hash, g_str_equal, NULL, free_topology_entry); -+ init_device_list(); -+ init_topology_list(); - - if(stonith_watchdog_timeout_ms > 0) { - xmlNode *xml; -diff --git a/fencing/remote.c b/fencing/remote.c -index e1d1a5c66..a2b8bfb40 100644 ---- a/fencing/remote.c -+++ b/fencing/remote.c -@@ -1,19 +1,8 @@ - /* -- * Copyright (C) 2009 Andrew Beekhof -+ * Copyright 2009-2018 Andrew Beekhof - * -- * This program is free software; you can redistribute it and/or -- * modify it under the terms of the GNU General Public -- * License as published by the Free Software Foundation; either -- * version 2 of the License, or (at your option) any later version. -- * -- * This software is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- * General Public License for more details. -- * -- * You should have received a copy of the GNU General Public -- * License along with this library; if not, write to the Free Software -- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -+ * This source code is licensed under the GNU General Public License version 2 -+ * or later (GPLv2+) WITHOUT ANY WARRANTY. - */ - - #include -@@ -82,7 +71,8 @@ typedef struct st_query_result_s { - GHashTable *devices; - } st_query_result_t; - --GHashTable *remote_op_list = NULL; -+static GHashTable *remote_op_list = NULL; -+ - void call_remote_stonith(remote_fencing_op_t * op, st_query_result_t * peer); - static void remote_op_done(remote_fencing_op_t * op, xmlNode * data, int rc, int dup); - extern xmlNode *stonith_create_op(int call_id, const char *token, const char *op, xmlNode * data, -@@ -111,6 +101,15 @@ free_remote_query(gpointer data) - } - } - -+void -+free_remote_op_list() -+{ -+ if (remote_op_list != NULL) { -+ g_hash_table_destroy(remote_op_list); -+ remote_op_list = NULL; -+ } -+} -+ - struct peer_count_data { - const remote_fencing_op_t *op; - gboolean verified_only; --- -2.17.0 - diff --git a/0013-Low-fencing-avoid-memory-leaks-when-freeing-remote-o.patch b/0013-Low-fencing-avoid-memory-leaks-when-freeing-remote-o.patch deleted file mode 100644 index 303f602..0000000 --- a/0013-Low-fencing-avoid-memory-leaks-when-freeing-remote-o.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 13a7c5be972fbd5c00fa0ad3b832720c966e80cf Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 10 Apr 2018 15:19:11 -0500 -Subject: [PATCH 13/17] Low: fencing: avoid memory leaks when freeing remote - operation - ---- - fencing/remote.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/fencing/remote.c b/fencing/remote.c -index a2b8bfb40..42ca9a7e8 100644 ---- a/fencing/remote.c -+++ b/fencing/remote.c -@@ -237,6 +237,7 @@ free_remote_op(gpointer data) - - free(op->id); - free(op->action); -+ free(op->delegate); - free(op->target); - free(op->client_id); - free(op->client_name); -@@ -254,6 +255,7 @@ free_remote_op(gpointer data) - op->devices_list = NULL; - } - g_list_free_full(op->automatic_list, free); -+ g_list_free(op->duplicates); - free(op); - } - --- -2.17.0 - diff --git a/0014-Low-libcrmcommon-fix-memory-leak-in-schema-workaroun.patch b/0014-Low-libcrmcommon-fix-memory-leak-in-schema-workaroun.patch deleted file mode 100644 index 3c27ae0..0000000 --- a/0014-Low-libcrmcommon-fix-memory-leak-in-schema-workaroun.patch +++ /dev/null @@ -1,25 +0,0 @@ -From c900353052e3db556443694c3b9fb86d55d202a3 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 10 Apr 2018 14:23:11 -0500 -Subject: [PATCH 14/17] Low: libcrmcommon: fix memory leak in schema workaround - ---- - lib/common/schemas.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/common/schemas.c b/lib/common/schemas.c -index c3fff1e79..9222acba0 100644 ---- a/lib/common/schemas.c -+++ b/lib/common/schemas.c -@@ -684,7 +684,7 @@ apply_transformation(xmlNode *xml, const char *transform, gboolean to_logs) - #if PCMK_SCHEMAS_EMERGENCY_XSLT != 0 - emergency_res = xsltSaveResultToString(&emergency_result, - &emergency_txt_len, res, xslt); -- free(res); -+ xmlFreeDoc(res); - CRM_CHECK(emergency_res == 0, goto cleanup); - out = string2xml((const char *) emergency_result); - free(emergency_result); --- -2.17.0 - diff --git a/0015-Low-libcrmcommon-free-signal-triggers-when-cleaning-.patch b/0015-Low-libcrmcommon-free-signal-triggers-when-cleaning-.patch deleted file mode 100644 index 9542190..0000000 --- a/0015-Low-libcrmcommon-free-signal-triggers-when-cleaning-.patch +++ /dev/null @@ -1,86 +0,0 @@ -From a70e665bea76d99ebb8809dd522dd2049c544fa7 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Tue, 10 Apr 2018 15:16:25 -0500 -Subject: [PATCH 15/17] Low: libcrmcommon: free signal triggers when cleaning - up mainloop - -Not really necessary, but cleans up memory at exit better ---- - lib/common/mainloop.c | 31 ++++++++++++++++++------------- - 1 file changed, 18 insertions(+), 13 deletions(-) - -diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c -index ba2f8d524..ce9f0ec3d 100644 ---- a/lib/common/mainloop.c -+++ b/lib/common/mainloop.c -@@ -311,6 +311,17 @@ crm_signal(int sig, void (*dispatch) (int sig)) - return TRUE; - } - -+static void -+mainloop_destroy_signal_entry(int sig) -+{ -+ crm_signal_t *tmp = crm_signals[sig]; -+ -+ crm_signals[sig] = NULL; -+ -+ crm_trace("Destroying signal %d", sig); -+ mainloop_destroy_trigger((crm_trigger_t *) tmp); -+} -+ - gboolean - mainloop_add_signal(int sig, void (*dispatch) (int sig)) - { -@@ -348,11 +359,7 @@ mainloop_add_signal(int sig, void (*dispatch) (int sig)) - crm_signals[sig]->signal = sig; - - if (crm_signal(sig, mainloop_signal_handler) == FALSE) { -- crm_signal_t *tmp = crm_signals[sig]; -- -- crm_signals[sig] = NULL; -- -- mainloop_destroy_trigger((crm_trigger_t *) tmp); -+ mainloop_destroy_signal_entry(sig); - return FALSE; - } - #if 0 -@@ -372,8 +379,6 @@ mainloop_add_signal(int sig, void (*dispatch) (int sig)) - gboolean - mainloop_destroy_signal(int sig) - { -- crm_signal_t *tmp = NULL; -- - if (sig >= NSIG || sig < 0) { - crm_err("Signal %d is out of range", sig); - return FALSE; -@@ -385,11 +390,7 @@ mainloop_destroy_signal(int sig) - } else if (crm_signals[sig] == NULL) { - return TRUE; - } -- -- crm_trace("Destroying signal %d", sig); -- tmp = crm_signals[sig]; -- crm_signals[sig] = NULL; -- mainloop_destroy_trigger((crm_trigger_t *) tmp); -+ mainloop_destroy_signal_entry(sig); - return TRUE; - } - -@@ -398,9 +399,13 @@ static qb_array_t *gio_map = NULL; - void - mainloop_cleanup(void) - { -- if(gio_map) { -+ if (gio_map) { - qb_array_free(gio_map); - } -+ -+ for (int sig = 0; sig < NSIG; ++sig) { -+ mainloop_destroy_signal_entry(sig); -+ } - } - - /* --- -2.17.0 - diff --git a/0016-Build-Makefile-build-and-clean-but-not-install-CTS-b.patch b/0016-Build-Makefile-build-and-clean-but-not-install-CTS-b.patch deleted file mode 100644 index 4fdbe98..0000000 --- a/0016-Build-Makefile-build-and-clean-but-not-install-CTS-b.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 1f916d3007d3e15d8306283e97714f6d7bd82125 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 11 Apr 2018 09:14:13 -0500 -Subject: [PATCH 16/17] Build: Makefile: build and clean (but not install) CTS - by default - ---- - Makefile.am | 25 ++++++++++++++++--------- - 1 file changed, 16 insertions(+), 9 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index f0f935dcf..4d5309a6e 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -23,8 +23,14 @@ EXTRA_DIST = autogen.sh m4/gnulib-cache.m4 - MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure DRF/config-h.in \ - DRF/stamp-h.in libtool.m4 ltdl.m4 - --CORE = replace include lib mcp attrd pengine cib crmd fencing lrmd tools xml --SUBDIRS = $(CORE) extra doc -+# Only these will get installed with a plain "make install" -+CORE_INSTALL = replace include lib mcp \ -+ attrd pengine cib crmd fencing lrmd tools xml -+ -+# Only these will get built with a plain "make" or "make clean" -+CORE = $(CORE_INSTALL) cts -+ -+SUBDIRS = $(CORE) doc extra - - AM_CPPFLAGS = -I$(top_srcdir)/include - -@@ -33,9 +39,6 @@ doc_DATA = README.markdown COPYING - licensedir = $(docdir)/licenses/ - license_DATA = $(wildcard licenses/*) - --# Test components --SUBDIRS += cts -- - # Scratch file for ad-hoc testing - noinst_PROGRAMS = scratch - nodist_scratch_SOURCES = scratch.c -@@ -45,15 +48,19 @@ scratch.c: - echo 'int main(void){}' >$@ - - core: -- @echo "Building only core components: $(CORE)" -+ @echo "Building only core components and tests: $(CORE)" - list='$(CORE)'; for subdir in $$list; do echo "Building $$subdir"; $(MAKE) -C $$subdir all || exit 1; done - - core-install: -- @echo "Installing only core components: $(CORE)" -- list='$(CORE)'; for subdir in $$list; do echo "Installing $$subdir"; $(MAKE) -C $$subdir install || exit 1; done -+ @echo "Installing only core components: $(CORE_INSTALL)" -+ list='$(CORE_INSTALL)'; \ -+ for subdir in $$list; do \ -+ echo "Installing $$subdir"; \ -+ $(MAKE) -C $$subdir install || exit 1; \ -+ done - - core-clean: -- @echo "Cleaning only core components: $(CORE)" -+ @echo "Cleaning only core components and tests: $(CORE)" - list='$(CORE)'; for subdir in $$list; do echo "Cleaning $$subdir"; $(MAKE) -C $$subdir clean || exit 1; done - - install-exec-local: --- -2.17.0 - diff --git a/0017-Refactor-libcrmcommon-avoid-new-as-variable-name.patch b/0017-Refactor-libcrmcommon-avoid-new-as-variable-name.patch deleted file mode 100644 index b26c296..0000000 --- a/0017-Refactor-libcrmcommon-avoid-new-as-variable-name.patch +++ /dev/null @@ -1,196 +0,0 @@ -From 550a68817af8eaad45bfd001bba3782cba7e0d02 Mon Sep 17 00:00:00 2001 -From: Ken Gaillot -Date: Wed, 11 Apr 2018 10:35:31 -0500 -Subject: [PATCH 17/17] Refactor: libcrmcommon: avoid "new" as variable name - -confuses cppcheck ---- - lib/common/xml.c | 69 +++++++++++++++++++++++++----------------------- - 1 file changed, 36 insertions(+), 33 deletions(-) - -diff --git a/lib/common/xml.c b/lib/common/xml.c -index 7781d48a0..0bb64e5fb 100644 ---- a/lib/common/xml.c -+++ b/lib/common/xml.c -@@ -4040,19 +4040,19 @@ apply_xml_diff(xmlNode *old_xml, xmlNode * diff, xmlNode **new_xml) - } - - static void --__xml_diff_object(xmlNode * old, xmlNode * new) -+__xml_diff_object(xmlNode *old_xml, xmlNode *new_xml) - { - xmlNode *cIter = NULL; - xmlAttr *pIter = NULL; - -- CRM_CHECK(new != NULL, return); -- if(old == NULL) { -- crm_node_created(new); -- __xml_acl_post_process(new); /* Check creation is allowed */ -+ CRM_CHECK(new_xml != NULL, return); -+ if (old_xml == NULL) { -+ crm_node_created(new_xml); -+ __xml_acl_post_process(new_xml); // Check creation is allowed - return; - - } else { -- xml_private_t *p = new->_private; -+ xml_private_t *p = new_xml->_private; - - if(p->flags & xpf_processed) { - /* Avoid re-comparing nodes */ -@@ -4061,39 +4061,40 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - p->flags |= xpf_processed; - } - -- for (pIter = crm_first_attr(new); pIter != NULL; pIter = pIter->next) { -+ for (pIter = crm_first_attr(new_xml); pIter != NULL; pIter = pIter->next) { - xml_private_t *p = pIter->_private; - - /* Assume everything was just created and take it from there */ - p->flags |= xpf_created; - } - -- for (pIter = crm_first_attr(old); pIter != NULL; ) { -+ for (pIter = crm_first_attr(old_xml); pIter != NULL; ) { - xmlAttr *prop = pIter; - xml_private_t *p = NULL; - const char *name = (const char *)pIter->name; -- const char *old_value = crm_element_value(old, name); -- xmlAttr *exists = xmlHasProp(new, pIter->name); -+ const char *old_value = crm_element_value(old_xml, name); -+ xmlAttr *exists = xmlHasProp(new_xml, pIter->name); - - pIter = pIter->next; - if(exists == NULL) { -- p = new->doc->_private; -+ p = new_xml->doc->_private; - - /* Prevent the dirty flag being set recursively upwards */ - clear_bit(p->flags, xpf_tracking); -- exists = xmlSetProp(new, (const xmlChar *)name, (const xmlChar *)old_value); -+ exists = xmlSetProp(new_xml, (const xmlChar *) name, -+ (const xmlChar *) old_value); - set_bit(p->flags, xpf_tracking); - - p = exists->_private; - p->flags = 0; - -- crm_trace("Lost %s@%s=%s", old->name, name, old_value); -- xml_remove_prop(new, name); -+ crm_trace("Lost %s@%s=%s", old_xml->name, name, old_value); -+ xml_remove_prop(new_xml, name); - - } else { - int p_new = __xml_offset((xmlNode*)exists); - int p_old = __xml_offset((xmlNode*)prop); -- const char *value = crm_element_value(new, name); -+ const char *value = crm_element_value(new_xml, name); - - p = exists->_private; - p->flags = (p->flags & ~xpf_created); -@@ -4102,16 +4103,18 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - /* Restore the original value, so we can call crm_xml_add(), - * which checks ACLs - */ -- char *vcopy = crm_element_value_copy(new, name); -+ char *vcopy = crm_element_value_copy(new_xml, name); - -- crm_trace("Modified %s@%s %s->%s", old->name, name, old_value, vcopy); -- xmlSetProp(new, prop->name, (const xmlChar *)old_value); -- crm_xml_add(new, name, vcopy); -+ crm_trace("Modified %s@%s %s->%s", -+ old_xml->name, name, old_value, vcopy); -+ xmlSetProp(new_xml, prop->name, (const xmlChar *) old_value); -+ crm_xml_add(new_xml, name, vcopy); - free(vcopy); - - } else if(p_old != p_new) { -- crm_info("Moved %s@%s (%d -> %d)", old->name, name, p_old, p_new); -- __xml_node_dirty(new); -+ crm_info("Moved %s@%s (%d -> %d)", -+ old_xml->name, name, p_old, p_new); -+ __xml_node_dirty(new_xml); - p->flags |= xpf_dirty|xpf_moved; - - if(p_old > p_new) { -@@ -4126,21 +4129,21 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - } - } - -- for (pIter = crm_first_attr(new); pIter != NULL; ) { -+ for (pIter = crm_first_attr(new_xml); pIter != NULL; ) { - xmlAttr *prop = pIter; - xml_private_t *p = pIter->_private; - - pIter = pIter->next; - if(is_set(p->flags, xpf_created)) { - char *name = strdup((const char *)prop->name); -- char *value = crm_element_value_copy(new, name); -+ char *value = crm_element_value_copy(new_xml, name); - -- crm_trace("Created %s@%s=%s", new->name, name, value); -+ crm_trace("Created %s@%s=%s", new_xml->name, name, value); - /* Remove plus create won't work as it will modify the relative attribute ordering */ -- if(__xml_acl_check(new, name, xpf_acl_write)) { -+ if (__xml_acl_check(new_xml, name, xpf_acl_write)) { - crm_attr_dirty(prop); - } else { -- xmlUnsetProp(new, prop->name); /* Remove - change not allowed */ -+ xmlUnsetProp(new_xml, prop->name); /* Remove - change not allowed */ - } - - free(value); -@@ -4148,9 +4151,9 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - } - } - -- for (cIter = __xml_first_child(old); cIter != NULL; ) { -+ for (cIter = __xml_first_child(old_xml); cIter != NULL; ) { - xmlNode *old_child = cIter; -- xmlNode *new_child = find_element(new, cIter, TRUE); -+ xmlNode *new_child = find_element(new_xml, cIter, TRUE); - - cIter = __xml_next(cIter); - if(new_child) { -@@ -4158,7 +4161,7 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - - } else { - /* Create then free (which will check the acls if necessary) */ -- xmlNode *candidate = add_node_copy(new, old_child); -+ xmlNode *candidate = add_node_copy(new_xml, old_child); - xmlNode *top = xmlDocGetRootElement(candidate->doc); - - __xml_node_clean(candidate); -@@ -4166,7 +4169,7 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - /* Record the old position */ - free_xml_with_position(candidate, __xml_offset(old_child)); - -- if (find_element(new, old_child, TRUE) == NULL) { -+ if (find_element(new_xml, old_child, TRUE) == NULL) { - xml_private_t *p = old_child->_private; - - p->flags |= xpf_skip; -@@ -4174,9 +4177,9 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - } - } - -- for (cIter = __xml_first_child(new); cIter != NULL; ) { -+ for (cIter = __xml_first_child(new_xml); cIter != NULL; ) { - xmlNode *new_child = cIter; -- xmlNode *old_child = find_element(old, cIter, TRUE); -+ xmlNode *old_child = find_element(old_xml, cIter, TRUE); - - cIter = __xml_next(cIter); - if(old_child == NULL) { -@@ -4194,7 +4197,7 @@ __xml_diff_object(xmlNode * old, xmlNode * new) - - crm_info("%s.%s moved from %d to %d", - new_child->name, ID(new_child), p_old, p_new); -- __xml_node_dirty(new); -+ __xml_node_dirty(new_xml); - p->flags |= xpf_moved; - - if(p_old > p_new) { --- -2.17.0 - diff --git a/0018-Tests-cts-cli-fix-thinko-leading-to-system-wide-shad.patch b/0018-Tests-cts-cli-fix-thinko-leading-to-system-wide-shad.patch deleted file mode 100644 index 7dfbbd2..0000000 --- a/0018-Tests-cts-cli-fix-thinko-leading-to-system-wide-shad.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 889c0cdc0c592a7dee860bb6310a54bc8d33264e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Wed, 11 Apr 2018 16:49:40 +0200 -Subject: [PATCH] Tests: cts-cli: fix thinko leading to system-wide shadow - files - -In particular, building RPM package and triggering %check lead -to cts-cli trying to work with shadow copies located under -/var/lib/pacemaker/cib -- and failing because that path doesn't -exist at that time (unless the buildroot is already spoiled). -This change was unintentionally brought with 1d0d0eff2 commit. - -Note that "mktemp" is not reliably portable (not POSIX'd), -but there were other occurrences already. ---- - cts/cts-cli.in | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/cts/cts-cli.in b/cts/cts-cli.in -index 33580ebac..75751c662 100755 ---- a/cts/cts-cli.in -+++ b/cts/cts-cli.in -@@ -11,6 +11,7 @@ Options: - - : ${shadow=cts-cli} - test_home="$(dirname $(readlink -e $0))" -+shadow_dir=$(mktemp -td cts-cli.shadow.XXXXXXXXXX) - num_errors=0 - num_passed=0 - GREP_OPTIONS= -@@ -73,6 +74,7 @@ function test_assert() { - function test_tools() { - local TMPXML=$(mktemp --tmpdir cts-cli.tools.xml.XXXXXXXXXX) - local TMPORIG=$(mktemp --tmpdir cts-cli.tools.existing.xml.XXXXXXXXXX) -+ export CIB_shadow_dir="${shadow_dir}" - - $VALGRIND_CMD crm_shadow --batch --force --create-empty $shadow 2>&1 - export CIB_shadow=$shadow -@@ -370,6 +372,7 @@ function test_tools() { - cmd="crm_resource -r test-primitive --meta -d is-managed" - test_assert $CRM_EX_OK - -+ unset CIB_shadow_dir - rm -f "$TMPXML" "$TMPORIG" - } - -@@ -614,7 +617,7 @@ function test_acl_loop() { - function test_acls() { - local SHADOWPATH - local TMPXML=$(mktemp --tmpdir cts-cli.acls.xml.XXXXXXXXXX) -- -+ export CIB_shadow_dir="${shadow_dir}" - - $VALGRIND_CMD crm_shadow --batch --force --create-empty $shadow --validate-with pacemaker-1.3 2>&1 - export CIB_shadow=$shadow -@@ -681,12 +684,15 @@ EOF - sed -i 's/admin_epoch=.1/admin_epoch=\"0/g' "$SHADOWPATH" - - test_acl_loop "$TMPXML" -+ -+ unset CIB_shadow_dir - rm -f "$TMPXML" - } - - function test_validity() { - local TMPGOOD=$(mktemp --tmpdir cts-cli.validity.good.xml.XXXXXXXXXX) - local TMPBAD=$(mktemp --tmpdir cts-cli.validity.bad.xml.XXXXXXXXXX) -+ export CIB_shadow_dir="${shadow_dir}" - - $VALGRIND_CMD crm_shadow --batch --force --create-empty $shadow --validate-with pacemaker-1.2 2>&1 - export CIB_shadow=$shadow -@@ -752,6 +758,7 @@ function test_validity() { - cmd="crm_simulate -x $TMPBAD -S" - test_assert $CRM_EX_OK 0 - -+ unset CIB_shadow_dir - rm -f "$TMPGOOD" "$TMPBAD" - } - -@@ -845,6 +852,9 @@ for t in $tests; do - cp "$TMPFILE" $test_home/cli/regression.$t.exp - fi - done -+ -+rm -f "${shadow_dir}/*" -+rmdir "${shadow_dir}" - - failed=0 - --- -2.17.0 - diff --git a/0019-Build-cts-fix-autoconf-variable-substitution-in-the-.patch b/0019-Build-cts-fix-autoconf-variable-substitution-in-the-.patch deleted file mode 100644 index 3e99b2a..0000000 --- a/0019-Build-cts-fix-autoconf-variable-substitution-in-the-.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 86a0b616d6363ff1a6f42454a5d4988266fc585d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= -Date: Thu, 12 Apr 2018 15:02:03 +0200 -Subject: [PATCH] Build: cts: fix autoconf variable substitution in the shebang - -Rectifies 5f3708020. ---- - cts/cts.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/cts/cts.in b/cts/cts.in -index 9ff107c66..93ac1d3a3 100755 ---- a/cts/cts.in -+++ b/cts/cts.in -@@ -1,4 +1,4 @@ --#!@BASH_PATH -+#!@BASH_PATH@ - # - # Copyright 2012-2018 Andrew Beekhof - # --- -2.17.0 - diff --git a/bz1179335-system-wide-crypto-policies.patch b/bz1179335-system-wide-crypto-policies.patch deleted file mode 100644 index bf90277..0000000 --- a/bz1179335-system-wide-crypto-policies.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/lib/common/remote.c.orig 2015-10-20 23:05:53.601054078 +0200 -+++ b/lib/common/remote.c 2015-10-20 23:08:06.128302567 +0200 -@@ -173,8 +173,10 @@ - - gnutls_init(session, type); - # ifdef HAVE_GNUTLS_PRIORITY_SET_DIRECT -+/* https://fedoraproject.org/wiki/Packaging:CryptoPolicies */ -+ gnutls_priority_set_direct(*session, "@SYSTEM", NULL); - /* http://www.manpagez.com/info/gnutls/gnutls-2.10.4/gnutls_81.php#Echo-Server-with-anonymous-authentication */ -- gnutls_priority_set_direct(*session, "NORMAL:+ANON-DH", NULL); -+/* gnutls_priority_set_direct(*session, "NORMAL:+ANON-DH", NULL); */ - /* gnutls_priority_set_direct (*session, "NONE:+VERS-TLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", NULL); */ - # else - gnutls_set_default_priority(*session); diff --git a/pacemaker.spec b/pacemaker.spec index 32defba..eb72eed 100644 --- a/pacemaker.spec +++ b/pacemaker.spec @@ -18,7 +18,7 @@ ## Upstream commit (or git tag, such as "Pacemaker-" plus the ## {pcmkversion} macro for an official release) to use for this package -%global commit Pacemaker-2.0.0-rc2 +%global commit Pacemaker-2.0.0-rc3 ## Since git v2.11, the extent of abbreviation is autoscaled by default ## (used to be constant of 7), so we need to convey it for non-tags, too. %global commit_abbrev 9 @@ -64,6 +64,10 @@ %define py_site %{?python3_sitelib}%{!?python3_sitelib:%( python3 -c 'from distutils.sysconfig import get_python_lib as gpl; print(gpl(1))' 2>/dev/null)} +## Base GnuTLS cipher priorities (presumably only the initial, required keyword) +## overridable with "rpmbuild --define 'pcmk_gnutls_priorities PRIORITY-SPEC'" +%define gnutls_priorities %{?pcmk_gnutls_priorities}%{!?pcmk_gnutls_priorities:@SYSTEM} + # Define conditionals so that "rpmbuild --with " and # "rpmbuild --without " can enable and disable specific features @@ -89,6 +93,9 @@ ## Add option to turn off hardening of libraries and daemon executables %bcond_without hardening +## Add option to disable links for legacy daemon names +%bcond_without legacy_links + # Keep sane profiling data if requested %if %{with profiling} @@ -128,28 +135,7 @@ Group: System Environment/Daemons Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz Source1: https://github.com/%{github_owner}/%{nagios_name}/archive/%{nagios_hash}/%{nagios_name}-%{nagios_hash}.tar.gz # --- -Patch0: 0001-Fix-rhbz-1565187-Ensure-failures-that-cause-fencing-.patch -Patch1: 0002-Test-rhbz-1565187-Ensure-failures-that-cause-fencing.patch -Patch2: 0003-Test-cts-pengine-create_mode-is-now-controlled-by-up.patch -Patch3: 0004-Build-cts-update-scripts-to-use-new-BASH_PATH-subsit.patch -# reordered due to how rebases where done -Patch4: 0018-Tests-cts-cli-fix-thinko-leading-to-system-wide-shad.patch -Patch5: 0005-Test-cts-don-t-use-readlink-e-unless-supported.patch -Patch6: 0006-Refactor-libcrmcommon-move-PID-functions-to-own-file.patch -Patch7: 0007-Refactor-libcrmcommon-shuffle-some-internal-declarat.patch -Patch8: 0008-High-crmd-delete-resource-from-lrmd-when-appropriate.patch -Patch9: 0009-Test-cts-cli-update-expected-results-for-recent-chan.patch -Patch10: 0010-Test-cts-cli-cts-pengine-avoid-sed-i.patch -Patch11: 0011-Build-tools-only-link-against-necessary-libraries.patch -Patch12: 0012-Low-fencing-free-dynamic-memory-at-stonithd-shutdown.patch -Patch13: 0013-Low-fencing-avoid-memory-leaks-when-freeing-remote-o.patch -Patch14: 0014-Low-libcrmcommon-fix-memory-leak-in-schema-workaroun.patch -Patch15: 0015-Low-libcrmcommon-free-signal-triggers-when-cleaning-.patch -Patch16: 0016-Build-Makefile-build-and-clean-but-not-install-CTS-b.patch -Patch17: 0017-Refactor-libcrmcommon-avoid-new-as-variable-name.patch -Patch18: 0019-Build-cts-fix-autoconf-variable-substitution-in-the-.patch -# keep following commented out for now -#Patch100: bz1179335-system-wide-crypto-policies.patch +# patches go here Provides: pcmk-cluster-manager Requires: resource-agents @@ -196,7 +182,7 @@ BuildRequires: asciidoc inkscape publican %endif # git-style patch application -BuildRequires: git +#BuildRequires: git %description Pacemaker is an advanced, scalable High-Availability cluster resource @@ -321,6 +307,7 @@ manager. License: GPLv3 Summary: Pacemaker Nagios Metadata Group: System Environment/Daemons +BuildArch: noarch # NOTE below are the plugins this metadata uses. Requires: nagios-plugins-http Requires: nagios-plugins-ldap @@ -335,9 +322,9 @@ monitor resources. %prep %setup -q -a 1 -n %{name}-%{commit} -%global __scm git_am -%__scm_setup_git -%autopatch -p1 +#global __scm git_am +#__scm_setup_git +#autopatch -p1 %build @@ -360,23 +347,25 @@ export LDFLAGS_HARDENED_LIB="%{?_hardening_ldflags}" ./autogen.sh -%{configure} \ - %{?with_profiling: --with-profiling} \ - %{?with_coverage: --with-coverage} \ - %{!?with_doc: --with-brand=} \ - %{!?with_hardening: --disable-hardening} \ - %{?python_path: PYTHON=%{python_path}} \ - --with-initdir=%{_initrddir} \ - --localstatedir=%{_var} \ - --with-version=%{version}-%{release} \ - --with-nagios \ - --with-nagios-metadata-dir=%{_datadir}/pacemaker/nagios/plugins-metadata/ \ +%{configure} \ + %{?python_path: PYTHON=%{python_path}} \ + %{!?with_hardening: --disable-hardening} \ + %{!?with_legacy_links: --disable-legacy-links} \ + %{?with_profiling: --with-profiling} \ + %{?with_coverage: --with-coverage} \ + %{!?with_doc: --with-brand=} \ + %{?gnutls_priorities: --with-gnutls-priorities="%{gnutls_priorities}"} \ + --with-initdir=%{_initrddir} \ + --localstatedir=%{_var} \ + --with-version=%{version}-%{release} \ + --with-nagios \ + --with-nagios-metadata-dir=%{_datadir}/pacemaker/nagios/plugins-metadata/ \ --with-nagios-plugin-dir=%{_libdir}/nagios/plugins/ make %{_smp_mflags} V=1 all %check -{ cts/cts-pengine --run one-or-more-unrunnable-instances \ +{ cts/cts-scheduler --run one-or-more-unrunnable-instances \ && cts/cts-cli \ && touch .CHECKED } 2>&1 | sed 's/[fF]ail/faiil/g' # prevent false positives in rpmlint @@ -386,7 +375,7 @@ make %{_smp_mflags} V=1 all make DESTDIR=%{buildroot} docdir=%{pcmk_docdir} V=1 install mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig -install -m 644 mcp/pacemaker.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/pacemaker +install -m 644 daemons/pacemakerd/pacemaker.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/pacemaker install -m 644 tools/crm_mon.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/crm_mon mkdir -p %{buildroot}%{_datadir}/pacemaker/nagios/plugins-metadata @@ -405,7 +394,6 @@ find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f # Do not package these either -rm -f %{buildroot}/%{_libdir}/service_crm.so rm -f %{buildroot}/%{_sbindir}/fence_legacy rm -f %{buildroot}/%{_mandir}/man8/fence_legacy.* find %{buildroot} -name 'o2cb*' -type f -print0 | xargs -0 rm -f @@ -477,6 +465,15 @@ fi %postun cli %systemd_postun_with_restart crm_mon.service +%post cts +%systemd_post pacemaker-cts-dummyd@.service + +%preun cts +%systemd_preun pacemaker-cts-dummyd@.service + +%postun cts +%systemd_postun_with_restart pacemaker-cts-dummyd@.service + %pre libs # XXX keep an eye on https://fedoraproject.org/wiki/Changes/SystemdSysusers # reopened recently: @@ -497,8 +494,11 @@ exit 0 %exclude %{_datadir}/pacemaker/nagios/plugins-metadata/* -%exclude %{_libexecdir}/pacemaker/lrmd_test +%exclude %{_libexecdir}/pacemaker/cts-exec-helper +%exclude %{_sbindir}/pacemaker-remoted +%if %{with legacy_links} %exclude %{_sbindir}/pacemaker_remoted +%endif %{_libexecdir}/pacemaker/* %{_sbindir}/crm_attribute @@ -506,9 +506,9 @@ exit 0 %{_sbindir}/crm_node %{_sbindir}/stonith_admin -%doc %{_mandir}/man7/crmd.* -%doc %{_mandir}/man7/pengine.* -%doc %{_mandir}/man7/stonithd.* +%doc %{_mandir}/man7/pacemaker-controld.* +%doc %{_mandir}/man7/pacemaker-schedulerd.* +%doc %{_mandir}/man7/pacemaker-fenced.* %doc %{_mandir}/man7/ocf_pacemaker_controld.* %doc %{_mandir}/man7/ocf_pacemaker_remote.* %doc %{_mandir}/man8/crm_attribute.* @@ -554,7 +554,7 @@ exit 0 %exclude %{_datadir}/pacemaker/tests %{_datadir}/pacemaker %{_datadir}/snmp/mibs/PCMK-MIB.txt -%{_libexecdir}/pacemaker/lrmd_test +%{_libexecdir}/pacemaker/cts-exec-helper %exclude /usr/lib/ocf/resource.d/pacemaker/controld %exclude /usr/lib/ocf/resource.d/pacemaker/o2cb @@ -565,9 +565,9 @@ exit 0 /usr/lib/ocf/resource.d/pacemaker %doc %{_mandir}/man7/* -%exclude %{_mandir}/man7/crmd.* -%exclude %{_mandir}/man7/pengine.* -%exclude %{_mandir}/man7/stonithd.* +%exclude %{_mandir}/man7/pacemaker-controld.* +%exclude %{_mandir}/man7/pacemaker-schedulerd.* +%exclude %{_mandir}/man7/pacemaker-fenced.* %exclude %{_mandir}/man7/ocf_pacemaker_controld.* %exclude %{_mandir}/man7/ocf_pacemaker_o2cb.* %exclude %{_mandir}/man7/ocf_pacemaker_remote.* @@ -577,7 +577,7 @@ exit 0 %exclude %{_mandir}/man8/crm_master.* %exclude %{_mandir}/man8/fence_legacy.* %exclude %{_mandir}/man8/pacemakerd.* -%exclude %{_mandir}/man8/pacemaker_remoted.* +%exclude %{_mandir}/man8/pacemaker-remoted.* %exclude %{_mandir}/man8/stonith_admin.* %license licenses/GPLv2 @@ -618,8 +618,11 @@ exit 0 %ghost %dir %{_localstatedir}/lib/rpm-state/%{name} %{_unitdir}/pacemaker_remote.service +%{_sbindir}/pacemaker-remoted +%if %{with legacy_links} %{_sbindir}/pacemaker_remoted -%{_mandir}/man8/pacemaker_remoted.* +%endif +%{_mandir}/man8/pacemaker-remoted.* %license licenses/GPLv2 %doc COPYING %doc ChangeLog @@ -631,6 +634,7 @@ exit 0 %files cts %{py_site}/cts %{_datadir}/pacemaker/tests +%{_unitdir}/pacemaker-cts-dummyd@.service %license licenses/GPLv2 %doc COPYING %doc ChangeLog @@ -652,6 +656,22 @@ exit 0 %license %{nagios_name}-%{nagios_hash}/COPYING %changelog +* Wed May 02 2018 Jan Pokorný - 2.0.0-0.1.rc3 +- Update for new upstream tarball for release candidate: Pacemaker-2.0.0-rc3, + for full details, see included ChangeLog file or + https://github.com/ClusterLabs/pacemaker/releases/tag/Pacemaker-2.0.0-rc3 +- Adapt spec file more akin to upstream version including: + . new --without legacy_links conditional (c8a7e5225) + . reflect name change of the auxiliary daemons + (e4f4a0d64, db5536e40, e2fdc2bac + 9ecbfea1c, 038c465e2 + ed8ce4055a) + . new dummy systemd service for -cts (bf0a22812) + . honor system-wide crypto policies once for all, via package-build-time + configurable "pcmk_gnutls_priorities" defaulting to @SYSTEM as prescribed + in https://fedoraproject.org/wiki/Packaging:CryptoPolicies + (based on b3dfce1d3) +- Adapt spec file akin to current packaging guidelines including: + . make -nagios-plugins-metadata package noarch + * Mon Apr 09 2018 Jan Pokorný - 2.0.0-0.1.rc2 - Update for new upstream tarball for release candidate: Pacemaker-2.0.0-rc2, for full details, see included ChangeLog file or diff --git a/sources b/sources index 2b1afce..80e022f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (pacemaker-2.0.0-rc2.tar.gz) = f090f5bbe547c016f088d771d1969aaa771de417262786c493b5d6b39369e04655e29325084f7c1d481e0eaec64ffbab2b9ae6a74970bd61f5ec7fca0814d93c +SHA512 (pacemaker-2.0.0-rc3.tar.gz) = 4dee3c58d0f2d90c0133ff9c101bfcf563df41d64f5669a72163d85bb6a6db4d70709fd8f08cc07a37dc2e2a77cca133f99104cb67dae57daa354e9174e91c0f SHA512 (nagios-agents-metadata-105ab8a7b2c16b9a29cf1c1596b80136eeef332b.tar.gz) = 11ddeb48a4929e7642b6dfa9c7962aa1d7a1af1c569830f55ed6cd6773abac13377317327bc1db8411c8077884f83f81cc54d746c834b63a99fa6dc219b5caad