diff --git a/cts/cts-scheduler.in b/cts/cts-scheduler.in
index 027ddf9b79..2cbbaa65ac 100644
--- a/cts/cts-scheduler.in
+++ b/cts/cts-scheduler.in
@@ -1,1519 +1,1521 @@
#!@PYTHON@
""" Regression tests for Pacemaker's scheduler
"""
__copyright__ = "Copyright 2004-2021 the Pacemaker project contributors"
__license__ = "GNU General Public License version 2 or later (GPLv2+) WITHOUT ANY WARRANTY"
import io
import os
import re
import sys
import stat
import shlex
import shutil
import argparse
import subprocess
import platform
DESC = """Regression tests for Pacemaker's scheduler"""
# Each entry in TESTS is a group of tests, where each test consists of a
# test base name, test description, and additional test arguments.
# Test groups will be separated by newlines in output.
TESTS = [
[
[ "simple1", "Offline" ],
[ "simple2", "Start" ],
[ "simple3", "Start 2" ],
[ "simple4", "Start Failed" ],
[ "simple6", "Stop Start" ],
[ "simple7", "Shutdown" ],
#[ "simple8", "Stonith" ],
#[ "simple9", "Lower version" ],
#[ "simple10", "Higher version" ],
[ "simple11", "Priority (ne)" ],
[ "simple12", "Priority (eq)" ],
[ "simple8", "Stickiness" ],
],
[
[ "group1", "Group" ],
[ "group2", "Group + Native" ],
[ "group3", "Group + Group" ],
[ "group4", "Group + Native (nothing)" ],
[ "group5", "Group + Native (move)" ],
[ "group6", "Group + Group (move)" ],
[ "group7", "Group colocation" ],
[ "group13", "Group colocation (cant run)" ],
[ "group8", "Group anti-colocation" ],
[ "group9", "Group recovery" ],
[ "group10", "Group partial recovery" ],
[ "group11", "Group target_role" ],
[ "group14", "Group stop (graph terminated)" ],
[ "group15", "Negative group colocation" ],
[ "bug-1573", "Partial stop of a group with two children" ],
[ "bug-1718", "Mandatory group ordering - Stop group_FUN" ],
[ "bug-lf-2613", "Move group on failure" ],
[ "bug-lf-2619", "Move group on clone failure" ],
[ "group-fail", "Ensure stop order is preserved for partially active groups" ],
[ "group-unmanaged", "No need to restart r115 because r114 is unmanaged" ],
[ "group-unmanaged-stopped", "Make sure r115 is stopped when r114 fails" ],
[ "group-dependents", "Account for the location preferences of things colocated with a group" ],
[ "group-stop-ordering", "Ensure blocked group member stop does not force other member stops" ],
],
[
[ "rsc_dep1", "Must not" ],
[ "rsc_dep3", "Must" ],
[ "rsc_dep5", "Must not 3" ],
[ "rsc_dep7", "Must 3" ],
[ "rsc_dep10", "Must (but cant)" ],
[ "rsc_dep2", "Must (running)" ],
[ "rsc_dep8", "Must (running : alt)" ],
[ "rsc_dep4", "Must (running + move)" ],
[ "asymmetric", "Asymmetric - require explicit location constraints" ],
],
[
[ "orphan-0", "Orphan ignore" ],
[ "orphan-1", "Orphan stop" ],
[ "orphan-2", "Orphan stop, remove failcount" ],
],
[
[ "params-0", "Params: No change" ],
[ "params-1", "Params: Changed" ],
[ "params-2", "Params: Resource definition" ],
[ "params-3", "Params: Restart instead of reload if start pending" ],
[ "params-4", "Params: Reload" ],
[ "params-5", "Params: Restart based on probe digest" ],
[ "novell-251689", "Resource definition change + target_role=stopped" ],
[ "bug-lf-2106", "Restart all anonymous clone instances after config change" ],
[ "params-6", "Params: Detect reload in previously migrated resource" ],
[ "nvpair-id-ref", "Support id-ref in nvpair with optional name" ],
[ "not-reschedule-unneeded-monitor",
"Do not reschedule unneeded monitors while resource definitions have changed" ],
[ "reload-becomes-restart", "Cancel reload if restart becomes required" ],
],
[
[ "target-0", "Target Role : baseline" ],
[ "target-1", "Target Role : master" ],
[ "target-2", "Target Role : invalid" ],
],
[
[ "base-score", "Set a node's default score for all nodes" ],
],
[
[ "date-1", "Dates", [ "-t", "2005-020" ] ],
[ "date-2", "Date Spec - Pass", [ "-t", "2005-020T12:30" ] ],
[ "date-3", "Date Spec - Fail", [ "-t", "2005-020T11:30" ] ],
[ "origin", "Timing of recurring operations", [ "-t", "2014-05-07 00:28:00" ] ],
[ "probe-0", "Probe (anon clone)" ],
[ "probe-1", "Pending Probe" ],
[ "probe-2", "Correctly re-probe cloned groups" ],
[ "probe-3", "Probe (pending node)" ],
[ "probe-4", "Probe (pending node + stopped resource)" ],
[ "standby", "Standby" ],
[ "comments", "Comments" ],
],
[
[ "one-or-more-0", "Everything starts" ],
[ "one-or-more-1", "Nothing starts because of A" ],
[ "one-or-more-2", "D can start because of C" ],
[ "one-or-more-3", "D cannot start because of B and C" ],
[ "one-or-more-4", "D cannot start because of target-role" ],
[ "one-or-more-5", "Start A and F even though C and D are stopped" ],
[ "one-or-more-6", "Leave A running even though B is stopped" ],
[ "one-or-more-7", "Leave A running even though C is stopped" ],
[ "bug-5140-require-all-false", "Allow basegrp:0 to stop" ],
[ "clone-require-all-1", "clone B starts node 3 and 4" ],
[ "clone-require-all-2", "clone B remains stopped everywhere" ],
[ "clone-require-all-3", "clone B stops everywhere because A stops everywhere" ],
[ "clone-require-all-4", "clone B remains on node 3 and 4 with only one instance of A remaining" ],
[ "clone-require-all-5", "clone B starts on node 1 3 and 4" ],
[ "clone-require-all-6", "clone B remains active after shutting down instances of A" ],
[ "clone-require-all-7",
"clone A and B both start at the same time. all instances of A start before B" ],
[ "clone-require-all-no-interleave-1", "C starts everywhere after A and B" ],
[ "clone-require-all-no-interleave-2",
"C starts on nodes 1, 2, and 4 with only one active instance of B" ],
[ "clone-require-all-no-interleave-3",
"C remains active when instance of B is stopped on one node and started on another" ],
[ "one-or-more-unrunnable-instances", "Avoid dependencies on instances that won't ever be started" ],
],
[
[ "location-date-rules-1", "Use location constraints with ineffective date-based rules" ],
[ "location-date-rules-2", "Use location constraints with effective date-based rules" ],
[ "nvpair-date-rules-1", "Use nvpair blocks with a variety of date-based rules" ],
[ "value-source", "Use location constraints with node attribute expressions using value-source" ],
[ "rule-dbl-as-auto-number-match",
"Floating-point rule values default to number comparison: match" ],
[ "rule-dbl-as-auto-number-no-match",
"Floating-point rule values default to number comparison: no "
"match" ],
[ "rule-dbl-as-integer-match",
"Floating-point rule values set to integer comparison: match" ],
[ "rule-dbl-as-integer-no-match",
"Floating-point rule values set to integer comparison: no match" ],
[ "rule-dbl-as-number-match",
"Floating-point rule values set to number comparison: match" ],
[ "rule-dbl-as-number-no-match",
"Floating-point rule values set to number comparison: no match" ],
[ "rule-dbl-parse-fail-default-str-match",
"Floating-point rule values fail to parse, default to string "
"comparison: match" ],
[ "rule-dbl-parse-fail-default-str-no-match",
"Floating-point rule values fail to parse, default to string "
"comparison: no match" ],
[ "rule-int-as-auto-integer-match",
"Integer rule values default to integer comparison: match" ],
[ "rule-int-as-auto-integer-no-match",
"Integer rule values default to integer comparison: no match" ],
[ "rule-int-as-integer-match",
"Integer rule values set to integer comparison: match" ],
[ "rule-int-as-integer-no-match",
"Integer rule values set to integer comparison: no match" ],
[ "rule-int-as-number-match",
"Integer rule values set to number comparison: match" ],
[ "rule-int-as-number-no-match",
"Integer rule values set to number comparison: no match" ],
[ "rule-int-parse-fail-default-str-match",
"Integer rule values fail to parse, default to string "
"comparison: match" ],
[ "rule-int-parse-fail-default-str-no-match",
"Integer rule values fail to parse, default to string "
"comparison: no match" ],
],
[
[ "order1", "Order start 1" ],
[ "order2", "Order start 2" ],
[ "order3", "Order stop" ],
[ "order4", "Order (multiple)" ],
[ "order5", "Order (move)" ],
[ "order6", "Order (move w/ restart)" ],
[ "order7", "Order (mandatory)" ],
[ "order-optional", "Order (score=0)" ],
[ "order-required", "Order (score=INFINITY)" ],
[ "bug-lf-2171", "Prevent group start when clone is stopped" ],
[ "order-clone", "Clone ordering should be able to prevent startup of dependent clones" ],
[ "order-sets", "Ordering for resource sets" ],
[ "order-serialize", "Serialize resources without inhibiting migration" ],
[ "order-serialize-set", "Serialize a set of resources without inhibiting migration" ],
[ "clone-order-primitive", "Order clone start after a primitive" ],
[ "clone-order-16instances", "Verify ordering of 16 cloned resources" ],
[ "order-optional-keyword", "Order (optional keyword)" ],
[ "order-mandatory", "Order (mandatory keyword)" ],
[ "bug-lf-2493",
"Don't imply colocation requirements when applying ordering constraints with clones" ],
[ "ordered-set-basic-startup", "Constraint set with default order settings" ],
[ "ordered-set-natural", "Allow natural set ordering" ],
[ "order-wrong-kind", "Order (error)" ],
],
[
[ "coloc-loop", "Colocation - loop" ],
[ "coloc-many-one", "Colocation - many-to-one" ],
[ "coloc-list", "Colocation - many-to-one with list" ],
[ "coloc-group", "Colocation - groups" ],
[ "coloc-slave-anti", "Anti-colocation with slave shouldn't prevent master colocation" ],
[ "coloc-attr", "Colocation based on node attributes" ],
[ "coloc-negative-group", "Negative colocation with a group" ],
[ "coloc-intra-set", "Intra-set colocation" ],
[ "bug-lf-2435", "Colocation sets with a negative score" ],
[ "coloc-clone-stays-active",
"Ensure clones don't get stopped/demoted because a dependent must stop" ],
[ "coloc_fp_logic", "Verify floating point calculations in colocation are working" ],
[ "colo_master_w_native",
"cl#5070 - Verify promotion order is affected when colocating master to native rsc" ],
[ "colo_slave_w_native",
"cl#5070 - Verify promotion order is affected when colocating slave to native rsc" ],
[ "anti-colocation-order",
"cl#5187 - Prevent resources in an anti-colocation from even temporarily running on a same node" ],
[ "anti-colocation-master", "Organize order of actions for master resources in anti-colocations" ],
[ "anti-colocation-slave", "Organize order of actions for slave resources in anti-colocations" ],
[ "enforce-colo1", "Always enforce B with A INFINITY" ],
[ "complex_enforce_colo", "Always enforce B with A INFINITY. (make sure heat-engine stops)" ],
[ "coloc-dependee-should-stay", "Stickiness outweighs group colocation" ],
[ "coloc-dependee-should-move", "Group colocation outweighs stickiness" ],
[ "colocation-influence", "Respect colocation influence" ],
],
[
[ "rsc-sets-seq-true", "Resource Sets - sequential=false" ],
[ "rsc-sets-seq-false", "Resource Sets - sequential=true" ],
[ "rsc-sets-clone", "Resource Sets - Clone" ],
[ "rsc-sets-master", "Resource Sets - Master" ],
[ "rsc-sets-clone-1", "Resource Sets - Clone (lf#2404)" ],
],
[
[ "attrs1", "string: eq (and)" ],
[ "attrs2", "string: lt / gt (and)" ],
[ "attrs3", "string: ne (or)" ],
[ "attrs4", "string: exists" ],
[ "attrs5", "string: not_exists" ],
[ "attrs6", "is_dc: true" ],
[ "attrs7", "is_dc: false" ],
[ "attrs8", "score_attribute" ],
[ "per-node-attrs", "Per node resource parameters" ],
],
[
[ "mon-rsc-1", "Schedule Monitor - start" ],
[ "mon-rsc-2", "Schedule Monitor - move" ],
[ "mon-rsc-3", "Schedule Monitor - pending start" ],
[ "mon-rsc-4", "Schedule Monitor - move/pending start" ],
],
[
[ "rec-rsc-0", "Resource Recover - no start" ],
[ "rec-rsc-1", "Resource Recover - start" ],
[ "rec-rsc-2", "Resource Recover - monitor" ],
[ "rec-rsc-3", "Resource Recover - stop - ignore" ],
[ "rec-rsc-4", "Resource Recover - stop - block" ],
[ "rec-rsc-5", "Resource Recover - stop - fence" ],
[ "rec-rsc-6", "Resource Recover - multiple - restart" ],
[ "rec-rsc-7", "Resource Recover - multiple - stop" ],
[ "rec-rsc-8", "Resource Recover - multiple - block" ],
[ "rec-rsc-9", "Resource Recover - group/group" ],
[ "monitor-recovery", "on-fail=block + resource recovery detected by recurring monitor" ],
[ "stop-failure-no-quorum", "Stop failure without quorum" ],
[ "stop-failure-no-fencing", "Stop failure without fencing available" ],
[ "stop-failure-with-fencing", "Stop failure with fencing available" ],
[ "multiple-active-block-group", "Support of multiple-active=block for resource groups" ],
[ "multiple-monitor-one-failed",
"Consider resource failed if any of the configured monitor operations failed" ],
],
[
[ "quorum-1", "No quorum - ignore" ],
[ "quorum-2", "No quorum - freeze" ],
[ "quorum-3", "No quorum - stop" ],
[ "quorum-4", "No quorum - start anyway" ],
[ "quorum-5", "No quorum - start anyway (group)" ],
[ "quorum-6", "No quorum - start anyway (clone)" ],
[ "bug-cl-5212", "No promotion with no-quorum-policy=freeze" ],
[ "suicide-needed-inquorate", "no-quorum-policy=suicide: suicide necessary" ],
[ "suicide-not-needed-initial-quorum",
"no-quorum-policy=suicide: suicide not necessary at initial quorum" ],
[ "suicide-not-needed-never-quorate",
"no-quorum-policy=suicide: suicide not necessary if never quorate" ],
[ "suicide-not-needed-quorate", "no-quorum-policy=suicide: suicide necessary if quorate" ],
],
[
[ "rec-node-1", "Node Recover - Startup - no fence" ],
[ "rec-node-2", "Node Recover - Startup - fence" ],
[ "rec-node-3", "Node Recover - HA down - no fence" ],
[ "rec-node-4", "Node Recover - HA down - fence" ],
[ "rec-node-5", "Node Recover - CRM down - no fence" ],
[ "rec-node-6", "Node Recover - CRM down - fence" ],
[ "rec-node-7", "Node Recover - no quorum - ignore" ],
[ "rec-node-8", "Node Recover - no quorum - freeze" ],
[ "rec-node-9", "Node Recover - no quorum - stop" ],
[ "rec-node-10", "Node Recover - no quorum - stop w/fence" ],
[ "rec-node-11", "Node Recover - CRM down w/ group - fence" ],
[ "rec-node-12", "Node Recover - nothing active - fence" ],
[ "rec-node-13", "Node Recover - failed resource + shutdown - fence" ],
[ "rec-node-15", "Node Recover - unknown lrm section" ],
[ "rec-node-14", "Serialize all stonith's" ],
],
[
[ "multi1", "Multiple Active (stop/start)" ],
],
[
[ "migrate-begin", "Normal migration" ],
[ "migrate-success", "Completed migration" ],
[ "migrate-partial-1", "Completed migration, missing stop on source" ],
[ "migrate-partial-2", "Successful migrate_to only" ],
[ "migrate-partial-3", "Successful migrate_to only, target down" ],
[ "migrate-partial-4", "Migrate from the correct host after migrate_to+migrate_from" ],
[ "bug-5186-partial-migrate", "Handle partial migration when src node loses membership" ],
[ "migrate-fail-2", "Failed migrate_from" ],
[ "migrate-fail-3", "Failed migrate_from + stop on source" ],
[ "migrate-fail-4",
"Failed migrate_from + stop on target - ideally we wouldn't need to re-stop on target" ],
[ "migrate-fail-5", "Failed migrate_from + stop on source and target" ],
[ "migrate-fail-6", "Failed migrate_to" ],
[ "migrate-fail-7", "Failed migrate_to + stop on source" ],
[ "migrate-fail-8",
"Failed migrate_to + stop on target - ideally we wouldn't need to re-stop on target" ],
[ "migrate-fail-9", "Failed migrate_to + stop on source and target" ],
[ "migration-ping-pong", "Old migrate_to failure + successful migrate_from on same node" ],
[ "migrate-stop", "Migration in a stopping stack" ],
[ "migrate-start", "Migration in a starting stack" ],
[ "migrate-stop_start", "Migration in a restarting stack" ],
[ "migrate-stop-complex", "Migration in a complex stopping stack" ],
[ "migrate-start-complex", "Migration in a complex starting stack" ],
[ "migrate-stop-start-complex", "Migration in a complex moving stack" ],
[ "migrate-shutdown", "Order the post-migration 'stop' before node shutdown" ],
[ "migrate-1", "Migrate (migrate)" ],
[ "migrate-2", "Migrate (stable)" ],
[ "migrate-3", "Migrate (failed migrate_to)" ],
[ "migrate-4", "Migrate (failed migrate_from)" ],
[ "novell-252693", "Migration in a stopping stack" ],
[ "novell-252693-2", "Migration in a starting stack" ],
[ "novell-252693-3", "Non-Migration in a starting and stopping stack" ],
[ "bug-1820", "Migration in a group" ],
[ "bug-1820-1", "Non-migration in a group" ],
[ "migrate-5", "Primitive migration with a clone" ],
[ "migrate-fencing", "Migration after Fencing" ],
[ "migrate-both-vms", "Migrate two VMs that have no colocation" ],
[ "migration-behind-migrating-remote", "Migrate resource behind migrating remote connection" ],
[ "1-a-then-bm-move-b", "Advanced migrate logic. A then B. migrate B" ],
[ "2-am-then-b-move-a", "Advanced migrate logic, A then B, migrate A without stopping B" ],
[ "3-am-then-bm-both-migrate", "Advanced migrate logic. A then B. migrate both" ],
[ "4-am-then-bm-b-not-migratable", "Advanced migrate logic, A then B, B not migratable" ],
[ "5-am-then-bm-a-not-migratable", "Advanced migrate logic. A then B. move both, a not migratable" ],
[ "6-migrate-group", "Advanced migrate logic, migrate a group" ],
[ "7-migrate-group-one-unmigratable",
"Advanced migrate logic, migrate group mixed with allow-migrate true/false" ],
[ "8-am-then-bm-a-migrating-b-stopping",
"Advanced migrate logic, A then B, A migrating, B stopping" ],
[ "9-am-then-bm-b-migrating-a-stopping",
"Advanced migrate logic, A then B, B migrate, A stopping" ],
[ "10-a-then-bm-b-move-a-clone",
"Advanced migrate logic, A clone then B, migrate B while stopping A" ],
[ "11-a-then-bm-b-move-a-clone-starting",
"Advanced migrate logic, A clone then B, B moving while A is start/stopping" ],
[ "a-promote-then-b-migrate", "A promote then B start. migrate B" ],
[ "a-demote-then-b-migrate", "A demote then B stop. migrate B" ],
# @TODO: If pacemaker implements versioned attributes, uncomment this test
#[ "migrate-versioned", "Disable migration for versioned resources" ],
[ "bug-lf-2422", "Dependency on partially active group - stop ocfs:*" ],
],
[
[ "clone-anon-probe-1", "Probe the correct (anonymous) clone instance for each node" ],
[ "clone-anon-probe-2", "Avoid needless re-probing of anonymous clones" ],
[ "clone-anon-failcount", "Merge failcounts for anonymous clones" ],
[ "force-anon-clone-max", "Update clone-max properly when forcing a clone to be anonymous" ],
[ "anon-instance-pending", "Assign anonymous clone instance numbers properly when action pending" ],
[ "inc0", "Incarnation start" ],
[ "inc1", "Incarnation start order" ],
[ "inc2", "Incarnation silent restart, stop, move" ],
[ "inc3", "Inter-incarnation ordering, silent restart, stop, move" ],
[ "inc4", "Inter-incarnation ordering, silent restart, stop, move (ordered)" ],
[ "inc5", "Inter-incarnation ordering, silent restart, stop, move (restart 1)" ],
[ "inc6", "Inter-incarnation ordering, silent restart, stop, move (restart 2)" ],
[ "inc7", "Clone colocation" ],
[ "inc8", "Clone anti-colocation" ],
[ "inc9", "Non-unique clone" ],
[ "inc10", "Non-unique clone (stop)" ],
[ "inc11", "Primitive colocation with clones" ],
[ "inc12", "Clone shutdown" ],
[ "cloned-group", "Make sure only the correct number of cloned groups are started" ],
[ "cloned-group-stop", "Ensure stopping qpidd also stops glance and cinder" ],
[ "clone-no-shuffle", "Don't prioritize allocation of instances that must be moved" ],
[ "clone-max-zero", "Orphan processing with clone-max=0" ],
[ "clone-anon-dup",
"Bug LF#2087 - Correctly parse the state of anonymous clones that are active more than once per node" ],
[ "bug-lf-2160", "Don't shuffle clones due to colocation" ],
[ "bug-lf-2213", "clone-node-max enforcement for cloned groups" ],
[ "bug-lf-2153", "Clone ordering constraints" ],
[ "bug-lf-2361", "Ensure clones observe mandatory ordering constraints if the LHS is unrunnable" ],
[ "bug-lf-2317", "Avoid needless restart of primitive depending on a clone" ],
[ "clone-colocate-instance-1", "Colocation with a specific clone instance (negative example)" ],
[ "clone-colocate-instance-2", "Colocation with a specific clone instance" ],
[ "clone-order-instance", "Ordering with specific clone instances" ],
[ "bug-lf-2453", "Enforce mandatory clone ordering without colocation" ],
[ "bug-lf-2508", "Correctly reconstruct the status of anonymous cloned groups" ],
[ "bug-lf-2544", "Balanced clone placement" ],
[ "bug-lf-2445", "Redistribute clones with node-max > 1 and stickiness = 0" ],
[ "bug-lf-2574", "Avoid clone shuffle" ],
[ "bug-lf-2581", "Avoid group restart due to unrelated clone (re)start" ],
[ "bug-cl-5168", "Don't shuffle clones" ],
[ "bug-cl-5170", "Prevent clone from starting with on-fail=block" ],
[ "clone-fail-block-colocation", "Move colocated group when failed clone has on-fail=block" ],
[ "clone-interleave-1",
"Clone-3 cannot start on pcmk-1 due to interleaved ordering (no colocation)" ],
[ "clone-interleave-2", "Clone-3 must stop on pcmk-1 due to interleaved ordering (no colocation)" ],
[ "clone-interleave-3",
"Clone-3 must be recovered on pcmk-1 due to interleaved ordering (no colocation)" ],
[ "rebalance-unique-clones", "Rebalance unique clone instances with no stickiness" ],
[ "clone-requires-quorum-recovery", "Clone with requires=quorum on failed node needing recovery" ],
[ "clone-requires-quorum",
"Clone with requires=quorum with presumed-inactive instance on failed node" ],
],
[
[ "cloned_start_one", "order first clone then clone... first clone_min=2" ],
[ "cloned_start_two", "order first clone then clone... first clone_min=2" ],
[ "cloned_stop_one", "order first clone then clone... first clone_min=2" ],
[ "cloned_stop_two", "order first clone then clone... first clone_min=2" ],
[ "clone_min_interleave_start_one",
"order first clone then clone... first clone_min=2 and then has interleave=true" ],
[ "clone_min_interleave_start_two",
"order first clone then clone... first clone_min=2 and then has interleave=true" ],
[ "clone_min_interleave_stop_one",
"order first clone then clone... first clone_min=2 and then has interleave=true" ],
[ "clone_min_interleave_stop_two",
"order first clone then clone... first clone_min=2 and then has interleave=true" ],
[ "clone_min_start_one", "order first clone then primitive... first clone_min=2" ],
[ "clone_min_start_two", "order first clone then primitive... first clone_min=2" ],
[ "clone_min_stop_all", "order first clone then primitive... first clone_min=2" ],
[ "clone_min_stop_one", "order first clone then primitive... first clone_min=2" ],
[ "clone_min_stop_two", "order first clone then primitive... first clone_min=2" ],
],
[
[ "unfence-startup", "Clean unfencing" ],
[ "unfence-definition", "Unfencing when the agent changes" ],
[ "unfence-parameters", "Unfencing when the agent parameters changes" ],
[ "unfence-device", "Unfencing when a cluster has only fence devices" ],
],
[
[ "master-0", "Stopped -> Slave" ],
[ "master-1", "Stopped -> Promote" ],
[ "master-2", "Stopped -> Promote : notify" ],
[ "master-3", "Stopped -> Promote : master location" ],
[ "master-4", "Started -> Promote : master location" ],
[ "master-5", "Promoted -> Promoted" ],
[ "master-6", "Promoted -> Promoted (2)" ],
[ "master-7", "Promoted -> Fenced" ],
[ "master-8", "Promoted -> Fenced -> Moved" ],
[ "master-9", "Stopped + Promotable + No quorum" ],
[ "master-10", "Stopped -> Promotable : notify with monitor" ],
[ "master-11", "Stopped -> Promote : colocation" ],
[ "novell-239082", "Demote/Promote ordering" ],
[ "novell-239087", "Stable master placement" ],
[ "master-12", "Promotion based solely on rsc_location constraints" ],
[ "master-13", "Include preferences of colocated resources when placing master" ],
[ "master-demote", "Ordering when actions depends on demoting a slave resource" ],
[ "master-ordering", "Prevent resources from starting that need a master" ],
[ "bug-1765", "Master-Master Colocation (do not stop the slaves)" ],
[ "master-group", "Promotion of cloned groups" ],
[ "bug-lf-1852", "Don't shuffle master/slave instances unnecessarily" ],
[ "master-failed-demote", "Don't retry failed demote actions" ],
[ "master-failed-demote-2", "Don't retry failed demote actions (notify=false)" ],
[ "master-depend",
"Ensure resources that depend on the master don't get allocated until the master does" ],
[ "master-reattach", "Re-attach to a running master" ],
[ "master-allow-start", "Don't include master score if it would prevent allocation" ],
[ "master-colocation",
"Allow master instances placemaker to be influenced by colocation constraints" ],
[ "master-pseudo", "Make sure promote/demote pseudo actions are created correctly" ],
[ "master-role", "Prevent target-role from promoting more than master-max instances" ],
[ "bug-lf-2358", "Master-Master anti-colocation" ],
[ "master-promotion-constraint", "Mandatory master colocation constraints" ],
[ "unmanaged-master", "Ensure role is preserved for unmanaged resources" ],
[ "master-unmanaged-monitor", "Start the correct monitor operation for unmanaged masters" ],
[ "master-demote-2", "Demote does not clear past failure" ],
[ "master-move", "Move master based on failure of colocated group" ],
[ "master-probed-score", "Observe the promotion score of probed resources" ],
[ "colocation_constraint_stops_master",
"cl#5054 - Ensure master is demoted when stopped by colocation constraint" ],
[ "colocation_constraint_stops_slave",
"cl#5054 - Ensure slave is not demoted when stopped by colocation constraint" ],
[ "order_constraint_stops_master",
"cl#5054 - Ensure master is demoted when stopped by order constraint" ],
[ "order_constraint_stops_slave",
"cl#5054 - Ensure slave is not demoted when stopped by order constraint" ],
[ "master_monitor_restart", "cl#5072 - Ensure master monitor operation will start after promotion" ],
[ "bug-rh-880249", "Handle replacement of an m/s resource with a primitive" ],
[ "bug-5143-ms-shuffle", "Prevent master shuffling due to promotion score" ],
[ "master-demote-block", "Block promotion if demote fails with on-fail=block" ],
[ "master-dependent-ban",
"Don't stop instances from being active because a dependent is banned from that host" ],
[ "master-stop", "Stop instances due to location constraint with role=Started" ],
[ "master-partially-demoted-group", "Allow partially demoted group to finish demoting" ],
[ "bug-cl-5213", "Ensure role colocation with -INFINITY is enforced" ],
[ "bug-cl-5219", "Allow unrelated resources with a common colocation target to remain promoted" ],
[ "master-asymmetrical-order",
"Fix the behaviors of multi-state resources with asymmetrical ordering" ],
[ "master-notify", "Master promotion with notifies" ],
[ "master-score-startup", "Use permanent master scores without LRM history" ],
[ "failed-demote-recovery", "Recover resource in slave role after demote fails" ],
[ "failed-demote-recovery-master", "Recover resource in master role after demote fails" ],
[ "on_fail_demote1", "Recovery with on-fail=\"demote\" on healthy cluster, remote, guest, and bundle nodes" ],
[ "on_fail_demote2", "Recovery with on-fail=\"demote\" with promotion on different node" ],
[ "on_fail_demote3", "Recovery with on-fail=\"demote\" with no promotion" ],
[ "on_fail_demote4", "Recovery with on-fail=\"demote\" on failed cluster, remote, guest, and bundle nodes" ],
[ "no_quorum_demote", "Promotable demotion and primitive stop with no-quorum-policy=\"demote\"" ],
[ "no-promote-on-unrunnable-guest", "Don't select bundle instance for promotion when container can't run" ],
],
[
[ "history-1", "Correctly parse stateful-1 resource state" ],
],
[
[ "managed-0", "Managed (reference)" ],
[ "managed-1", "Not managed - down" ],
[ "managed-2", "Not managed - up" ],
[ "bug-5028", "Shutdown should block if anything depends on an unmanaged resource" ],
[ "bug-5028-detach", "Ensure detach still works" ],
[ "bug-5028-bottom",
"Ensure shutdown still blocks if the blocked resource is at the bottom of the stack" ],
[ "unmanaged-stop-1",
"cl#5155 - Block the stop of resources if any depending resource is unmanaged" ],
[ "unmanaged-stop-2",
"cl#5155 - Block the stop of resources if the first resource in a mandatory stop order is unmanaged" ],
[ "unmanaged-stop-3",
"cl#5155 - Block the stop of resources if any depending resource in a group is unmanaged" ],
[ "unmanaged-stop-4",
"cl#5155 - Block the stop of resources if any depending resource in the middle of a group is unmanaged" ],
[ "unmanaged-block-restart",
"Block restart of resources if any dependent resource in a group is unmanaged" ],
],
[
[ "interleave-0", "Interleave (reference)" ],
[ "interleave-1", "coloc - not interleaved" ],
[ "interleave-2", "coloc - interleaved" ],
[ "interleave-3", "coloc - interleaved (2)" ],
[ "interleave-pseudo-stop", "Interleaved clone during stonith" ],
[ "interleave-stop", "Interleaved clone during stop" ],
[ "interleave-restart", "Interleaved clone during dependency restart" ],
],
[
[ "notify-0", "Notify reference" ],
[ "notify-1", "Notify simple" ],
[ "notify-2", "Notify simple, confirm" ],
[ "notify-3", "Notify move, confirm" ],
[ "novell-239079", "Notification priority" ],
#[ "notify-2", "Notify - 764" ],
[ "notifs-for-unrunnable", "Don't schedule notifications for an unrunnable action" ],
[ "route-remote-notify", "Route remote notify actions through correct cluster node" ],
[ "notify-behind-stopping-remote", "Don't schedule notifications behind stopped remote" ],
],
[
[ "594", "OSDL #594 - Unrunnable actions scheduled in transition" ],
[ "662", "OSDL #662 - Two resources start on one node when incarnation_node_max = 1" ],
[ "696", "OSDL #696 - CRM starts stonith RA without monitor" ],
[ "726", "OSDL #726 - Attempting to schedule rsc_posic041_monitor_5000 _after_ a stop" ],
[ "735", "OSDL #735 - Correctly detect that rsc_hadev1 is stopped on hadev3" ],
[ "764", "OSDL #764 - Missing monitor op for DoFencing:child_DoFencing:1" ],
[ "797", "OSDL #797 - Assert triggered: task_id_i > max_call_id" ],
[ "829", "OSDL #829" ],
[ "994",
"OSDL #994 - Stopping the last resource in a resource group causes the entire group to be restarted" ],
[ "994-2", "OSDL #994 - with a dependent resource" ],
[ "1360", "OSDL #1360 - Clone stickiness" ],
[ "1484", "OSDL #1484 - on_fail=stop" ],
[ "1494", "OSDL #1494 - Clone stability" ],
[ "unrunnable-1", "Unrunnable" ],
[ "unrunnable-2", "Unrunnable 2" ],
[ "stonith-0", "Stonith loop - 1" ],
[ "stonith-1", "Stonith loop - 2" ],
[ "stonith-2", "Stonith loop - 3" ],
[ "stonith-3", "Stonith startup" ],
[ "stonith-4", "Stonith node state" ],
[ "dc-fence-ordering", "DC needs fencing while other nodes are shutting down" ],
[ "bug-1572-1", "Recovery of groups depending on master/slave" ],
[ "bug-1572-2", "Recovery of groups depending on master/slave when the master is never re-promoted" ],
[ "bug-1685", "Depends-on-master ordering" ],
[ "bug-1822", "Don't promote partially active groups" ],
[ "bug-pm-11", "New resource added to a m/s group" ],
[ "bug-pm-12", "Recover only the failed portion of a cloned group" ],
[ "bug-n-387749", "Don't shuffle clone instances" ],
[ "bug-n-385265",
"Don't ignore the failure stickiness of group children - resource_idvscommon should stay stopped" ],
[ "bug-n-385265-2",
"Ensure groups are migrated instead of remaining partially active on the current node" ],
[ "bug-lf-1920", "Correctly handle probes that find active resources" ],
[ "bnc-515172", "Location constraint with multiple expressions" ],
[ "colocate-primitive-with-clone", "Optional colocation with a clone" ],
[ "use-after-free-merge", "Use-after-free in native_merge_weights" ],
[ "bug-lf-2551", "STONITH ordering for stop" ],
[ "bug-lf-2606", "Stonith implies demote" ],
[ "bug-lf-2474", "Ensure resource op timeout takes precedence over op_defaults" ],
[ "bug-suse-707150", "Prevent vm-01 from starting due to colocation/ordering" ],
[ "bug-5014-A-start-B-start", "Verify when A starts B starts using symmetrical=false" ],
[ "bug-5014-A-stop-B-started",
"Verify when A stops B does not stop if it has already started using symmetric=false" ],
[ "bug-5014-A-stopped-B-stopped",
"Verify when A is stopped and B has not started, B does not start before A using symmetric=false" ],
[ "bug-5014-CthenAthenB-C-stopped",
"Verify when C then A is symmetrical=true, A then B is symmetric=false, and C is stopped that nothing starts" ],
[ "bug-5014-CLONE-A-start-B-start",
"Verify when A starts B starts using clone resources with symmetric=false" ],
[ "bug-5014-CLONE-A-stop-B-started",
"Verify when A stops B does not stop if it has already started using clone resources with symmetric=false" ],
[ "bug-5014-GROUP-A-start-B-start",
"Verify when A starts B starts when using group resources with symmetric=false" ],
[ "bug-5014-GROUP-A-stopped-B-started",
"Verify when A stops B does not stop if it has already started using group resources with symmetric=false" ],
[ "bug-5014-GROUP-A-stopped-B-stopped",
"Verify when A is stopped and B has not started, B does not start before A using group resources with symmetric=false" ],
[ "bug-5014-ordered-set-symmetrical-false",
"Verify ordered sets work with symmetrical=false" ],
[ "bug-5014-ordered-set-symmetrical-true",
"Verify ordered sets work with symmetrical=true" ],
[ "bug-5007-masterslave_colocation",
"Verify use of colocation scores other than INFINITY and -INFINITY work on multi-state resources" ],
[ "bug-5038", "Prevent restart of anonymous clones when clone-max decreases" ],
[ "bug-5025-1", "Automatically clean up failcount after resource config change with reload" ],
[ "bug-5025-2", "Make sure clear failcount action isn't set when config does not change" ],
[ "bug-5025-3", "Automatically clean up failcount after resource config change with restart" ],
[ "bug-5025-4", "Clear failcount when last failure is a start op and rsc attributes changed" ],
[ "failcount", "Ensure failcounts are correctly expired" ],
[ "failcount-block", "Ensure failcounts are not expired when on-fail=block is present" ],
[ "per-op-failcount", "Ensure per-operation failcount is handled and not passed to fence agent" ],
[ "on-fail-ignore", "Ensure on-fail=ignore works even beyond migration-threshold" ],
[ "monitor-onfail-restart", "bug-5058 - Monitor failure with on-fail set to restart" ],
[ "monitor-onfail-stop", "bug-5058 - Monitor failure wiht on-fail set to stop" ],
[ "bug-5059", "No need to restart p_stateful1:*" ],
[ "bug-5069-op-enabled", "Test on-fail=ignore with failure when monitor is enabled" ],
[ "bug-5069-op-disabled", "Test on-fail-ignore with failure when monitor is disabled" ],
[ "obsolete-lrm-resource", "cl#5115 - Do not use obsolete lrm_resource sections" ],
[ "expire-non-blocked-failure",
"Ignore failure-timeout only if the failed operation has on-fail=block" ],
[ "asymmetrical-order-move", "Respect asymmetrical ordering when trying to move resources" ],
[ "asymmetrical-order-restart", "Respect asymmetrical ordering when restarting dependent resource" ],
[ "start-then-stop-with-unfence", "Avoid graph loop with start-then-stop constraint plus unfencing" ],
[ "order-expired-failure", "Order failcount cleanup after remote fencing" ],
[ "ignore_stonith_rsc_order1",
"cl#5056- Ignore order constraint between stonith and non-stonith rsc" ],
[ "ignore_stonith_rsc_order2",
"cl#5056- Ignore order constraint with group rsc containing mixed stonith and non-stonith" ],
[ "ignore_stonith_rsc_order3", "cl#5056- Ignore order constraint, stonith clone and mixed group" ],
[ "ignore_stonith_rsc_order4",
"cl#5056- Ignore order constraint, stonith clone and clone with nested mixed group" ],
[ "honor_stonith_rsc_order1",
"cl#5056- Honor order constraint, stonith clone and pure stonith group(single rsc)" ],
[ "honor_stonith_rsc_order2",
"cl#5056- Honor order constraint, stonith clone and pure stonith group(multiple rsc)" ],
[ "honor_stonith_rsc_order3",
"cl#5056- Honor order constraint, stonith clones with nested pure stonith group" ],
[ "honor_stonith_rsc_order4",
"cl#5056- Honor order constraint, between two native stonith rscs" ],
[ "multiply-active-stonith", "Multiply active stonith" ],
[ "probe-timeout", "cl#5099 - Default probe timeout" ],
[ "order-first-probes",
"cl#5301 - respect order constraints when relevant resources are being probed" ],
[ "concurrent-fencing", "Allow performing fencing operations in parallel" ],
[ "priority-fencing-delay", "Delay fencing targeting the more significant node" ],
],
[
[ "systemhealth1", "System Health () #1" ],
[ "systemhealth2", "System Health () #2" ],
[ "systemhealth3", "System Health () #3" ],
[ "systemhealthn1", "System Health (None) #1" ],
[ "systemhealthn2", "System Health (None) #2" ],
[ "systemhealthn3", "System Health (None) #3" ],
[ "systemhealthm1", "System Health (Migrate On Red) #1" ],
[ "systemhealthm2", "System Health (Migrate On Red) #2" ],
[ "systemhealthm3", "System Health (Migrate On Red) #3" ],
[ "systemhealtho1", "System Health (Only Green) #1" ],
[ "systemhealtho2", "System Health (Only Green) #2" ],
[ "systemhealtho3", "System Health (Only Green) #3" ],
[ "systemhealthp1", "System Health (Progessive) #1" ],
[ "systemhealthp2", "System Health (Progessive) #2" ],
[ "systemhealthp3", "System Health (Progessive) #3" ],
],
[
[ "utilization", "Placement Strategy - utilization" ],
[ "minimal", "Placement Strategy - minimal" ],
[ "balanced", "Placement Strategy - balanced" ],
],
[
[ "placement-stickiness", "Optimized Placement Strategy - stickiness" ],
[ "placement-priority", "Optimized Placement Strategy - priority" ],
[ "placement-location", "Optimized Placement Strategy - location" ],
[ "placement-capacity", "Optimized Placement Strategy - capacity" ],
],
[
[ "utilization-order1", "Utilization Order - Simple" ],
[ "utilization-order2", "Utilization Order - Complex" ],
[ "utilization-order3", "Utilization Order - Migrate" ],
[ "utilization-order4", "Utilization Order - Live Migration (bnc#695440)" ],
[ "utilization-shuffle",
"Don't displace prmExPostgreSQLDB2 on act2, Start prmExPostgreSQLDB1 on act3" ],
[ "load-stopped-loop", "Avoid transition loop due to load_stopped (cl#5044)" ],
[ "load-stopped-loop-2",
"cl#5235 - Prevent graph loops that can be introduced by load_stopped -> migrate_to ordering" ],
],
[
[ "colocated-utilization-primitive-1", "Colocated Utilization - Primitive" ],
[ "colocated-utilization-primitive-2", "Colocated Utilization - Choose the most capable node" ],
[ "colocated-utilization-group", "Colocated Utilization - Group" ],
[ "colocated-utilization-clone", "Colocated Utilization - Clone" ],
[ "utilization-check-allowed-nodes",
"Only check the capacities of the nodes that can run the resource" ],
],
[
[ "reprobe-target_rc", "Ensure correct target_rc for reprobe of inactive resources" ],
[ "node-maintenance-1", "cl#5128 - Node maintenance" ],
[ "node-maintenance-2", "cl#5128 - Node maintenance (coming out of maintenance mode)" ],
[ "shutdown-maintenance-node", "Do not fence a maintenance node if it shuts down cleanly" ],
[ "rsc-maintenance", "Per-resource maintenance" ],
],
[
[ "not-installed-agent", "The resource agent is missing" ],
[ "not-installed-tools", "Something the resource agent needs is missing" ],
],
[
[ "stopped-monitor-00", "Stopped Monitor - initial start" ],
[ "stopped-monitor-01", "Stopped Monitor - failed started" ],
[ "stopped-monitor-02", "Stopped Monitor - started multi-up" ],
[ "stopped-monitor-03", "Stopped Monitor - stop started" ],
[ "stopped-monitor-04", "Stopped Monitor - failed stop" ],
[ "stopped-monitor-05", "Stopped Monitor - start unmanaged" ],
[ "stopped-monitor-06", "Stopped Monitor - unmanaged multi-up" ],
[ "stopped-monitor-07", "Stopped Monitor - start unmanaged multi-up" ],
[ "stopped-monitor-08", "Stopped Monitor - migrate" ],
[ "stopped-monitor-09", "Stopped Monitor - unmanage started" ],
[ "stopped-monitor-10", "Stopped Monitor - unmanaged started multi-up" ],
[ "stopped-monitor-11", "Stopped Monitor - stop unmanaged started" ],
[ "stopped-monitor-12", "Stopped Monitor - unmanaged started multi-up (target-role=Stopped)" ],
[ "stopped-monitor-20", "Stopped Monitor - initial stop" ],
[ "stopped-monitor-21", "Stopped Monitor - stopped single-up" ],
[ "stopped-monitor-22", "Stopped Monitor - stopped multi-up" ],
[ "stopped-monitor-23", "Stopped Monitor - start stopped" ],
[ "stopped-monitor-24", "Stopped Monitor - unmanage stopped" ],
[ "stopped-monitor-25", "Stopped Monitor - unmanaged stopped multi-up" ],
[ "stopped-monitor-26", "Stopped Monitor - start unmanaged stopped" ],
[ "stopped-monitor-27", "Stopped Monitor - unmanaged stopped multi-up (target-role=Started)" ],
[ "stopped-monitor-30", "Stopped Monitor - new node started" ],
[ "stopped-monitor-31", "Stopped Monitor - new node stopped" ],
],
[
# This is a combo test to check:
# - probe timeout defaults to the minimum-interval monitor's
# - duplicate recurring operations are ignored
# - if timeout spec is bad, the default timeout is used
# - failure is blocked with on-fail=block even if ISO8601 interval is specified
# - started/stopped role monitors are started/stopped on right nodes
[ "intervals", "Recurring monitor interval handling" ],
],
[
[ "ticket-primitive-1", "Ticket - Primitive (loss-policy=stop, initial)" ],
[ "ticket-primitive-2", "Ticket - Primitive (loss-policy=stop, granted)" ],
[ "ticket-primitive-3", "Ticket - Primitive (loss-policy-stop, revoked)" ],
[ "ticket-primitive-4", "Ticket - Primitive (loss-policy=demote, initial)" ],
[ "ticket-primitive-5", "Ticket - Primitive (loss-policy=demote, granted)" ],
[ "ticket-primitive-6", "Ticket - Primitive (loss-policy=demote, revoked)" ],
[ "ticket-primitive-7", "Ticket - Primitive (loss-policy=fence, initial)" ],
[ "ticket-primitive-8", "Ticket - Primitive (loss-policy=fence, granted)" ],
[ "ticket-primitive-9", "Ticket - Primitive (loss-policy=fence, revoked)" ],
[ "ticket-primitive-10", "Ticket - Primitive (loss-policy=freeze, initial)" ],
[ "ticket-primitive-11", "Ticket - Primitive (loss-policy=freeze, granted)" ],
[ "ticket-primitive-12", "Ticket - Primitive (loss-policy=freeze, revoked)" ],
[ "ticket-primitive-13", "Ticket - Primitive (loss-policy=stop, standby, granted)" ],
[ "ticket-primitive-14", "Ticket - Primitive (loss-policy=stop, granted, standby)" ],
[ "ticket-primitive-15", "Ticket - Primitive (loss-policy=stop, standby, revoked)" ],
[ "ticket-primitive-16", "Ticket - Primitive (loss-policy=demote, standby, granted)" ],
[ "ticket-primitive-17", "Ticket - Primitive (loss-policy=demote, granted, standby)" ],
[ "ticket-primitive-18", "Ticket - Primitive (loss-policy=demote, standby, revoked)" ],
[ "ticket-primitive-19", "Ticket - Primitive (loss-policy=fence, standby, granted)" ],
[ "ticket-primitive-20", "Ticket - Primitive (loss-policy=fence, granted, standby)" ],
[ "ticket-primitive-21", "Ticket - Primitive (loss-policy=fence, standby, revoked)" ],
[ "ticket-primitive-22", "Ticket - Primitive (loss-policy=freeze, standby, granted)" ],
[ "ticket-primitive-23", "Ticket - Primitive (loss-policy=freeze, granted, standby)" ],
[ "ticket-primitive-24", "Ticket - Primitive (loss-policy=freeze, standby, revoked)" ],
],
[
[ "ticket-group-1", "Ticket - Group (loss-policy=stop, initial)" ],
[ "ticket-group-2", "Ticket - Group (loss-policy=stop, granted)" ],
[ "ticket-group-3", "Ticket - Group (loss-policy-stop, revoked)" ],
[ "ticket-group-4", "Ticket - Group (loss-policy=demote, initial)" ],
[ "ticket-group-5", "Ticket - Group (loss-policy=demote, granted)" ],
[ "ticket-group-6", "Ticket - Group (loss-policy=demote, revoked)" ],
[ "ticket-group-7", "Ticket - Group (loss-policy=fence, initial)" ],
[ "ticket-group-8", "Ticket - Group (loss-policy=fence, granted)" ],
[ "ticket-group-9", "Ticket - Group (loss-policy=fence, revoked)" ],
[ "ticket-group-10", "Ticket - Group (loss-policy=freeze, initial)" ],
[ "ticket-group-11", "Ticket - Group (loss-policy=freeze, granted)" ],
[ "ticket-group-12", "Ticket - Group (loss-policy=freeze, revoked)" ],
[ "ticket-group-13", "Ticket - Group (loss-policy=stop, standby, granted)" ],
[ "ticket-group-14", "Ticket - Group (loss-policy=stop, granted, standby)" ],
[ "ticket-group-15", "Ticket - Group (loss-policy=stop, standby, revoked)" ],
[ "ticket-group-16", "Ticket - Group (loss-policy=demote, standby, granted)" ],
[ "ticket-group-17", "Ticket - Group (loss-policy=demote, granted, standby)" ],
[ "ticket-group-18", "Ticket - Group (loss-policy=demote, standby, revoked)" ],
[ "ticket-group-19", "Ticket - Group (loss-policy=fence, standby, granted)" ],
[ "ticket-group-20", "Ticket - Group (loss-policy=fence, granted, standby)" ],
[ "ticket-group-21", "Ticket - Group (loss-policy=fence, standby, revoked)" ],
[ "ticket-group-22", "Ticket - Group (loss-policy=freeze, standby, granted)" ],
[ "ticket-group-23", "Ticket - Group (loss-policy=freeze, granted, standby)" ],
[ "ticket-group-24", "Ticket - Group (loss-policy=freeze, standby, revoked)" ],
],
[
[ "ticket-clone-1", "Ticket - Clone (loss-policy=stop, initial)" ],
[ "ticket-clone-2", "Ticket - Clone (loss-policy=stop, granted)" ],
[ "ticket-clone-3", "Ticket - Clone (loss-policy-stop, revoked)" ],
[ "ticket-clone-4", "Ticket - Clone (loss-policy=demote, initial)" ],
[ "ticket-clone-5", "Ticket - Clone (loss-policy=demote, granted)" ],
[ "ticket-clone-6", "Ticket - Clone (loss-policy=demote, revoked)" ],
[ "ticket-clone-7", "Ticket - Clone (loss-policy=fence, initial)" ],
[ "ticket-clone-8", "Ticket - Clone (loss-policy=fence, granted)" ],
[ "ticket-clone-9", "Ticket - Clone (loss-policy=fence, revoked)" ],
[ "ticket-clone-10", "Ticket - Clone (loss-policy=freeze, initial)" ],
[ "ticket-clone-11", "Ticket - Clone (loss-policy=freeze, granted)" ],
[ "ticket-clone-12", "Ticket - Clone (loss-policy=freeze, revoked)" ],
[ "ticket-clone-13", "Ticket - Clone (loss-policy=stop, standby, granted)" ],
[ "ticket-clone-14", "Ticket - Clone (loss-policy=stop, granted, standby)" ],
[ "ticket-clone-15", "Ticket - Clone (loss-policy=stop, standby, revoked)" ],
[ "ticket-clone-16", "Ticket - Clone (loss-policy=demote, standby, granted)" ],
[ "ticket-clone-17", "Ticket - Clone (loss-policy=demote, granted, standby)" ],
[ "ticket-clone-18", "Ticket - Clone (loss-policy=demote, standby, revoked)" ],
[ "ticket-clone-19", "Ticket - Clone (loss-policy=fence, standby, granted)" ],
[ "ticket-clone-20", "Ticket - Clone (loss-policy=fence, granted, standby)" ],
[ "ticket-clone-21", "Ticket - Clone (loss-policy=fence, standby, revoked)" ],
[ "ticket-clone-22", "Ticket - Clone (loss-policy=freeze, standby, granted)" ],
[ "ticket-clone-23", "Ticket - Clone (loss-policy=freeze, granted, standby)" ],
[ "ticket-clone-24", "Ticket - Clone (loss-policy=freeze, standby, revoked)" ],
],
[
[ "ticket-master-1", "Ticket - Master (loss-policy=stop, initial)" ],
[ "ticket-master-2", "Ticket - Master (loss-policy=stop, granted)" ],
[ "ticket-master-3", "Ticket - Master (loss-policy-stop, revoked)" ],
[ "ticket-master-4", "Ticket - Master (loss-policy=demote, initial)" ],
[ "ticket-master-5", "Ticket - Master (loss-policy=demote, granted)" ],
[ "ticket-master-6", "Ticket - Master (loss-policy=demote, revoked)" ],
[ "ticket-master-7", "Ticket - Master (loss-policy=fence, initial)" ],
[ "ticket-master-8", "Ticket - Master (loss-policy=fence, granted)" ],
[ "ticket-master-9", "Ticket - Master (loss-policy=fence, revoked)" ],
[ "ticket-master-10", "Ticket - Master (loss-policy=freeze, initial)" ],
[ "ticket-master-11", "Ticket - Master (loss-policy=freeze, granted)" ],
[ "ticket-master-12", "Ticket - Master (loss-policy=freeze, revoked)" ],
[ "ticket-master-13", "Ticket - Master (loss-policy=stop, standby, granted)" ],
[ "ticket-master-14", "Ticket - Master (loss-policy=stop, granted, standby)" ],
[ "ticket-master-15", "Ticket - Master (loss-policy=stop, standby, revoked)" ],
[ "ticket-master-16", "Ticket - Master (loss-policy=demote, standby, granted)" ],
[ "ticket-master-17", "Ticket - Master (loss-policy=demote, granted, standby)" ],
[ "ticket-master-18", "Ticket - Master (loss-policy=demote, standby, revoked)" ],
[ "ticket-master-19", "Ticket - Master (loss-policy=fence, standby, granted)" ],
[ "ticket-master-20", "Ticket - Master (loss-policy=fence, granted, standby)" ],
[ "ticket-master-21", "Ticket - Master (loss-policy=fence, standby, revoked)" ],
[ "ticket-master-22", "Ticket - Master (loss-policy=freeze, standby, granted)" ],
[ "ticket-master-23", "Ticket - Master (loss-policy=freeze, granted, standby)" ],
[ "ticket-master-24", "Ticket - Master (loss-policy=freeze, standby, revoked)" ],
],
[
[ "ticket-rsc-sets-1", "Ticket - Resource sets (1 ticket, initial)" ],
[ "ticket-rsc-sets-2", "Ticket - Resource sets (1 ticket, granted)" ],
[ "ticket-rsc-sets-3", "Ticket - Resource sets (1 ticket, revoked)" ],
[ "ticket-rsc-sets-4", "Ticket - Resource sets (2 tickets, initial)" ],
[ "ticket-rsc-sets-5", "Ticket - Resource sets (2 tickets, granted)" ],
[ "ticket-rsc-sets-6", "Ticket - Resource sets (2 tickets, granted)" ],
[ "ticket-rsc-sets-7", "Ticket - Resource sets (2 tickets, revoked)" ],
[ "ticket-rsc-sets-8", "Ticket - Resource sets (1 ticket, standby, granted)" ],
[ "ticket-rsc-sets-9", "Ticket - Resource sets (1 ticket, granted, standby)" ],
[ "ticket-rsc-sets-10", "Ticket - Resource sets (1 ticket, standby, revoked)" ],
[ "ticket-rsc-sets-11", "Ticket - Resource sets (2 tickets, standby, granted)" ],
[ "ticket-rsc-sets-12", "Ticket - Resource sets (2 tickets, standby, granted)" ],
[ "ticket-rsc-sets-13", "Ticket - Resource sets (2 tickets, granted, standby)" ],
[ "ticket-rsc-sets-14", "Ticket - Resource sets (2 tickets, standby, revoked)" ],
[ "cluster-specific-params", "Cluster-specific instance attributes based on rules" ],
[ "site-specific-params", "Site-specific instance attributes based on rules" ],
],
[
[ "template-1", "Template - 1" ],
[ "template-2", "Template - 2" ],
[ "template-3", "Template - 3 (merge operations)" ],
[ "template-coloc-1", "Template - Colocation 1" ],
[ "template-coloc-2", "Template - Colocation 2" ],
[ "template-coloc-3", "Template - Colocation 3" ],
[ "template-order-1", "Template - Order 1" ],
[ "template-order-2", "Template - Order 2" ],
[ "template-order-3", "Template - Order 3" ],
[ "template-ticket", "Template - Ticket" ],
[ "template-rsc-sets-1", "Template - Resource Sets 1" ],
[ "template-rsc-sets-2", "Template - Resource Sets 2" ],
[ "template-rsc-sets-3", "Template - Resource Sets 3" ],
[ "template-rsc-sets-4", "Template - Resource Sets 4" ],
[ "template-clone-primitive", "Cloned primitive from template" ],
[ "template-clone-group", "Cloned group from template" ],
[ "location-sets-templates", "Resource sets and templates - Location" ],
[ "tags-coloc-order-1", "Tags - Colocation and Order (Simple)" ],
[ "tags-coloc-order-2", "Tags - Colocation and Order (Resource Sets with Templates)" ],
[ "tags-location", "Tags - Location" ],
[ "tags-ticket", "Tags - Ticket" ],
],
[
[ "container-1", "Container - initial" ],
[ "container-2", "Container - monitor failed" ],
[ "container-3", "Container - stop failed" ],
[ "container-4", "Container - reached migration-threshold" ],
[ "container-group-1", "Container in group - initial" ],
[ "container-group-2", "Container in group - monitor failed" ],
[ "container-group-3", "Container in group - stop failed" ],
[ "container-group-4", "Container in group - reached migration-threshold" ],
[ "container-is-remote-node", "Place resource within container when container is remote-node" ],
[ "bug-rh-1097457", "Kill user defined container/contents ordering" ],
[ "bug-cl-5247", "Graph loop when recovering m/s resource in a container" ],
[ "bundle-order-startup", "Bundle startup ordering" ],
[ "bundle-order-partial-start",
"Bundle startup ordering when some dependencies are already running" ],
[ "bundle-order-partial-start-2",
"Bundle startup ordering when some dependencies and the container are already running" ],
[ "bundle-order-stop", "Bundle stop ordering" ],
[ "bundle-order-partial-stop", "Bundle startup ordering when some dependencies are already stopped" ],
[ "bundle-order-stop-on-remote", "Stop nested resource after bringing up the connection" ],
[ "bundle-order-startup-clone", "Prevent startup because bundle isn't promoted" ],
[ "bundle-order-startup-clone-2", "Bundle startup with clones" ],
[ "bundle-order-stop-clone", "Stop bundle because clone is stopping" ],
[ "bundle-nested-colocation", "Colocation of nested connection resources" ],
[ "bundle-order-fencing",
"Order pseudo bundle fencing after parent node fencing if both are happening" ],
[ "bundle-probe-order-1", "order 1" ],
[ "bundle-probe-order-2", "order 2" ],
[ "bundle-probe-order-3", "order 3" ],
[ "bundle-probe-remotes", "Ensure remotes get probed too" ],
[ "bundle-replicas-change", "Change bundle from 1 replica to multiple" ],
[ "nested-remote-recovery", "Recover bundle's container hosted on remote node" ],
],
[
[ "whitebox-fail1", "Fail whitebox container rsc" ],
[ "whitebox-fail2", "Fail cluster connection to guest node" ],
[ "whitebox-fail3", "Failed containers should not run nested on remote nodes" ],
[ "whitebox-start", "Start whitebox container with resources assigned to it" ],
[ "whitebox-stop", "Stop whitebox container with resources assigned to it" ],
[ "whitebox-move", "Move whitebox container with resources assigned to it" ],
[ "whitebox-asymmetric", "Verify connection rsc opts-in based on container resource" ],
[ "whitebox-ms-ordering", "Verify promote/demote can not occur before connection is established" ],
[ "whitebox-ms-ordering-move", "Stop/Start cycle within a moving container" ],
[ "whitebox-orphaned", "Properly shutdown orphaned whitebox container" ],
[ "whitebox-orphan-ms", "Properly tear down orphan ms resources on remote-nodes" ],
[ "whitebox-unexpectedly-running", "Recover container nodes the cluster did not start" ],
[ "whitebox-migrate1", "Migrate both container and connection resource" ],
[ "whitebox-imply-stop-on-fence",
"imply stop action on container node rsc when host node is fenced" ],
[ "whitebox-nested-group", "Verify guest remote-node works nested in a group" ],
[ "guest-node-host-dies", "Verify guest node is recovered if host goes away" ],
[ "guest-node-cleanup", "Order guest node connection recovery after container probe" ],
[ "guest-host-not-fenceable", "Actions on guest node are unrunnable if host is unclean and cannot be fenced" ],
],
[
[ "remote-startup-probes", "Baremetal remote-node startup probes" ],
[ "remote-startup", "Startup a newly discovered remote-nodes with no status" ],
[ "remote-fence-unclean", "Fence unclean baremetal remote-node" ],
[ "remote-fence-unclean2",
"Fence baremetal remote-node after cluster node fails and connection can not be recovered" ],
[ "remote-fence-unclean-3", "Probe failed remote nodes (triggers fencing)" ],
[ "remote-move", "Move remote-node connection resource" ],
[ "remote-disable", "Disable a baremetal remote-node" ],
[ "remote-probe-disable", "Probe then stop a baremetal remote-node" ],
[ "remote-orphaned", "Properly shutdown orphaned connection resource" ],
[ "remote-orphaned2",
"verify we can handle orphaned remote connections with active resources on the remote" ],
[ "remote-recover", "Recover connection resource after cluster-node fails" ],
[ "remote-stale-node-entry",
"Make sure we properly handle leftover remote-node entries in the node section" ],
[ "remote-partial-migrate",
"Make sure partial migrations are handled before ops on the remote node" ],
[ "remote-partial-migrate2",
"Make sure partial migration target is prefered for remote connection" ],
[ "remote-recover-fail", "Make sure start failure causes fencing if rsc are active on remote" ],
[ "remote-start-fail",
"Make sure a start failure does not result in fencing if no active resources are on remote" ],
[ "remote-unclean2",
"Make monitor failure always results in fencing, even if no rsc are active on remote" ],
[ "remote-fence-before-reconnect", "Fence before clearing recurring monitor failure" ],
[ "remote-recovery", "Recover remote connections before attempting demotion" ],
[ "remote-recover-connection", "Optimistically recovery of only the connection" ],
[ "remote-recover-all", "Fencing when the connection has no home" ],
[ "remote-recover-no-resources", "Fencing when the connection has no home and no active resources" ],
[ "remote-recover-unknown",
"Fencing when the connection has no home and the remote has no operation history" ],
[ "remote-reconnect-delay", "Waiting for remote reconnect interval to expire" ],
[ "remote-connection-unrecoverable",
"Remote connection host must be fenced, with connection unrecoverable" ],
+ [ "cancel-behind-moving-remote",
+ "Route recurring monitor cancellations through original node of a moving remote connection" ],
],
[
[ "resource-discovery", "Exercises resource-discovery location constraint option" ],
[ "rsc-discovery-per-node", "Disable resource discovery per node" ],
[ "shutdown-lock", "Ensure shutdown lock works properly" ],
[ "shutdown-lock-expiration", "Ensure shutdown lock expiration works properly" ],
],
[
[ "op-defaults", "Test op_defaults conditional expressions" ],
[ "op-defaults-2", "Test op_defaults AND'ed conditional expressions" ],
[ "op-defaults-3", "Test op_defaults precedence" ],
[ "rsc-defaults", "Test rsc_defaults conditional expressions" ],
[ "rsc-defaults-2", "Test rsc_defaults conditional expressions without type" ],
],
[ [ "stop-all-resources", "Test stop-all-resources=true "],
],
[ [ "ocf_degraded-remap-ocf_ok", "Test DEGRADED remapped to OK" ],
[ "ocf_degraded_master-remap-ocf_ok", "Test DEGRADED_MASTER remapped to OK"],
],
# @TODO: If pacemaker implements versioned attributes, uncomment these tests
#[
# [ "versioned-resources", "Start resources with #ra-version rules" ],
# [ "restart-versioned", "Restart resources on #ra-version change" ],
# [ "reload-versioned", "Reload resources on #ra-version change" ],
#],
#[
# [ "versioned-operations-1", "Use #ra-version to configure operations of native resources" ],
# [ "versioned-operations-2", "Use #ra-version to configure operations of stonith resources" ],
# [ "versioned-operations-3", "Use #ra-version to configure operations of master/slave resources" ],
# [ "versioned-operations-4", "Use #ra-version to configure operations of groups of the resources" ],
#],
]
TESTS_64BIT = [
[
[ "year-2038", "Check handling of timestamps beyond 2038-01-19 03:14:08 UTC" ],
],
]
# Constants substituted in the build process
class BuildVars(object):
SBINDIR = "@sbindir@"
BUILDDIR = "@abs_top_builddir@"
CRM_SCHEMA_DIRECTORY = "@CRM_SCHEMA_DIRECTORY@"
# These values must be kept in sync with include/crm/crm.h
class CrmExit(object):
OK = 0
ERROR = 1
NOT_INSTALLED = 5
NOINPUT = 66
def is_executable(path):
""" Check whether a file at a given path is executable. """
try:
return os.stat(path)[stat.ST_MODE] & stat.S_IXUSR
except OSError:
return False
def diff(file1, file2, **kwargs):
""" Call diff on two files """
return subprocess.call([ "diff", "-u", "-N", "--ignore-all-space",
"--ignore-blank-lines", file1, file2 ], **kwargs)
def sort_file(filename):
""" Sort a file alphabetically """
with io.open(filename, "rt") as f:
lines = sorted(f)
with io.open(filename, "wt") as f:
f.writelines(lines)
def remove_files(filenames):
""" Remove a list of files """
for filename in filenames:
try:
os.remove(filename)
except OSError:
pass
def normalize(filename):
""" Remove text from a file that isn't important for comparison """
if not hasattr(normalize, "patterns"):
normalize.patterns = [
re.compile(r'crm_feature_set="[^"]*"'),
re.compile(r'batch-limit="[0-9]*"')
]
if os.path.isfile(filename):
with io.open(filename, "rt") as f:
lines = f.readlines()
with io.open(filename, "wt") as f:
for line in lines:
for pattern in normalize.patterns:
line = pattern.sub("", line)
f.write(line)
def cat(filename, dest=sys.stdout):
""" Copy a file to a destination file descriptor """
with io.open(filename, "rt") as f:
shutil.copyfileobj(f, dest)
class CtsScheduler(object):
""" Regression tests for Pacemaker's scheduler """
def _parse_args(self, argv):
""" Parse command-line arguments """
parser = argparse.ArgumentParser(description=DESC)
parser.add_argument('-V', '--verbose', action='count',
help='Display any differences from expected output')
parser.add_argument('--run', metavar='TEST',
help=('Run only single specified test (any further '
'arguments will be passed to crm_simulate)'))
parser.add_argument('--update', action='store_true',
help='Update expected results with actual results')
parser.add_argument('-b', '--binary', metavar='PATH',
help='Specify path to crm_simulate')
parser.add_argument('-i', '--io-dir', metavar='PATH',
help='Specify path to regression test data directory')
parser.add_argument('-o', '--out-dir', metavar='PATH',
help='Specify where intermediate and output files should go')
parser.add_argument('-v', '--valgrind', action='store_true',
help='Run all commands under valgrind')
parser.add_argument('--valgrind-dhat', action='store_true',
help='Run all commands under valgrind with heap analyzer')
parser.add_argument('--valgrind-skip-output', action='store_true',
help='If running under valgrind, do not display output')
parser.add_argument('--testcmd-options', metavar='OPTIONS', default='',
help='Additional options for command under test')
# argparse can't handle "everything after --run TEST", so grab that
self.single_test_args = []
narg = 0
for arg in argv:
narg = narg + 1
if arg == '--run':
(argv, self.single_test_args) = (argv[:narg+1], argv[narg+1:])
break
self.args = parser.parse_args(argv[1:])
def _error(self, s):
print(" * ERROR: %s" % s)
def _failed(self, s):
print(" * FAILED: %s" % s)
def _get_valgrind_cmd(self):
""" Return command arguments needed (or not) to run valgrind """
if self.args.valgrind:
os.environ['G_SLICE'] = "always-malloc"
return [
"valgrind",
"-q",
"--gen-suppressions=all",
"--time-stamp=yes",
"--trace-children=no",
"--show-reachable=no",
"--leak-check=full",
"--num-callers=20",
"--suppressions=%s/valgrind-pcmk.suppressions" % (self.test_home)
]
if self.args.valgrind_dhat:
os.environ['G_SLICE'] = "always-malloc"
return [
"valgrind",
"--tool=exp-dhat",
"--time-stamp=yes",
"--trace-children=no",
"--show-top-n=100",
"--num-callers=4"
]
return []
def _get_simulator_cmd(self):
""" Locate the simulation binary """
if self.args.binary is None:
self.args.binary = BuildVars.BUILDDIR + "/tools/crm_simulate"
if not is_executable(self.args.binary):
self.args.binary = BuildVars.SBINDIR + "/crm_simulate"
if not is_executable(self.args.binary):
# @TODO it would be more pythonic to raise an exception
self._error("Test binary " + self.args.binary + " not found")
sys.exit(CrmExit.NOT_INSTALLED)
return [ self.args.binary ] + shlex.split(self.args.testcmd_options)
def set_schema_env(self):
""" Ensure schema directory environment variable is set, if possible """
try:
return os.environ['PCMK_schema_directory']
except KeyError:
for d in [ os.path.join(BuildVars.BUILDDIR, "xml"),
BuildVars.CRM_SCHEMA_DIRECTORY ]:
if os.path.isdir(d):
os.environ['PCMK_schema_directory'] = d
return d
return None
def __init__(self, argv=sys.argv):
self._parse_args(argv)
# Where this executable lives
self.test_home = os.path.dirname(os.path.realpath(argv[0]))
# Where test data resides
if self.args.io_dir is None:
self.args.io_dir = os.path.join(self.test_home, "scheduler")
# Where to store generated files
if self.args.out_dir is None:
self.args.out_dir = self.args.io_dir
self.failed_filename = os.path.join(self.test_home, ".regression.failed.diff")
else:
self.failed_filename = os.path.join(self.args.out_dir, ".regression.failed.diff")
os.environ['CIB_shadow_dir'] = self.args.out_dir
self.failed_file = None
# Single test mode (if requested)
try:
# User can give test base name or file name of a test input
self.args.run = os.path.splitext(os.path.basename(self.args.run))[0]
except (AttributeError, TypeError):
pass # --run was not specified
self.set_schema_env()
# Arguments needed (or not) to run commands
self.valgrind_args = self._get_valgrind_cmd()
self.simulate_args = self._get_simulator_cmd()
# Test counters
self.num_failed = 0
self.num_tests = 0
def _compare_files(self, filename1, filename2):
""" Add any file differences to failed results """
with io.open("/dev/null", "wt") as dev_null:
if diff(filename1, filename2, stdout=dev_null) != 0:
diff(filename1, filename2, stdout=self.failed_file, stderr=dev_null)
self.failed_file.write("\n");
return True
return False
def run_one(self, test_name, test_desc, test_args=[]):
""" Run one scheduler test """
print(" Test %-25s %s" % ((test_name + ":"), test_desc))
did_fail = False
self.num_tests = self.num_tests + 1
# Test inputs
input_filename = "%s/%s.xml" % (self.args.io_dir, test_name)
expected_filename = "%s/%s.exp" % (self.args.io_dir, test_name)
dot_expected_filename = "%s/%s.dot" % (self.args.io_dir, test_name)
scores_filename = "%s/%s.scores" % (self.args.io_dir, test_name)
summary_filename = "%s/%s.summary" % (self.args.io_dir, test_name)
stderr_expected_filename = "%s/%s.stderr" % (self.args.io_dir, test_name)
# (Intermediate) test outputs
output_filename = "%s/%s.out" % (self.args.out_dir, test_name)
dot_output_filename = "%s/%s.pe.dot" % (self.args.out_dir, test_name)
score_output_filename = "%s/%s.scores.pe" % (self.args.out_dir, test_name)
summary_output_filename = "%s/%s.summary.pe" % (self.args.out_dir, test_name)
stderr_output_filename = "%s/%s.stderr.pe" % (self.args.out_dir, test_name)
valgrind_output_filename = "%s/%s.valgrind" % (self.args.out_dir, test_name)
# Common arguments for running test
test_cmd = []
if self.valgrind_args:
test_cmd = self.valgrind_args + [ "--log-file=%s" % valgrind_output_filename ]
test_cmd = test_cmd + self.simulate_args
# @TODO It would be more pythonic to raise exceptions for errors,
# then perhaps it would be nice to make a single-test class
# Ensure necessary test inputs exist
if not os.path.isfile(input_filename):
self._error("No input")
self.num_failed = self.num_failed + 1
return CrmExit.NOINPUT
if not self.args.update and not os.path.isfile(expected_filename):
self._error("no stored output")
return CrmExit.NOINPUT
# Run simulation to generate summary output
if self.args.run: # Single test mode
test_cmd_full = test_cmd + [ '-x', input_filename, '-S' ] + test_args
print(" ".join(test_cmd_full))
else:
# @TODO Why isn't test_args added here?
test_cmd_full = test_cmd + [ '-x', input_filename, '-S' ]
with io.open(summary_output_filename, "wt") as f:
subprocess.call(test_cmd_full, stdout=f, stderr=subprocess.STDOUT, env=os.environ)
if self.args.run:
cat(summary_output_filename)
# Re-run simulation to generate dot, graph, and scores
test_cmd_full = test_cmd + [
'-x', input_filename,
'-D', dot_output_filename,
'-G', output_filename,
'-sSQ' ] + test_args
with io.open(stderr_output_filename, "wt") as f_stderr, \
io.open(score_output_filename, "wt") as f_score:
rc = subprocess.call(test_cmd_full, stdout=f_score, stderr=f_stderr, env=os.environ)
# Check for test command failure
if rc != CrmExit.OK:
self._failed("Test returned: %d" % rc)
did_fail = True
print(" ".join(test_cmd_full))
# Check for valgrind errors
if self.valgrind_args and not self.args.valgrind_skip_output:
if os.stat(valgrind_output_filename).st_size > 0:
self._failed("Valgrind reported errors")
did_fail = True
cat(valgrind_output_filename)
remove_files([ valgrind_output_filename ])
# Check for core dump
if os.path.isfile("core"):
self._failed("Core-file detected: core." + test_name)
did_fail = True
os.rename("core", "%s/core.%s" % (self.test_home, test_name))
# Check any stderr output
if os.path.isfile(stderr_expected_filename):
if self._compare_files(stderr_expected_filename, stderr_output_filename):
self._failed("stderr changed")
did_fail = True
elif os.stat(stderr_output_filename).st_size > 0:
self._failed("Output was written to stderr")
did_fail = True
cat(stderr_output_filename)
remove_files([ stderr_output_filename ])
# Check whether output graph exists, and normalize it
if (not os.path.isfile(output_filename)
or os.stat(output_filename).st_size == 0):
self._error("No graph produced")
did_fail = True
self.num_failed = self.num_failed + 1
remove_files([ output_filename ])
return CrmExit.ERROR
normalize(output_filename)
# Check whether dot output exists, and sort it
if (not os.path.isfile(dot_output_filename) or
os.stat(dot_output_filename).st_size == 0):
self._error("No dot-file summary produced")
did_fail = True
self.num_failed = self.num_failed + 1
remove_files([ dot_output_filename, output_filename ])
return CrmExit.ERROR
with io.open(dot_output_filename, "rt") as f:
first_line = f.readline() # "digraph" line with opening brace
lines = f.readlines()
last_line = lines[-1] # closing brace
del lines[-1]
lines = sorted(set(lines)) # unique sort
with io.open(dot_output_filename, "wt") as f:
f.write(first_line)
f.writelines(lines)
f.write(last_line)
# Check whether score output exists, and sort it
if (not os.path.isfile(score_output_filename)
or os.stat(score_output_filename).st_size == 0):
self._error("No allocation scores produced")
did_fail = True
self.num_failed = self.num_failed + 1
remove_files([ score_output_filename, output_filename ])
return CrmExit.ERROR
else:
sort_file(score_output_filename)
if self.args.update:
shutil.copyfile(output_filename, expected_filename)
shutil.copyfile(dot_output_filename, dot_expected_filename)
shutil.copyfile(score_output_filename, scores_filename)
shutil.copyfile(summary_output_filename, summary_filename)
print(" Updated expected outputs")
if self._compare_files(summary_filename, summary_output_filename):
self._failed("summary changed")
did_fail = True
if self._compare_files(dot_expected_filename, dot_output_filename):
self._failed("dot-file summary changed")
did_fail = True
else:
remove_files([ dot_output_filename ])
if self._compare_files(expected_filename, output_filename):
self._failed("xml-file changed")
did_fail = True
if self._compare_files(scores_filename, score_output_filename):
self._failed("scores-file changed")
did_fail = True
remove_files([ output_filename,
score_output_filename,
summary_output_filename])
if did_fail:
self.num_failed = self.num_failed + 1
return CrmExit.ERROR
return CrmExit.OK
def run_all(self):
""" Run all defined tests """
if platform.architecture()[0] == "64bit":
TESTS.extend(TESTS_64BIT)
for group in TESTS:
for test in group:
try:
args = test[2]
except IndexError:
args = []
self.run_one(test[0], test[1], args)
print()
def _print_summary(self):
""" Print a summary of parameters for this test run """
print("Test home is:\t" + self.test_home)
print("Test binary is:\t" + self.args.binary)
if 'PCMK_schema_directory' in os.environ:
print("Schema home is:\t" + os.environ['PCMK_schema_directory'])
if self.valgrind_args != []:
print("Activating memory testing with valgrind")
print()
def _test_results(self):
if self.num_failed == 0:
return CrmExit.OK
if os.path.isfile(self.failed_filename) and os.stat(self.failed_filename).st_size != 0:
if self.args.verbose:
self._error("Results of %d failed tests (out of %d):" %
(self.num_failed, self.num_tests))
cat(self.failed_filename)
else:
self._error("Results of %d failed tests (out of %d) are in %s" %
(self.num_failed, self.num_tests, self.failed_filename))
self._error("Use -V to display them after running the tests")
else:
self._error("%d (of %d) tests failed (no diff results)" %
(self.num_failed, self.num_tests))
if os.path.isfile(self.failed_filename):
os.remove(self.failed_filename)
return CrmExit.ERROR
def run(self):
""" Run test(s) as specified """
self._print_summary()
# Zero out the error log
self.failed_file = io.open(self.failed_filename, "wt")
if self.args.run is None:
print("Performing the following tests from " + self.args.io_dir)
print()
self.run_all()
print()
self.failed_file.close()
rc = self._test_results()
else:
rc = self.run_one(self.args.run, "Single shot", self.single_test_args)
self.failed_file.close()
cat(self.failed_filename)
return rc
if __name__ == "__main__":
sys.exit(CtsScheduler().run())
# vim: set filetype=python expandtab tabstop=4 softtabstop=4 shiftwidth=4 textwidth=120:
diff --git a/cts/scheduler/cancel-behind-moving-remote.dot b/cts/scheduler/cancel-behind-moving-remote.dot
new file mode 100644
index 0000000000..427d487dbe
--- /dev/null
+++ b/cts/scheduler/cancel-behind-moving-remote.dot
@@ -0,0 +1,213 @@
+ digraph "g" {
+"Cancel ovndb_servers_monitor_30000 ovn-dbs-bundle-1" -> "ovndb_servers_promote_0 ovn-dbs-bundle-1" [ style = bold]
+"Cancel ovndb_servers_monitor_30000 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"ip-172.17.1.87_monitor_10000 controller-0" [ style=bold color="green" fontcolor="black"]
+"ip-172.17.1.87_start_0 controller-0" -> "ip-172.17.1.87_monitor_10000 controller-0" [ style = bold]
+"ip-172.17.1.87_start_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"nova-evacuate_clear_failcount_0 messaging-0" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-0_clear_failcount_0 controller-0" -> "ovn-dbs-bundle-0_start_0 controller-2" [ style = bold]
+"ovn-dbs-bundle-0_clear_failcount_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-0_monitor_30000 controller-2" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-0_start_0 controller-2" -> "ovn-dbs-bundle-0_monitor_30000 controller-2" [ style = bold]
+"ovn-dbs-bundle-0_start_0 controller-2" -> "ovndb_servers:0_monitor_30000 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-0_start_0 controller-2" -> "ovndb_servers:0_start_0 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-1_clear_failcount_0 controller-2" -> "ovn-dbs-bundle-1_start_0 controller-0" [ style = bold]
+"ovn-dbs-bundle-1_clear_failcount_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-1_monitor_30000 controller-0" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-1_start_0 controller-0" -> "ovn-dbs-bundle-1_monitor_30000 controller-0" [ style = bold]
+"ovn-dbs-bundle-1_start_0 controller-0" -> "ovndb_servers_monitor_10000 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-1_start_0 controller-0" -> "ovndb_servers_promote_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-1_start_0 controller-0" -> "ovndb_servers_start_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-1_start_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-1_stop_0 controller-2" -> "ovn-dbs-bundle-1_start_0 controller-0" [ style = bold]
+"ovn-dbs-bundle-1_stop_0 controller-2" -> "ovn-dbs-bundle-podman-1_stop_0 controller-2" [ style = bold]
+"ovn-dbs-bundle-1_stop_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-master_confirmed-post_notify_promoted_0" -> "ovn-dbs-bundle_promoted_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_promoted_0" -> "ovndb_servers:0_monitor_30000 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_promoted_0" -> "ovndb_servers_monitor_10000 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_promoted_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_confirmed-post_notify_running_0" -> "ovn-dbs-bundle-master_pre_notify_promote_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_running_0" -> "ovn-dbs-bundle_running_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_running_0" -> "ovndb_servers:0_monitor_30000 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_running_0" -> "ovndb_servers_monitor_10000 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_confirmed-post_notify_stopped_0" -> "ovn-dbs-bundle-master_pre_notify_promote_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_stopped_0" -> "ovn-dbs-bundle-master_pre_notify_start_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_stopped_0" -> "ovn-dbs-bundle_stopped_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_confirmed-pre_notify_promote_0" -> "ovn-dbs-bundle-master_post_notify_promoted_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-pre_notify_promote_0" -> "ovn-dbs-bundle-master_promote_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-pre_notify_promote_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_confirmed-pre_notify_start_0" -> "ovn-dbs-bundle-master_post_notify_running_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-pre_notify_start_0" -> "ovn-dbs-bundle-master_start_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_confirmed-pre_notify_stop_0" -> "ovn-dbs-bundle-master_post_notify_stopped_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-pre_notify_stop_0" -> "ovn-dbs-bundle-master_stop_0" [ style = bold]
+"ovn-dbs-bundle-master_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_post_notify_promoted_0" -> "ovn-dbs-bundle-master_confirmed-post_notify_promoted_0" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_promoted_0" -> "ovndb_servers:0_post_notify_promote_0 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_promoted_0" -> "ovndb_servers_post_notify_promoted_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_promoted_0" -> "ovndb_servers_post_notify_promoted_0 ovn-dbs-bundle-2" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_promoted_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_post_notify_running_0" -> "ovn-dbs-bundle-master_confirmed-post_notify_running_0" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_running_0" -> "ovndb_servers:0_post_notify_start_0 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_running_0" -> "ovndb_servers_post_notify_running_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_running_0" -> "ovndb_servers_post_notify_running_0 ovn-dbs-bundle-2" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_running_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_post_notify_stopped_0" -> "ovn-dbs-bundle-master_confirmed-post_notify_stopped_0" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_stopped_0" -> "ovndb_servers_post_notify_stopped_0 ovn-dbs-bundle-2" [ style = bold]
+"ovn-dbs-bundle-master_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_pre_notify_promote_0" -> "ovn-dbs-bundle-master_confirmed-pre_notify_promote_0" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_promote_0" -> "ovndb_servers:0_pre_notify_promote_0 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_promote_0" -> "ovndb_servers_pre_notify_promote_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_promote_0" -> "ovndb_servers_pre_notify_promote_0 ovn-dbs-bundle-2" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_promote_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_pre_notify_start_0" -> "ovn-dbs-bundle-master_confirmed-pre_notify_start_0" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_start_0" -> "ovndb_servers_pre_notify_start_0 ovn-dbs-bundle-2" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_pre_notify_stop_0" -> "ovn-dbs-bundle-master_confirmed-pre_notify_stop_0" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_stop_0" -> "ovndb_servers_pre_notify_stop_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_stop_0" -> "ovndb_servers_pre_notify_stop_0 ovn-dbs-bundle-2" [ style = bold]
+"ovn-dbs-bundle-master_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_promote_0" -> "ovndb_servers_promote_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_promote_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_promoted_0" -> "ovn-dbs-bundle-master_post_notify_promoted_0" [ style = bold]
+"ovn-dbs-bundle-master_promoted_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_running_0" -> "ovn-dbs-bundle-master_post_notify_running_0" [ style = bold]
+"ovn-dbs-bundle-master_running_0" -> "ovn-dbs-bundle-master_promote_0" [ style = bold]
+"ovn-dbs-bundle-master_running_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_start_0" -> "ovn-dbs-bundle-master_running_0" [ style = bold]
+"ovn-dbs-bundle-master_start_0" -> "ovndb_servers:0_start_0 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-master_start_0" -> "ovndb_servers_start_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_start_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_stop_0" -> "ovn-dbs-bundle-master_stopped_0" [ style = bold]
+"ovn-dbs-bundle-master_stop_0" -> "ovndb_servers_stop_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-master_stop_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-master_stopped_0" -> "ovn-dbs-bundle-master_post_notify_stopped_0" [ style = bold]
+"ovn-dbs-bundle-master_stopped_0" -> "ovn-dbs-bundle-master_promote_0" [ style = bold]
+"ovn-dbs-bundle-master_stopped_0" -> "ovn-dbs-bundle-master_start_0" [ style = bold]
+"ovn-dbs-bundle-master_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle-podman-0_monitor_60000 controller-2" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-podman-0_start_0 controller-2" -> "ovn-dbs-bundle-0_start_0 controller-2" [ style = bold]
+"ovn-dbs-bundle-podman-0_start_0 controller-2" -> "ovn-dbs-bundle-podman-0_monitor_60000 controller-2" [ style = bold]
+"ovn-dbs-bundle-podman-0_start_0 controller-2" -> "ovn-dbs-bundle_running_0" [ style = bold]
+"ovn-dbs-bundle-podman-0_start_0 controller-2" -> "ovndb_servers:0_start_0 ovn-dbs-bundle-0" [ style = bold]
+"ovn-dbs-bundle-podman-0_start_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-podman-1_monitor_60000 controller-0" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-podman-1_start_0 controller-0" -> "ovn-dbs-bundle-1_start_0 controller-0" [ style = bold]
+"ovn-dbs-bundle-podman-1_start_0 controller-0" -> "ovn-dbs-bundle-podman-1_monitor_60000 controller-0" [ style = bold]
+"ovn-dbs-bundle-podman-1_start_0 controller-0" -> "ovn-dbs-bundle_running_0" [ style = bold]
+"ovn-dbs-bundle-podman-1_start_0 controller-0" -> "ovndb_servers_promote_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-podman-1_start_0 controller-0" -> "ovndb_servers_start_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle-podman-1_start_0 controller-0" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle-podman-1_stop_0 controller-2" -> "ovn-dbs-bundle-podman-1_start_0 controller-0" [ style = bold]
+"ovn-dbs-bundle-podman-1_stop_0 controller-2" -> "ovn-dbs-bundle_stopped_0" [ style = bold]
+"ovn-dbs-bundle-podman-1_stop_0 controller-2" [ style=bold color="green" fontcolor="black"]
+"ovn-dbs-bundle_promote_0" -> "ovn-dbs-bundle-master_promote_0" [ style = bold]
+"ovn-dbs-bundle_promote_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle_promoted_0" -> "ip-172.17.1.87_start_0 controller-0" [ style = bold]
+"ovn-dbs-bundle_promoted_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle_running_0" -> "ovn-dbs-bundle_promote_0" [ style = bold]
+"ovn-dbs-bundle_running_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle_start_0" -> "ovn-dbs-bundle-master_start_0" [ style = bold]
+"ovn-dbs-bundle_start_0" -> "ovn-dbs-bundle-podman-0_start_0 controller-2" [ style = bold]
+"ovn-dbs-bundle_start_0" -> "ovn-dbs-bundle-podman-1_start_0 controller-0" [ style = bold]
+"ovn-dbs-bundle_start_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle_stop_0" -> "ovn-dbs-bundle-master_stop_0" [ style = bold]
+"ovn-dbs-bundle_stop_0" -> "ovn-dbs-bundle-podman-1_stop_0 controller-2" [ style = bold]
+"ovn-dbs-bundle_stop_0" -> "ovndb_servers_stop_0 ovn-dbs-bundle-1" [ style = bold]
+"ovn-dbs-bundle_stop_0" [ style=bold color="green" fontcolor="orange"]
+"ovn-dbs-bundle_stopped_0" -> "ovn-dbs-bundle_promote_0" [ style = bold]
+"ovn-dbs-bundle_stopped_0" -> "ovn-dbs-bundle_start_0" [ style = bold]
+"ovn-dbs-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"]
+"ovndb_servers:0_monitor_30000 ovn-dbs-bundle-0" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers:0_post_notify_promote_0 ovn-dbs-bundle-0" -> "ovn-dbs-bundle-master_confirmed-post_notify_promoted_0" [ style = bold]
+"ovndb_servers:0_post_notify_promote_0 ovn-dbs-bundle-0" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers:0_post_notify_start_0 ovn-dbs-bundle-0" -> "ovn-dbs-bundle-master_confirmed-post_notify_running_0" [ style = bold]
+"ovndb_servers:0_post_notify_start_0 ovn-dbs-bundle-0" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers:0_pre_notify_promote_0 ovn-dbs-bundle-0" -> "ovn-dbs-bundle-master_confirmed-pre_notify_promote_0" [ style = bold]
+"ovndb_servers:0_pre_notify_promote_0 ovn-dbs-bundle-0" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers:0_start_0 ovn-dbs-bundle-0" -> "ovn-dbs-bundle-master_running_0" [ style = bold]
+"ovndb_servers:0_start_0 ovn-dbs-bundle-0" -> "ovndb_servers:0_monitor_30000 ovn-dbs-bundle-0" [ style = bold]
+"ovndb_servers:0_start_0 ovn-dbs-bundle-0" -> "ovndb_servers_start_0 ovn-dbs-bundle-1" [ style = bold]
+"ovndb_servers:0_start_0 ovn-dbs-bundle-0" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_monitor_10000 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_post_notify_promoted_0 ovn-dbs-bundle-1" -> "ovn-dbs-bundle-master_confirmed-post_notify_promoted_0" [ style = bold]
+"ovndb_servers_post_notify_promoted_0 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_post_notify_promoted_0 ovn-dbs-bundle-2" -> "ovn-dbs-bundle-master_confirmed-post_notify_promoted_0" [ style = bold]
+"ovndb_servers_post_notify_promoted_0 ovn-dbs-bundle-2" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_post_notify_running_0 ovn-dbs-bundle-1" -> "ovn-dbs-bundle-master_confirmed-post_notify_running_0" [ style = bold]
+"ovndb_servers_post_notify_running_0 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_post_notify_running_0 ovn-dbs-bundle-2" -> "ovn-dbs-bundle-master_confirmed-post_notify_running_0" [ style = bold]
+"ovndb_servers_post_notify_running_0 ovn-dbs-bundle-2" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_post_notify_stopped_0 ovn-dbs-bundle-2" -> "ovn-dbs-bundle-master_confirmed-post_notify_stopped_0" [ style = bold]
+"ovndb_servers_post_notify_stopped_0 ovn-dbs-bundle-2" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_pre_notify_promote_0 ovn-dbs-bundle-1" -> "ovn-dbs-bundle-master_confirmed-pre_notify_promote_0" [ style = bold]
+"ovndb_servers_pre_notify_promote_0 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_pre_notify_promote_0 ovn-dbs-bundle-2" -> "ovn-dbs-bundle-master_confirmed-pre_notify_promote_0" [ style = bold]
+"ovndb_servers_pre_notify_promote_0 ovn-dbs-bundle-2" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_pre_notify_start_0 ovn-dbs-bundle-2" -> "ovn-dbs-bundle-master_confirmed-pre_notify_start_0" [ style = bold]
+"ovndb_servers_pre_notify_start_0 ovn-dbs-bundle-2" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_pre_notify_stop_0 ovn-dbs-bundle-1" -> "ovn-dbs-bundle-master_confirmed-pre_notify_stop_0" [ style = bold]
+"ovndb_servers_pre_notify_stop_0 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_pre_notify_stop_0 ovn-dbs-bundle-2" -> "ovn-dbs-bundle-master_confirmed-pre_notify_stop_0" [ style = bold]
+"ovndb_servers_pre_notify_stop_0 ovn-dbs-bundle-2" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_promote_0 ovn-dbs-bundle-1" -> "ovn-dbs-bundle-master_promoted_0" [ style = bold]
+"ovndb_servers_promote_0 ovn-dbs-bundle-1" -> "ovndb_servers_monitor_10000 ovn-dbs-bundle-1" [ style = bold]
+"ovndb_servers_promote_0 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_start_0 ovn-dbs-bundle-1" -> "ovn-dbs-bundle-master_running_0" [ style = bold]
+"ovndb_servers_start_0 ovn-dbs-bundle-1" -> "ovndb_servers_monitor_10000 ovn-dbs-bundle-1" [ style = bold]
+"ovndb_servers_start_0 ovn-dbs-bundle-1" -> "ovndb_servers_promote_0 ovn-dbs-bundle-1" [ style = bold]
+"ovndb_servers_start_0 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"ovndb_servers_stop_0 ovn-dbs-bundle-1" -> "ovn-dbs-bundle-1_stop_0 controller-2" [ style = bold]
+"ovndb_servers_stop_0 ovn-dbs-bundle-1" -> "ovn-dbs-bundle-master_stopped_0" [ style = bold]
+"ovndb_servers_stop_0 ovn-dbs-bundle-1" -> "ovndb_servers_start_0 ovn-dbs-bundle-1" [ style = bold]
+"ovndb_servers_stop_0 ovn-dbs-bundle-1" [ style=bold color="green" fontcolor="black"]
+"rabbitmq-bundle-1_monitor_30000 controller-0" [ style=dashed color="red" fontcolor="black"]
+"rabbitmq-bundle-1_start_0 controller-0" -> "rabbitmq-bundle-1_monitor_30000 controller-0" [ style = dashed]
+"rabbitmq-bundle-1_start_0 controller-0" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = dashed]
+"rabbitmq-bundle-1_start_0 controller-0" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = dashed]
+"rabbitmq-bundle-1_start_0 controller-0" [ style=dashed color="red" fontcolor="black"]
+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" -> "rabbitmq-bundle_running_0" [ style = bold]
+"rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold]
+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold]
+"rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-bundle-clone_post_notify_running_0" -> "rabbitmq-bundle-clone_confirmed-post_notify_running_0" [ style = bold]
+"rabbitmq-bundle-clone_post_notify_running_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-bundle-clone_pre_notify_start_0" -> "rabbitmq-bundle-clone_confirmed-pre_notify_start_0" [ style = bold]
+"rabbitmq-bundle-clone_pre_notify_start_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-bundle-clone_running_0" -> "rabbitmq-bundle-clone_post_notify_running_0" [ style = bold]
+"rabbitmq-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-bundle-clone_start_0" -> "rabbitmq-bundle-clone_running_0" [ style = bold]
+"rabbitmq-bundle-clone_start_0" -> "rabbitmq:1_start_0 rabbitmq-bundle-1" [ style = dashed]
+"rabbitmq-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-bundle_running_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq-bundle_start_0" -> "rabbitmq-bundle-clone_start_0" [ style = bold]
+"rabbitmq-bundle_start_0" [ style=bold color="green" fontcolor="orange"]
+"rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style=dashed color="red" fontcolor="black"]
+"rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq-bundle-clone_running_0" [ style = dashed]
+"rabbitmq:1_start_0 rabbitmq-bundle-1" -> "rabbitmq:1_monitor_10000 rabbitmq-bundle-1" [ style = dashed]
+"rabbitmq:1_start_0 rabbitmq-bundle-1" [ style=dashed color="red" fontcolor="black"]
+"stonith-fence_compute-fence-nova_clear_failcount_0 messaging-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400066e50_clear_failcount_0 messaging-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-52540040bb56_monitor_60000 database-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-52540040bb56_start_0 database-0" -> "stonith-fence_ipmilan-52540040bb56_monitor_60000 database-0" [ style = bold]
+"stonith-fence_ipmilan-52540040bb56_start_0 database-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-52540040bb56_stop_0 messaging-2" -> "stonith-fence_ipmilan-52540040bb56_start_0 database-0" [ style = bold]
+"stonith-fence_ipmilan-52540040bb56_stop_0 messaging-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-52540060dbba_clear_failcount_0 messaging-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-52540078fb07_clear_failcount_0 messaging-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400aa1373_clear_failcount_0 database-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400c87cdb_clear_failcount_0 database-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400dc23e0_clear_failcount_0 database-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400e018b6_clear_failcount_0 database-0" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400e1534e_clear_failcount_0 database-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400e1534e_monitor_60000 messaging-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400e1534e_start_0 messaging-2" -> "stonith-fence_ipmilan-525400e1534e_monitor_60000 messaging-2" [ style = bold]
+"stonith-fence_ipmilan-525400e1534e_start_0 messaging-2" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400e1534e_stop_0 database-1" -> "stonith-fence_ipmilan-525400e1534e_start_0 messaging-2" [ style = bold]
+"stonith-fence_ipmilan-525400e1534e_stop_0 database-1" [ style=bold color="green" fontcolor="black"]
+"stonith-fence_ipmilan-525400ea59b0_clear_failcount_0 database-0" [ style=bold color="green" fontcolor="black"]
+}
diff --git a/cts/scheduler/cancel-behind-moving-remote.exp b/cts/scheduler/cancel-behind-moving-remote.exp
new file mode 100644
index 0000000000..933c2bebb0
--- /dev/null
+++ b/cts/scheduler/cancel-behind-moving-remote.exp
@@ -0,0 +1,1137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cts/scheduler/cancel-behind-moving-remote.scores b/cts/scheduler/cancel-behind-moving-remote.scores
new file mode 100644
index 0000000000..6813b2e260
--- /dev/null
+++ b/cts/scheduler/cancel-behind-moving-remote.scores
@@ -0,0 +1,2559 @@
+Allocation scores:
+Only 'private' parameters to nova-evacuate_monitor_10000 on database-2 changed: 0:0;280:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to nova-evacuate_start_0 on database-2 changed: 0:0;279:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_compute-fence-nova_monitor_60000 on database-1 changed: 0:0;275:48:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_compute-fence-nova_start_0 on database-1 changed: 0:0;273:48:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400066e50_monitor_60000 on database-2 changed: 0:0;305:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400066e50_start_0 on database-2 changed: 0:0;304:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540040bb56_monitor_60000 on messaging-2 changed: 0:0;295:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540040bb56_start_0 on messaging-2 changed: 0:0;293:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540060dbba_monitor_60000 on database-2 changed: 0:0;307:51:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540060dbba_start_0 on database-2 changed: 0:0;306:51:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540078fb07_monitor_60000 on database-0 changed: 0:0;296:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540078fb07_start_0 on database-0 changed: 0:0;294:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400aa1373_monitor_60000 on messaging-0 changed: 0:0;284:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400aa1373_start_0 on messaging-0 changed: 0:0;282:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400addd38_monitor_60000 on messaging-0 changed: 0:0;297:48:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400addd38_start_0 on messaging-0 changed: 0:0;295:48:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400c87cdb_monitor_60000 on messaging-0 changed: 0:0;311:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400c87cdb_start_0 on messaging-0 changed: 0:0;310:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400dc23e0_monitor_60000 on messaging-2 changed: 0:0;288:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400dc23e0_start_0 on messaging-2 changed: 0:0;286:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400e018b6_monitor_60000 on database-0 changed: 0:0;312:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400e018b6_start_0 on database-0 changed: 0:0;311:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400e1534e_monitor_60000 on database-1 changed: 0:0;302:39:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400e1534e_start_0 on database-1 changed: 0:0;301:39:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400ea59b0_monitor_60000 on database-1 changed: 0:0;299:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400ea59b0_start_0 on database-1 changed: 0:0;298:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Using the original execution date of: 2021-02-15 01:40:51Z
+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
+ovndb_servers:0 promotion score on ovn-dbs-bundle-0: -1
+ovndb_servers:1 promotion score on ovn-dbs-bundle-1: 5
+ovndb_servers:2 promotion score on ovn-dbs-bundle-2: 5
+pcmk__bundle_allocate: galera-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: galera-bundle allocation score on database-0: 0
+pcmk__bundle_allocate: galera-bundle allocation score on database-1: 0
+pcmk__bundle_allocate: galera-bundle allocation score on database-2: 0
+pcmk__bundle_allocate: galera-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: galera-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: galera-bundle-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: galera-bundle-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: galera-bundle-0 allocation score on database-0: 0
+pcmk__bundle_allocate: galera-bundle-0 allocation score on database-1: 0
+pcmk__bundle_allocate: galera-bundle-0 allocation score on database-2: 0
+pcmk__bundle_allocate: galera-bundle-0 allocation score on messaging-0: 0
+pcmk__bundle_allocate: galera-bundle-0 allocation score on messaging-1: 0
+pcmk__bundle_allocate: galera-bundle-0 allocation score on messaging-2: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on controller-1: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on controller-2: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on database-0: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on database-1: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on database-2: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on messaging-0: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on messaging-1: 0
+pcmk__bundle_allocate: galera-bundle-1 allocation score on messaging-2: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on controller-1: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on controller-2: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on database-0: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on database-1: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on database-2: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on messaging-0: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on messaging-1: 0
+pcmk__bundle_allocate: galera-bundle-2 allocation score on messaging-2: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on compute-0: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on compute-1: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on controller-0: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on controller-1: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on controller-2: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on database-0: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on database-1: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on database-2: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on galera-bundle-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-master allocation score on galera-bundle-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-master allocation score on galera-bundle-2: -INFINITY
+pcmk__bundle_allocate: galera-bundle-master allocation score on messaging-0: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on messaging-1: 0
+pcmk__bundle_allocate: galera-bundle-master allocation score on messaging-2: 0
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on database-0: 0
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on database-1: 0
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on database-2: 0
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on database-0: 0
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on database-1: 0
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on database-2: 0
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on database-0: 0
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on database-1: 0
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on database-2: 0
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: galera-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: galera:0 allocation score on galera-bundle-0: 501
+pcmk__bundle_allocate: galera:1 allocation score on galera-bundle-1: 501
+pcmk__bundle_allocate: galera:2 allocation score on galera-bundle-2: 501
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-2: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-2: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-2: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-2: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-2: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on controller-2: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-1: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-1: INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on controller-2: 0
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: haproxy-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on controller-0: 0
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on controller-1: 0
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on controller-2: 0
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: openstack-cinder-volume-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on controller-2: 10000
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on database-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on database-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on database-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on database-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on database-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on database-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on messaging-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on messaging-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on messaging-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on messaging-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on messaging-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-0 allocation score on messaging-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on controller-0: 10000
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on database-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on database-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on database-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on database-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on database-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on database-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on messaging-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on messaging-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on messaging-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on messaging-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on messaging-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-1 allocation score on messaging-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on controller-1: 10000
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on database-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on database-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on database-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on database-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on database-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on database-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on messaging-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on messaging-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on messaging-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on messaging-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on messaging-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-2 allocation score on messaging-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on compute-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on compute-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on database-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on database-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on database-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on messaging-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on messaging-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on messaging-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-1: 5
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-2: 5
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-1: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-2: 0
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: ovndb_servers:0 allocation score on ovn-dbs-bundle-0: 500
+pcmk__bundle_allocate: ovndb_servers:0 allocation score on ovn-dbs-bundle-0: INFINITY
+pcmk__bundle_allocate: ovndb_servers:1 allocation score on ovn-dbs-bundle-1: 501
+pcmk__bundle_allocate: ovndb_servers:1 allocation score on ovn-dbs-bundle-1: INFINITY
+pcmk__bundle_allocate: ovndb_servers:2 allocation score on ovn-dbs-bundle-2: 501
+pcmk__bundle_allocate: ovndb_servers:2 allocation score on ovn-dbs-bundle-2: INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on messaging-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on messaging-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle allocation score on messaging-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on database-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on database-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on database-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on messaging-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on messaging-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-0 allocation score on messaging-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on controller-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on controller-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on database-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on database-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on database-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on messaging-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on messaging-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-1 allocation score on messaging-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on controller-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on controller-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on database-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on database-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on database-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on messaging-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on messaging-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-2 allocation score on messaging-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on compute-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on compute-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on controller-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on controller-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on controller-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on database-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on database-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on database-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on messaging-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on messaging-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on messaging-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on messaging-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on messaging-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-podman-0 allocation score on messaging-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on messaging-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on messaging-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-podman-1 allocation score on messaging-2: 0
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on controller-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on controller-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on messaging-0: 0
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on messaging-1: 0
+pcmk__bundle_allocate: rabbitmq-bundle-podman-2 allocation score on messaging-2: 0
+pcmk__bundle_allocate: rabbitmq:0 allocation score on rabbitmq-bundle-0: 501
+pcmk__bundle_allocate: rabbitmq:1 allocation score on rabbitmq-bundle-1: 500
+pcmk__bundle_allocate: rabbitmq:2 allocation score on rabbitmq-bundle-2: 501
+pcmk__bundle_allocate: redis-bundle allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle allocation score on controller-0: 0
+pcmk__bundle_allocate: redis-bundle allocation score on controller-1: 0
+pcmk__bundle_allocate: redis-bundle allocation score on controller-2: 0
+pcmk__bundle_allocate: redis-bundle allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: redis-bundle allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: redis-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: redis-bundle-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: redis-bundle-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: redis-bundle-0 allocation score on database-0: 0
+pcmk__bundle_allocate: redis-bundle-0 allocation score on database-1: 0
+pcmk__bundle_allocate: redis-bundle-0 allocation score on database-2: 0
+pcmk__bundle_allocate: redis-bundle-0 allocation score on messaging-0: 0
+pcmk__bundle_allocate: redis-bundle-0 allocation score on messaging-1: 0
+pcmk__bundle_allocate: redis-bundle-0 allocation score on messaging-2: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on controller-1: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on controller-2: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on database-0: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on database-1: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on database-2: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on messaging-0: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on messaging-1: 0
+pcmk__bundle_allocate: redis-bundle-1 allocation score on messaging-2: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on controller-1: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on controller-2: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on database-0: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on database-1: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on database-2: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on messaging-0: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on messaging-1: 0
+pcmk__bundle_allocate: redis-bundle-2 allocation score on messaging-2: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on compute-0: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on compute-1: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on controller-0: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on controller-1: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on controller-2: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on database-0: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on database-1: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on database-2: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on messaging-0: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on messaging-1: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on messaging-2: 0
+pcmk__bundle_allocate: redis-bundle-master allocation score on redis-bundle-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-master allocation score on redis-bundle-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-master allocation score on redis-bundle-2: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on controller-0: 0
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on controller-1: 0
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on controller-2: 0
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on controller-0: 0
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on controller-1: 0
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on controller-2: 0
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on controller-0: 0
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on controller-1: 0
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on controller-2: 0
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__bundle_allocate: redis-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__bundle_allocate: redis:0 allocation score on redis-bundle-0: 501
+pcmk__bundle_allocate: redis:1 allocation score on redis-bundle-1: 501
+pcmk__bundle_allocate: redis:2 allocation score on redis-bundle-2: 501
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger-clone allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on compute-0: 1
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:0 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on compute-1: 1
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:1 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:10 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:11 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:12 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:13 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:14 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:15 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:16 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:17 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:18 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:19 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:2 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:20 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:21 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:22 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:3 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:4 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:5 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:6 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:7 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:8 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on compute-0: 0
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on compute-1: 0
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on database-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on database-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on database-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on galera-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on galera-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on galera-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on redis-bundle-0: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on redis-bundle-1: -INFINITY
+pcmk__clone_allocate: compute-unfence-trigger:9 allocation score on redis-bundle-2: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on compute-0: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on compute-1: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on database-0: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on database-1: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on database-2: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on galera-bundle-0: 0
+pcmk__clone_allocate: galera-bundle-master allocation score on galera-bundle-1: 0
+pcmk__clone_allocate: galera-bundle-master allocation score on galera-bundle-2: 0
+pcmk__clone_allocate: galera-bundle-master allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: galera-bundle-master allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: galera:0 allocation score on galera-bundle-0: INFINITY
+pcmk__clone_allocate: galera:1 allocation score on galera-bundle-1: INFINITY
+pcmk__clone_allocate: galera:2 allocation score on galera-bundle-2: INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on compute-0: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on compute-1: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on database-0: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on database-1: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on database-2: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-0: 0
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-1: 0
+pcmk__clone_allocate: ovn-dbs-bundle-master allocation score on ovn-dbs-bundle-2: 0
+pcmk__clone_allocate: ovndb_servers:0 allocation score on ovn-dbs-bundle-0: INFINITY
+pcmk__clone_allocate: ovndb_servers:1 allocation score on ovn-dbs-bundle-1: INFINITY
+pcmk__clone_allocate: ovndb_servers:2 allocation score on ovn-dbs-bundle-2: INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on compute-0: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on compute-1: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on database-0: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on database-1: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on database-2: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-0: 0
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-1: 0
+pcmk__clone_allocate: rabbitmq-bundle-clone allocation score on rabbitmq-bundle-2: 0
+pcmk__clone_allocate: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY
+pcmk__clone_allocate: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY
+pcmk__clone_allocate: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on compute-0: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on compute-1: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on controller-0: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on controller-1: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on controller-2: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on database-0: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on database-1: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on database-2: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on messaging-0: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on messaging-1: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on messaging-2: -INFINITY
+pcmk__clone_allocate: redis-bundle-master allocation score on redis-bundle-0: 0
+pcmk__clone_allocate: redis-bundle-master allocation score on redis-bundle-1: 0
+pcmk__clone_allocate: redis-bundle-master allocation score on redis-bundle-2: 0
+pcmk__clone_allocate: redis:0 allocation score on redis-bundle-0: INFINITY
+pcmk__clone_allocate: redis:1 allocation score on redis-bundle-1: INFINITY
+pcmk__clone_allocate: redis:2 allocation score on redis-bundle-2: INFINITY
+pcmk__native_allocate: compute-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-0 allocation score on controller-0: 0
+pcmk__native_allocate: compute-0 allocation score on controller-1: 0
+pcmk__native_allocate: compute-0 allocation score on controller-2: 0
+pcmk__native_allocate: compute-0 allocation score on database-0: 0
+pcmk__native_allocate: compute-0 allocation score on database-1: 0
+pcmk__native_allocate: compute-0 allocation score on database-2: 0
+pcmk__native_allocate: compute-0 allocation score on messaging-0: 0
+pcmk__native_allocate: compute-0 allocation score on messaging-1: 0
+pcmk__native_allocate: compute-0 allocation score on messaging-2: 0
+pcmk__native_allocate: compute-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-1 allocation score on controller-0: 0
+pcmk__native_allocate: compute-1 allocation score on controller-1: 0
+pcmk__native_allocate: compute-1 allocation score on controller-2: 0
+pcmk__native_allocate: compute-1 allocation score on database-0: 0
+pcmk__native_allocate: compute-1 allocation score on database-1: 0
+pcmk__native_allocate: compute-1 allocation score on database-2: 0
+pcmk__native_allocate: compute-1 allocation score on messaging-0: 0
+pcmk__native_allocate: compute-1 allocation score on messaging-1: 0
+pcmk__native_allocate: compute-1 allocation score on messaging-2: 0
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on compute-0: 1
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on compute-1: 0
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:0 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on compute-1: 1
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:1 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:10 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:11 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:12 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:13 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:14 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:15 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:16 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:17 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:18 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:19 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:2 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:20 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:21 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:22 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:3 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:4 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:5 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:6 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:7 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:8 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on database-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on database-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on database-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on galera-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on galera-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on galera-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on ovn-dbs-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on ovn-dbs-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on ovn-dbs-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on rabbitmq-bundle-2: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on redis-bundle-0: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on redis-bundle-1: -INFINITY
+pcmk__native_allocate: compute-unfence-trigger:9 allocation score on redis-bundle-2: -INFINITY
+pcmk__native_allocate: galera-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: galera-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: galera-bundle-0 allocation score on controller-0: 0
+pcmk__native_allocate: galera-bundle-0 allocation score on controller-1: 0
+pcmk__native_allocate: galera-bundle-0 allocation score on controller-2: 0
+pcmk__native_allocate: galera-bundle-0 allocation score on database-0: 10000
+pcmk__native_allocate: galera-bundle-0 allocation score on database-1: 0
+pcmk__native_allocate: galera-bundle-0 allocation score on database-2: 0
+pcmk__native_allocate: galera-bundle-0 allocation score on messaging-0: 0
+pcmk__native_allocate: galera-bundle-0 allocation score on messaging-1: 0
+pcmk__native_allocate: galera-bundle-0 allocation score on messaging-2: 0
+pcmk__native_allocate: galera-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: galera-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: galera-bundle-1 allocation score on controller-0: 0
+pcmk__native_allocate: galera-bundle-1 allocation score on controller-1: 0
+pcmk__native_allocate: galera-bundle-1 allocation score on controller-2: 0
+pcmk__native_allocate: galera-bundle-1 allocation score on database-0: 0
+pcmk__native_allocate: galera-bundle-1 allocation score on database-1: 10000
+pcmk__native_allocate: galera-bundle-1 allocation score on database-2: 0
+pcmk__native_allocate: galera-bundle-1 allocation score on messaging-0: 0
+pcmk__native_allocate: galera-bundle-1 allocation score on messaging-1: 0
+pcmk__native_allocate: galera-bundle-1 allocation score on messaging-2: 0
+pcmk__native_allocate: galera-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: galera-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: galera-bundle-2 allocation score on controller-0: 0
+pcmk__native_allocate: galera-bundle-2 allocation score on controller-1: 0
+pcmk__native_allocate: galera-bundle-2 allocation score on controller-2: 0
+pcmk__native_allocate: galera-bundle-2 allocation score on database-0: 0
+pcmk__native_allocate: galera-bundle-2 allocation score on database-1: 0
+pcmk__native_allocate: galera-bundle-2 allocation score on database-2: 10000
+pcmk__native_allocate: galera-bundle-2 allocation score on messaging-0: 0
+pcmk__native_allocate: galera-bundle-2 allocation score on messaging-1: 0
+pcmk__native_allocate: galera-bundle-2 allocation score on messaging-2: 0
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on database-0: 0
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on database-1: 0
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on database-2: 0
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on database-1: 0
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on database-2: 0
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on database-2: 0
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: galera-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: galera:0 allocation score on galera-bundle-0: INFINITY
+pcmk__native_allocate: galera:1 allocation score on galera-bundle-1: INFINITY
+pcmk__native_allocate: galera:2 allocation score on galera-bundle-2: INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on controller-0: 0
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on controller-1: INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on controller-2: INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on controller-0: 0
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on controller-0: 0
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on controller-1: INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: haproxy-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on controller-0: 0
+pcmk__native_allocate: ip-10.0.0.150 allocation score on controller-1: 0
+pcmk__native_allocate: ip-10.0.0.150 allocation score on controller-2: INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ip-10.0.0.150 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on controller-0: 0
+pcmk__native_allocate: ip-172.17.1.150 allocation score on controller-1: INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on controller-2: 0
+pcmk__native_allocate: ip-172.17.1.150 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.150 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on controller-0: 0
+pcmk__native_allocate: ip-172.17.1.151 allocation score on controller-1: INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on controller-2: 0
+pcmk__native_allocate: ip-172.17.1.151 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.151 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on controller-0: 0
+pcmk__native_allocate: ip-172.17.1.87 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ip-172.17.1.87 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on controller-0: 0
+pcmk__native_allocate: ip-172.17.3.150 allocation score on controller-1: INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on controller-2: 0
+pcmk__native_allocate: ip-172.17.3.150 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ip-172.17.3.150 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on controller-0: 0
+pcmk__native_allocate: ip-172.17.4.150 allocation score on controller-1: 0
+pcmk__native_allocate: ip-172.17.4.150 allocation score on controller-2: INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ip-172.17.4.150 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on controller-0: 0
+pcmk__native_allocate: ip-192.168.24.150 allocation score on controller-1: INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on controller-2: 0
+pcmk__native_allocate: ip-192.168.24.150 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ip-192.168.24.150 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: nova-evacuate allocation score on compute-0: -INFINITY
+pcmk__native_allocate: nova-evacuate allocation score on compute-1: -INFINITY
+pcmk__native_allocate: nova-evacuate allocation score on controller-0: 0
+pcmk__native_allocate: nova-evacuate allocation score on controller-1: 0
+pcmk__native_allocate: nova-evacuate allocation score on controller-2: 0
+pcmk__native_allocate: nova-evacuate allocation score on database-0: 0
+pcmk__native_allocate: nova-evacuate allocation score on database-1: 0
+pcmk__native_allocate: nova-evacuate allocation score on database-2: 0
+pcmk__native_allocate: nova-evacuate allocation score on messaging-0: 0
+pcmk__native_allocate: nova-evacuate allocation score on messaging-1: 0
+pcmk__native_allocate: nova-evacuate allocation score on messaging-2: 0
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on controller-0: 0
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on controller-1: 0
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on controller-2: 0
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on database-0: -INFINITY
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on database-1: -INFINITY
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on database-2: -INFINITY
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: openstack-cinder-volume-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on controller-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on controller-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on controller-2: 10000
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on database-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on database-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on database-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on messaging-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on messaging-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-0 allocation score on messaging-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on controller-0: 10000
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on controller-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on controller-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on database-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on database-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on database-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on messaging-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on messaging-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-1 allocation score on messaging-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on controller-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on controller-1: 10000
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on controller-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on database-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on database-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on database-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on messaging-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on messaging-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-2 allocation score on messaging-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on controller-2: 0
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-0: 0
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-1: 0
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: ovn-dbs-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: ovndb_servers:0 allocation score on ovn-dbs-bundle-0: INFINITY
+pcmk__native_allocate: ovndb_servers:1 allocation score on ovn-dbs-bundle-1: INFINITY
+pcmk__native_allocate: ovndb_servers:2 allocation score on ovn-dbs-bundle-2: INFINITY
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on controller-0: 0
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on controller-1: 0
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on controller-2: 0
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on database-0: 0
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on database-1: 0
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on database-2: 0
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on messaging-0: 10000
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on messaging-1: 0
+pcmk__native_allocate: rabbitmq-bundle-0 allocation score on messaging-2: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on controller-0: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on controller-1: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on controller-2: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on database-0: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on database-1: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on database-2: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on messaging-0: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on messaging-1: 0
+pcmk__native_allocate: rabbitmq-bundle-1 allocation score on messaging-2: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on controller-0: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on controller-1: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on controller-2: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on database-0: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on database-1: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on database-2: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on messaging-0: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on messaging-1: 0
+pcmk__native_allocate: rabbitmq-bundle-2 allocation score on messaging-2: 10000
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on messaging-0: 0
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-0 allocation score on messaging-2: 0
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on controller-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: rabbitmq-bundle-podman-2 allocation score on messaging-2: 0
+pcmk__native_allocate: rabbitmq:0 allocation score on rabbitmq-bundle-0: INFINITY
+pcmk__native_allocate: rabbitmq:1 allocation score on rabbitmq-bundle-1: INFINITY
+pcmk__native_allocate: rabbitmq:2 allocation score on rabbitmq-bundle-2: INFINITY
+pcmk__native_allocate: redis-bundle-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: redis-bundle-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: redis-bundle-0 allocation score on controller-0: 0
+pcmk__native_allocate: redis-bundle-0 allocation score on controller-1: 0
+pcmk__native_allocate: redis-bundle-0 allocation score on controller-2: 10000
+pcmk__native_allocate: redis-bundle-0 allocation score on database-0: 0
+pcmk__native_allocate: redis-bundle-0 allocation score on database-1: 0
+pcmk__native_allocate: redis-bundle-0 allocation score on database-2: 0
+pcmk__native_allocate: redis-bundle-0 allocation score on messaging-0: 0
+pcmk__native_allocate: redis-bundle-0 allocation score on messaging-1: 0
+pcmk__native_allocate: redis-bundle-0 allocation score on messaging-2: 0
+pcmk__native_allocate: redis-bundle-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: redis-bundle-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: redis-bundle-1 allocation score on controller-0: 10000
+pcmk__native_allocate: redis-bundle-1 allocation score on controller-1: 0
+pcmk__native_allocate: redis-bundle-1 allocation score on controller-2: 0
+pcmk__native_allocate: redis-bundle-1 allocation score on database-0: 0
+pcmk__native_allocate: redis-bundle-1 allocation score on database-1: 0
+pcmk__native_allocate: redis-bundle-1 allocation score on database-2: 0
+pcmk__native_allocate: redis-bundle-1 allocation score on messaging-0: 0
+pcmk__native_allocate: redis-bundle-1 allocation score on messaging-1: 0
+pcmk__native_allocate: redis-bundle-1 allocation score on messaging-2: 0
+pcmk__native_allocate: redis-bundle-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: redis-bundle-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: redis-bundle-2 allocation score on controller-0: 0
+pcmk__native_allocate: redis-bundle-2 allocation score on controller-1: 10000
+pcmk__native_allocate: redis-bundle-2 allocation score on controller-2: 0
+pcmk__native_allocate: redis-bundle-2 allocation score on database-0: 0
+pcmk__native_allocate: redis-bundle-2 allocation score on database-1: 0
+pcmk__native_allocate: redis-bundle-2 allocation score on database-2: 0
+pcmk__native_allocate: redis-bundle-2 allocation score on messaging-0: 0
+pcmk__native_allocate: redis-bundle-2 allocation score on messaging-1: 0
+pcmk__native_allocate: redis-bundle-2 allocation score on messaging-2: 0
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on controller-0: 0
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on controller-1: 0
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on controller-2: 0
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on database-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on database-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on database-2: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-0 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on controller-0: 0
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on controller-1: 0
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on database-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on database-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on database-2: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-1 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on controller-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on controller-1: 0
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on controller-2: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on database-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on database-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on database-2: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on messaging-0: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on messaging-1: -INFINITY
+pcmk__native_allocate: redis-bundle-podman-2 allocation score on messaging-2: -INFINITY
+pcmk__native_allocate: redis:0 allocation score on redis-bundle-0: INFINITY
+pcmk__native_allocate: redis:1 allocation score on redis-bundle-1: INFINITY
+pcmk__native_allocate: redis:2 allocation score on redis-bundle-2: INFINITY
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_compute-fence-nova allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on database-1: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400066e50 allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540040bb56 allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on controller-2: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540060dbba allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on messaging-1: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-52540078fb07 allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400aa1373 allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400addd38 allocation score on messaging-2: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on controller-0: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400c87cdb allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on database-0: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400dc23e0 allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on controller-1: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e018b6 allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on database-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on messaging-0: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400e1534e allocation score on messaging-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on compute-0: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on compute-1: -INFINITY
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on controller-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on controller-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on controller-2: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on database-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on database-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on database-2: -10000
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on messaging-0: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on messaging-1: 0
+pcmk__native_allocate: stonith-fence_ipmilan-525400ea59b0 allocation score on messaging-2: 0
+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/scheduler/cancel-behind-moving-remote.summary b/cts/scheduler/cancel-behind-moving-remote.summary
new file mode 100644
index 0000000000..b725ef4dea
--- /dev/null
+++ b/cts/scheduler/cancel-behind-moving-remote.summary
@@ -0,0 +1,235 @@
+Using the original execution date of: 2021-02-15 01:40:51Z
+
+Current cluster status:
+Online: [ controller-0 controller-1 controller-2 database-0 database-1 database-2 messaging-0 messaging-2 ]
+OFFLINE: [ messaging-1 ]
+RemoteOnline: [ compute-0 compute-1 ]
+GuestOnline: [ galera-bundle-0:galera-bundle-podman-0 galera-bundle-1:galera-bundle-podman-1 galera-bundle-2:galera-bundle-podman-2 ovn-dbs-bundle-1:ovn-dbs-bundle-podman-1 ovn-dbs-bundle-2:ovn-dbs-bundle-podman-2 rabbitmq-bundle-0:rabbitmq-bundle-podman-0 rabbitmq-bundle-2:rabbitmq-bundle-podman-2 redis-bundle-0:redis-bundle-podman-0 redis-bundle-1:redis-bundle-podman-1 redis-bundle-2:redis-bundle-podman-2 ]
+
+ compute-0 (ocf:pacemaker:remote): Started controller-1
+ compute-1 (ocf:pacemaker:remote): Started controller-2
+ Container bundle set: galera-bundle [cluster.common.tag/rhosp16-openstack-mariadb:pcmklatest]
+ galera-bundle-0 (ocf:heartbeat:galera): Master database-0
+ galera-bundle-1 (ocf:heartbeat:galera): Master database-1
+ galera-bundle-2 (ocf:heartbeat:galera): Master database-2
+ Container bundle set: rabbitmq-bundle [cluster.common.tag/rhosp16-openstack-rabbitmq:pcmklatest]
+ rabbitmq-bundle-0 (ocf:heartbeat:rabbitmq-cluster): Started messaging-0
+ rabbitmq-bundle-1 (ocf:heartbeat:rabbitmq-cluster): Stopped
+ rabbitmq-bundle-2 (ocf:heartbeat:rabbitmq-cluster): Started messaging-2
+ Container bundle set: redis-bundle [cluster.common.tag/rhosp16-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.150 (ocf:heartbeat:IPaddr2): Started controller-1
+ ip-10.0.0.150 (ocf:heartbeat:IPaddr2): Started controller-2
+ ip-172.17.1.151 (ocf:heartbeat:IPaddr2): Started controller-1
+ ip-172.17.1.150 (ocf:heartbeat:IPaddr2): Started controller-1
+ ip-172.17.3.150 (ocf:heartbeat:IPaddr2): Started controller-1
+ ip-172.17.4.150 (ocf:heartbeat:IPaddr2): Started controller-2
+ Container bundle set: haproxy-bundle [cluster.common.tag/rhosp16-openstack-haproxy:pcmklatest]
+ haproxy-bundle-podman-0 (ocf:heartbeat:podman): Started controller-2
+ haproxy-bundle-podman-1 (ocf:heartbeat:podman): Started controller-0
+ haproxy-bundle-podman-2 (ocf:heartbeat:podman): Started controller-1
+ Container bundle set: ovn-dbs-bundle [cluster.common.tag/rhosp16-openstack-ovn-northd:pcmklatest]
+ ovn-dbs-bundle-0 (ocf:ovn:ovndb-servers): Stopped
+ ovn-dbs-bundle-1 (ocf:ovn:ovndb-servers): Slave controller-2
+ ovn-dbs-bundle-2 (ocf:ovn:ovndb-servers): Slave controller-1
+ ip-172.17.1.87 (ocf:heartbeat:IPaddr2): Stopped
+ stonith-fence_compute-fence-nova (stonith:fence_compute): Started database-1
+ Clone Set: compute-unfence-trigger-clone [compute-unfence-trigger]
+ Started: [ compute-0 compute-1 ]
+ Stopped: [ controller-0 controller-1 controller-2 database-0 database-1 database-2 messaging-0 messaging-1 messaging-2 ]
+ nova-evacuate (ocf:openstack:NovaEvacuate): Started database-2
+ stonith-fence_ipmilan-525400aa1373 (stonith:fence_ipmilan): Started messaging-0
+ stonith-fence_ipmilan-525400dc23e0 (stonith:fence_ipmilan): Started messaging-2
+ stonith-fence_ipmilan-52540040bb56 (stonith:fence_ipmilan): Started messaging-2
+ stonith-fence_ipmilan-525400addd38 (stonith:fence_ipmilan): Started messaging-0
+ stonith-fence_ipmilan-52540078fb07 (stonith:fence_ipmilan): Started database-0
+ stonith-fence_ipmilan-525400ea59b0 (stonith:fence_ipmilan): Started database-1
+ stonith-fence_ipmilan-525400066e50 (stonith:fence_ipmilan): Started database-2
+ stonith-fence_ipmilan-525400e1534e (stonith:fence_ipmilan): Started database-1
+ stonith-fence_ipmilan-52540060dbba (stonith:fence_ipmilan): Started database-2
+ stonith-fence_ipmilan-525400e018b6 (stonith:fence_ipmilan): Started database-0
+ stonith-fence_ipmilan-525400c87cdb (stonith:fence_ipmilan): Started messaging-0
+ Container bundle: openstack-cinder-volume [cluster.common.tag/rhosp16-openstack-cinder-volume:pcmklatest]
+ openstack-cinder-volume-podman-0 (ocf:heartbeat:podman): Started controller-2
+
+Only 'private' parameters to stonith-fence_compute-fence-nova_start_0 on database-1 changed: 0:0;273:48:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_compute-fence-nova_monitor_60000 on database-1 changed: 0:0;275:48:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400ea59b0_start_0 on database-1 changed: 0:0;298:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400ea59b0_monitor_60000 on database-1 changed: 0:0;299:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400e1534e_start_0 on database-1 changed: 0:0;301:39:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400e1534e_monitor_60000 on database-1 changed: 0:0;302:39:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540078fb07_start_0 on database-0 changed: 0:0;294:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540078fb07_monitor_60000 on database-0 changed: 0:0;296:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400e018b6_start_0 on database-0 changed: 0:0;311:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400e018b6_monitor_60000 on database-0 changed: 0:0;312:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400aa1373_start_0 on messaging-0 changed: 0:0;282:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400aa1373_monitor_60000 on messaging-0 changed: 0:0;284:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400addd38_start_0 on messaging-0 changed: 0:0;295:48:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400addd38_monitor_60000 on messaging-0 changed: 0:0;297:48:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400c87cdb_start_0 on messaging-0 changed: 0:0;310:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400c87cdb_monitor_60000 on messaging-0 changed: 0:0;311:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400dc23e0_start_0 on messaging-2 changed: 0:0;286:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400dc23e0_monitor_60000 on messaging-2 changed: 0:0;288:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540040bb56_start_0 on messaging-2 changed: 0:0;293:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540040bb56_monitor_60000 on messaging-2 changed: 0:0;295:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to nova-evacuate_start_0 on database-2 changed: 0:0;279:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to nova-evacuate_monitor_10000 on database-2 changed: 0:0;280:58:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400066e50_start_0 on database-2 changed: 0:0;304:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-525400066e50_monitor_60000 on database-2 changed: 0:0;305:56:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540060dbba_start_0 on database-2 changed: 0:0;306:51:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Only 'private' parameters to stonith-fence_ipmilan-52540060dbba_monitor_60000 on database-2 changed: 0:0;307:51:0:ef0c178d-d0fc-4118-9005-2571eab8a55d
+Transition Summary:
+ * Start rabbitmq-bundle-1 ( controller-0 ) due to unrunnable rabbitmq-bundle-podman-1 start (blocked)
+ * Start rabbitmq:1 ( rabbitmq-bundle-1 ) due to unrunnable rabbitmq-bundle-podman-1 start (blocked)
+ * Start ovn-dbs-bundle-podman-0 ( controller-2 )
+ * Start ovn-dbs-bundle-0 ( controller-2 )
+ * Start ovndb_servers:0 ( ovn-dbs-bundle-0 )
+ * Move ovn-dbs-bundle-podman-1 ( controller-2 -> controller-0 )
+ * Move ovn-dbs-bundle-1 ( controller-2 -> controller-0 )
+ * Restart ovndb_servers:1 ( Slave -> Master ovn-dbs-bundle-1 ) due to required ovn-dbs-bundle-podman-1 start
+ * Start ip-172.17.1.87 ( controller-0 )
+ * Move stonith-fence_ipmilan-52540040bb56 ( messaging-2 -> database-0 )
+ * Move stonith-fence_ipmilan-525400e1534e ( database-1 -> messaging-2 )
+
+Executing cluster transition:
+ * Pseudo action: rabbitmq-bundle-clone_pre_notify_start_0
+ * Resource action: ovndb_servers cancel=30000 on ovn-dbs-bundle-1
+ * Pseudo action: ovn-dbs-bundle-master_pre_notify_stop_0
+ * Cluster action: clear_failcount for ovn-dbs-bundle-0 on controller-0
+ * Cluster action: clear_failcount for ovn-dbs-bundle-1 on controller-2
+ * Cluster action: clear_failcount for stonith-fence_compute-fence-nova on messaging-0
+ * Cluster action: clear_failcount for nova-evacuate on messaging-0
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-525400aa1373 on database-0
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-525400dc23e0 on database-2
+ * Resource action: stonith-fence_ipmilan-52540040bb56 stop on messaging-2
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-52540078fb07 on messaging-2
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-525400ea59b0 on database-0
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-525400066e50 on messaging-2
+ * Resource action: stonith-fence_ipmilan-525400e1534e stop on database-1
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-525400e1534e on database-2
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-52540060dbba on messaging-0
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-525400e018b6 on database-0
+ * Cluster action: clear_failcount for stonith-fence_ipmilan-525400c87cdb on database-2
+ * Pseudo action: ovn-dbs-bundle_stop_0
+ * Pseudo action: rabbitmq-bundle_start_0
+ * Pseudo action: rabbitmq-bundle-clone_confirmed-pre_notify_start_0
+ * Pseudo action: rabbitmq-bundle-clone_start_0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-1
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-2
+ * Pseudo action: ovn-dbs-bundle-master_confirmed-pre_notify_stop_0
+ * Pseudo action: ovn-dbs-bundle-master_stop_0
+ * Resource action: stonith-fence_ipmilan-52540040bb56 start on database-0
+ * Resource action: stonith-fence_ipmilan-525400e1534e start on messaging-2
+ * Pseudo action: rabbitmq-bundle-clone_running_0
+ * Resource action: ovndb_servers stop on ovn-dbs-bundle-1
+ * Pseudo action: ovn-dbs-bundle-master_stopped_0
+ * Resource action: ovn-dbs-bundle-1 stop on controller-2
+ * Resource action: stonith-fence_ipmilan-52540040bb56 monitor=60000 on database-0
+ * Resource action: stonith-fence_ipmilan-525400e1534e monitor=60000 on messaging-2
+ * Pseudo action: rabbitmq-bundle-clone_post_notify_running_0
+ * Pseudo action: ovn-dbs-bundle-master_post_notify_stopped_0
+ * Resource action: ovn-dbs-bundle-podman-1 stop on controller-2
+ * Pseudo action: rabbitmq-bundle-clone_confirmed-post_notify_running_0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-2
+ * Pseudo action: ovn-dbs-bundle-master_confirmed-post_notify_stopped_0
+ * Pseudo action: ovn-dbs-bundle-master_pre_notify_start_0
+ * Pseudo action: ovn-dbs-bundle_stopped_0
+ * Pseudo action: ovn-dbs-bundle_start_0
+ * Pseudo action: rabbitmq-bundle_running_0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-2
+ * Pseudo action: ovn-dbs-bundle-master_confirmed-pre_notify_start_0
+ * Pseudo action: ovn-dbs-bundle-master_start_0
+ * Resource action: ovn-dbs-bundle-podman-0 start on controller-2
+ * Resource action: ovn-dbs-bundle-0 start on controller-2
+ * Resource action: ovn-dbs-bundle-podman-1 start on controller-0
+ * Resource action: ovn-dbs-bundle-1 start on controller-0
+ * Resource action: ovndb_servers start on ovn-dbs-bundle-0
+ * Resource action: ovndb_servers start on ovn-dbs-bundle-1
+ * Pseudo action: ovn-dbs-bundle-master_running_0
+ * Resource action: ovn-dbs-bundle-podman-0 monitor=60000 on controller-2
+ * Resource action: ovn-dbs-bundle-0 monitor=30000 on controller-2
+ * Resource action: ovn-dbs-bundle-podman-1 monitor=60000 on controller-0
+ * Resource action: ovn-dbs-bundle-1 monitor=30000 on controller-0
+ * Pseudo action: ovn-dbs-bundle-master_post_notify_running_0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-1
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-2
+ * Pseudo action: ovn-dbs-bundle-master_confirmed-post_notify_running_0
+ * Pseudo action: ovn-dbs-bundle_running_0
+ * Pseudo action: ovn-dbs-bundle-master_pre_notify_promote_0
+ * Pseudo action: ovn-dbs-bundle_promote_0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-1
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-2
+ * Pseudo action: ovn-dbs-bundle-master_confirmed-pre_notify_promote_0
+ * Pseudo action: ovn-dbs-bundle-master_promote_0
+ * Resource action: ovndb_servers promote on ovn-dbs-bundle-1
+ * Pseudo action: ovn-dbs-bundle-master_promoted_0
+ * Pseudo action: ovn-dbs-bundle-master_post_notify_promoted_0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-0
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-1
+ * Resource action: ovndb_servers notify on ovn-dbs-bundle-2
+ * Pseudo action: ovn-dbs-bundle-master_confirmed-post_notify_promoted_0
+ * Pseudo action: ovn-dbs-bundle_promoted_0
+ * Resource action: ovndb_servers monitor=30000 on ovn-dbs-bundle-0
+ * Resource action: ovndb_servers monitor=10000 on ovn-dbs-bundle-1
+ * Resource action: ip-172.17.1.87 start on controller-0
+ * Resource action: ip-172.17.1.87 monitor=10000 on controller-0
+Using the original execution date of: 2021-02-15 01:40:51Z
+
+Revised cluster status:
+Online: [ controller-0 controller-1 controller-2 database-0 database-1 database-2 messaging-0 messaging-2 ]
+OFFLINE: [ messaging-1 ]
+RemoteOnline: [ compute-0 compute-1 ]
+GuestOnline: [ galera-bundle-0:galera-bundle-podman-0 galera-bundle-1:galera-bundle-podman-1 galera-bundle-2:galera-bundle-podman-2 ovn-dbs-bundle-0:ovn-dbs-bundle-podman-0 ovn-dbs-bundle-1:ovn-dbs-bundle-podman-1 ovn-dbs-bundle-2:ovn-dbs-bundle-podman-2 rabbitmq-bundle-0:rabbitmq-bundle-podman-0 rabbitmq-bundle-2:rabbitmq-bundle-podman-2 redis-bundle-0:redis-bundle-podman-0 redis-bundle-1:redis-bundle-podman-1 redis-bundle-2:redis-bundle-podman-2 ]
+
+ compute-0 (ocf:pacemaker:remote): Started controller-1
+ compute-1 (ocf:pacemaker:remote): Started controller-2
+ Container bundle set: galera-bundle [cluster.common.tag/rhosp16-openstack-mariadb:pcmklatest]
+ galera-bundle-0 (ocf:heartbeat:galera): Master database-0
+ galera-bundle-1 (ocf:heartbeat:galera): Master database-1
+ galera-bundle-2 (ocf:heartbeat:galera): Master database-2
+ Container bundle set: rabbitmq-bundle [cluster.common.tag/rhosp16-openstack-rabbitmq:pcmklatest]
+ rabbitmq-bundle-0 (ocf:heartbeat:rabbitmq-cluster): Started messaging-0
+ rabbitmq-bundle-1 (ocf:heartbeat:rabbitmq-cluster): Stopped
+ rabbitmq-bundle-2 (ocf:heartbeat:rabbitmq-cluster): Started messaging-2
+ Container bundle set: redis-bundle [cluster.common.tag/rhosp16-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.150 (ocf:heartbeat:IPaddr2): Started controller-1
+ ip-10.0.0.150 (ocf:heartbeat:IPaddr2): Started controller-2
+ ip-172.17.1.151 (ocf:heartbeat:IPaddr2): Started controller-1
+ ip-172.17.1.150 (ocf:heartbeat:IPaddr2): Started controller-1
+ ip-172.17.3.150 (ocf:heartbeat:IPaddr2): Started controller-1
+ ip-172.17.4.150 (ocf:heartbeat:IPaddr2): Started controller-2
+ Container bundle set: haproxy-bundle [cluster.common.tag/rhosp16-openstack-haproxy:pcmklatest]
+ haproxy-bundle-podman-0 (ocf:heartbeat:podman): Started controller-2
+ haproxy-bundle-podman-1 (ocf:heartbeat:podman): Started controller-0
+ haproxy-bundle-podman-2 (ocf:heartbeat:podman): Started controller-1
+ Container bundle set: ovn-dbs-bundle [cluster.common.tag/rhosp16-openstack-ovn-northd:pcmklatest]
+ ovn-dbs-bundle-0 (ocf:ovn:ovndb-servers): Slave controller-2
+ ovn-dbs-bundle-1 (ocf:ovn:ovndb-servers): Master controller-0
+ ovn-dbs-bundle-2 (ocf:ovn:ovndb-servers): Slave controller-1
+ ip-172.17.1.87 (ocf:heartbeat:IPaddr2): Started controller-0
+ stonith-fence_compute-fence-nova (stonith:fence_compute): Started database-1
+ Clone Set: compute-unfence-trigger-clone [compute-unfence-trigger]
+ Started: [ compute-0 compute-1 ]
+ Stopped: [ controller-0 controller-1 controller-2 database-0 database-1 database-2 messaging-0 messaging-1 messaging-2 ]
+ nova-evacuate (ocf:openstack:NovaEvacuate): Started database-2
+ stonith-fence_ipmilan-525400aa1373 (stonith:fence_ipmilan): Started messaging-0
+ stonith-fence_ipmilan-525400dc23e0 (stonith:fence_ipmilan): Started messaging-2
+ stonith-fence_ipmilan-52540040bb56 (stonith:fence_ipmilan): Started database-0
+ stonith-fence_ipmilan-525400addd38 (stonith:fence_ipmilan): Started messaging-0
+ stonith-fence_ipmilan-52540078fb07 (stonith:fence_ipmilan): Started database-0
+ stonith-fence_ipmilan-525400ea59b0 (stonith:fence_ipmilan): Started database-1
+ stonith-fence_ipmilan-525400066e50 (stonith:fence_ipmilan): Started database-2
+ stonith-fence_ipmilan-525400e1534e (stonith:fence_ipmilan): Started messaging-2
+ stonith-fence_ipmilan-52540060dbba (stonith:fence_ipmilan): Started database-2
+ stonith-fence_ipmilan-525400e018b6 (stonith:fence_ipmilan): Started database-0
+ stonith-fence_ipmilan-525400c87cdb (stonith:fence_ipmilan): Started messaging-0
+ Container bundle: openstack-cinder-volume [cluster.common.tag/rhosp16-openstack-cinder-volume:pcmklatest]
+ openstack-cinder-volume-podman-0 (ocf:heartbeat:podman): Started controller-2
+
diff --git a/cts/scheduler/cancel-behind-moving-remote.xml b/cts/scheduler/cancel-behind-moving-remote.xml
new file mode 100644
index 0000000000..d52d9a46da
--- /dev/null
+++ b/cts/scheduler/cancel-behind-moving-remote.xml
@@ -0,0 +1,2108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/pacemaker/pcmk_sched_graph.c b/lib/pacemaker/pcmk_sched_graph.c
index f0d1f476fe..466fb9fd09 100644
--- a/lib/pacemaker/pcmk_sched_graph.c
+++ b/lib/pacemaker/pcmk_sched_graph.c
@@ -1,1879 +1,1902 @@
/*
- * Copyright 2004-2020 the Pacemaker project contributors
+ * Copyright 2004-2021 the Pacemaker project contributors
*
* The version control history for this file may have further details.
*
* This source code is licensed under the GNU General Public License version 2
* or later (GPLv2+) WITHOUT ANY WARRANTY.
*/
#include
#include
#include
#include
#include
#include
#include
#include
void update_colo_start_chain(pe_action_t *action, pe_working_set_t *data_set);
gboolean rsc_update_action(pe_action_t * first, pe_action_t * then, enum pe_ordering type);
static enum pe_action_flags
get_action_flags(pe_action_t * action, pe_node_t * node)
{
enum pe_action_flags flags = action->flags;
if (action->rsc) {
flags = action->rsc->cmds->action_flags(action, NULL);
if (pe_rsc_is_clone(action->rsc) && node) {
/* We only care about activity on $node */
enum pe_action_flags clone_flags = action->rsc->cmds->action_flags(action, node);
/* Go to great lengths to ensure the correct value for pe_action_runnable...
*
* If we are a clone, then for _ordering_ constraints, it's only relevant
* if we are runnable _anywhere_.
*
* This only applies to _runnable_ though, and only for ordering constraints.
* If this function is ever used during colocation, then we'll need additional logic
*
* Not very satisfying, but it's logical and appears to work well.
*/
if (!pcmk_is_set(clone_flags, pe_action_runnable)
&& pcmk_is_set(flags, pe_action_runnable)) {
pe__set_raw_action_flags(clone_flags, action->rsc->id,
pe_action_runnable);
}
flags = clone_flags;
}
}
return flags;
}
static char *
convert_non_atomic_uuid(char *old_uuid, pe_resource_t * rsc, gboolean allow_notify,
gboolean free_original)
{
guint interval_ms = 0;
char *uuid = NULL;
char *rid = NULL;
char *raw_task = NULL;
int task = no_action;
CRM_ASSERT(rsc);
pe_rsc_trace(rsc, "Processing %s", old_uuid);
if (old_uuid == NULL) {
return NULL;
} else if (strstr(old_uuid, "notify") != NULL) {
goto done; /* no conversion */
} else if (rsc->variant < pe_group) {
goto done; /* no conversion */
}
CRM_ASSERT(parse_op_key(old_uuid, &rid, &raw_task, &interval_ms));
if (interval_ms > 0) {
goto done; /* no conversion */
}
task = text2task(raw_task);
switch (task) {
case stop_rsc:
case start_rsc:
case action_notify:
case action_promote:
case action_demote:
break;
case stopped_rsc:
case started_rsc:
case action_notified:
case action_promoted:
case action_demoted:
task--;
break;
case monitor_rsc:
case shutdown_crm:
case stonith_node:
task = no_action;
break;
default:
crm_err("Unknown action: %s", raw_task);
task = no_action;
break;
}
if (task != no_action) {
if (pcmk_is_set(rsc->flags, pe_rsc_notify) && allow_notify) {
uuid = pcmk__notify_key(rid, "confirmed-post", task2text(task + 1));
} else {
uuid = pcmk__op_key(rid, task2text(task + 1), 0);
}
pe_rsc_trace(rsc, "Converted %s -> %s", old_uuid, uuid);
}
done:
if (uuid == NULL) {
uuid = strdup(old_uuid);
}
if (free_original) {
free(old_uuid);
}
free(raw_task);
free(rid);
return uuid;
}
static pe_action_t *
rsc_expand_action(pe_action_t * action)
{
gboolean notify = FALSE;
pe_action_t *result = action;
pe_resource_t *rsc = action->rsc;
if (rsc == NULL) {
return action;
}
if ((rsc->parent == NULL)
|| (pe_rsc_is_clone(rsc) && (rsc->parent->variant == pe_container))) {
/* Only outermost resources have notification actions.
* The exception is those in bundles.
*/
notify = pcmk_is_set(rsc->flags, pe_rsc_notify);
}
if (rsc->variant >= pe_group) {
/* Expand 'start' -> 'started' */
char *uuid = NULL;
uuid = convert_non_atomic_uuid(action->uuid, rsc, notify, FALSE);
if (uuid) {
pe_rsc_trace(rsc, "Converting %s to %s %d", action->uuid, uuid,
pcmk_is_set(rsc->flags, pe_rsc_notify));
result = find_first_action(rsc->actions, uuid, NULL, NULL);
if (result == NULL) {
crm_err("Couldn't expand %s to %s in %s", action->uuid, uuid, rsc->id);
result = action;
}
free(uuid);
}
}
return result;
}
static enum pe_graph_flags
graph_update_action(pe_action_t * first, pe_action_t * then, pe_node_t * node,
enum pe_action_flags first_flags, enum pe_action_flags then_flags,
pe_action_wrapper_t *order, pe_working_set_t *data_set)
{
enum pe_graph_flags changed = pe_graph_none;
enum pe_ordering type = order->type;
gboolean processed = FALSE;
/* TODO: Do as many of these in parallel as possible */
if (pcmk_is_set(type, pe_order_implies_then_on_node)) {
/* Normally we want the _whole_ 'then' clone to
* restart if 'first' is restarted, so then->node is
* needed.
*
* However for unfencing, we want to limit this to
* instances on the same node as 'first' (the
* unfencing operation), so first->node is supplied.
*
* Swap the node, from then on we can can treat it
* like any other 'pe_order_implies_then'
*/
pe__clear_order_flags(type, pe_order_implies_then_on_node);
pe__set_order_flags(type, pe_order_implies_then);
node = first->node;
}
pe__clear_raw_action_flags(first_flags, "first action update",
pe_action_pseudo);
if (type & pe_order_implies_then) {
processed = TRUE;
if (then->rsc) {
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags & pe_action_optional, pe_action_optional,
pe_order_implies_then, data_set);
} else if (!pcmk_is_set(first_flags, pe_action_optional)) {
if (update_action_flags(then, pe_action_optional | pe_action_clear, __func__, __LINE__)) {
pe__set_graph_flags(changed, first, pe_graph_updated_then);
}
}
if (changed) {
pe_rsc_trace(then->rsc, "implies right: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("implies right: %s then %s %p", first->uuid, then->uuid, then->rsc);
}
}
if ((type & pe_order_restart) && then->rsc) {
enum pe_action_flags restart = (pe_action_optional | pe_action_runnable);
processed = TRUE;
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags, restart,
pe_order_restart, data_set);
if (changed) {
pe_rsc_trace(then->rsc, "restart: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("restart: %s then %s", first->uuid, then->uuid);
}
}
if (type & pe_order_implies_first) {
processed = TRUE;
if (first->rsc) {
changed |= first->rsc->cmds->update_actions(first, then, node,
first_flags, pe_action_optional, pe_order_implies_first,
data_set);
} else if (!pcmk_is_set(first_flags, pe_action_optional)) {
pe_rsc_trace(first->rsc, "first unrunnable: %s (%d) then %s (%d)",
first->uuid, pcmk_is_set(first_flags, pe_action_optional),
then->uuid, pcmk_is_set(then_flags, pe_action_optional));
if (update_action_flags(first, pe_action_runnable | pe_action_clear, __func__, __LINE__)) {
pe__set_graph_flags(changed, first, pe_graph_updated_first);
}
}
if (changed) {
pe_rsc_trace(then->rsc, "implies left: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("implies left: %s (%d) then %s (%d)",
first->uuid, pcmk_is_set(first_flags, pe_action_optional),
then->uuid, pcmk_is_set(then_flags, pe_action_optional));
}
}
if (type & pe_order_implies_first_master) {
processed = TRUE;
if (then->rsc) {
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags & pe_action_optional, pe_action_optional,
pe_order_implies_first_master, data_set);
}
if (changed) {
pe_rsc_trace(then->rsc,
"implies left when right rsc is Master role: %s then %s: changed",
first->uuid, then->uuid);
} else {
crm_trace("implies left when right rsc is Master role: %s then %s", first->uuid,
then->uuid);
}
}
if (type & pe_order_one_or_more) {
processed = TRUE;
if (then->rsc) {
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags, pe_action_runnable, pe_order_one_or_more,
data_set);
} else if (pcmk_is_set(first_flags, pe_action_runnable)) {
/* alright. a "first" action is considered runnable, incremente
* the 'runnable_before' counter */
then->runnable_before++;
/* if the runnable before count for then exceeds the required number
* of "before" runnable actions... mark then as runnable */
if (then->runnable_before >= then->required_runnable_before) {
if (update_action_flags(then, pe_action_runnable, __func__, __LINE__)) {
pe__set_graph_flags(changed, first, pe_graph_updated_then);
}
}
}
if (changed) {
pe_rsc_trace(then->rsc, "runnable_one_or_more: %s then %s: changed", first->uuid,
then->uuid);
} else {
crm_trace("runnable_one_or_more: %s then %s", first->uuid, then->uuid);
}
}
if (then->rsc && pcmk_is_set(type, pe_order_probe)) {
processed = TRUE;
if (!pcmk_is_set(first_flags, pe_action_runnable)
&& (first->rsc->running_on != NULL)) {
pe_rsc_trace(then->rsc, "Ignoring %s then %s - %s is about to be stopped",
first->uuid, then->uuid, first->rsc->id);
type = pe_order_none;
order->type = pe_order_none;
} else {
pe_rsc_trace(then->rsc, "Enforcing %s then %s", first->uuid, then->uuid);
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags, pe_action_runnable, pe_order_runnable_left,
data_set);
}
if (changed) {
pe_rsc_trace(then->rsc, "runnable: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("runnable: %s then %s", first->uuid, then->uuid);
}
}
if (type & pe_order_runnable_left) {
processed = TRUE;
if (then->rsc) {
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags, pe_action_runnable, pe_order_runnable_left,
data_set);
} else if (!pcmk_is_set(first_flags, pe_action_runnable)) {
pe_rsc_trace(then->rsc, "then unrunnable: %s then %s", first->uuid, then->uuid);
if (update_action_flags(then, pe_action_runnable | pe_action_clear, __func__, __LINE__)) {
pe__set_graph_flags(changed, first, pe_graph_updated_then);
}
}
if (changed) {
pe_rsc_trace(then->rsc, "runnable: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("runnable: %s then %s", first->uuid, then->uuid);
}
}
if (type & pe_order_implies_first_migratable) {
processed = TRUE;
if (then->rsc) {
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags, pe_action_optional,
pe_order_implies_first_migratable, data_set);
}
if (changed) {
pe_rsc_trace(then->rsc, "optional: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("optional: %s then %s", first->uuid, then->uuid);
}
}
if (type & pe_order_pseudo_left) {
processed = TRUE;
if (then->rsc) {
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags, pe_action_optional, pe_order_pseudo_left,
data_set);
}
if (changed) {
pe_rsc_trace(then->rsc, "optional: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("optional: %s then %s", first->uuid, then->uuid);
}
}
if (type & pe_order_optional) {
processed = TRUE;
if (then->rsc) {
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags, pe_action_runnable, pe_order_optional, data_set);
}
if (changed) {
pe_rsc_trace(then->rsc, "optional: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("optional: %s then %s", first->uuid, then->uuid);
}
}
if (type & pe_order_asymmetrical) {
processed = TRUE;
if (then->rsc) {
changed |= then->rsc->cmds->update_actions(first, then, node,
first_flags, pe_action_runnable, pe_order_asymmetrical,
data_set);
}
if (changed) {
pe_rsc_trace(then->rsc, "asymmetrical: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("asymmetrical: %s then %s", first->uuid, then->uuid);
}
}
if ((first->flags & pe_action_runnable) && (type & pe_order_implies_then_printed)
&& (first_flags & pe_action_optional) == 0) {
processed = TRUE;
crm_trace("%s implies %s printed", first->uuid, then->uuid);
update_action_flags(then, pe_action_print_always, __func__, __LINE__); /* don't care about changed */
}
if (pcmk_is_set(type, pe_order_implies_first_printed)
&& !pcmk_is_set(then_flags, pe_action_optional)) {
processed = TRUE;
crm_trace("%s implies %s printed", then->uuid, first->uuid);
update_action_flags(first, pe_action_print_always, __func__, __LINE__); /* don't care about changed */
}
if ((type & pe_order_implies_then
|| type & pe_order_implies_first
|| type & pe_order_restart)
&& first->rsc
&& pcmk__str_eq(first->task, RSC_STOP, pcmk__str_casei)
&& !pcmk_is_set(first->rsc->flags, pe_rsc_managed)
&& pcmk_is_set(first->rsc->flags, pe_rsc_block)
&& !pcmk_is_set(first->flags, pe_action_runnable)) {
if (update_action_flags(then, pe_action_runnable | pe_action_clear, __func__, __LINE__)) {
pe__set_graph_flags(changed, first, pe_graph_updated_then);
}
if (changed) {
pe_rsc_trace(then->rsc, "unmanaged left: %s then %s: changed", first->uuid, then->uuid);
} else {
crm_trace("unmanaged left: %s then %s", first->uuid, then->uuid);
}
}
if (processed == FALSE) {
crm_trace("Constraint 0x%.6x not applicable", type);
}
return changed;
}
static void
mark_start_blocked(pe_resource_t *rsc, pe_resource_t *reason,
pe_working_set_t *data_set)
{
GListPtr gIter = rsc->actions;
char *reason_text = crm_strdup_printf("colocation with %s", reason->id);
for (; gIter != NULL; gIter = gIter->next) {
pe_action_t *action = (pe_action_t *) gIter->data;
if (!pcmk__str_eq(action->task, RSC_START, pcmk__str_casei)) {
continue;
}
if (pcmk_is_set(action->flags, pe_action_runnable)) {
pe_action_set_flag_reason(__func__, __LINE__, action, NULL,
reason_text, pe_action_runnable, FALSE);
update_colo_start_chain(action, data_set);
update_action(action, data_set);
}
}
free(reason_text);
}
void
update_colo_start_chain(pe_action_t *action, pe_working_set_t *data_set)
{
GListPtr gIter = NULL;
pe_resource_t *rsc = NULL;
if (!pcmk_is_set(action->flags, pe_action_runnable)
&& pcmk__str_eq(action->task, RSC_START, pcmk__str_casei)) {
rsc = uber_parent(action->rsc);
if (rsc->parent) {
/* For bundles, uber_parent() returns the clone/master, not the
* bundle, so the existence of rsc->parent implies this is a bundle.
* In this case, we need the bundle resource, so that we can check
* if all containers are stopped/stopping.
*/
rsc = rsc->parent;
}
}
if (rsc == NULL || rsc->rsc_cons_lhs == NULL) {
return;
}
/* if rsc has children, all the children need to have start set to
* unrunnable before we follow the colo chain for the parent. */
for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) {
pe_resource_t *child = (pe_resource_t *)gIter->data;
pe_action_t *start = find_first_action(child->actions, NULL, RSC_START, NULL);
if ((start == NULL) || pcmk_is_set(start->flags, pe_action_runnable)) {
return;
}
}
for (gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) {
pcmk__colocation_t *colocate_with = (pcmk__colocation_t *) gIter->data;
if (colocate_with->score == INFINITY) {
mark_start_blocked(colocate_with->rsc_lh, action->rsc, data_set);
}
}
}
gboolean
update_action(pe_action_t *then, pe_working_set_t *data_set)
{
GListPtr lpc = NULL;
enum pe_graph_flags changed = pe_graph_none;
int last_flags = then->flags;
crm_trace("Processing %s (%s %s %s)",
then->uuid,
pcmk_is_set(then->flags, pe_action_optional)? "optional" : "required",
pcmk_is_set(then->flags, pe_action_runnable)? "runnable" : "unrunnable",
pcmk_is_set(then->flags, pe_action_pseudo)? "pseudo"
: (then->node? then->node->details->uname : ""));
if (pcmk_is_set(then->flags, pe_action_requires_any)) {
/* initialize current known runnable before actions to 0
* from here as graph_update_action is called for each of
* then's before actions, this number will increment as
* runnable 'first' actions are encountered */
then->runnable_before = 0;
/* for backwards compatibility with previous options that use
* the 'requires_any' flag, initialize required to 1 if it is
* not set. */
if (then->required_runnable_before == 0) {
then->required_runnable_before = 1;
}
pe__clear_action_flags(then, pe_action_runnable);
/* We are relying on the pe_order_one_or_more clause of
* graph_update_action(), called as part of the:
*
* 'if (first == other->action)'
*
* block below, to set this back if appropriate
*/
}
for (lpc = then->actions_before; lpc != NULL; lpc = lpc->next) {
pe_action_wrapper_t *other = (pe_action_wrapper_t *) lpc->data;
pe_action_t *first = other->action;
pe_node_t *then_node = then->node;
pe_node_t *first_node = first->node;
enum pe_action_flags then_flags = 0;
enum pe_action_flags first_flags = 0;
if (first->rsc && first->rsc->variant == pe_group && pcmk__str_eq(first->task, RSC_START, pcmk__str_casei)) {
first_node = first->rsc->fns->location(first->rsc, NULL, FALSE);
if (first_node) {
crm_trace("First: Found node %s for %s", first_node->details->uname, first->uuid);
}
}
if (then->rsc && then->rsc->variant == pe_group && pcmk__str_eq(then->task, RSC_START, pcmk__str_casei)) {
then_node = then->rsc->fns->location(then->rsc, NULL, FALSE);
if (then_node) {
crm_trace("Then: Found node %s for %s", then_node->details->uname, then->uuid);
}
}
/* Disable constraint if it only applies when on same node, but isn't */
if (pcmk_is_set(other->type, pe_order_same_node)
&& (first_node != NULL) && (then_node != NULL)
&& (first_node->details != then_node->details)) {
crm_trace("Disabled constraint %s on %s -> %s on %s",
other->action->uuid, first_node->details->uname,
then->uuid, then_node->details->uname);
other->type = pe_order_none;
continue;
}
pe__clear_graph_flags(changed, then, pe_graph_updated_first);
if (first->rsc && pcmk_is_set(other->type, pe_order_then_cancels_first)
&& !pcmk_is_set(then->flags, pe_action_optional)) {
/* 'then' is required, so we must abandon 'first'
* (e.g. a required stop cancels any reload).
*/
pe__set_action_flags(other->action, pe_action_optional);
if (!strcmp(first->task, CRMD_ACTION_RELOAD)) {
pe__clear_resource_flags(first->rsc, pe_rsc_reload);
}
}
if (first->rsc && then->rsc && (first->rsc != then->rsc)
&& (is_parent(then->rsc, first->rsc) == FALSE)) {
first = rsc_expand_action(first);
}
if (first != other->action) {
crm_trace("Ordering %s after %s instead of %s", then->uuid, first->uuid,
other->action->uuid);
}
first_flags = get_action_flags(first, then_node);
then_flags = get_action_flags(then, first_node);
crm_trace("Checking %s (%s %s %s) against %s (%s %s %s) filter=0x%.6x type=0x%.6x",
then->uuid,
pcmk_is_set(then_flags, pe_action_optional)? "optional" : "required",
pcmk_is_set(then_flags, pe_action_runnable)? "runnable" : "unrunnable",
pcmk_is_set(then_flags, pe_action_pseudo)? "pseudo"
: (then->node? then->node->details->uname : ""),
first->uuid,
pcmk_is_set(first_flags, pe_action_optional)? "optional" : "required",
pcmk_is_set(first_flags, pe_action_runnable)? "runnable" : "unrunnable",
pcmk_is_set(first_flags, pe_action_pseudo)? "pseudo"
: (first->node? first->node->details->uname : ""),
first_flags, other->type);
if (first == other->action) {
/*
* 'first' was not expanded (e.g. from 'start' to 'running'), which could mean it:
* - has no associated resource,
* - was a primitive,
* - was pre-expanded (e.g. 'running' instead of 'start')
*
* The third argument here to graph_update_action() is a node which is used under two conditions:
* - Interleaving, in which case first->node and
* then->node are equal (and NULL)
* - If 'then' is a clone, to limit the scope of the
* constraint to instances on the supplied node
*
*/
pe_node_t *node = then->node;
changed |= graph_update_action(first, then, node, first_flags,
then_flags, other, data_set);
/* 'first' was for a complex resource (clone, group, etc),
* create a new dependency if necessary
*/
} else if (order_actions(first, then, other->type)) {
/* This was the first time 'first' and 'then' were associated,
* start again to get the new actions_before list
*/
pe__set_graph_flags(changed, then,
pe_graph_updated_then|pe_graph_disable);
}
if (changed & pe_graph_disable) {
crm_trace("Disabled constraint %s -> %s in favor of %s -> %s",
other->action->uuid, then->uuid, first->uuid, then->uuid);
pe__clear_graph_flags(changed, then, pe_graph_disable);
other->type = pe_order_none;
}
if (changed & pe_graph_updated_first) {
GListPtr lpc2 = NULL;
crm_trace("Updated %s (first %s %s %s), processing dependents ",
first->uuid,
pcmk_is_set(first->flags, pe_action_optional)? "optional" : "required",
pcmk_is_set(first->flags, pe_action_runnable)? "runnable" : "unrunnable",
pcmk_is_set(first->flags, pe_action_pseudo)? "pseudo"
: (first->node? first->node->details->uname : ""));
for (lpc2 = first->actions_after; lpc2 != NULL; lpc2 = lpc2->next) {
pe_action_wrapper_t *other = (pe_action_wrapper_t *) lpc2->data;
update_action(other->action, data_set);
}
update_action(first, data_set);
}
}
if (pcmk_is_set(then->flags, pe_action_requires_any)) {
if (last_flags != then->flags) {
pe__set_graph_flags(changed, then, pe_graph_updated_then);
} else {
pe__clear_graph_flags(changed, then, pe_graph_updated_then);
}
}
if (changed & pe_graph_updated_then) {
crm_trace("Updated %s (then %s %s %s), processing dependents ",
then->uuid,
pcmk_is_set(then->flags, pe_action_optional)? "optional" : "required",
pcmk_is_set(then->flags, pe_action_runnable)? "runnable" : "unrunnable",
pcmk_is_set(then->flags, pe_action_pseudo)? "pseudo"
: (then->node? then->node->details-> uname : ""));
if (pcmk_is_set(last_flags, pe_action_runnable)
&& !pcmk_is_set(then->flags, pe_action_runnable)) {
update_colo_start_chain(then, data_set);
}
update_action(then, data_set);
for (lpc = then->actions_after; lpc != NULL; lpc = lpc->next) {
pe_action_wrapper_t *other = (pe_action_wrapper_t *) lpc->data;
update_action(other->action, data_set);
}
}
return FALSE;
}
gboolean
shutdown_constraints(pe_node_t * node, pe_action_t * shutdown_op, pe_working_set_t * data_set)
{
/* add the stop to the before lists so it counts as a pre-req
* for the shutdown
*/
GListPtr lpc = NULL;
for (lpc = data_set->actions; lpc != NULL; lpc = lpc->next) {
pe_action_t *action = (pe_action_t *) lpc->data;
if (action->rsc == NULL || action->node == NULL) {
continue;
} else if (action->node->details != node->details) {
continue;
} else if (pcmk_is_set(action->rsc->flags, pe_rsc_maintenance)) {
pe_rsc_trace(action->rsc, "Skipping %s: maintenance mode", action->uuid);
continue;
} else if (node->details->maintenance) {
pe_rsc_trace(action->rsc, "Skipping %s: node %s is in maintenance mode",
action->uuid, node->details->uname);
continue;
} else if (!pcmk__str_eq(action->task, RSC_STOP, pcmk__str_casei)) {
continue;
} else if (!pcmk_any_flags_set(action->rsc->flags,
pe_rsc_managed|pe_rsc_block)) {
/*
* If another action depends on this one, we may still end up blocking
*/
pe_rsc_trace(action->rsc, "Skipping %s: unmanaged", action->uuid);
continue;
}
pe_rsc_trace(action->rsc, "Ordering %s before shutdown on %s", action->uuid,
node->details->uname);
pe__clear_action_flags(action, pe_action_optional);
custom_action_order(action->rsc, NULL, action,
NULL, strdup(CRM_OP_SHUTDOWN), shutdown_op,
pe_order_optional | pe_order_runnable_left, data_set);
}
return TRUE;
}
/*!
* \internal
* \brief Order all actions appropriately relative to a fencing operation
*
* Ensure start operations of affected resources are ordered after fencing,
* imply stop and demote operations of affected resources by marking them as
* pseudo-actions, etc.
*
* \param[in] stonith_op Fencing operation
* \param[in,out] data_set Working set of cluster
*/
void
pcmk__order_vs_fence(pe_action_t *stonith_op, pe_working_set_t *data_set)
{
CRM_CHECK(stonith_op && data_set, return);
for (GList *r = data_set->resources; r != NULL; r = r->next) {
rsc_stonith_ordering((pe_resource_t *) r->data, stonith_op, data_set);
}
}
static pe_node_t *
get_router_node(pe_action_t *action)
{
pe_node_t *began_on = NULL;
pe_node_t *ended_on = NULL;
- pe_node_t *router_node = NULL;
bool partial_migration = FALSE;
const char *task = action->task;
if (pcmk__str_eq(task, CRM_OP_FENCE, pcmk__str_casei)
|| !pe__is_guest_or_remote_node(action->node)) {
return NULL;
}
CRM_ASSERT(action->node->details->remote_rsc != NULL);
began_on = pe__current_node(action->node->details->remote_rsc);
ended_on = action->node->details->remote_rsc->allocated_to;
if (action->node->details->remote_rsc
&& (action->node->details->remote_rsc->container == NULL)
&& action->node->details->remote_rsc->partial_migration_target) {
partial_migration = TRUE;
}
- /* if there is only one location to choose from,
- * this is easy. Check for those conditions first */
- if (!began_on || !ended_on) {
- /* remote rsc is either shutting down or starting up */
- return began_on ? began_on : ended_on;
- } else if (began_on->details == ended_on->details) {
- /* remote rsc didn't move nodes. */
+ if (began_on == NULL) {
+ crm_trace("Routing %s for %s through remote connection's "
+ "next node %s (starting)%s",
+ action->task, (action->rsc? action->rsc->id : "no resource"),
+ (ended_on? ended_on->details->uname : "none"),
+ partial_migration? " (partial migration)" : "");
+ return ended_on;
+ }
+
+ if (ended_on == NULL) {
+ crm_trace("Routing %s for %s through remote connection's "
+ "current node %s (stopping)%s",
+ action->task, (action->rsc? action->rsc->id : "no resource"),
+ (began_on? began_on->details->uname : "none"),
+ partial_migration? " (partial migration)" : "");
return began_on;
}
- /* If we have get here, we know the remote resource
- * began on one node and is moving to another node.
- *
- * This means some actions will get routed through the cluster
- * node the connection rsc began on, and others are routed through
- * the cluster node the connection rsc ends up on.
- *
- * 1. stop, demote, migrate actions of resources living in the remote
- * node _MUST_ occur _BEFORE_ the connection can move (these actions
- * are all required before the remote rsc stop action can occur.) In
- * this case, we know these actions have to be routed through the initial
- * cluster node the connection resource lived on before the move takes place.
- * The exception is a partial migration of a (non-guest) remote
- * connection resource; in that case, all actions (even these) will be
- * ordered after the connection's pseudo-start on the migration target,
- * so the target is the router node.
- *
- * 2. Everything else (start, promote, monitor, probe, refresh, clear failcount
- * delete ....) must occur after the resource starts on the node it is
- * moving to.
+ if (began_on->details == ended_on->details) {
+ crm_trace("Routing %s for %s through remote connection's "
+ "current node %s (not moving)%s",
+ action->task, (action->rsc? action->rsc->id : "no resource"),
+ (began_on? began_on->details->uname : "none"),
+ partial_migration? " (partial migration)" : "");
+ return began_on;
+ }
+
+ /* If we get here, the remote connection is moving during this transition.
+ * This means some actions for resources behind the connection will get
+ * routed through the cluster node the connection reource is currently on,
+ * and others are routed through the cluster node the connection will end up
+ * on.
*/
if (pcmk__str_eq(task, "notify", pcmk__str_casei)) {
task = g_hash_table_lookup(action->meta, "notify_operation");
}
- /* 1. before connection rsc moves. */
- if (pcmk__strcase_any_of(task, "stop", "demote", "migrate_from", "migrate_to",
- NULL) && !partial_migration) {
- router_node = began_on;
-
- /* 2. after connection rsc moves. */
- } else {
- router_node = ended_on;
+ /*
+ * Stop, demote, and migration actions must occur before the connection can
+ * move (these actions are required before the remote resource can stop). In
+ * this case, we know these actions have to be routed through the initial
+ * cluster node the connection resource lived on before the move takes
+ * place.
+ *
+ * The exception is a partial migration of a (non-guest) remote connection
+ * resource; in that case, all actions (even these) will be ordered after
+ * the connection's pseudo-start on the migration target, so the target is
+ * the router node.
+ */
+ if (pcmk__strcase_any_of(task, "cancel", "stop", "demote", "migrate_from",
+ "migrate_to", NULL) && !partial_migration) {
+ crm_trace("Routing %s for %s through remote connection's "
+ "current node %s (moving)%s",
+ action->task, (action->rsc? action->rsc->id : "no resource"),
+ (began_on? began_on->details->uname : "none"),
+ partial_migration? " (partial migration)" : "");
+ return began_on;
}
- return router_node;
+
+ /* Everything else (start, promote, monitor, probe, refresh,
+ * clear failcount, delete, ...) must occur after the connection starts on
+ * the node it is moving to.
+ */
+ crm_trace("Routing %s for %s through remote connection's "
+ "next node %s (moving)%s",
+ action->task, (action->rsc? action->rsc->id : "no resource"),
+ (ended_on? ended_on->details->uname : "none"),
+ partial_migration? " (partial migration)" : "");
+ return ended_on;
}
/*!
* \internal
* \brief Add an XML node tag for a specified ID
*
* \param[in] id Node UUID to add
* \param[in,out] xml Parent XML tag to add to
*/
static xmlNode*
add_node_to_xml_by_id(const char *id, xmlNode *xml)
{
xmlNode *node_xml;
node_xml = create_xml_node(xml, XML_CIB_TAG_NODE);
crm_xml_add(node_xml, XML_ATTR_UUID, id);
return node_xml;
}
/*!
* \internal
* \brief Add an XML node tag for a specified node
*
* \param[in] node Node to add
* \param[in,out] xml XML to add node to
*/
static void
add_node_to_xml(const pe_node_t *node, void *xml)
{
add_node_to_xml_by_id(node->details->id, (xmlNode *) xml);
}
/*!
* \internal
* \brief Add XML with nodes that need an update of their maintenance state
*
* \param[in,out] xml Parent XML tag to add to
* \param[in] data_set Working set for cluster
*/
static int
add_maintenance_nodes(xmlNode *xml, const pe_working_set_t *data_set)
{
GListPtr gIter = NULL;
xmlNode *maintenance =
xml?create_xml_node(xml, XML_GRAPH_TAG_MAINTENANCE):NULL;
int count = 0;
for (gIter = data_set->nodes; gIter != NULL;
gIter = gIter->next) {
pe_node_t *node = (pe_node_t *) gIter->data;
struct pe_node_shared_s *details = node->details;
if (!pe__is_guest_or_remote_node(node)) {
continue; /* just remote nodes need to know atm */
}
if (details->maintenance != details->remote_maintenance) {
if (maintenance) {
crm_xml_add(
add_node_to_xml_by_id(node->details->id, maintenance),
XML_NODE_IS_MAINTENANCE, details->maintenance?"1":"0");
}
count++;
}
}
crm_trace("%s %d nodes to adjust maintenance-mode "
"to transition", maintenance?"Added":"Counted", count);
return count;
}
/*!
* \internal
* \brief Add pseudo action with nodes needing maintenance state update
*
* \param[in,out] data_set Working set for cluster
*/
void
add_maintenance_update(pe_working_set_t *data_set)
{
pe_action_t *action = NULL;
if (add_maintenance_nodes(NULL, data_set)) {
crm_trace("adding maintenance state update pseudo action");
action = get_pseudo_op(CRM_OP_MAINTENANCE_NODES, data_set);
pe__set_action_flags(action, pe_action_print_always);
}
}
/*!
* \internal
* \brief Add XML with nodes that an action is expected to bring down
*
* If a specified action is expected to bring any nodes down, add an XML block
* with their UUIDs. When a node is lost, this allows the controller to
* determine whether it was expected.
*
* \param[in,out] xml Parent XML tag to add to
* \param[in] action Action to check for downed nodes
* \param[in] data_set Working set for cluster
*/
static void
add_downed_nodes(xmlNode *xml, const pe_action_t *action,
const pe_working_set_t *data_set)
{
CRM_CHECK(xml && action && action->node && data_set, return);
if (pcmk__str_eq(action->task, CRM_OP_SHUTDOWN, pcmk__str_casei)) {
/* Shutdown makes the action's node down */
xmlNode *downed = create_xml_node(xml, XML_GRAPH_TAG_DOWNED);
add_node_to_xml_by_id(action->node->details->id, downed);
} else if (pcmk__str_eq(action->task, CRM_OP_FENCE, pcmk__str_casei)) {
/* Fencing makes the action's node and any hosted guest nodes down */
const char *fence = g_hash_table_lookup(action->meta, "stonith_action");
if (pcmk__strcase_any_of(fence, "off", "reboot", NULL)) {
xmlNode *downed = create_xml_node(xml, XML_GRAPH_TAG_DOWNED);
add_node_to_xml_by_id(action->node->details->id, downed);
pe_foreach_guest_node(data_set, action->node, add_node_to_xml, downed);
}
} else if (action->rsc && action->rsc->is_remote_node
&& pcmk__str_eq(action->task, CRMD_ACTION_STOP, pcmk__str_casei)) {
/* Stopping a remote connection resource makes connected node down,
* unless it's part of a migration
*/
GListPtr iter;
pe_action_t *input;
gboolean migrating = FALSE;
for (iter = action->actions_before; iter != NULL; iter = iter->next) {
input = ((pe_action_wrapper_t *) iter->data)->action;
if (input->rsc && pcmk__str_eq(action->rsc->id, input->rsc->id, pcmk__str_casei)
&& pcmk__str_eq(input->task, CRMD_ACTION_MIGRATED, pcmk__str_casei)) {
migrating = TRUE;
break;
}
}
if (!migrating) {
xmlNode *downed = create_xml_node(xml, XML_GRAPH_TAG_DOWNED);
add_node_to_xml_by_id(action->rsc->id, downed);
}
}
}
static bool
should_lock_action(pe_action_t *action)
{
// Only actions taking place on resource's lock node are locked
if ((action->rsc->lock_node == NULL) || (action->node == NULL)
|| (action->node->details != action->rsc->lock_node->details)) {
return false;
}
/* During shutdown, only stops are locked (otherwise, another action such as
* a demote would cause the controller to clear the lock)
*/
if (action->node->details->shutdown && action->task
&& strcmp(action->task, RSC_STOP)) {
return false;
}
return true;
}
static xmlNode *
action2xml(pe_action_t * action, gboolean as_input, pe_working_set_t *data_set)
{
gboolean needs_node_info = TRUE;
gboolean needs_maintenance_info = FALSE;
xmlNode *action_xml = NULL;
xmlNode *args_xml = NULL;
#if ENABLE_VERSIONED_ATTRS
pe_rsc_action_details_t *rsc_details = NULL;
#endif
if (action == NULL) {
return NULL;
}
if (pcmk__str_eq(action->task, CRM_OP_FENCE, pcmk__str_casei)) {
/* All fences need node info; guest node fences are pseudo-events */
action_xml = create_xml_node(NULL,
pcmk_is_set(action->flags, pe_action_pseudo)?
XML_GRAPH_TAG_PSEUDO_EVENT :
XML_GRAPH_TAG_CRM_EVENT);
} else if (pcmk__str_eq(action->task, CRM_OP_SHUTDOWN, pcmk__str_casei)) {
action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT);
} else if (pcmk__str_eq(action->task, CRM_OP_CLEAR_FAILCOUNT, pcmk__str_casei)) {
action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT);
} else if (pcmk__str_eq(action->task, CRM_OP_LRM_REFRESH, pcmk__str_casei)) {
action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT);
} else if (pcmk__str_eq(action->task, CRM_OP_LRM_DELETE, pcmk__str_casei)) {
// CIB-only clean-up for shutdown locks
action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT);
crm_xml_add(action_xml, PCMK__XA_MODE, XML_TAG_CIB);
/* } else if(pcmk__str_eq(action->task, RSC_PROBED, pcmk__str_casei)) { */
/* action_xml = create_xml_node(NULL, XML_GRAPH_TAG_CRM_EVENT); */
} else if (pcmk_is_set(action->flags, pe_action_pseudo)) {
if (pcmk__str_eq(action->task, CRM_OP_MAINTENANCE_NODES, pcmk__str_casei)) {
needs_maintenance_info = TRUE;
}
action_xml = create_xml_node(NULL, XML_GRAPH_TAG_PSEUDO_EVENT);
needs_node_info = FALSE;
} else {
action_xml = create_xml_node(NULL, XML_GRAPH_TAG_RSC_OP);
#if ENABLE_VERSIONED_ATTRS
rsc_details = pe_rsc_action_details(action);
#endif
}
crm_xml_add_int(action_xml, XML_ATTR_ID, action->id);
crm_xml_add(action_xml, XML_LRM_ATTR_TASK, action->task);
if (action->rsc != NULL && action->rsc->clone_name != NULL) {
char *clone_key = NULL;
guint interval_ms;
if (pcmk__guint_from_hash(action->meta,
XML_LRM_ATTR_INTERVAL_MS, 0,
&interval_ms) != pcmk_rc_ok) {
interval_ms = 0;
}
if (pcmk__str_eq(action->task, RSC_NOTIFY, pcmk__str_casei)) {
const char *n_type = g_hash_table_lookup(action->meta, "notify_type");
const char *n_task = g_hash_table_lookup(action->meta, "notify_operation");
CRM_CHECK(n_type != NULL, crm_err("No notify type value found for %s", action->uuid));
CRM_CHECK(n_task != NULL,
crm_err("No notify operation value found for %s", action->uuid));
clone_key = pcmk__notify_key(action->rsc->clone_name,
n_type, n_task);
} else if(action->cancel_task) {
clone_key = pcmk__op_key(action->rsc->clone_name,
action->cancel_task, interval_ms);
} else {
clone_key = pcmk__op_key(action->rsc->clone_name,
action->task, interval_ms);
}
CRM_CHECK(clone_key != NULL, crm_err("Could not generate a key for %s", action->uuid));
crm_xml_add(action_xml, XML_LRM_ATTR_TASK_KEY, clone_key);
crm_xml_add(action_xml, "internal_" XML_LRM_ATTR_TASK_KEY, action->uuid);
free(clone_key);
} else {
crm_xml_add(action_xml, XML_LRM_ATTR_TASK_KEY, action->uuid);
}
if (needs_node_info && action->node != NULL) {
pe_node_t *router_node = get_router_node(action);
crm_xml_add(action_xml, XML_LRM_ATTR_TARGET, action->node->details->uname);
crm_xml_add(action_xml, XML_LRM_ATTR_TARGET_UUID, action->node->details->id);
if (router_node) {
crm_xml_add(action_xml, XML_LRM_ATTR_ROUTER_NODE, router_node->details->uname);
}
g_hash_table_insert(action->meta, strdup(XML_LRM_ATTR_TARGET), strdup(action->node->details->uname));
g_hash_table_insert(action->meta, strdup(XML_LRM_ATTR_TARGET_UUID), strdup(action->node->details->id));
}
/* No details if this action is only being listed in the inputs section */
if (as_input) {
return action_xml;
}
if (action->rsc && !pcmk_is_set(action->flags, pe_action_pseudo)) {
int lpc = 0;
xmlNode *rsc_xml = NULL;
const char *attr_list[] = {
XML_AGENT_ATTR_CLASS,
XML_AGENT_ATTR_PROVIDER,
XML_ATTR_TYPE
};
/* If a resource is locked to a node via shutdown-lock, mark its actions
* so the controller can preserve the lock when the action completes.
*/
if (should_lock_action(action)) {
crm_xml_add_ll(action_xml, XML_CONFIG_ATTR_SHUTDOWN_LOCK,
(long long) action->rsc->lock_time);
}
// List affected resource
rsc_xml = create_xml_node(action_xml,
crm_element_name(action->rsc->xml));
if (pcmk_is_set(action->rsc->flags, pe_rsc_orphan)
&& action->rsc->clone_name) {
/* Do not use the 'instance free' name here as that
* might interfere with the instance we plan to keep.
* Ie. if there are more than two named /anonymous/
* instances on a given node, we need to make sure the
* command goes to the right one.
*
* Keep this block, even when everyone is using
* 'instance free' anonymous clone names - it means
* we'll do the right thing if anyone toggles the
* unique flag to 'off'
*/
crm_debug("Using orphan clone name %s instead of %s", action->rsc->id,
action->rsc->clone_name);
crm_xml_add(rsc_xml, XML_ATTR_ID, action->rsc->clone_name);
crm_xml_add(rsc_xml, XML_ATTR_ID_LONG, action->rsc->id);
} else if (!pcmk_is_set(action->rsc->flags, pe_rsc_unique)) {
const char *xml_id = ID(action->rsc->xml);
crm_debug("Using anonymous clone name %s for %s (aka. %s)", xml_id, action->rsc->id,
action->rsc->clone_name);
/* ID is what we'd like client to use
* ID_LONG is what they might know it as instead
*
* ID_LONG is only strictly needed /here/ during the
* transition period until all nodes in the cluster
* are running the new software /and/ have rebooted
* once (meaning that they've only ever spoken to a DC
* supporting this feature).
*
* If anyone toggles the unique flag to 'on', the
* 'instance free' name will correspond to an orphan
* and fall into the clause above instead
*/
crm_xml_add(rsc_xml, XML_ATTR_ID, xml_id);
if (action->rsc->clone_name && !pcmk__str_eq(xml_id, action->rsc->clone_name, pcmk__str_casei)) {
crm_xml_add(rsc_xml, XML_ATTR_ID_LONG, action->rsc->clone_name);
} else {
crm_xml_add(rsc_xml, XML_ATTR_ID_LONG, action->rsc->id);
}
} else {
CRM_ASSERT(action->rsc->clone_name == NULL);
crm_xml_add(rsc_xml, XML_ATTR_ID, action->rsc->id);
}
for (lpc = 0; lpc < DIMOF(attr_list); lpc++) {
crm_xml_add(rsc_xml, attr_list[lpc],
g_hash_table_lookup(action->rsc->meta, attr_list[lpc]));
}
}
/* List any attributes in effect */
args_xml = create_xml_node(NULL, XML_TAG_ATTRS);
crm_xml_add(args_xml, XML_ATTR_CRM_VERSION, CRM_FEATURE_SET);
g_hash_table_foreach(action->extra, hash2field, args_xml);
if (action->rsc != NULL && action->node) {
// Get the resource instance attributes, evaluated properly for node
GHashTable *params = pe_rsc_params(action->rsc, action->node, data_set);
/* REMOTE_CONTAINER_HACK: If this is a remote connection resource with
* addr="#uname", pull the actual value from the parameters evaluated
* without a node (which was put there earlier in stage8() when the
* bundle's expand() method was called).
*/
const char *remote_addr = g_hash_table_lookup(params,
XML_RSC_ATTR_REMOTE_RA_ADDR);
if (pcmk__str_eq(remote_addr, "#uname", pcmk__str_none)) {
GHashTable *base = pe_rsc_params(action->rsc, NULL, data_set);
remote_addr = g_hash_table_lookup(base,
XML_RSC_ATTR_REMOTE_RA_ADDR);
if (remote_addr != NULL) {
g_hash_table_insert(params, strdup(XML_RSC_ATTR_REMOTE_RA_ADDR),
strdup(remote_addr));
}
}
g_hash_table_foreach(params, hash2smartfield, args_xml);
#if ENABLE_VERSIONED_ATTRS
{
xmlNode *versioned_parameters = create_xml_node(NULL, XML_TAG_RSC_VER_ATTRS);
pe_get_versioned_attributes(versioned_parameters, action->rsc,
action->node, data_set);
if (xml_has_children(versioned_parameters)) {
add_node_copy(action_xml, versioned_parameters);
}
free_xml(versioned_parameters);
}
#endif
} else if(action->rsc && action->rsc->variant <= pe_native) {
GHashTable *params = pe_rsc_params(action->rsc, NULL, data_set);
g_hash_table_foreach(params, hash2smartfield, args_xml);
#if ENABLE_VERSIONED_ATTRS
if (xml_has_children(action->rsc->versioned_parameters)) {
add_node_copy(action_xml, action->rsc->versioned_parameters);
}
#endif
}
#if ENABLE_VERSIONED_ATTRS
if (rsc_details) {
if (xml_has_children(rsc_details->versioned_parameters)) {
add_node_copy(action_xml, rsc_details->versioned_parameters);
}
if (xml_has_children(rsc_details->versioned_meta)) {
add_node_copy(action_xml, rsc_details->versioned_meta);
}
}
#endif
g_hash_table_foreach(action->meta, hash2metafield, args_xml);
if (action->rsc != NULL) {
const char *value = g_hash_table_lookup(action->rsc->meta, "external-ip");
pe_resource_t *parent = action->rsc;
while (parent != NULL) {
parent->cmds->append_meta(parent, args_xml);
parent = parent->parent;
}
if(value) {
hash2smartfield((gpointer)"pcmk_external_ip", (gpointer)value, (gpointer)args_xml);
}
if (action->node && /* make clang analyzer happy */
pe__is_guest_node(action->node)) {
pe_node_t *host = NULL;
enum action_tasks task = text2task(action->task);
if(task == action_notify || task == action_notified) {
const char *n_task = g_hash_table_lookup(action->meta, "notify_operation");
task = text2task(n_task);
}
// Differentiate between up and down actions
switch (task) {
case stop_rsc:
case stopped_rsc:
case action_demote:
case action_demoted:
host = pe__current_node(action->node->details->remote_rsc->container);
break;
case start_rsc:
case started_rsc:
case monitor_rsc:
case action_promote:
case action_promoted:
host = action->node->details->remote_rsc->container->allocated_to;
break;
default:
break;
}
if(host) {
hash2metafield((gpointer)XML_RSC_ATTR_TARGET,
(gpointer)g_hash_table_lookup(action->rsc->meta, XML_RSC_ATTR_TARGET), (gpointer)args_xml);
hash2metafield((gpointer) PCMK__ENV_PHYSICAL_HOST,
(gpointer)host->details->uname,
(gpointer)args_xml);
}
}
} else if (pcmk__str_eq(action->task, CRM_OP_FENCE, pcmk__str_casei) && action->node) {
/* Pass the node's attributes as meta-attributes.
*
* @TODO: Determine whether it is still necessary to do this. It was
* added in 33d99707, probably for the libfence-based implementation in
* c9a90bd, which is no longer used.
*/
g_hash_table_foreach(action->node->details->attrs, hash2metafield, args_xml);
}
sorted_xml(args_xml, action_xml, FALSE);
free_xml(args_xml);
/* List any nodes this action is expected to make down */
if (needs_node_info && (action->node != NULL)) {
add_downed_nodes(action_xml, action, data_set);
}
if (needs_maintenance_info) {
add_maintenance_nodes(action_xml, data_set);
}
crm_log_xml_trace(action_xml, "dumped action");
return action_xml;
}
static bool
should_dump_action(pe_action_t *action)
{
CRM_CHECK(action != NULL, return false);
if (pcmk_is_set(action->flags, pe_action_dumped)) {
crm_trace("Action %s (%d) already dumped", action->uuid, action->id);
return false;
} else if (pcmk_is_set(action->flags, pe_action_pseudo)
&& pcmk__str_eq(action->task, CRM_OP_PROBED, pcmk__str_casei)) {
GListPtr lpc = NULL;
/* This is a horrible but convenient hack
*
* It mimimizes the number of actions with unsatisfied inputs
* (i.e. not included in the graph)
*
* This in turn, means we can be more concise when printing
* aborted/incomplete graphs.
*
* It also makes it obvious which node is preventing
* probe_complete from running (presumably because it is only
* partially up)
*
* For these reasons we tolerate such perversions
*/
for (lpc = action->actions_after; lpc != NULL; lpc = lpc->next) {
pe_action_wrapper_t *wrapper = (pe_action_wrapper_t *) lpc->data;
if (!pcmk_is_set(wrapper->action->flags, pe_action_runnable)) {
/* Only interested in runnable operations */
} else if (!pcmk__str_eq(wrapper->action->task, RSC_START, pcmk__str_casei)) {
/* Only interested in start operations */
} else if (pcmk_is_set(wrapper->action->flags, pe_action_dumped)
|| should_dump_action(wrapper->action)) {
crm_trace("Action %s (%d) should be dumped: "
"dependency of %s (%d)",
action->uuid, action->id,
wrapper->action->uuid, wrapper->action->id);
return true;
}
}
}
if (!pcmk_is_set(action->flags, pe_action_runnable)) {
crm_trace("Ignoring action %s (%d): unrunnable",
action->uuid, action->id);
return false;
} else if (pcmk_is_set(action->flags, pe_action_optional)
&& !pcmk_is_set(action->flags, pe_action_print_always)) {
crm_trace("Ignoring action %s (%d): optional",
action->uuid, action->id);
return false;
// Monitors should be dumped even for unmanaged resources
} else if (action->rsc && !pcmk_is_set(action->rsc->flags, pe_rsc_managed)
&& !pcmk__str_eq(action->task, RSC_STATUS, pcmk__str_casei)) {
const char *interval_ms_s = g_hash_table_lookup(action->meta,
XML_LRM_ATTR_INTERVAL_MS);
// Cancellation of recurring monitors should still be dumped
if (pcmk__str_eq(interval_ms_s, "0", pcmk__str_null_matches)) {
crm_trace("Ignoring action %s (%d): for unmanaged resource (%s)",
action->uuid, action->id, action->rsc->id);
return false;
}
}
if (pcmk_is_set(action->flags, pe_action_pseudo) ||
pcmk__strcase_any_of(action->task, CRM_OP_FENCE, CRM_OP_SHUTDOWN, NULL)) {
/* skip the next checks */
return true;
}
if (action->node == NULL) {
pe_err("Skipping action %s (%d) "
"because it was not allocated to a node (bug?)",
action->uuid, action->id);
log_action(LOG_DEBUG, "Unallocated action", action, false);
return false;
} else if (pcmk_is_set(action->flags, pe_action_dc)) {
crm_trace("Action %s (%d) should be dumped: "
"can run on DC instead of %s",
action->uuid, action->id, action->node->details->uname);
} else if (pe__is_guest_node(action->node)
&& !action->node->details->remote_requires_reset) {
crm_trace("Action %s (%d) should be dumped: "
"assuming will be runnable on guest node %s",
action->uuid, action->id, action->node->details->uname);
} else if (action->node->details->online == false) {
pe_err("Skipping action %s (%d) "
"because it was scheduled for offline node (bug?)",
action->uuid, action->id);
log_action(LOG_DEBUG, "Action for offline node", action, FALSE);
return false;
#if 0
/* but this would also affect resources that can be safely
* migrated before a fencing op
*/
} else if (action->node->details->unclean == false) {
pe_err("Skipping action %s (%d) "
"because it was scheduled for unclean node (bug?)",
action->uuid, action->id);
log_action(LOG_DEBUG, "Action for unclean node", action, false);
return false;
#endif
}
return true;
}
/* lowest to highest */
static gint
sort_action_id(gconstpointer a, gconstpointer b)
{
const pe_action_wrapper_t *action_wrapper2 = (const pe_action_wrapper_t *)a;
const pe_action_wrapper_t *action_wrapper1 = (const pe_action_wrapper_t *)b;
if (a == NULL) {
return 1;
}
if (b == NULL) {
return -1;
}
if (action_wrapper1->action->id > action_wrapper2->action->id) {
return -1;
}
if (action_wrapper1->action->id < action_wrapper2->action->id) {
return 1;
}
return 0;
}
/*!
* \internal
* \brief Check whether an action input should be in the transition graph
*
* \param[in] action Action to check
* \param[in,out] input Action input to check
*
* \return true if input should be in graph, false otherwise
* \note This function may not only check an input, but disable it under certian
* circumstances (load or anti-colocation orderings that are not needed).
*/
static bool
check_dump_input(pe_action_t *action, pe_action_wrapper_t *input)
{
int type = input->type;
if (input->state == pe_link_dumped) {
return true;
}
pe__clear_order_flags(type, pe_order_implies_first_printed
|pe_order_implies_then_printed
|pe_order_optional);
if (input->type == pe_order_none) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"ordering disabled",
action->uuid, action->id,
input->action->uuid, input->action->id);
return false;
} else if (!pcmk_is_set(input->action->flags, pe_action_runnable)
&& (type == pe_order_none)
&& !pcmk__str_eq(input->action->uuid, CRM_OP_PROBED, pcmk__str_casei)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"optional and input unrunnable",
action->uuid, action->id,
input->action->uuid, input->action->id);
return false;
} else if (!pcmk_is_set(input->action->flags, pe_action_runnable)
&& pcmk_is_set(input->type, pe_order_one_or_more)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"one-or-more and input unrunnable",
action->uuid, action->id,
input->action->uuid, input->action->id);
return false;
} else if (pcmk_is_set(action->flags, pe_action_pseudo)
&& pcmk_is_set(input->type, pe_order_stonith_stop)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"stonith stop but action is pseudo",
action->uuid, action->id,
input->action->uuid, input->action->id);
return false;
} else if (pcmk_is_set(input->type, pe_order_implies_first_migratable)
&& !pcmk_is_set(input->action->flags, pe_action_runnable)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"implies input migratable but input unrunnable",
action->uuid, action->id,
input->action->uuid, input->action->id);
return false;
} else if (pcmk_is_set(input->type, pe_order_apply_first_non_migratable)
&& pcmk_is_set(input->action->flags, pe_action_migrate_runnable)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"only if input unmigratable but input unrunnable",
action->uuid, action->id,
input->action->uuid, input->action->id);
return false;
} else if ((input->type == pe_order_optional)
&& pcmk_is_set(input->action->flags, pe_action_migrate_runnable)
&& pcmk__ends_with(input->action->uuid, "_stop_0")) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"optional but stop in migration",
action->uuid, action->id,
input->action->uuid, input->action->id);
return false;
} else if (input->type == pe_order_load) {
pe_node_t *input_node = input->action->node;
// load orderings are relevant only if actions are for same node
if (action->rsc && pcmk__str_eq(action->task, RSC_MIGRATE, pcmk__str_casei)) {
pe_node_t *allocated = action->rsc->allocated_to;
/* For load_stopped -> migrate_to orderings, we care about where it
* has been allocated to, not where it will be executed.
*/
if ((input_node == NULL) || (allocated == NULL)
|| (input_node->details != allocated->details)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"load ordering node mismatch %s vs %s",
action->uuid, action->id,
input->action->uuid, input->action->id,
(allocated? allocated->details->uname : ""),
(input_node? input_node->details->uname : ""));
input->type = pe_order_none;
return false;
}
} else if ((input_node == NULL) || (action->node == NULL)
|| (input_node->details != action->node->details)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"load ordering node mismatch %s vs %s",
action->uuid, action->id,
input->action->uuid, input->action->id,
(action->node? action->node->details->uname : ""),
(input_node? input_node->details->uname : ""));
input->type = pe_order_none;
return false;
} else if (pcmk_is_set(input->action->flags, pe_action_optional)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"load ordering input optional",
action->uuid, action->id,
input->action->uuid, input->action->id);
input->type = pe_order_none;
return false;
}
} else if (input->type == pe_order_anti_colocation) {
if (input->action->node && action->node
&& (input->action->node->details != action->node->details)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"anti-colocation node mismatch %s vs %s",
action->uuid, action->id,
input->action->uuid, input->action->id,
action->node->details->uname,
input->action->node->details->uname);
input->type = pe_order_none;
return false;
} else if (pcmk_is_set(input->action->flags, pe_action_optional)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"anti-colocation input optional",
action->uuid, action->id,
input->action->uuid, input->action->id);
input->type = pe_order_none;
return false;
}
} else if (input->action->rsc
&& input->action->rsc != action->rsc
&& pcmk_is_set(input->action->rsc->flags, pe_rsc_failed)
&& !pcmk_is_set(input->action->rsc->flags, pe_rsc_managed)
&& pcmk__ends_with(input->action->uuid, "_stop_0")
&& action->rsc && pe_rsc_is_clone(action->rsc)) {
crm_warn("Ignoring requirement that %s complete before %s:"
" unmanaged failed resources cannot prevent clone shutdown",
input->action->uuid, action->uuid);
return false;
} else if (pcmk_is_set(input->action->flags, pe_action_optional)
&& !pcmk_any_flags_set(input->action->flags,
pe_action_print_always|pe_action_dumped)
&& !should_dump_action(input->action)) {
crm_trace("Ignoring %s (%d) input %s (%d): "
"input optional",
action->uuid, action->id,
input->action->uuid, input->action->id);
return false;
}
crm_trace("%s (%d) input %s (%d) @ %s should be dumped: %s, %s, %s, 0x%.6x",
action->uuid, action->id,
input->action->uuid, input->action->id,
input->action->node? input->action->node->details->uname : "no node",
pcmk_is_set(input->action->flags, pe_action_pseudo)? "pseudo" : "real",
pcmk_is_set(input->action->flags, pe_action_runnable)? "runnable" : "unrunnable",
pcmk_is_set(input->action->flags, pe_action_optional)? "optional" : "required",
input->type);
return true;
}
static bool
graph_has_loop(pe_action_t *init_action, pe_action_t *action,
pe_action_wrapper_t *input)
{
bool has_loop = false;
if (pcmk_is_set(input->action->flags, pe_action_tracking)) {
crm_trace("Breaking tracking loop: %s@%s -> %s@%s (0x%.6x)",
input->action->uuid,
input->action->node? input->action->node->details->uname : "",
action->uuid,
action->node? action->node->details->uname : "",
input->type);
return false;
}
// Don't need to check inputs that won't be used
if (!check_dump_input(action, input)) {
return false;
}
if (input->action == init_action) {
crm_debug("Input loop found in %s@%s ->...-> %s@%s",
action->uuid,
action->node? action->node->details->uname : "",
init_action->uuid,
init_action->node? init_action->node->details->uname : "");
return true;
}
pe__set_action_flags(input->action, pe_action_tracking);
crm_trace("Checking inputs of action %s@%s input %s@%s (0x%.6x)"
"for graph loop with %s@%s ",
action->uuid,
action->node? action->node->details->uname : "",
input->action->uuid,
input->action->node? input->action->node->details->uname : "",
input->type,
init_action->uuid,
init_action->node? init_action->node->details->uname : "");
// Recursively check input itself for loops
for (GList *iter = input->action->actions_before;
iter != NULL; iter = iter->next) {
if (graph_has_loop(init_action, input->action,
(pe_action_wrapper_t *) iter->data)) {
// Recursive call already logged a debug message
has_loop = true;
goto done;
}
}
done:
pe__clear_action_flags(input->action, pe_action_tracking);
if (!has_loop) {
crm_trace("No input loop found in %s@%s -> %s@%s (0x%.6x)",
input->action->uuid,
input->action->node? input->action->node->details->uname : "",
action->uuid,
action->node? action->node->details->uname : "",
input->type);
}
return has_loop;
}
bool
pcmk__ordering_is_invalid(pe_action_t *action, pe_action_wrapper_t *input)
{
/* Prevent user-defined ordering constraints between resources
* running in a guest node and the resource that defines that node.
*/
if (!pcmk_is_set(input->type, pe_order_preserve)
&& action->rsc && action->rsc->fillers
&& input->action->rsc && input->action->node
&& input->action->node->details->remote_rsc
&& (input->action->node->details->remote_rsc->container == action->rsc)) {
crm_warn("Invalid ordering constraint between %s and %s",
input->action->rsc->id, action->rsc->id);
return true;
}
/* If there's an order like
* "rscB_stop node2"-> "load_stopped_node2" -> "rscA_migrate_to node1"
*
* then rscA is being migrated from node1 to node2, while rscB is being
* migrated from node2 to node1. If there would be a graph loop,
* break the order "load_stopped_node2" -> "rscA_migrate_to node1".
*/
if ((input->type == pe_order_load) && action->rsc
&& pcmk__str_eq(action->task, RSC_MIGRATE, pcmk__str_casei)
&& graph_has_loop(action, action, input)) {
return true;
}
return false;
}
// Remove duplicate inputs (regardless of flags)
static void
deduplicate_inputs(pe_action_t *action)
{
GList *item = NULL;
GList *next = NULL;
pe_action_wrapper_t *last_input = NULL;
action->actions_before = g_list_sort(action->actions_before,
sort_action_id);
for (item = action->actions_before; item != NULL; item = next) {
pe_action_wrapper_t *input = (pe_action_wrapper_t *) item->data;
next = item->next;
if (last_input && (input->action->id == last_input->action->id)) {
crm_trace("Input %s (%d) duplicate skipped for action %s (%d)",
input->action->uuid, input->action->id,
action->uuid, action->id);
/* For the purposes of scheduling, the ordering flags no longer
* matter, but crm_simulate looks at certain ones when creating a
* dot graph. Combining the flags is sufficient for that purpose.
*/
last_input->type |= input->type;
if (input->state == pe_link_dumped) {
last_input->state = pe_link_dumped;
}
free(item->data);
action->actions_before = g_list_delete_link(action->actions_before,
item);
} else {
last_input = input;
input->state = pe_link_not_dumped;
}
}
}
/*!
* \internal
* \brief Add an action to the transition graph XML if appropriate
*
* \param[in] action Action to possibly add
* \param[in] data_set Cluster working set
*
* \note This will de-duplicate the action inputs, meaning that the
* pe_action_wrapper_t:type flags can no longer be relied on to retain
* their original settings. That means this MUST be called after stage7()
* is complete, and nothing after this should rely on those type flags.
* (For example, some code looks for type equal to some flag rather than
* whether the flag is set, and some code looks for particular
* combinations of flags -- such code must be done before stage8().)
*/
void
graph_element_from_action(pe_action_t *action, pe_working_set_t *data_set)
{
GList *lpc = NULL;
int synapse_priority = 0;
xmlNode *syn = NULL;
xmlNode *set = NULL;
xmlNode *in = NULL;
xmlNode *xml_action = NULL;
pe_action_wrapper_t *input = NULL;
/* If we haven't already, de-duplicate inputs -- even if we won't be dumping
* the action, so that crm_simulate dot graphs don't have duplicates.
*/
if (!pcmk_is_set(action->flags, pe_action_dedup)) {
deduplicate_inputs(action);
pe__set_action_flags(action, pe_action_dedup);
}
if (should_dump_action(action) == FALSE) {
return;
}
pe__set_action_flags(action, pe_action_dumped);
syn = create_xml_node(data_set->graph, "synapse");
set = create_xml_node(syn, "action_set");
in = create_xml_node(syn, "inputs");
crm_xml_add_int(syn, XML_ATTR_ID, data_set->num_synapse);
data_set->num_synapse++;
if (action->rsc != NULL) {
synapse_priority = action->rsc->priority;
}
if (action->priority > synapse_priority) {
synapse_priority = action->priority;
}
if (synapse_priority > 0) {
crm_xml_add_int(syn, XML_CIB_ATTR_PRIORITY, synapse_priority);
}
xml_action = action2xml(action, FALSE, data_set);
add_node_nocopy(set, crm_element_name(xml_action), xml_action);
for (lpc = action->actions_before; lpc != NULL; lpc = lpc->next) {
input = (pe_action_wrapper_t *) lpc->data;
if (check_dump_input(action, input)) {
xmlNode *input_xml = create_xml_node(in, "trigger");
input->state = pe_link_dumped;
xml_action = action2xml(input->action, TRUE, data_set);
add_node_nocopy(input_xml, crm_element_name(xml_action), xml_action);
}
}
}