diff --git a/cts/cts-scheduler.in b/cts/cts-scheduler.in index e40c855a9d..e929e1fcbb 100644 --- a/cts/cts-scheduler.in +++ b/cts/cts-scheduler.in @@ -1,1297 +1,1298 @@ #!@BASH_PATH@ # # Copyright 2004-2018 Andrew Beekhof # # This source code is licensed under the GNU General Public License version 2 # or later (GPLv2+) WITHOUT ANY WARRANTY. # USAGE_TEXT="Usage: cts-scheduler [] Options: --help Display this text, then exit -V, --verbose Display any differences from expected output --run TEST Run only single specified test --update Update expected results with actual results -b, --binary PATH Specify path to crm_simulate -i, --io-dir PATH Specify path to regression test data directory -v, --valgrind Run all commands under valgrind --valgrind-dhat Run all commands under valgrind with heap analyzer --valgrind-skip-output If running under valgrind, don't display output --testcmd-options Additional options for command under test" SBINDIR="@sbindir@" BUILDDIR="@abs_top_builddir@" CRM_SCHEMA_DIRECTORY="@CRM_SCHEMA_DIRECTORY@" # If readlink supports -e (i.e. GNU), use it readlink -e / >/dev/null 2>/dev/null if [ $? -eq 0 ]; then test_home="$(dirname "$(readlink -e "$0")")" else test_home="$(dirname "$0")" fi io_dir="$test_home/scheduler" failed="$test_home/.regression.failed.diff" test_binary= testcmd_options= single_test= verbose=0 num_failed=0 num_tests=0 VALGRIND_CMD="" VALGRIND_OPTS="-q --gen-suppressions=all --log-file=%q{valgrind_output} --time-stamp=yes --trace-children=no --show-reachable=no --leak-check=full --num-callers=20 --suppressions=$test_home/valgrind-pcmk.suppressions" VALGRIND_DHAT_OPTS="--tool=exp-dhat --log-file=%q{valgrind_output} --time-stamp=yes --trace-children=no --show-top-n=100 --num-callers=4" diff_opts="--ignore-all-space --ignore-blank-lines -u -N" # These constants must track crm_exit_t values CRM_EX_OK=0 CRM_EX_ERROR=1 CRM_EX_NOT_INSTALLED=5 CRM_EX_USAGE=64 CRM_EX_NOINPUT=66 EXITCODE=$CRM_EX_OK function info() { printf "$*\n" } function error() { printf " * ERROR: $*\n" } function failed() { printf " * FAILED: $*\n" } function show_test() { name=$1; shift printf " Test %-25s $*\n" "$name:" } # Normalize scheduler output for comparison normalize() { for NORMALIZE_FILE in "$@"; do # sed -i is not portable :-( sed -e 's/crm_feature_set="[^"]*"//' \ -e 's/batch-limit="[0-9]*"//' \ "$NORMALIZE_FILE" > "${NORMALIZE_FILE}.$$" mv -- "${NORMALIZE_FILE}.$$" "$NORMALIZE_FILE" done } info "Test home is:\t$test_home" create_mode="false" while [ $# -gt 0 ] ; do case "$1" in -V|--verbose) verbose=1 shift ;; -v|--valgrind) export G_SLICE=always-malloc VALGRIND_CMD="valgrind $VALGRIND_OPTS" shift ;; --valgrind-dhat) VALGRIND_CMD="valgrind $VALGRIND_DHAT_OPTS" shift ;; --valgrind-skip-output) VALGRIND_SKIP_OUTPUT=1 shift ;; --update) create_mode="true" shift ;; --run) single_test=$(basename "$2" ".xml") shift 2 break # any remaining arguments will be passed to test command ;; -b|--binary) test_binary="$2" shift 2 ;; -i|--io-dir) io_dir="$2" shift 2 ;; --help) echo "$USAGE_TEXT" exit $CRM_EX_OK ;; --testcmd-options) testcmd_options=$2 shift 2 ;; *) error "unknown option: $1" exit $CRM_EX_USAGE ;; esac done if [ -z "$PCMK_schema_directory" ]; then if [ -d "$BUILDDIR/xml" ]; then export PCMK_schema_directory="$BUILDDIR/xml" elif [ -d "$CRM_SCHEMA_DIRECTORY" ]; then export PCMK_schema_directory="$CRM_SCHEMA_DIRECTORY" fi fi if [ -z "$test_binary" ]; then if [ -x "$BUILDDIR/tools/crm_simulate" ]; then test_binary="$BUILDDIR/tools/crm_simulate" elif [ -x "$SBINDIR/crm_simulate" ]; then test_binary="$SBINDIR/crm_simulate" fi fi if [ ! -x "$test_binary" ]; then error "Test binary $test_binary not found" exit $CRM_EX_NOT_INSTALLED fi info "Test binary is:\t$test_binary" if [ -n "$PCMK_schema_directory" ]; then info "Schema home is:\t$PCMK_schema_directory" fi if [ "x$VALGRIND_CMD" != "x" ]; then info "Activating memory testing with valgrind"; fi info " " test_cmd="$VALGRIND_CMD $test_binary $testcmd_options" #echo $test_cmd if [ "$(whoami)" != "root" ]; then declare -x CIB_shadow_dir=/tmp fi do_test() { did_fail=0 expected_rc=0 num_tests=$(( $num_tests + 1 )) base=$1; shift name=$1; shift input=$io_dir/${base}.xml output=$io_dir/${base}.out expected=$io_dir/${base}.exp dot_expected=$io_dir/${base}.dot dot_output=$io_dir/${base}.pe.dot scores=$io_dir/${base}.scores score_output=$io_dir/${base}.scores.pe stderr_expected=$io_dir/${base}.stderr stderr_output=$io_dir/${base}.stderr.pe summary=$io_dir/${base}.summary summary_output=$io_dir/${base}.summary.pe valgrind_output=$io_dir/${base}.valgrind export valgrind_output if [ "x$1" = "x--rc" ]; then expected_rc=$2 shift; shift; fi show_test "$base" "$name" if [ ! -f $input ]; then error "No input"; did_fail=1 num_failed=$(( $num_failed + 1 )) return $CRM_EX_NOINPUT; fi if [ "$create_mode" != "true" ] && [ ! -f "$expected" ]; then error "no stored output"; return $CRM_EX_NOINPUT; fi # ../admin/crm_verify -X $input if [ ! -z "$single_test" ]; then echo "CIB_shadow_dir=\"$io_dir\" $test_cmd -x \"$input\" -D \"$dot_output\" -G \"$output\" -S" "$@" CIB_shadow_dir="$io_dir" $test_cmd -x "$input" -D "$dot_output" \ -G "$output" -S "$@" 2>&1 | tee "$summary_output" else CIB_shadow_dir="$io_dir" $test_cmd -x "$input" -S &> "$summary_output" fi CIB_shadow_dir="$io_dir" $test_cmd -x "$input" -D "$dot_output" \ -G "$output" -SQ -s "$@" 2> "$stderr_output" > "$score_output" rc=$? if [ $rc -ne $expected_rc ]; then failed "Test returned: $rc"; did_fail=1 echo "CIB_shadow_dir=\"$io_dir\" $test_cmd -x \"$input\" -D \"$dot_output\" -G \"$output\" -SQ -s" "$@" fi if [ -z "$VALGRIND_SKIP_OUTPUT" ]; then if [ -s "${valgrind_output}" ]; then error "Valgrind reported errors"; did_fail=1 cat ${valgrind_output} fi rm -f ${valgrind_output} fi if [ -s core ]; then error "Core-file detected: core.${base}"; did_fail=1 rm -f $test_home/core.$base mv core $test_home/core.$base fi if [ -e "$stderr_expected" ]; then diff $diff_opts $stderr_expected $stderr_output >/dev/null rc2=$? if [ $rc2 -ne 0 ]; then failed "stderr changed"; diff $diff_opts $stderr_expected $stderr_output 2>/dev/null >> $failed echo "" >> $failed did_fail=1 fi elif [ -s "$stderr_output" ]; then error "Output was written to stderr" did_fail=1 cat $stderr_output fi rm -f $stderr_output if [ ! -s $output ]; then error "No graph produced"; did_fail=1 num_failed=$(( $num_failed + 1 )) rm -f $output return $CRM_EX_ERROR; fi if [ ! -s $dot_output ]; then error "No dot-file summary produced"; did_fail=1 num_failed=$(( $num_failed + 1 )) rm -f $output return $CRM_EX_ERROR; else echo "digraph \"g\" {" > $dot_output.sort LC_ALL=POSIX sort -u $dot_output | grep -v -e '^}$' -e digraph >> $dot_output.sort echo "}" >> $dot_output.sort mv -f $dot_output.sort $dot_output fi if [ ! -s $score_output ]; then error "No allocation scores produced"; did_fail=1 num_failed=$(( $num_failed + 1 )) rm $output return $CRM_EX_ERROR; else LC_ALL=POSIX sort $score_output > $score_output.sorted mv -f $score_output.sorted $score_output fi if [ "$create_mode" = "true" ]; then cp "$output" "$expected" cp "$dot_output" "$dot_expected" cp "$score_output" "$scores" cp "$summary_output" "$summary" info " Updated expected outputs" fi diff $diff_opts $summary $summary_output >/dev/null rc2=$? if [ $rc2 -ne 0 ]; then failed "summary changed"; diff $diff_opts $summary $summary_output 2>/dev/null >> $failed echo "" >> $failed did_fail=1 fi diff $diff_opts $dot_expected $dot_output >/dev/null rc=$? if [ $rc -ne 0 ]; then failed "dot-file summary changed"; diff $diff_opts $dot_expected $dot_output 2>/dev/null >> $failed echo "" >> $failed did_fail=1 else rm -f $dot_output fi normalize "$expected" "$output" diff $diff_opts $expected $output >/dev/null rc2=$? if [ $rc2 -ne 0 ]; then failed "xml-file changed"; diff $diff_opts $expected $output 2>/dev/null >> $failed echo "" >> $failed did_fail=1 fi diff $diff_opts $scores $score_output >/dev/null rc=$? if [ $rc -ne 0 ]; then failed "scores-file changed"; diff $diff_opts $scores $score_output 2>/dev/null >> $failed echo "" >> $failed did_fail=1 fi rm -f $output $score_output $summary_output if [ $did_fail -eq 1 ]; then num_failed=$(( $num_failed + 1 )) return $CRM_EX_ERROR fi return $CRM_EX_OK } function test_results { if [ $num_failed -ne 0 ]; then if [ -s "$failed" ]; then if [ $verbose -eq 1 ]; then error "Results of $num_failed failed tests (out of $num_tests):" cat $failed else error "Results of $num_failed failed tests (out of $num_tests) are in $failed" error "Use -V to display them after running the tests" fi else error "$num_failed (of $num_tests) tests failed (no diff results)" rm $failed fi EXITCODE=$CRM_EX_ERROR fi } # zero out the error log true > $failed if [ -n "$single_test" ]; then do_test "$single_test" "Single shot" "$@" TEST_RC=$? cat "$failed" exit $TEST_RC fi DO_VERSIONED_TESTS=0 info Performing the following tests from $io_dir echo "" do_test simple1 "Offline " do_test simple2 "Start " do_test simple3 "Start 2 " do_test simple4 "Start Failed" do_test simple6 "Stop Start " do_test simple7 "Shutdown " #do_test simple8 "Stonith " #do_test simple9 "Lower version" #do_test simple10 "Higher version" do_test simple11 "Priority (ne)" do_test simple12 "Priority (eq)" do_test simple8 "Stickiness" echo "" do_test group1 "Group " do_test group2 "Group + Native " do_test group3 "Group + Group " do_test group4 "Group + Native (nothing)" do_test group5 "Group + Native (move) " do_test group6 "Group + Group (move) " do_test group7 "Group colocation" do_test group13 "Group colocation (cant run)" do_test group8 "Group anti-colocation" do_test group9 "Group recovery" do_test group10 "Group partial recovery" do_test group11 "Group target_role" do_test group14 "Group stop (graph terminated)" do_test group15 "Negative group colocation" do_test bug-1573 "Partial stop of a group with two children" do_test bug-1718 "Mandatory group ordering - Stop group_FUN" @HASH_AFFECTED@do_test bug-lf-2613 "Move group on failure" @HASH_AFFECTED@do_test bug-lf-2619 "Move group on clone failure" do_test group-fail "Ensure stop order is preserved for partially active groups" do_test group-unmanaged "No need to restart r115 because r114 is unmanaged" do_test group-unmanaged-stopped "Make sure r115 is stopped when r114 fails" do_test group-dependents "Account for the location preferences of things colocated with a group" echo "" do_test rsc_dep1 "Must not " do_test rsc_dep3 "Must " do_test rsc_dep5 "Must not 3 " do_test rsc_dep7 "Must 3 " do_test rsc_dep10 "Must (but cant)" do_test rsc_dep2 "Must (running) " do_test rsc_dep8 "Must (running : alt) " do_test rsc_dep4 "Must (running + move)" do_test asymmetric "Asymmetric - require explicit location constraints" echo "" do_test orphan-0 "Orphan ignore" do_test orphan-1 "Orphan stop" do_test orphan-2 "Orphan stop, remove failcount" echo "" do_test params-0 "Params: No change" do_test params-1 "Params: Changed" do_test params-2 "Params: Resource definition" do_test params-4 "Params: Reload" do_test params-5 "Params: Restart based on probe digest" do_test novell-251689 "Resource definition change + target_role=stopped" do_test bug-lf-2106 "Restart all anonymous clone instances after config change" do_test params-6 "Params: Detect reload in previously migrated resource" do_test nvpair-id-ref "Support id-ref in nvpair with optional name" do_test not-reschedule-unneeded-monitor "Do not reschedule unneeded monitors while resource definitions have changed" do_test reload-becomes-restart "Cancel reload if restart becomes required" echo "" do_test target-0 "Target Role : baseline" do_test target-1 "Target Role : master" do_test target-2 "Target Role : invalid" echo "" do_test base-score "Set a node's default score for all nodes" echo "" do_test date-1 "Dates" -t "2005-020" do_test date-2 "Date Spec - Pass" -t "2005-020T12:30" do_test date-3 "Date Spec - Fail" -t "2005-020T11:30" do_test origin "Timing of recurring operations" -t "2014-05-07 00:28:00" do_test probe-0 "Probe (anon clone)" do_test probe-1 "Pending Probe" @HASH_AFFECTED@do_test probe-2 "Correctly re-probe cloned groups" do_test probe-3 "Probe (pending node)" do_test probe-4 "Probe (pending node + stopped resource)" do_test standby "Standby" do_test comments "Comments" echo "" do_test one-or-more-0 "Everything starts" do_test one-or-more-1 "Nothing starts because of A" do_test one-or-more-2 "D can start because of C" do_test one-or-more-3 "D cannot start because of B and C" do_test one-or-more-4 "D cannot start because of target-role" do_test one-or-more-5 "Start A and F even though C and D are stopped" do_test one-or-more-6 "Leave A running even though B is stopped" do_test one-or-more-7 "Leave A running even though C is stopped" do_test bug-5140-require-all-false "Allow basegrp:0 to stop" do_test clone-require-all-1 "clone B starts node 3 and 4" do_test clone-require-all-2 "clone B remains stopped everywhere" do_test clone-require-all-3 "clone B stops everywhere because A stops everywhere" do_test clone-require-all-4 "clone B remains on node 3 and 4 with only one instance of A remaining." do_test clone-require-all-5 "clone B starts on node 1 3 and 4" do_test clone-require-all-6 "clone B remains active after shutting down instances of A" do_test clone-require-all-7 "clone A and B both start at the same time. all instances of A start before B." do_test clone-require-all-no-interleave-1 "C starts everywhere after A and B" do_test clone-require-all-no-interleave-2 "C starts on nodes 1, 2, and 4 with only one active instance of B" do_test clone-require-all-no-interleave-3 "C remains active when instance of B is stopped on one node and started on another." @HASH_AFFECTED@do_test one-or-more-unrunnable-instances "Avoid dependencies on instances that won't ever be started" echo "" do_test order1 "Order start 1 " do_test order2 "Order start 2 " do_test order3 "Order stop " do_test order4 "Order (multiple) " do_test order5 "Order (move) " do_test order6 "Order (move w/ restart) " do_test order7 "Order (mandatory) " do_test order-optional "Order (score=0) " do_test order-required "Order (score=INFINITY) " do_test bug-lf-2171 "Prevent group start when clone is stopped" do_test order-clone "Clone ordering should be able to prevent startup of dependent clones" do_test order-sets "Ordering for resource sets" do_test order-serialize "Serialize resources without inhibiting migration" do_test order-serialize-set "Serialize a set of resources without inhibiting migration" do_test clone-order-primitive "Order clone start after a primitive" do_test clone-order-16instances "Verify ordering of 16 cloned resources" do_test order-optional-keyword "Order (optional keyword)" do_test order-mandatory "Order (mandatory keyword)" do_test bug-lf-2493 "Don't imply colocation requirements when applying ordering constraints with clones" do_test ordered-set-basic-startup "Constraint set with default order settings." do_test ordered-set-natural "Allow natural set ordering" do_test order-wrong-kind "Order (error)" echo "" do_test coloc-loop "Colocation - loop" do_test coloc-many-one "Colocation - many-to-one" do_test coloc-list "Colocation - many-to-one with list" do_test coloc-group "Colocation - groups" do_test coloc-slave-anti "Anti-colocation with slave shouldn't prevent master colocation" do_test coloc-attr "Colocation based on node attributes" do_test coloc-negative-group "Negative colocation with a group" do_test coloc-intra-set "Intra-set colocation" do_test bug-lf-2435 "Colocation sets with a negative score" do_test coloc-clone-stays-active "Ensure clones don't get stopped/demoted because a dependent must stop" do_test coloc_fp_logic "Verify floating point calculations in colocation are working" do_test colo_master_w_native "cl#5070 - Verify promotion order is affected when colocating master to native rsc." do_test colo_slave_w_native "cl#5070 - Verify promotion order is affected when colocating slave to native rsc." do_test anti-colocation-order "cl#5187 - Prevent resources in an anti-colocation from even temporarily running on a same node" do_test anti-colocation-master "Organize order of actions for master resources in anti-colocations" do_test anti-colocation-slave "Organize order of actions for slave resources in anti-colocations" do_test enforce-colo1 "Always enforce B with A INFINITY." do_test complex_enforce_colo "Always enforce B with A INFINITY. (make sure heat-engine stops)" echo "" do_test rsc-sets-seq-true "Resource Sets - sequential=false" do_test rsc-sets-seq-false "Resource Sets - sequential=true" do_test rsc-sets-clone "Resource Sets - Clone" do_test rsc-sets-master "Resource Sets - Master" do_test rsc-sets-clone-1 "Resource Sets - Clone (lf#2404)" #echo "" #do_test agent1 "version: lt (empty)" #do_test agent2 "version: eq " #do_test agent3 "version: gt " echo "" do_test attrs1 "string: eq (and) " do_test attrs2 "string: lt / gt (and)" do_test attrs3 "string: ne (or) " do_test attrs4 "string: exists " do_test attrs5 "string: not_exists " do_test attrs6 "is_dc: true " do_test attrs7 "is_dc: false " do_test attrs8 "score_attribute " do_test per-node-attrs "Per node resource parameters" echo "" do_test mon-rsc-1 "Schedule Monitor - start" do_test mon-rsc-2 "Schedule Monitor - move " do_test mon-rsc-3 "Schedule Monitor - pending start " do_test mon-rsc-4 "Schedule Monitor - move/pending start" echo "" do_test rec-rsc-0 "Resource Recover - no start " do_test rec-rsc-1 "Resource Recover - start " do_test rec-rsc-2 "Resource Recover - monitor " do_test rec-rsc-3 "Resource Recover - stop - ignore" do_test rec-rsc-4 "Resource Recover - stop - block " do_test rec-rsc-5 "Resource Recover - stop - fence " do_test rec-rsc-6 "Resource Recover - multiple - restart" do_test rec-rsc-7 "Resource Recover - multiple - stop " do_test rec-rsc-8 "Resource Recover - multiple - block " do_test rec-rsc-9 "Resource Recover - group/group" do_test monitor-recovery "on-fail=block + resource recovery detected by recurring monitor" do_test stop-failure-no-quorum "Stop failure without quorum" do_test stop-failure-no-fencing "Stop failure without fencing available" do_test stop-failure-with-fencing "Stop failure with fencing available" do_test multiple-active-block-group "Support of multiple-active=block for resource groups" do_test multiple-monitor-one-failed "Consider resource failed if any of the configured monitor operations failed" echo "" do_test quorum-1 "No quorum - ignore" do_test quorum-2 "No quorum - freeze" do_test quorum-3 "No quorum - stop " do_test quorum-4 "No quorum - start anyway" do_test quorum-5 "No quorum - start anyway (group)" do_test quorum-6 "No quorum - start anyway (clone)" @HASH_AFFECTED@do_test bug-cl-5212 "No promotion with no-quorum-policy=freeze" do_test suicide-needed-inquorate "no-quorum-policy=suicide: suicide necessary" do_test suicide-not-needed-initial-quorum "no-quorum-policy=suicide: suicide not necessary at initial quorum" do_test suicide-not-needed-never-quorate "no-quorum-policy=suicide: suicide not necessary if never quorate" do_test suicide-not-needed-quorate "no-quorum-policy=suicide: suicide necessary if quorate" echo "" do_test rec-node-1 "Node Recover - Startup - no fence" do_test rec-node-2 "Node Recover - Startup - fence " do_test rec-node-3 "Node Recover - HA down - no fence" do_test rec-node-4 "Node Recover - HA down - fence " do_test rec-node-5 "Node Recover - CRM down - no fence" do_test rec-node-6 "Node Recover - CRM down - fence " do_test rec-node-7 "Node Recover - no quorum - ignore " do_test rec-node-8 "Node Recover - no quorum - freeze " do_test rec-node-9 "Node Recover - no quorum - stop " do_test rec-node-10 "Node Recover - no quorum - stop w/fence" do_test rec-node-11 "Node Recover - CRM down w/ group - fence " do_test rec-node-12 "Node Recover - nothing active - fence " do_test rec-node-13 "Node Recover - failed resource + shutdown - fence " do_test rec-node-15 "Node Recover - unknown lrm section" do_test rec-node-14 "Serialize all stonith's" echo "" do_test multi1 "Multiple Active (stop/start)" echo "" do_test migrate-begin "Normal migration" do_test migrate-success "Completed migration" do_test migrate-partial-1 "Completed migration, missing stop on source" do_test migrate-partial-2 "Successful migrate_to only" do_test migrate-partial-3 "Successful migrate_to only, target down" @HASH_AFFECTED@do_test migrate-partial-4 "Migrate from the correct host after migrate_to+migrate_from" do_test bug-5186-partial-migrate "Handle partial migration when src node loses membership" do_test migrate-fail-2 "Failed migrate_from" do_test migrate-fail-3 "Failed migrate_from + stop on source" do_test migrate-fail-4 "Failed migrate_from + stop on target - ideally we wouldn't need to re-stop on target" do_test migrate-fail-5 "Failed migrate_from + stop on source and target" do_test migrate-fail-6 "Failed migrate_to" do_test migrate-fail-7 "Failed migrate_to + stop on source" do_test migrate-fail-8 "Failed migrate_to + stop on target - ideally we wouldn't need to re-stop on target" do_test migrate-fail-9 "Failed migrate_to + stop on source and target" do_test migrate-stop "Migration in a stopping stack" do_test migrate-start "Migration in a starting stack" do_test migrate-stop_start "Migration in a restarting stack" do_test migrate-stop-complex "Migration in a complex stopping stack" do_test migrate-start-complex "Migration in a complex starting stack" do_test migrate-stop-start-complex "Migration in a complex moving stack" do_test migrate-shutdown "Order the post-migration 'stop' before node shutdown" do_test migrate-1 "Migrate (migrate)" do_test migrate-2 "Migrate (stable)" do_test migrate-3 "Migrate (failed migrate_to)" do_test migrate-4 "Migrate (failed migrate_from)" do_test novell-252693 "Migration in a stopping stack" @HASH_AFFECTED@do_test novell-252693-2 "Migration in a starting stack" @HASH_AFFECTED@do_test novell-252693-3 "Non-Migration in a starting and stopping stack" do_test bug-1820 "Migration in a group" do_test bug-1820-1 "Non-migration in a group" do_test migrate-5 "Primitive migration with a clone" do_test migrate-fencing "Migration after Fencing" do_test migrate-both-vms "Migrate two VMs that have no colocation" do_test migration-behind-migrating-remote "Migrate resource behind migrating remote connection" do_test 1-a-then-bm-move-b "Advanced migrate logic. A then B. migrate B." do_test 2-am-then-b-move-a "Advanced migrate logic, A then B, migrate A without stopping B" do_test 3-am-then-bm-both-migrate "Advanced migrate logic. A then B. migrate both" do_test 4-am-then-bm-b-not-migratable "Advanced migrate logic, A then B, B not migratable" do_test 5-am-then-bm-a-not-migratable "Advanced migrate logic. A then B. move both, a not migratable" do_test 6-migrate-group "Advanced migrate logic, migrate a group" do_test 7-migrate-group-one-unmigratable "Advanced migrate logic, migrate group mixed with allow-migrate true/false" do_test 8-am-then-bm-a-migrating-b-stopping "Advanced migrate logic, A then B, A migrating, B stopping" do_test 9-am-then-bm-b-migrating-a-stopping "Advanced migrate logic, A then B, B migrate, A stopping" do_test 10-a-then-bm-b-move-a-clone "Advanced migrate logic, A clone then B, migrate B while stopping A" do_test 11-a-then-bm-b-move-a-clone-starting "Advanced migrate logic, A clone then B, B moving while A is start/stopping" do_test a-promote-then-b-migrate "A promote then B start. migrate B" do_test a-demote-then-b-migrate "A demote then B stop. migrate B" if [ $DO_VERSIONED_TESTS -eq 1 ]; then do_test migrate-versioned "Disable migration for versioned resources" fi #echo "" #do_test complex1 "Complex " do_test bug-lf-2422 "Dependency on partially active group - stop ocfs:*" echo "" do_test clone-anon-probe-1 "Probe the correct (anonymous) clone instance for each node" do_test clone-anon-probe-2 "Avoid needless re-probing of anonymous clones" do_test clone-anon-failcount "Merge failcounts for anonymous clones" do_test force-anon-clone-max "Update clone-max properly when forcing a clone to be anonymous" do_test anon-instance-pending "Assign anonymous clone instance numbers properly when action pending" do_test inc0 "Incarnation start" do_test inc1 "Incarnation start order" do_test inc2 "Incarnation silent restart, stop, move" do_test inc3 "Inter-incarnation ordering, silent restart, stop, move" do_test inc4 "Inter-incarnation ordering, silent restart, stop, move (ordered)" do_test inc5 "Inter-incarnation ordering, silent restart, stop, move (restart 1)" do_test inc6 "Inter-incarnation ordering, silent restart, stop, move (restart 2)" do_test inc7 "Clone colocation" do_test inc8 "Clone anti-colocation" do_test inc9 "Non-unique clone" @HASH_AFFECTED@do_test inc10 "Non-unique clone (stop)" do_test inc11 "Primitive colocation with clones" do_test inc12 "Clone shutdown" do_test cloned-group "Make sure only the correct number of cloned groups are started" do_test cloned-group-stop "Ensure stopping qpidd also stops glance and cinder" do_test clone-no-shuffle "Don't prioritize allocation of instances that must be moved" do_test clone-max-zero "Orphan processing with clone-max=0" do_test clone-anon-dup "Bug LF#2087 - Correctly parse the state of anonymous clones that are active more than once per node" do_test bug-lf-2160 "Don't shuffle clones due to colocation" do_test bug-lf-2213 "clone-node-max enforcement for cloned groups" @HASH_AFFECTED@do_test bug-lf-2153 "Clone ordering constraints" @HASH_AFFECTED@do_test bug-lf-2361 "Ensure clones observe mandatory ordering constraints if the LHS is unrunnable" @HASH_AFFECTED@do_test bug-lf-2317 "Avoid needless restart of primitive depending on a clone" do_test clone-colocate-instance-1 "Colocation with a specific clone instance (negative example)" do_test clone-colocate-instance-2 "Colocation with a specific clone instance" do_test clone-order-instance "Ordering with specific clone instances" do_test bug-lf-2453 "Enforce mandatory clone ordering without colocation" do_test bug-lf-2508 "Correctly reconstruct the status of anonymous cloned groups" do_test bug-lf-2544 "Balanced clone placement" do_test bug-lf-2445 "Redistribute clones with node-max > 1 and stickiness = 0" do_test bug-lf-2574 "Avoid clone shuffle" do_test bug-lf-2581 "Avoid group restart due to unrelated clone (re)start" @HASH_AFFECTED@do_test bug-cl-5168 "Don't shuffle clones" do_test bug-cl-5170 "Prevent clone from starting with on-fail=block" do_test clone-fail-block-colocation "Move colocated group when failed clone has on-fail=block" do_test clone-interleave-1 "Clone-3 cannot start on pcmk-1 due to interleaved ordering (no colocation)" do_test clone-interleave-2 "Clone-3 must stop on pcmk-1 due to interleaved ordering (no colocation)" do_test clone-interleave-3 "Clone-3 must be recovered on pcmk-1 due to interleaved ordering (no colocation)" do_test rebalance-unique-clones "Rebalance unique clone instances with no stickiness" do_test clone-requires-quorum-recovery "Clone with requires=quorum on failed node needing recovery" do_test clone-requires-quorum "Clone with requires=quorum with presumed-inactive instance on failed node" echo "" do_test cloned_start_one "order first clone then clone... first clone_min=2" do_test cloned_start_two "order first clone then clone... first clone_min=2" do_test cloned_stop_one "order first clone then clone... first clone_min=2" do_test cloned_stop_two "order first clone then clone... first clone_min=2" do_test clone_min_interleave_start_one "order first clone then clone... first clone_min=2 and then has interleave=true" do_test clone_min_interleave_start_two "order first clone then clone... first clone_min=2 and then has interleave=true" do_test clone_min_interleave_stop_one "order first clone then clone... first clone_min=2 and then has interleave=true" do_test clone_min_interleave_stop_two "order first clone then clone... first clone_min=2 and then has interleave=true" do_test clone_min_start_one "order first clone then primitive... first clone_min=2" do_test clone_min_start_two "order first clone then primitive... first clone_min=2" do_test clone_min_stop_all "order first clone then primitive... first clone_min=2" do_test clone_min_stop_one "order first clone then primitive... first clone_min=2" do_test clone_min_stop_two "order first clone then primitive... first clone_min=2" echo "" @HASH_AFFECTED@do_test unfence-startup "Clean unfencing" @HASH_AFFECTED@do_test unfence-definition "Unfencing when the agent changes" @HASH_AFFECTED@do_test unfence-parameters "Unfencing when the agent parameters changes" do_test unfence-device "Unfencing when a cluster has only fence devices" echo "" do_test master-0 "Stopped -> Slave" do_test master-1 "Stopped -> Promote" do_test master-2 "Stopped -> Promote : notify" do_test master-3 "Stopped -> Promote : master location" do_test master-4 "Started -> Promote : master location" do_test master-5 "Promoted -> Promoted" do_test master-6 "Promoted -> Promoted (2)" do_test master-7 "Promoted -> Fenced" do_test master-8 "Promoted -> Fenced -> Moved" do_test master-9 "Stopped + Promotable + No quorum" do_test master-10 "Stopped -> Promotable : notify with monitor" do_test master-11 "Stopped -> Promote : colocation" @HASH_AFFECTED@do_test novell-239082 "Demote/Promote ordering" do_test novell-239087 "Stable master placement" do_test master-12 "Promotion based solely on rsc_location constraints" do_test master-13 "Include preferences of colocated resources when placing master" @HASH_AFFECTED@do_test master-demote "Ordering when actions depends on demoting a slave resource" @HASH_AFFECTED@do_test master-ordering "Prevent resources from starting that need a master" do_test bug-1765 "Master-Master Colocation (dont stop the slaves)" do_test master-group "Promotion of cloned groups" @HASH_AFFECTED@do_test bug-lf-1852 "Don't shuffle master/slave instances unnecessarily" do_test master-failed-demote "Don't retry failed demote actions" do_test master-failed-demote-2 "Don't retry failed demote actions (notify=false)" do_test master-depend "Ensure resources that depend on the master don't get allocated until the master does" do_test master-reattach "Re-attach to a running master" do_test master-allow-start "Don't include master score if it would prevent allocation" do_test master-colocation "Allow master instances placemaker to be influenced by colocation constraints" do_test master-pseudo "Make sure promote/demote pseudo actions are created correctly" do_test master-role "Prevent target-role from promoting more than master-max instances" @HASH_AFFECTED@do_test bug-lf-2358 "Master-Master anti-colocation" do_test master-promotion-constraint "Mandatory master colocation constraints" do_test unmanaged-master "Ensure role is preserved for unmanaged resources" do_test master-unmanaged-monitor "Start the correct monitor operation for unmanaged masters" do_test master-demote-2 "Demote does not clear past failure" @HASH_AFFECTED@do_test master-move "Move master based on failure of colocated group" do_test master-probed-score "Observe the promotion score of probed resources" @HASH_AFFECTED@do_test colocation_constraint_stops_master "cl#5054 - Ensure master is demoted when stopped by colocation constraint" @HASH_AFFECTED@do_test colocation_constraint_stops_slave "cl#5054 - Ensure slave is not demoted when stopped by colocation constraint" @HASH_AFFECTED@do_test order_constraint_stops_master "cl#5054 - Ensure master is demoted when stopped by order constraint" @HASH_AFFECTED@do_test order_constraint_stops_slave "cl#5054 - Ensure slave is not demoted when stopped by order constraint" do_test master_monitor_restart "cl#5072 - Ensure master monitor operation will start after promotion." do_test bug-rh-880249 "Handle replacement of an m/s resource with a primitive" @HASH_AFFECTED@do_test bug-5143-ms-shuffle "Prevent master shuffling due to promotion score" do_test master-demote-block "Block promotion if demote fails with on-fail=block" @HASH_AFFECTED@do_test master-dependent-ban "Don't stop instances from being active because a dependent is banned from that host" do_test master-stop "Stop instances due to location constraint with role=Started" do_test master-partially-demoted-group "Allow partially demoted group to finish demoting" do_test bug-cl-5213 "Ensure role colocation with -INFINITY is enforced" do_test bug-cl-5219 "Allow unrelated resources with a common colocation target to remain promoted" do_test master-asymmetrical-order "Fix the behaviors of multi-state resources with asymmetrical ordering" @HASH_AFFECTED@do_test master-notify "Master promotion with notifies" do_test master-score-startup "Use permanent master scores without LRM history" do_test failed-demote-recovery "Recover resource in slave role after demote fails" do_test failed-demote-recovery-master "Recover resource in master role after demote fails" echo "" do_test history-1 "Correctly parse stateful-1 resource state" echo "" do_test managed-0 "Managed (reference)" do_test managed-1 "Not managed - down " do_test managed-2 "Not managed - up " do_test bug-5028 "Shutdown should block if anything depends on an unmanaged resource" do_test bug-5028-detach "Ensure detach still works" do_test bug-5028-bottom "Ensure shutdown still blocks if the blocked resource is at the bottom of the stack" do_test unmanaged-stop-1 "cl#5155 - Block the stop of resources if any depending resource is unmanaged " do_test unmanaged-stop-2 "cl#5155 - Block the stop of resources if the first resource in a mandatory stop order is unmanaged " do_test unmanaged-stop-3 "cl#5155 - Block the stop of resources if any depending resource in a group is unmanaged " do_test unmanaged-stop-4 "cl#5155 - Block the stop of resources if any depending resource in the middle of a group is unmanaged " do_test unmanaged-block-restart "Block restart of resources if any dependent resource in a group is unmanaged" echo "" do_test interleave-0 "Interleave (reference)" do_test interleave-1 "coloc - not interleaved" do_test interleave-2 "coloc - interleaved " do_test interleave-3 "coloc - interleaved (2)" do_test interleave-pseudo-stop "Interleaved clone during stonith" do_test interleave-stop "Interleaved clone during stop" do_test interleave-restart "Interleaved clone during dependency restart" echo "" do_test notify-0 "Notify reference" do_test notify-1 "Notify simple" do_test notify-2 "Notify simple, confirm" do_test notify-3 "Notify move, confirm" @HASH_AFFECTED@do_test novell-239079 "Notification priority" #do_test notify-2 "Notify - 764" do_test notifs-for-unrunnable "Don't schedule notifications for an unrunnable action" @HASH_AFFECTED@do_test route-remote-notify "Route remote notify actions through correct cluster node" @HASH_AFFECTED@do_test notify-behind-stopping-remote "Don't schedule notifications behind stopped remote" echo "" do_test 594 "OSDL #594 - Unrunnable actions scheduled in transition" do_test 662 "OSDL #662 - Two resources start on one node when incarnation_node_max = 1" do_test 696 "OSDL #696 - CRM starts stonith RA without monitor" do_test 726 "OSDL #726 - Attempting to schedule rsc_posic041_monitor_5000 _after_ a stop" do_test 735 "OSDL #735 - Correctly detect that rsc_hadev1 is stopped on hadev3" do_test 764 "OSDL #764 - Missing monitor op for DoFencing:child_DoFencing:1" do_test 797 "OSDL #797 - Assert triggered: task_id_i > max_call_id" do_test 829 "OSDL #829" do_test 994 "OSDL #994 - Stopping the last resource in a resource group causes the entire group to be restarted" do_test 994-2 "OSDL #994 - with a dependent resource" do_test 1360 "OSDL #1360 - Clone stickiness" do_test 1484 "OSDL #1484 - on_fail=stop" do_test 1494 "OSDL #1494 - Clone stability" do_test unrunnable-1 "Unrunnable" do_test unrunnable-2 "Unrunnable 2" do_test stonith-0 "Stonith loop - 1" do_test stonith-1 "Stonith loop - 2" do_test stonith-2 "Stonith loop - 3" do_test stonith-3 "Stonith startup" do_test stonith-4 "Stonith node state" do_test dc-fence-ordering "DC needs fencing while other nodes are shutting down" do_test bug-1572-1 "Recovery of groups depending on master/slave" do_test bug-1572-2 "Recovery of groups depending on master/slave when the master is never re-promoted" @HASH_AFFECTED@do_test bug-1685 "Depends-on-master ordering" do_test bug-1822 "Don't promote partially active groups" do_test bug-pm-11 "New resource added to a m/s group" do_test bug-pm-12 "Recover only the failed portion of a cloned group" do_test bug-n-387749 "Don't shuffle clone instances" do_test bug-n-385265 "Don't ignore the failure stickiness of group children - resource_idvscommon should stay stopped" do_test bug-n-385265-2 "Ensure groups are migrated instead of remaining partially active on the current node" do_test bug-lf-1920 "Correctly handle probes that find active resources" do_test bnc-515172 "Location constraint with multiple expressions" do_test colocate-primitive-with-clone "Optional colocation with a clone" do_test use-after-free-merge "Use-after-free in native_merge_weights" @HASH_AFFECTED@do_test bug-lf-2551 "STONITH ordering for stop" do_test bug-lf-2606 "Stonith implies demote" do_test bug-lf-2474 "Ensure resource op timeout takes precedence over op_defaults" @HASH_AFFECTED@do_test bug-suse-707150 "Prevent vm-01 from starting due to colocation/ordering" do_test bug-5014-A-start-B-start "Verify when A starts B starts using symmetrical=false" do_test bug-5014-A-stop-B-started "Verify when A stops B does not stop if it has already started using symmetric=false" do_test 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" do_test 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." do_test bug-5014-CLONE-A-start-B-start "Verify when A starts B starts using clone resources with symmetric=false" do_test 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." do_test bug-5014-GROUP-A-start-B-start "Verify when A starts B starts when using group resources with symmetric=false." do_test 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." do_test 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." do_test bug-5014-ordered-set-symmetrical-false "Verify ordered sets work with symmetrical=false" do_test bug-5014-ordered-set-symmetrical-true "Verify ordered sets work with symmetrical=true" do_test bug-5007-masterslave_colocation "Verify use of colocation scores other than INFINITY and -INFINITY work on multi-state resources." do_test bug-5038 "Prevent restart of anonymous clones when clone-max decreases" do_test bug-5025-1 "Automatically clean up failcount after resource config change with reload" do_test bug-5025-2 "Make sure clear failcount action isn't set when config does not change." do_test bug-5025-3 "Automatically clean up failcount after resource config change with restart" do_test bug-5025-4 "Clear failcount when last failure is a start op and rsc attributes changed." do_test failcount "Ensure failcounts are correctly expired" do_test failcount-block "Ensure failcounts are not expired when on-fail=block is present" do_test per-op-failcount "Ensure per-operation failcount is handled and not passed to fence agent" do_test on-fail-ignore "Ensure on-fail=ignore works even beyond migration-threshold" do_test monitor-onfail-restart "bug-5058 - Monitor failure with on-fail set to restart" do_test monitor-onfail-stop "bug-5058 - Monitor failure wiht on-fail set to stop" do_test bug-5059 "No need to restart p_stateful1:*" do_test bug-5069-op-enabled "Test on-fail=ignore with failure when monitor is enabled." do_test bug-5069-op-disabled "Test on-fail-ignore with failure when monitor is disabled." do_test obsolete-lrm-resource "cl#5115 - Do not use obsolete lrm_resource sections" do_test expire-non-blocked-failure "Ignore failure-timeout only if the failed operation has on-fail=block" do_test asymmetrical-order-move "Respect asymmetrical ordering when trying to move resources" do_test asymmetrical-order-restart "Respect asymmetrical ordering when restarting dependent resource" do_test start-then-stop-with-unfence "Avoid graph loop with start-then-stop constraint plus unfencing" do_test order-expired-failure "Order failcount cleanup after remote fencing" do_test ignore_stonith_rsc_order1 "cl#5056- Ignore order constraint between stonith and non-stonith rsc." do_test ignore_stonith_rsc_order2 "cl#5056- Ignore order constraint with group rsc containing mixed stonith and non-stonith." do_test ignore_stonith_rsc_order3 "cl#5056- Ignore order constraint, stonith clone and mixed group" do_test ignore_stonith_rsc_order4 "cl#5056- Ignore order constraint, stonith clone and clone with nested mixed group" do_test honor_stonith_rsc_order1 "cl#5056- Honor order constraint, stonith clone and pure stonith group(single rsc)." do_test honor_stonith_rsc_order2 "cl#5056- Honor order constraint, stonith clone and pure stonith group(multiple rsc)" do_test honor_stonith_rsc_order3 "cl#5056- Honor order constraint, stonith clones with nested pure stonith group." do_test honor_stonith_rsc_order4 "cl#5056- Honor order constraint, between two native stonith rscs." do_test multiply-active-stonith do_test probe-timeout "cl#5099 - Default probe timeout" +do_test order-first-probes "cl#5301 - respect order constraints when relevant resources are being probed" do_test concurrent-fencing "Allow performing fencing operations in parallel" echo "" do_test systemhealth1 "System Health () #1" do_test systemhealth2 "System Health () #2" do_test systemhealth3 "System Health () #3" do_test systemhealthn1 "System Health (None) #1" do_test systemhealthn2 "System Health (None) #2" do_test systemhealthn3 "System Health (None) #3" do_test systemhealthm1 "System Health (Migrate On Red) #1" do_test systemhealthm2 "System Health (Migrate On Red) #2" do_test systemhealthm3 "System Health (Migrate On Red) #3" do_test systemhealtho1 "System Health (Only Green) #1" do_test systemhealtho2 "System Health (Only Green) #2" do_test systemhealtho3 "System Health (Only Green) #3" do_test systemhealthp1 "System Health (Progessive) #1" do_test systemhealthp2 "System Health (Progessive) #2" do_test systemhealthp3 "System Health (Progessive) #3" echo "" @HASH_AFFECTED@do_test utilization "Placement Strategy - utilization" @HASH_AFFECTED@do_test minimal "Placement Strategy - minimal" @HASH_AFFECTED@do_test balanced "Placement Strategy - balanced" echo "" do_test placement-stickiness "Optimized Placement Strategy - stickiness" do_test placement-priority "Optimized Placement Strategy - priority" do_test placement-location "Optimized Placement Strategy - location" do_test placement-capacity "Optimized Placement Strategy - capacity" echo "" do_test utilization-order1 "Utilization Order - Simple" do_test utilization-order2 "Utilization Order - Complex" do_test utilization-order3 "Utilization Order - Migrate" do_test utilization-order4 "Utilization Order - Live Migration (bnc#695440)" @HASH_AFFECTED@do_test utilization-shuffle "Don't displace prmExPostgreSQLDB2 on act2, Start prmExPostgreSQLDB1 on act3" do_test load-stopped-loop "Avoid transition loop due to load_stopped (cl#5044)" @HASH_AFFECTED@do_test load-stopped-loop-2 "cl#5235 - Prevent graph loops that can be introduced by load_stopped -> migrate_to ordering" echo "" do_test colocated-utilization-primitive-1 "Colocated Utilization - Primitive" do_test colocated-utilization-primitive-2 "Colocated Utilization - Choose the most capable node" do_test colocated-utilization-group "Colocated Utilization - Group" @HASH_AFFECTED@do_test colocated-utilization-clone "Colocated Utilization - Clone" do_test utilization-check-allowed-nodes "Only check the capacities of the nodes that can run the resource" echo "" do_test reprobe-target_rc "Ensure correct target_rc for reprobe of inactive resources" do_test node-maintenance-1 "cl#5128 - Node maintenance" do_test node-maintenance-2 "cl#5128 - Node maintenance (coming out of maintenance mode)" do_test shutdown-maintenance-node "Do not fence a maintenance node if it shuts down cleanly" do_test rsc-maintenance "Per-resource maintenance" echo "" do_test not-installed-agent "The resource agent is missing" do_test not-installed-tools "Something the resource agent needs is missing" echo "" do_test stopped-monitor-00 "Stopped Monitor - initial start" do_test stopped-monitor-01 "Stopped Monitor - failed started" do_test stopped-monitor-02 "Stopped Monitor - started multi-up" do_test stopped-monitor-03 "Stopped Monitor - stop started" do_test stopped-monitor-04 "Stopped Monitor - failed stop" do_test stopped-monitor-05 "Stopped Monitor - start unmanaged" do_test stopped-monitor-06 "Stopped Monitor - unmanaged multi-up" do_test stopped-monitor-07 "Stopped Monitor - start unmanaged multi-up" do_test stopped-monitor-08 "Stopped Monitor - migrate" do_test stopped-monitor-09 "Stopped Monitor - unmanage started" do_test stopped-monitor-10 "Stopped Monitor - unmanaged started multi-up" do_test stopped-monitor-11 "Stopped Monitor - stop unmanaged started" do_test stopped-monitor-12 "Stopped Monitor - unmanaged started multi-up (target-role=Stopped)" do_test stopped-monitor-20 "Stopped Monitor - initial stop" do_test stopped-monitor-21 "Stopped Monitor - stopped single-up" do_test stopped-monitor-22 "Stopped Monitor - stopped multi-up" do_test stopped-monitor-23 "Stopped Monitor - start stopped" do_test stopped-monitor-24 "Stopped Monitor - unmanage stopped" do_test stopped-monitor-25 "Stopped Monitor - unmanaged stopped multi-up" do_test stopped-monitor-26 "Stopped Monitor - start unmanaged stopped" do_test stopped-monitor-27 "Stopped Monitor - unmanaged stopped multi-up (target-role=Started)" do_test stopped-monitor-30 "Stopped Monitor - new node started" do_test stopped-monitor-31 "Stopped Monitor - new node stopped" echo "" # 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 do_test intervals "Recurring monitor interval handling" echo"" do_test ticket-primitive-1 "Ticket - Primitive (loss-policy=stop, initial)" do_test ticket-primitive-2 "Ticket - Primitive (loss-policy=stop, granted)" do_test ticket-primitive-3 "Ticket - Primitive (loss-policy-stop, revoked)" do_test ticket-primitive-4 "Ticket - Primitive (loss-policy=demote, initial)" do_test ticket-primitive-5 "Ticket - Primitive (loss-policy=demote, granted)" do_test ticket-primitive-6 "Ticket - Primitive (loss-policy=demote, revoked)" do_test ticket-primitive-7 "Ticket - Primitive (loss-policy=fence, initial)" do_test ticket-primitive-8 "Ticket - Primitive (loss-policy=fence, granted)" do_test ticket-primitive-9 "Ticket - Primitive (loss-policy=fence, revoked)" do_test ticket-primitive-10 "Ticket - Primitive (loss-policy=freeze, initial)" do_test ticket-primitive-11 "Ticket - Primitive (loss-policy=freeze, granted)" do_test ticket-primitive-12 "Ticket - Primitive (loss-policy=freeze, revoked)" do_test ticket-primitive-13 "Ticket - Primitive (loss-policy=stop, standby, granted)" do_test ticket-primitive-14 "Ticket - Primitive (loss-policy=stop, granted, standby)" do_test ticket-primitive-15 "Ticket - Primitive (loss-policy=stop, standby, revoked)" do_test ticket-primitive-16 "Ticket - Primitive (loss-policy=demote, standby, granted)" do_test ticket-primitive-17 "Ticket - Primitive (loss-policy=demote, granted, standby)" do_test ticket-primitive-18 "Ticket - Primitive (loss-policy=demote, standby, revoked)" do_test ticket-primitive-19 "Ticket - Primitive (loss-policy=fence, standby, granted)" do_test ticket-primitive-20 "Ticket - Primitive (loss-policy=fence, granted, standby)" do_test ticket-primitive-21 "Ticket - Primitive (loss-policy=fence, standby, revoked)" do_test ticket-primitive-22 "Ticket - Primitive (loss-policy=freeze, standby, granted)" do_test ticket-primitive-23 "Ticket - Primitive (loss-policy=freeze, granted, standby)" do_test ticket-primitive-24 "Ticket - Primitive (loss-policy=freeze, standby, revoked)" echo"" do_test ticket-group-1 "Ticket - Group (loss-policy=stop, initial)" do_test ticket-group-2 "Ticket - Group (loss-policy=stop, granted)" do_test ticket-group-3 "Ticket - Group (loss-policy-stop, revoked)" do_test ticket-group-4 "Ticket - Group (loss-policy=demote, initial)" do_test ticket-group-5 "Ticket - Group (loss-policy=demote, granted)" do_test ticket-group-6 "Ticket - Group (loss-policy=demote, revoked)" do_test ticket-group-7 "Ticket - Group (loss-policy=fence, initial)" do_test ticket-group-8 "Ticket - Group (loss-policy=fence, granted)" do_test ticket-group-9 "Ticket - Group (loss-policy=fence, revoked)" do_test ticket-group-10 "Ticket - Group (loss-policy=freeze, initial)" do_test ticket-group-11 "Ticket - Group (loss-policy=freeze, granted)" do_test ticket-group-12 "Ticket - Group (loss-policy=freeze, revoked)" do_test ticket-group-13 "Ticket - Group (loss-policy=stop, standby, granted)" do_test ticket-group-14 "Ticket - Group (loss-policy=stop, granted, standby)" do_test ticket-group-15 "Ticket - Group (loss-policy=stop, standby, revoked)" do_test ticket-group-16 "Ticket - Group (loss-policy=demote, standby, granted)" do_test ticket-group-17 "Ticket - Group (loss-policy=demote, granted, standby)" do_test ticket-group-18 "Ticket - Group (loss-policy=demote, standby, revoked)" do_test ticket-group-19 "Ticket - Group (loss-policy=fence, standby, granted)" do_test ticket-group-20 "Ticket - Group (loss-policy=fence, granted, standby)" do_test ticket-group-21 "Ticket - Group (loss-policy=fence, standby, revoked)" do_test ticket-group-22 "Ticket - Group (loss-policy=freeze, standby, granted)" do_test ticket-group-23 "Ticket - Group (loss-policy=freeze, granted, standby)" do_test ticket-group-24 "Ticket - Group (loss-policy=freeze, standby, revoked)" echo"" do_test ticket-clone-1 "Ticket - Clone (loss-policy=stop, initial)" do_test ticket-clone-2 "Ticket - Clone (loss-policy=stop, granted)" do_test ticket-clone-3 "Ticket - Clone (loss-policy-stop, revoked)" do_test ticket-clone-4 "Ticket - Clone (loss-policy=demote, initial)" do_test ticket-clone-5 "Ticket - Clone (loss-policy=demote, granted)" do_test ticket-clone-6 "Ticket - Clone (loss-policy=demote, revoked)" do_test ticket-clone-7 "Ticket - Clone (loss-policy=fence, initial)" do_test ticket-clone-8 "Ticket - Clone (loss-policy=fence, granted)" do_test ticket-clone-9 "Ticket - Clone (loss-policy=fence, revoked)" do_test ticket-clone-10 "Ticket - Clone (loss-policy=freeze, initial)" do_test ticket-clone-11 "Ticket - Clone (loss-policy=freeze, granted)" do_test ticket-clone-12 "Ticket - Clone (loss-policy=freeze, revoked)" do_test ticket-clone-13 "Ticket - Clone (loss-policy=stop, standby, granted)" do_test ticket-clone-14 "Ticket - Clone (loss-policy=stop, granted, standby)" do_test ticket-clone-15 "Ticket - Clone (loss-policy=stop, standby, revoked)" do_test ticket-clone-16 "Ticket - Clone (loss-policy=demote, standby, granted)" do_test ticket-clone-17 "Ticket - Clone (loss-policy=demote, granted, standby)" do_test ticket-clone-18 "Ticket - Clone (loss-policy=demote, standby, revoked)" do_test ticket-clone-19 "Ticket - Clone (loss-policy=fence, standby, granted)" do_test ticket-clone-20 "Ticket - Clone (loss-policy=fence, granted, standby)" do_test ticket-clone-21 "Ticket - Clone (loss-policy=fence, standby, revoked)" do_test ticket-clone-22 "Ticket - Clone (loss-policy=freeze, standby, granted)" do_test ticket-clone-23 "Ticket - Clone (loss-policy=freeze, granted, standby)" do_test ticket-clone-24 "Ticket - Clone (loss-policy=freeze, standby, revoked)" echo"" do_test ticket-master-1 "Ticket - Master (loss-policy=stop, initial)" do_test ticket-master-2 "Ticket - Master (loss-policy=stop, granted)" do_test ticket-master-3 "Ticket - Master (loss-policy-stop, revoked)" do_test ticket-master-4 "Ticket - Master (loss-policy=demote, initial)" do_test ticket-master-5 "Ticket - Master (loss-policy=demote, granted)" do_test ticket-master-6 "Ticket - Master (loss-policy=demote, revoked)" do_test ticket-master-7 "Ticket - Master (loss-policy=fence, initial)" do_test ticket-master-8 "Ticket - Master (loss-policy=fence, granted)" do_test ticket-master-9 "Ticket - Master (loss-policy=fence, revoked)" do_test ticket-master-10 "Ticket - Master (loss-policy=freeze, initial)" do_test ticket-master-11 "Ticket - Master (loss-policy=freeze, granted)" do_test ticket-master-12 "Ticket - Master (loss-policy=freeze, revoked)" do_test ticket-master-13 "Ticket - Master (loss-policy=stop, standby, granted)" do_test ticket-master-14 "Ticket - Master (loss-policy=stop, granted, standby)" do_test ticket-master-15 "Ticket - Master (loss-policy=stop, standby, revoked)" do_test ticket-master-16 "Ticket - Master (loss-policy=demote, standby, granted)" do_test ticket-master-17 "Ticket - Master (loss-policy=demote, granted, standby)" do_test ticket-master-18 "Ticket - Master (loss-policy=demote, standby, revoked)" do_test ticket-master-19 "Ticket - Master (loss-policy=fence, standby, granted)" do_test ticket-master-20 "Ticket - Master (loss-policy=fence, granted, standby)" do_test ticket-master-21 "Ticket - Master (loss-policy=fence, standby, revoked)" do_test ticket-master-22 "Ticket - Master (loss-policy=freeze, standby, granted)" do_test ticket-master-23 "Ticket - Master (loss-policy=freeze, granted, standby)" do_test ticket-master-24 "Ticket - Master (loss-policy=freeze, standby, revoked)" echo "" do_test ticket-rsc-sets-1 "Ticket - Resource sets (1 ticket, initial)" do_test ticket-rsc-sets-2 "Ticket - Resource sets (1 ticket, granted)" do_test ticket-rsc-sets-3 "Ticket - Resource sets (1 ticket, revoked)" do_test ticket-rsc-sets-4 "Ticket - Resource sets (2 tickets, initial)" do_test ticket-rsc-sets-5 "Ticket - Resource sets (2 tickets, granted)" do_test ticket-rsc-sets-6 "Ticket - Resource sets (2 tickets, granted)" do_test ticket-rsc-sets-7 "Ticket - Resource sets (2 tickets, revoked)" do_test ticket-rsc-sets-8 "Ticket - Resource sets (1 ticket, standby, granted)" do_test ticket-rsc-sets-9 "Ticket - Resource sets (1 ticket, granted, standby)" do_test ticket-rsc-sets-10 "Ticket - Resource sets (1 ticket, standby, revoked)" do_test ticket-rsc-sets-11 "Ticket - Resource sets (2 tickets, standby, granted)" do_test ticket-rsc-sets-12 "Ticket - Resource sets (2 tickets, standby, granted)" do_test ticket-rsc-sets-13 "Ticket - Resource sets (2 tickets, granted, standby)" do_test ticket-rsc-sets-14 "Ticket - Resource sets (2 tickets, standby, revoked)" do_test cluster-specific-params "Cluster-specific instance attributes based on rules" do_test site-specific-params "Site-specific instance attributes based on rules" echo "" do_test template-1 "Template - 1" do_test template-2 "Template - 2" do_test template-3 "Template - 3 (merge operations)" do_test template-coloc-1 "Template - Colocation 1" do_test template-coloc-2 "Template - Colocation 2" do_test template-coloc-3 "Template - Colocation 3" do_test template-order-1 "Template - Order 1" do_test template-order-2 "Template - Order 2" do_test template-order-3 "Template - Order 3" do_test template-ticket "Template - Ticket" do_test template-rsc-sets-1 "Template - Resource Sets 1" do_test template-rsc-sets-2 "Template - Resource Sets 2" do_test template-rsc-sets-3 "Template - Resource Sets 3" do_test template-rsc-sets-4 "Template - Resource Sets 4" do_test template-clone-primitive "Cloned primitive from template" do_test template-clone-group "Cloned group from template" do_test location-sets-templates "Resource sets and templates - Location" do_test tags-coloc-order-1 "Tags - Colocation and Order (Simple)" do_test tags-coloc-order-2 "Tags - Colocation and Order (Resource Sets with Templates)" do_test tags-location "Tags - Location" do_test tags-ticket "Tags - Ticket" echo "" do_test container-1 "Container - initial" do_test container-2 "Container - monitor failed" do_test container-3 "Container - stop failed" do_test container-4 "Container - reached migration-threshold" do_test container-group-1 "Container in group - initial" do_test container-group-2 "Container in group - monitor failed" do_test container-group-3 "Container in group - stop failed" do_test container-group-4 "Container in group - reached migration-threshold" do_test container-is-remote-node "Place resource within container when container is remote-node" do_test bug-rh-1097457 "Kill user defined container/contents ordering" @HASH_AFFECTED@do_test bug-cl-5247 "Graph loop when recovering m/s resource in a container" do_test bundle-order-startup "Bundle startup ordering" do_test bundle-order-partial-start "Bundle startup ordering when some dependancies are already running" do_test bundle-order-partial-start-2 "Bundle startup ordering when some dependancies and the container are already running" do_test bundle-order-stop "Bundle stop ordering" do_test bundle-order-partial-stop "Bundle startup ordering when some dependancies are already stopped" @HASH_AFFECTED@do_test bundle-order-stop-on-remote "Stop nested resource after bringing up the connection" @HASH_AFFECTED@do_test bundle-order-startup-clone "Prevent startup because bundle isn't promoted" @HASH_AFFECTED@do_test bundle-order-startup-clone-2 "Bundle startup with clones" do_test bundle-order-stop-clone "Stop bundle because clone is stopping" @HASH_AFFECTED@do_test bundle-nested-colocation "Colocation of nested connection resources" @HASH_AFFECTED@do_test bundle-order-fencing "Order pseudo bundle fencing after parent node fencing if both are happening" do_test bundle-probe-order-1 "order 1" do_test bundle-probe-order-2 "order 2" do_test bundle-probe-order-3 "order 3" do_test bundle-probe-remotes "Ensure remotes get probed too" do_test bundle-replicas-change "Change bundle from 1 replica to multiple" @HASH_AFFECTED@do_test nested-remote-recovery "Recover bundle's container hosted on remote node" echo "" do_test whitebox-fail1 "Fail whitebox container rsc." do_test whitebox-fail2 "Fail cluster connection to guest node" do_test whitebox-fail3 "Failed containers should not run nested on remote nodes." do_test whitebox-start "Start whitebox container with resources assigned to it" do_test whitebox-stop "Stop whitebox container with resources assigned to it" do_test whitebox-move "Move whitebox container with resources assigned to it" do_test whitebox-asymmetric "Verify connection rsc opts-in based on container resource" do_test whitebox-ms-ordering "Verify promote/demote can not occur before connection is established" do_test whitebox-ms-ordering-move "Stop/Start cycle within a moving container" do_test whitebox-orphaned "Properly shutdown orphaned whitebox container" do_test whitebox-orphan-ms "Properly tear down orphan ms resources on remote-nodes" do_test whitebox-unexpectedly-running "Recover container nodes the cluster did not start." do_test whitebox-migrate1 "Migrate both container and connection resource" do_test whitebox-imply-stop-on-fence "imply stop action on container node rsc when host node is fenced" do_test whitebox-nested-group "Verify guest remote-node works nested in a group" do_test guest-node-host-dies "Verify guest node is recovered if host goes away" do_test guest-node-cleanup "Order guest node connection recovery after container probe" echo "" do_test remote-startup-probes "Baremetal remote-node startup probes" do_test remote-startup "Startup a newly discovered remote-nodes with no status." do_test remote-fence-unclean "Fence unclean baremetal remote-node" do_test remote-fence-unclean2 "Fence baremetal remote-node after cluster node fails and connection can not be recovered" do_test remote-fence-unclean-3 "Probe failed remote nodes (triggers fencing)" do_test remote-move "Move remote-node connection resource" do_test remote-disable "Disable a baremetal remote-node" do_test remote-probe-disable "Probe then stop a baremetal remote-node" do_test remote-orphaned "Properly shutdown orphaned connection resource" do_test remote-orphaned2 "verify we can handle orphaned remote connections with active resources on the remote" do_test remote-recover "Recover connection resource after cluster-node fails." do_test remote-stale-node-entry "Make sure we properly handle leftover remote-node entries in the node section" do_test remote-partial-migrate "Make sure partial migrations are handled before ops on the remote node." do_test remote-partial-migrate2 "Make sure partial migration target is prefered for remote connection." do_test remote-recover-fail "Make sure start failure causes fencing if rsc are active on remote." do_test remote-start-fail "Make sure a start failure does not result in fencing if no active resources are on remote." do_test remote-unclean2 "Make monitor failure always results in fencing, even if no rsc are active on remote." do_test remote-fence-before-reconnect "Fence before clearing recurring monitor failure" @HASH_AFFECTED@do_test remote-recovery "Recover remote connections before attempting demotion" @HASH_AFFECTED@do_test remote-recover-connection "Optimistically recovery of only the connection" @HASH_AFFECTED@do_test remote-recover-all "Fencing when the connection has no home" @HASH_AFFECTED@do_test remote-recover-no-resources "Fencing when the connection has no home and no active resources" @HASH_AFFECTED@do_test remote-recover-unknown "Fencing when the connection has no home and the remote has no operation history" do_test remote-reconnect-delay "Waiting for remote reconnect interval to expire" do_test remote-connection-unrecoverable "Remote connection host must be fenced, with connection unrecoverable" echo "" do_test resource-discovery "Exercises resource-discovery location constraint option." do_test rsc-discovery-per-node "Disable resource discovery per node" if [ $DO_VERSIONED_TESTS -eq 1 ]; then echo "" do_test versioned-resources "Start resources with #ra-version rules" do_test restart-versioned "Restart resources on #ra-version change" do_test reload-versioned "Reload resources on #ra-version change" echo "" do_test versioned-operations-1 "Use #ra-version to configure operations of native resources" do_test versioned-operations-2 "Use #ra-version to configure operations of stonith resources" do_test versioned-operations-3 "Use #ra-version to configure operations of master/slave resources" do_test versioned-operations-4 "Use #ra-version to configure operations of groups of the resources" fi echo "" test_results exit $EXITCODE diff --git a/cts/scheduler/11-a-then-bm-b-move-a-clone-starting.dot b/cts/scheduler/11-a-then-bm-b-move-a-clone-starting.dot index 2b45d58faf..4a89db6757 100644 --- a/cts/scheduler/11-a-then-bm-b-move-a-clone-starting.dot +++ b/cts/scheduler/11-a-then-bm-b-move-a-clone-starting.dot @@ -1,29 +1,30 @@ digraph "g" { "myclone-clone_running_0" -> "vm_migrate_to_0 f20node1" [ style = dashed] "myclone-clone_running_0" -> "vm_start_0 f20node2" [ style = bold] "myclone-clone_running_0" [ style=bold color="green" fontcolor="orange"] "myclone-clone_start_0" -> "myclone-clone_running_0" [ style = bold] "myclone-clone_start_0" -> "myclone_start_0 f20node2" [ style = bold] "myclone-clone_start_0" [ style=bold color="green" fontcolor="orange"] "myclone-clone_stop_0" -> "myclone-clone_stopped_0" [ style = bold] "myclone-clone_stop_0" -> "myclone_stop_0 f20node1" [ style = bold] "myclone-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "myclone-clone_stopped_0" -> "myclone-clone_start_0" [ style = bold] "myclone-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "myclone_monitor_0 f20node2" -> "myclone-clone_start_0" [ style = bold] +"myclone_monitor_0 f20node2" -> "myclone-clone_stopped_0" [ style = bold] "myclone_monitor_0 f20node2" [ style=bold color="green" fontcolor="black"] "myclone_start_0 f20node2" -> "myclone-clone_running_0" [ style = bold] "myclone_start_0 f20node2" [ style=bold color="green" fontcolor="black"] "myclone_stop_0 f20node1" -> "myclone-clone_stopped_0" [ style = bold] "myclone_stop_0 f20node1" -> "myclone_start_0 f20node2" [ style = bold] "myclone_stop_0 f20node1" [ style=bold color="green" fontcolor="black"] "vm_migrate_from_0 f20node2" -> "vm_start_0 f20node2" [ style = dashed] "vm_migrate_from_0 f20node2" -> "vm_stop_0 f20node1" [ style = dashed] "vm_migrate_from_0 f20node2" [ style=dashed color="red" fontcolor="black"] "vm_migrate_to_0 f20node1" -> "vm_migrate_from_0 f20node2" [ style = dashed] "vm_migrate_to_0 f20node1" [ style=dashed color="red" fontcolor="black"] "vm_start_0 f20node2" [ style=bold color="green" fontcolor="black"] "vm_stop_0 f20node1" -> "myclone-clone_stop_0" [ style = bold] "vm_stop_0 f20node1" -> "vm_start_0 f20node2" [ style = bold] "vm_stop_0 f20node1" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/11-a-then-bm-b-move-a-clone-starting.exp b/cts/scheduler/11-a-then-bm-b-move-a-clone-starting.exp index b391b4214f..4eeb08613c 100644 --- a/cts/scheduler/11-a-then-bm-b-move-a-clone-starting.exp +++ b/cts/scheduler/11-a-then-bm-b-move-a-clone-starting.exp @@ -1,122 +1,125 @@ + + + diff --git a/cts/scheduler/594.dot b/cts/scheduler/594.dot index 4f3ea6406b..8a24440b91 100644 --- a/cts/scheduler/594.dot +++ b/cts/scheduler/594.dot @@ -1,35 +1,37 @@ digraph "g" { "DcIPaddr_monitor_0 hadev1" -> "DcIPaddr_start_0 hadev1" [ style = bold] "DcIPaddr_monitor_0 hadev1" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_monitor_5000 hadev1" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_start_0 hadev1" -> "DcIPaddr_monitor_5000 hadev1" [ style = bold] "DcIPaddr_start_0 hadev1" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_stop_0 hadev2" -> "DcIPaddr_start_0 hadev1" [ style = bold] "DcIPaddr_stop_0 hadev2" -> "do_shutdown hadev2" [ style = bold] "DcIPaddr_stop_0 hadev2" [ style=bold color="green" fontcolor="black" ] "DoFencing_stop_0" -> "DoFencing_stopped_0" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:0_stop_0 hadev2" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:2_stop_0 hadev1" [ style = bold] "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] +"child_DoFencing:0_monitor_0 hadev1" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_monitor_0 hadev1" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:0_stop_0 hadev2" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_stop_0 hadev2" -> "do_shutdown hadev2" [ style = bold] "child_DoFencing:0_stop_0 hadev2" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 hadev2" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 hadev2" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:2_stop_0 hadev1" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_stop_0 hadev1" [ style=bold color="green" fontcolor="black" ] "do_shutdown hadev2" [ style=bold color="green" fontcolor="black" ] "rsc_hadev2_monitor_0 hadev1" -> "rsc_hadev2_start_0 hadev1" [ style = bold] "rsc_hadev2_monitor_0 hadev1" [ style=bold color="green" fontcolor="black" ] "rsc_hadev2_monitor_5000 hadev1" [ style=bold color="green" fontcolor="black" ] "rsc_hadev2_start_0 hadev1" -> "rsc_hadev2_monitor_5000 hadev1" [ style = bold] "rsc_hadev2_start_0 hadev1" [ style=bold color="green" fontcolor="black" ] "rsc_hadev2_stop_0 hadev2" -> "do_shutdown hadev2" [ style = bold] "rsc_hadev2_stop_0 hadev2" -> "rsc_hadev2_start_0 hadev1" [ style = bold] "rsc_hadev2_stop_0 hadev2" [ style=bold color="green" fontcolor="black" ] "rsc_hadev3_monitor_0 hadev2" [ style=bold color="green" fontcolor="black" ] "stonith 'reboot' hadev3" -> "DcIPaddr_start_0 hadev1" [ style = bold] "stonith 'reboot' hadev3" -> "rsc_hadev2_start_0 hadev1" [ style = bold] "stonith 'reboot' hadev3" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/594.exp b/cts/scheduler/594.exp index 0bbf7465a5..c0025f07a3 100644 --- a/cts/scheduler/594.exp +++ b/cts/scheduler/594.exp @@ -1,213 +1,219 @@ + + + + + + diff --git a/cts/scheduler/662.dot b/cts/scheduler/662.dot index 9848322e68..173103cbbe 100644 --- a/cts/scheduler/662.dot +++ b/cts/scheduler/662.dot @@ -1,42 +1,51 @@ digraph "g" { "DcIPaddr_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] "DoFencing_stop_0" -> "DoFencing_stopped_0" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:0_stop_0 c001n02" [ style = bold] "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] +"child_DoFencing:0_monitor_0 c001n04" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:0_monitor_0 c001n09" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_monitor_0 c001n09" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:0_stop_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_stop_0 c001n02" -> "do_shutdown c001n02" [ style = bold] "child_DoFencing:0_stop_0 c001n02" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:1_monitor_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:1_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:1_monitor_0 c001n04" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:1_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 c001n09" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n09" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n04" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] "do_shutdown c001n02" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_start_0 c001n03" [ style = bold] "rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n04" -> "rsc_c001n02_start_0 c001n03" [ style = bold] "rsc_c001n02_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n09" -> "rsc_c001n02_start_0 c001n03" [ style = bold] "rsc_c001n02_monitor_0 c001n09" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_5000 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_start_0 c001n03" -> "rsc_c001n02_monitor_5000 c001n03" [ style = bold] "rsc_c001n02_start_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_stop_0 c001n02" -> "do_shutdown c001n02" [ style = bold] "rsc_c001n02_stop_0 c001n02" -> "rsc_c001n02_start_0 c001n03" [ style = bold] "rsc_c001n02_stop_0 c001n02" [ style=bold color="green" fontcolor="black" ] "rsc_c001n03_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "rsc_c001n03_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] "rsc_c001n03_monitor_0 c001n09" [ style=bold color="green" fontcolor="black" ] "rsc_c001n04_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n04_monitor_0 c001n09" [ style=bold color="green" fontcolor="black" ] "rsc_c001n09_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "rsc_c001n09_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n09_monitor_0 c001n04" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/662.exp b/cts/scheduler/662.exp index 3751565601..f0a056045e 100644 --- a/cts/scheduler/662.exp +++ b/cts/scheduler/662.exp @@ -1,308 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/797.dot b/cts/scheduler/797.dot index 9ef868ac87..ff049d9649 100644 --- a/cts/scheduler/797.dot +++ b/cts/scheduler/797.dot @@ -1,83 +1,87 @@ digraph "g" { "DcIPaddr_delete_0 c001n03" -> "DcIPaddr_start_0 c001n03" [ style = dashed] "DcIPaddr_delete_0 c001n03" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_monitor_0 c001n01" -> "DcIPaddr_start_0 c001n03" [ style = dashed] "DcIPaddr_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_monitor_0 c001n02" -> "DcIPaddr_start_0 c001n03" [ style = dashed] "DcIPaddr_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black"] "DcIPaddr_start_0 c001n03" -> "DcIPaddr_monitor_5000 c001n03" [ style = dashed] "DcIPaddr_start_0 c001n03" [ style=dashed color="red" fontcolor="black" ] "DcIPaddr_stop_0 c001n03" -> "DcIPaddr_delete_0 c001n03" [ style = bold] "DcIPaddr_stop_0 c001n03" -> "DcIPaddr_start_0 c001n03" [ style = dashed] "DcIPaddr_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "DoFencing_running_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_start_0" -> "DoFencing_running_0" [ style = bold] "DoFencing_start_0" -> "child_DoFencing:0_start_0 c001n01" [ style = bold] "DoFencing_start_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stop_0" -> "DoFencing_stopped_0" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:0_stop_0 c001n01" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:0_stop_0 c001n03" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:1_stop_0 c001n02" [ style = bold] "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stopped_0" -> "DoFencing_start_0" [ style = bold] "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] "child_DoFencing:0_monitor_5000 c001n01" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:0_start_0 c001n01" -> "DoFencing_running_0" [ style = bold] "child_DoFencing:0_start_0 c001n01" -> "child_DoFencing:0_monitor_5000 c001n01" [ style = bold] "child_DoFencing:0_start_0 c001n01" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:0_stop_0 c001n01" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_stop_0 c001n01" -> "child_DoFencing:0_start_0 c001n01" [ style = bold] "child_DoFencing:0_stop_0 c001n01" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:0_stop_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_stop_0 c001n03" -> "child_DoFencing:0_start_0 c001n01" [ style = bold] "child_DoFencing:0_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:1_stop_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:1_stop_0 c001n02" -> "do_shutdown c001n02" [ style = bold] "child_DoFencing:1_stop_0 c001n02" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:2_monitor_0 c001n01" -> "DoFencing_start_0" [ style = bold] +"child_DoFencing:2_monitor_0 c001n01" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:3_monitor_0 c001n01" -> "DoFencing_start_0" [ style = bold] +"child_DoFencing:3_monitor_0 c001n01" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:3_monitor_0 c001n02" -> "DoFencing_start_0" [ style = bold] +"child_DoFencing:3_monitor_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:3_monitor_0 c001n03" -> "DoFencing_start_0" [ style = bold] +"child_DoFencing:3_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "do_shutdown c001n02" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_monitor_0 c001n03" -> "rsc_c001n01_start_0 c001n01" [ style = dashed] "rsc_c001n01_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_monitor_5000 c001n01" [ style=dashed color="red" fontcolor="black"] "rsc_c001n01_start_0 c001n01" -> "rsc_c001n01_monitor_5000 c001n01" [ style = dashed] "rsc_c001n01_start_0 c001n01" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n01_stop_0 c001n01" -> "rsc_c001n01_start_0 c001n01" [ style = dashed] "rsc_c001n01_stop_0 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n01" -> "rsc_c001n02_start_0 c001n01" [ style = dashed] "rsc_c001n02_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_start_0 c001n01" [ style = dashed] "rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_5000 c001n01" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n02_start_0 c001n01" -> "rsc_c001n02_monitor_5000 c001n01" [ style = dashed] "rsc_c001n02_start_0 c001n01" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n02_stop_0 c001n02" -> "do_shutdown c001n02" [ style = bold] "rsc_c001n02_stop_0 c001n02" -> "rsc_c001n02_start_0 c001n01" [ style = dashed] "rsc_c001n02_stop_0 c001n02" [ style=bold color="green" fontcolor="black" ] "rsc_c001n03_monitor_0 c001n01" -> "rsc_c001n03_start_0 c001n03" [ style = dashed] "rsc_c001n03_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n03_monitor_0 c001n02" -> "rsc_c001n03_start_0 c001n03" [ style = dashed] "rsc_c001n03_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "rsc_c001n03_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black"] "rsc_c001n03_start_0 c001n03" -> "rsc_c001n03_monitor_5000 c001n03" [ style = dashed] "rsc_c001n03_start_0 c001n03" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n03_stop_0 c001n03" -> "rsc_c001n03_start_0 c001n03" [ style = dashed] "rsc_c001n03_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n08_monitor_0 c001n01" -> "rsc_c001n08_start_0 c001n01" [ style = dashed] "rsc_c001n08_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n08_monitor_0 c001n03" -> "rsc_c001n08_start_0 c001n01" [ style = dashed] "rsc_c001n08_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n08_monitor_5000 c001n01" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n08_start_0 c001n01" -> "rsc_c001n08_monitor_5000 c001n01" [ style = dashed] "rsc_c001n08_start_0 c001n01" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n08_stop_0 c001n02" -> "do_shutdown c001n02" [ style = bold] "rsc_c001n08_stop_0 c001n02" -> "rsc_c001n08_start_0 c001n01" [ style = dashed] "rsc_c001n08_stop_0 c001n02" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/797.exp b/cts/scheduler/797.exp index 135cbef0ac..3bd68c91b2 100644 --- a/cts/scheduler/797.exp +++ b/cts/scheduler/797.exp @@ -1,338 +1,350 @@ + + + + + + + + + + + + diff --git a/cts/scheduler/829.dot b/cts/scheduler/829.dot index 91e6c15300..8caa049d46 100644 --- a/cts/scheduler/829.dot +++ b/cts/scheduler/829.dot @@ -1,36 +1,42 @@ digraph "g" { "DcIPaddr_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "DoFencing_stop_0" -> "DoFencing_stopped_0" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:0_stop_0 c001n02" [ style = bold] "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] +"child_DoFencing:0_monitor_0 c001n01" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:0_stop_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_stop_0 c001n02" [ style=bold color="green" fontcolor="orange" ] +"child_DoFencing:1_monitor_0 c001n01" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:1_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 c001n08" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n01" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n01" -> "rsc_c001n02_start_0 c001n01" [ style = bold] "rsc_c001n02_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n03" -> "rsc_c001n02_start_0 c001n01" [ style = bold] "rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n08" -> "rsc_c001n02_start_0 c001n01" [ style = bold] "rsc_c001n02_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_5000 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_start_0 c001n01" -> "rsc_c001n02_monitor_5000 c001n01" [ style = bold] "rsc_c001n02_start_0 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_stop_0 c001n02" -> "rsc_c001n02_start_0 c001n01" [ style = bold] "rsc_c001n02_stop_0 c001n02" [ style=bold color="green" fontcolor="orange" ] "rsc_c001n03_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n03_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] "rsc_c001n08_monitor_0 c001n01" [ style=bold color="green" fontcolor="black" ] "rsc_c001n08_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "stonith 'reboot' c001n02" -> "rsc_c001n02_start_0 c001n01" [ style = bold] "stonith 'reboot' c001n02" -> "rsc_c001n02_stop_0 c001n02" [ style = bold] "stonith 'reboot' c001n02" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/829.exp b/cts/scheduler/829.exp index eb91187ae9..40be4f48dd 100644 --- a/cts/scheduler/829.exp +++ b/cts/scheduler/829.exp @@ -1,251 +1,269 @@ + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/bug-cl-5247.dot b/cts/scheduler/bug-cl-5247.dot index a9784679a1..c125dac77a 100644 --- a/cts/scheduler/bug-cl-5247.dot +++ b/cts/scheduler/bug-cl-5247.dot @@ -1,138 +1,141 @@ digraph "g" { "grpStonith1_running_0" [ style=bold color="green" fontcolor="orange"] "grpStonith1_start_0" -> "grpStonith1_running_0" [ style = bold] "grpStonith1_start_0" -> "prmStonith1-2_start_0 bl460g8n4" [ style = bold] "grpStonith1_start_0" [ style=bold color="green" fontcolor="orange"] "grpStonith1_stop_0" -> "grpStonith1_stopped_0" [ style = bold] "grpStonith1_stop_0" -> "prmStonith1-2_stop_0 bl460g8n4" [ style = bold] "grpStonith1_stop_0" [ style=bold color="green" fontcolor="orange"] "grpStonith1_stopped_0" -> "grpStonith1_start_0" [ style = bold] "grpStonith1_stopped_0" [ style=bold color="green" fontcolor="orange"] "grpStonith2_running_0" [ style=bold color="green" fontcolor="orange"] "grpStonith2_start_0" -> "grpStonith2_running_0" [ style = bold] "grpStonith2_start_0" -> "prmStonith2-2_start_0 bl460g8n3" [ style = bold] "grpStonith2_start_0" [ style=bold color="green" fontcolor="orange"] "grpStonith2_stop_0" -> "grpStonith2_stopped_0" [ style = bold] "grpStonith2_stop_0" -> "prmStonith2-2_stop_0 bl460g8n3" [ style = bold] "grpStonith2_stop_0" [ style=bold color="green" fontcolor="orange"] "grpStonith2_stopped_0" -> "grpStonith2_start_0" [ style = bold] "grpStonith2_stopped_0" [ style=bold color="green" fontcolor="orange"] "master-group_running_0" [ style=bold color="green" fontcolor="orange"] "master-group_start_0" -> "master-group_running_0" [ style = bold] "master-group_start_0" -> "vip-master_start_0 pgsr01" [ style = bold] "master-group_start_0" -> "vip-rep_start_0 pgsr01" [ style = bold] "master-group_start_0" [ style=bold color="green" fontcolor="orange"] "master-group_stop_0" -> "master-group_stopped_0" [ style = bold] "master-group_stop_0" -> "vip-master_stop_0 pgsr02" [ style = bold] "master-group_stop_0" -> "vip-rep_stop_0 pgsr02" [ style = bold] "master-group_stop_0" [ style=bold color="green" fontcolor="orange"] "master-group_stopped_0" -> "master-group_start_0" [ style = bold] "master-group_stopped_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_confirmed-post_notify_demoted_0" -> "master-group_stop_0" [ style = bold] "msPostgresql_confirmed-post_notify_demoted_0" -> "msPostgresql_pre_notify_stop_0" [ style = bold] "msPostgresql_confirmed-post_notify_demoted_0" -> "pgsql_monitor_9000 pgsr01" [ style = bold] "msPostgresql_confirmed-post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_confirmed-post_notify_stopped_0" -> "pgsql_monitor_9000 pgsr01" [ style = bold] "msPostgresql_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_confirmed-pre_notify_demote_0" -> "msPostgresql_demote_0" [ style = bold] "msPostgresql_confirmed-pre_notify_demote_0" -> "msPostgresql_post_notify_demoted_0" [ style = bold] "msPostgresql_confirmed-pre_notify_demote_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_confirmed-pre_notify_stop_0" -> "msPostgresql_post_notify_stopped_0" [ style = bold] "msPostgresql_confirmed-pre_notify_stop_0" -> "msPostgresql_stop_0" [ style = bold] "msPostgresql_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_demote_0" -> "msPostgresql_demoted_0" [ style = bold] "msPostgresql_demote_0" -> "pgsql_demote_0 pgsr02" [ style = bold] "msPostgresql_demote_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_demoted_0" -> "msPostgresql_post_notify_demoted_0" [ style = bold] "msPostgresql_demoted_0" -> "msPostgresql_stop_0" [ style = bold] "msPostgresql_demoted_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_post_notify_demoted_0" -> "msPostgresql_confirmed-post_notify_demoted_0" [ style = bold] "msPostgresql_post_notify_demoted_0" -> "pgsql_post_notify_demoted_0 pgsr01" [ style = bold] "msPostgresql_post_notify_demoted_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_post_notify_stopped_0" -> "msPostgresql_confirmed-post_notify_stopped_0" [ style = bold] "msPostgresql_post_notify_stopped_0" -> "pgsql_post_notify_stonith_0 pgsr01" [ style = bold] "msPostgresql_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_pre_notify_demote_0" -> "msPostgresql_confirmed-pre_notify_demote_0" [ style = bold] "msPostgresql_pre_notify_demote_0" -> "pgsql_pre_notify_demote_0 pgsr01" [ style = bold] "msPostgresql_pre_notify_demote_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_pre_notify_stop_0" -> "msPostgresql_confirmed-pre_notify_stop_0" [ style = bold] "msPostgresql_pre_notify_stop_0" -> "pgsql_pre_notify_stop_0 pgsr01" [ style = bold] "msPostgresql_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_stop_0" -> "msPostgresql_stopped_0" [ style = bold] "msPostgresql_stop_0" -> "pgsql_stop_0 pgsr02" [ style = bold] "msPostgresql_stop_0" [ style=bold color="green" fontcolor="orange"] "msPostgresql_stopped_0" -> "msPostgresql_post_notify_stopped_0" [ style = bold] "msPostgresql_stopped_0" [ style=bold color="green" fontcolor="orange"] "pgsql_confirmed-post_notify_stonith_0" -> "pgsql_monitor_9000 pgsr01" [ style = bold] "pgsql_confirmed-post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] "pgsql_demote_0 pgsr02" -> "msPostgresql_demoted_0" [ style = bold] "pgsql_demote_0 pgsr02" -> "pgsql_stop_0 pgsr02" [ style = bold] "pgsql_demote_0 pgsr02" [ style=bold color="green" fontcolor="orange"] "pgsql_monitor_9000 pgsr01" [ style=bold color="green" fontcolor="black"] "pgsql_post_notify_demoted_0 pgsr01" -> "msPostgresql_confirmed-post_notify_demoted_0" [ style = bold] "pgsql_post_notify_demoted_0 pgsr01" [ style=bold color="green" fontcolor="black"] "pgsql_post_notify_stonith_0 pgsr01" -> "msPostgresql_confirmed-post_notify_stopped_0" [ style = bold] "pgsql_post_notify_stonith_0 pgsr01" -> "pgsql_confirmed-post_notify_stonith_0" [ style = bold] "pgsql_post_notify_stonith_0 pgsr01" [ style=bold color="green" fontcolor="black"] "pgsql_post_notify_stonith_0" -> "pgsql_confirmed-post_notify_stonith_0" [ style = bold] "pgsql_post_notify_stonith_0" -> "pgsql_post_notify_stonith_0 pgsr01" [ style = bold] "pgsql_post_notify_stonith_0" [ style=bold color="green" fontcolor="orange"] "pgsql_pre_notify_demote_0 pgsr01" -> "msPostgresql_confirmed-pre_notify_demote_0" [ style = bold] "pgsql_pre_notify_demote_0 pgsr01" [ style=bold color="green" fontcolor="black"] "pgsql_pre_notify_stop_0 pgsr01" -> "msPostgresql_confirmed-pre_notify_stop_0" [ style = bold] "pgsql_pre_notify_stop_0 pgsr01" [ style=bold color="green" fontcolor="black"] "pgsql_stop_0 pgsr02" -> "msPostgresql_stopped_0" [ style = bold] "pgsql_stop_0 pgsr02" [ style=bold color="green" fontcolor="orange"] "pgsr01_monitor_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] "pgsr02_monitor_0 bl460g8n3" [ style=bold color="green" fontcolor="black"] "pgsr02_stop_0 bl460g8n4" -> "prmDB2_stop_0 bl460g8n4" [ style = bold] "pgsr02_stop_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] "prmDB2_stop_0 bl460g8n4" -> "stonith 'off' pgsr02" [ style = bold] "prmDB2_stop_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] "prmStonith1-2_monitor_3600000 bl460g8n4" [ style=bold color="green" fontcolor="black"] "prmStonith1-2_start_0 bl460g8n4" -> "grpStonith1_running_0" [ style = bold] "prmStonith1-2_start_0 bl460g8n4" -> "prmStonith1-2_monitor_3600000 bl460g8n4" [ style = bold] "prmStonith1-2_start_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] "prmStonith1-2_stop_0 bl460g8n4" -> "grpStonith1_stopped_0" [ style = bold] "prmStonith1-2_stop_0 bl460g8n4" -> "prmStonith1-2_start_0 bl460g8n4" [ style = bold] "prmStonith1-2_stop_0 bl460g8n4" [ style=bold color="green" fontcolor="black"] "prmStonith2-2_monitor_3600000 bl460g8n3" [ style=bold color="green" fontcolor="black"] "prmStonith2-2_start_0 bl460g8n3" -> "grpStonith2_running_0" [ style = bold] "prmStonith2-2_start_0 bl460g8n3" -> "prmStonith2-2_monitor_3600000 bl460g8n3" [ style = bold] "prmStonith2-2_start_0 bl460g8n3" [ style=bold color="green" fontcolor="black"] "prmStonith2-2_stop_0 bl460g8n3" -> "grpStonith2_stopped_0" [ style = bold] "prmStonith2-2_stop_0 bl460g8n3" -> "prmStonith2-2_start_0 bl460g8n3" [ style = bold] "prmStonith2-2_stop_0 bl460g8n3" [ style=bold color="green" fontcolor="black"] "stonith 'off' pgsr02" -> "master-group_stop_0" [ style = bold] "stonith 'off' pgsr02" -> "msPostgresql_stop_0" [ style = bold] "stonith 'off' pgsr02" -> "pgsql_demote_0 pgsr02" [ style = bold] "stonith 'off' pgsr02" -> "pgsql_post_notify_stonith_0" [ style = bold] "stonith 'off' pgsr02" -> "pgsql_stop_0 pgsr02" [ style = bold] "stonith 'off' pgsr02" -> "prmStonith1-2_start_0 bl460g8n4" [ style = bold] "stonith 'off' pgsr02" -> "prmStonith2-2_start_0 bl460g8n3" [ style = bold] "stonith 'off' pgsr02" -> "vip-master_start_0 pgsr01" [ style = bold] "stonith 'off' pgsr02" -> "vip-master_stop_0 pgsr02" [ style = bold] "stonith 'off' pgsr02" -> "vip-rep_start_0 pgsr01" [ style = bold] "stonith 'off' pgsr02" -> "vip-rep_stop_0 pgsr02" [ style = bold] "stonith 'off' pgsr02" [ style=bold color="green" fontcolor="orange"] +"vip-master_monitor_0 pgsr01" -> "master-group_stopped_0" [ style = bold] "vip-master_monitor_0 pgsr01" -> "vip-master_start_0 pgsr01" [ style = bold] "vip-master_monitor_0 pgsr01" [ style=bold color="green" fontcolor="black"] "vip-master_monitor_10000 pgsr01" [ style=bold color="green" fontcolor="black"] "vip-master_start_0 pgsr01" -> "master-group_running_0" [ style = bold] "vip-master_start_0 pgsr01" -> "vip-master_monitor_10000 pgsr01" [ style = bold] "vip-master_start_0 pgsr01" -> "vip-rep_start_0 pgsr01" [ style = bold] "vip-master_start_0 pgsr01" [ style=bold color="green" fontcolor="black"] "vip-master_stop_0 pgsr02" -> "master-group_stopped_0" [ style = bold] "vip-master_stop_0 pgsr02" -> "vip-master_start_0 pgsr01" [ style = bold] "vip-master_stop_0 pgsr02" [ style=bold color="green" fontcolor="orange"] +"vip-rep_monitor_0 pgsr01" -> "master-group_stopped_0" [ style = bold] +"vip-rep_monitor_0 pgsr01" -> "vip-master_stop_0 pgsr02" [ style = bold] "vip-rep_monitor_0 pgsr01" -> "vip-rep_start_0 pgsr01" [ style = bold] "vip-rep_monitor_0 pgsr01" [ style=bold color="green" fontcolor="black"] "vip-rep_monitor_10000 pgsr01" [ style=bold color="green" fontcolor="black"] "vip-rep_start_0 pgsr01" -> "master-group_running_0" [ style = bold] "vip-rep_start_0 pgsr01" -> "vip-rep_monitor_10000 pgsr01" [ style = bold] "vip-rep_start_0 pgsr01" [ style=bold color="green" fontcolor="black"] "vip-rep_stop_0 pgsr02" -> "master-group_stopped_0" [ style = bold] "vip-rep_stop_0 pgsr02" -> "vip-master_stop_0 pgsr02" [ style = bold] "vip-rep_stop_0 pgsr02" -> "vip-rep_start_0 pgsr01" [ style = bold] "vip-rep_stop_0 pgsr02" [ style=bold color="green" fontcolor="orange"] } diff --git a/cts/scheduler/bug-cl-5247.exp b/cts/scheduler/bug-cl-5247.exp index 9ff4ddf12e..446df3bb71 100644 --- a/cts/scheduler/bug-cl-5247.exp +++ b/cts/scheduler/bug-cl-5247.exp @@ -1,741 +1,750 @@ + + + + + + + + + diff --git a/cts/scheduler/bug-lf-2435.dot b/cts/scheduler/bug-lf-2435.dot index 04074397bf..76d8f48012 100644 --- a/cts/scheduler/bug-lf-2435.dot +++ b/cts/scheduler/bug-lf-2435.dot @@ -1,10 +1,11 @@ digraph "g" { "dummy2_start_0 c21.chepkov.lan" [ style=bold color="green" fontcolor="black" ] "dummy2_stop_0 c20.chepkov.lan" -> "dummy2_start_0 c21.chepkov.lan" [ style = bold] "dummy2_stop_0 c20.chepkov.lan" [ style=bold color="green" fontcolor="black" ] "dummy3_stop_0 c21.chepkov.lan" -> "dummy2_start_0 c21.chepkov.lan" [ style = bold] "dummy3_stop_0 c21.chepkov.lan" [ style=bold color="green" fontcolor="black" ] "dummy4_monitor_0 c19.chepkov.lan" [ style=bold color="green" fontcolor="black" ] "dummy4_monitor_0 c20.chepkov.lan" [ style=bold color="green" fontcolor="black" ] +"dummy4_monitor_0 c21.chepkov.lan" -> "dummy2_start_0 c21.chepkov.lan" [ style = bold] "dummy4_monitor_0 c21.chepkov.lan" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/bug-lf-2435.exp b/cts/scheduler/bug-lf-2435.exp index 387d266000..69a4a18bd5 100644 --- a/cts/scheduler/bug-lf-2435.exp +++ b/cts/scheduler/bug-lf-2435.exp @@ -1,63 +1,66 @@ + + + diff --git a/cts/scheduler/bug-n-387749.dot b/cts/scheduler/bug-n-387749.dot index 4a978ce064..5095351656 100644 --- a/cts/scheduler/bug-n-387749.dot +++ b/cts/scheduler/bug-n-387749.dot @@ -1,64 +1,67 @@ digraph "g" { "export_home_ocfs2:0_monitor_0 power720-1" -> "export_home_ocfs2_clone_set_start_0" [ style = bold] "export_home_ocfs2:0_monitor_0 power720-1" [ style=bold color="green" fontcolor="black" ] "export_home_ocfs2:0_post_notify_start_0 power720-1" -> "export_home_ocfs2_clone_set_confirmed-post_notify_running_0" [ style = bold] "export_home_ocfs2:0_post_notify_start_0 power720-1" [ style=bold color="green" fontcolor="black" ] "export_home_ocfs2:0_start_0 power720-1" -> "export_home_ocfs2_clone_set_running_0" [ style = bold] "export_home_ocfs2:0_start_0 power720-1" [ style=bold color="green" fontcolor="black" ] "export_home_ocfs2:1_monitor_0 power720-1" -> "export_home_ocfs2_clone_set_start_0" [ style = bold] "export_home_ocfs2:1_monitor_0 power720-1" [ style=bold color="green" fontcolor="black" ] "export_home_ocfs2:1_post_notify_start_0 power720-2" -> "export_home_ocfs2_clone_set_confirmed-post_notify_running_0" [ style = bold] "export_home_ocfs2:1_post_notify_start_0 power720-2" [ style=bold color="green" fontcolor="black" ] "export_home_ocfs2:1_pre_notify_start_0 power720-2" -> "export_home_ocfs2_clone_set_confirmed-pre_notify_start_0" [ style = bold] "export_home_ocfs2:1_pre_notify_start_0 power720-2" [ style=bold color="green" fontcolor="black" ] "export_home_ocfs2:2_monitor_0 power720-1" -> "export_home_ocfs2_clone_set_start_0" [ style = bold] "export_home_ocfs2:2_monitor_0 power720-1" [ style=bold color="green" fontcolor="black" ] "export_home_ocfs2_clone_set_confirmed-post_notify_running_0" -> "group_nfs_start_0" [ style = bold] "export_home_ocfs2_clone_set_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "export_home_ocfs2_clone_set_confirmed-pre_notify_start_0" -> "export_home_ocfs2_clone_set_post_notify_running_0" [ style = bold] "export_home_ocfs2_clone_set_confirmed-pre_notify_start_0" -> "export_home_ocfs2_clone_set_start_0" [ style = bold] "export_home_ocfs2_clone_set_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "export_home_ocfs2_clone_set_post_notify_running_0" -> "export_home_ocfs2:0_post_notify_start_0 power720-1" [ style = bold] "export_home_ocfs2_clone_set_post_notify_running_0" -> "export_home_ocfs2:1_post_notify_start_0 power720-2" [ style = bold] "export_home_ocfs2_clone_set_post_notify_running_0" -> "export_home_ocfs2_clone_set_confirmed-post_notify_running_0" [ style = bold] "export_home_ocfs2_clone_set_post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "export_home_ocfs2_clone_set_pre_notify_start_0" -> "export_home_ocfs2:1_pre_notify_start_0 power720-2" [ style = bold] "export_home_ocfs2_clone_set_pre_notify_start_0" -> "export_home_ocfs2_clone_set_confirmed-pre_notify_start_0" [ style = bold] "export_home_ocfs2_clone_set_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "export_home_ocfs2_clone_set_running_0" -> "export_home_ocfs2_clone_set_post_notify_running_0" [ style = bold] "export_home_ocfs2_clone_set_running_0" [ style=bold color="green" fontcolor="orange" ] "export_home_ocfs2_clone_set_start_0" -> "export_home_ocfs2:0_start_0 power720-1" [ style = bold] "export_home_ocfs2_clone_set_start_0" -> "export_home_ocfs2_clone_set_running_0" [ style = bold] "export_home_ocfs2_clone_set_start_0" [ style=bold color="green" fontcolor="orange" ] "group_nfs_running_0" [ style=bold color="green" fontcolor="orange" ] "group_nfs_start_0" -> "group_nfs_running_0" [ style = bold] "group_nfs_start_0" -> "resource_ipaddr1_single_start_0 power720-1" [ style = bold] "group_nfs_start_0" -> "resource_nfsserver_single_start_0 power720-1" [ style = bold] "group_nfs_start_0" [ style=bold color="green" fontcolor="orange" ] "group_nfs_stop_0" -> "group_nfs_stopped_0" [ style = bold] "group_nfs_stop_0" -> "resource_ipaddr1_single_stop_0 power720-2" [ style = bold] "group_nfs_stop_0" -> "resource_nfsserver_single_stop_0 power720-2" [ style = bold] "group_nfs_stop_0" [ style=bold color="green" fontcolor="orange" ] "group_nfs_stopped_0" -> "group_nfs_start_0" [ style = bold] "group_nfs_stopped_0" [ style=bold color="green" fontcolor="orange" ] +"resource_ipaddr1_single_monitor_0 power720-1" -> "group_nfs_stopped_0" [ style = bold] "resource_ipaddr1_single_monitor_0 power720-1" -> "resource_ipaddr1_single_start_0 power720-1" [ style = bold] "resource_ipaddr1_single_monitor_0 power720-1" [ style=bold color="green" fontcolor="black" ] "resource_ipaddr1_single_monitor_5000 power720-1" [ style=bold color="green" fontcolor="black" ] "resource_ipaddr1_single_start_0 power720-1" -> "group_nfs_running_0" [ style = bold] "resource_ipaddr1_single_start_0 power720-1" -> "resource_ipaddr1_single_monitor_5000 power720-1" [ style = bold] "resource_ipaddr1_single_start_0 power720-1" -> "resource_nfsserver_single_start_0 power720-1" [ style = bold] "resource_ipaddr1_single_start_0 power720-1" [ style=bold color="green" fontcolor="black" ] "resource_ipaddr1_single_stop_0 power720-2" -> "group_nfs_stopped_0" [ style = bold] "resource_ipaddr1_single_stop_0 power720-2" -> "resource_ipaddr1_single_start_0 power720-1" [ style = bold] "resource_ipaddr1_single_stop_0 power720-2" [ style=bold color="green" fontcolor="black" ] +"resource_nfsserver_single_monitor_0 power720-1" -> "group_nfs_stopped_0" [ style = bold] +"resource_nfsserver_single_monitor_0 power720-1" -> "resource_ipaddr1_single_stop_0 power720-2" [ style = bold] "resource_nfsserver_single_monitor_0 power720-1" -> "resource_nfsserver_single_start_0 power720-1" [ style = bold] "resource_nfsserver_single_monitor_0 power720-1" [ style=bold color="green" fontcolor="black" ] "resource_nfsserver_single_monitor_15000 power720-1" [ style=bold color="green" fontcolor="black" ] "resource_nfsserver_single_start_0 power720-1" -> "group_nfs_running_0" [ style = bold] "resource_nfsserver_single_start_0 power720-1" -> "resource_nfsserver_single_monitor_15000 power720-1" [ style = bold] "resource_nfsserver_single_start_0 power720-1" [ style=bold color="green" fontcolor="black" ] "resource_nfsserver_single_stop_0 power720-2" -> "group_nfs_stopped_0" [ style = bold] "resource_nfsserver_single_stop_0 power720-2" -> "resource_ipaddr1_single_stop_0 power720-2" [ style = bold] "resource_nfsserver_single_stop_0 power720-2" -> "resource_nfsserver_single_start_0 power720-1" [ style = bold] "resource_nfsserver_single_stop_0 power720-2" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/bug-n-387749.exp b/cts/scheduler/bug-n-387749.exp index 9f1f22d3a3..d6fe8e4415 100644 --- a/cts/scheduler/bug-n-387749.exp +++ b/cts/scheduler/bug-n-387749.exp @@ -1,346 +1,355 @@ + + + + + + + + + diff --git a/cts/scheduler/bug-rh-1097457.dot b/cts/scheduler/bug-rh-1097457.dot index 3dc24b63b0..9658ef6100 100644 --- a/cts/scheduler/bug-rh-1097457.dot +++ b/cts/scheduler/bug-rh-1097457.dot @@ -1,116 +1,124 @@ digraph "g" { "FAKE1-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE1_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE2-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE2_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE3-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE3_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE4-IP_monitor_0 lamaVM1" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] +"FAKE4-IP_monitor_0 lamaVM1" -> "FAKE4_stop_0 lamaVM2" [ style = bold] +"FAKE4-IP_monitor_0 lamaVM1" -> "lamaVM2-G4_stopped_0" [ style = bold] "FAKE4-IP_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] "FAKE4-IP_monitor_0 lamaVM3" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] +"FAKE4-IP_monitor_0 lamaVM3" -> "FAKE4_stop_0 lamaVM2" [ style = bold] +"FAKE4-IP_monitor_0 lamaVM3" -> "lamaVM2-G4_stopped_0" [ style = bold] "FAKE4-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE4-IP_monitor_30000 lamaVM2" [ style=bold color="green" fontcolor="black"] "FAKE4-IP_start_0 lamaVM2" -> "FAKE4-IP_monitor_30000 lamaVM2" [ style = bold] "FAKE4-IP_start_0 lamaVM2" -> "lamaVM2-G4_running_0" [ style = bold] "FAKE4-IP_start_0 lamaVM2" [ style=bold color="green" fontcolor="black"] "FAKE4-IP_stop_0 lamaVM2" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] "FAKE4-IP_stop_0 lamaVM2" -> "FAKE4_stop_0 lamaVM2" [ style = bold] "FAKE4-IP_stop_0 lamaVM2" -> "lamaVM2-G4_stopped_0" [ style = bold] "FAKE4-IP_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] "FAKE4_monitor_0 lamaVM1" -> "FAKE4_start_0 lamaVM2" [ style = bold] +"FAKE4_monitor_0 lamaVM1" -> "lamaVM2-G4_stopped_0" [ style = bold] "FAKE4_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] "FAKE4_monitor_0 lamaVM3" -> "FAKE4_start_0 lamaVM2" [ style = bold] +"FAKE4_monitor_0 lamaVM3" -> "lamaVM2-G4_stopped_0" [ style = bold] "FAKE4_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE4_monitor_30000 lamaVM2" [ style=bold color="green" fontcolor="black"] "FAKE4_start_0 lamaVM2" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] "FAKE4_start_0 lamaVM2" -> "FAKE4_monitor_30000 lamaVM2" [ style = bold] "FAKE4_start_0 lamaVM2" -> "lamaVM2-G4_running_0" [ style = bold] "FAKE4_start_0 lamaVM2" [ style=bold color="green" fontcolor="black"] "FAKE4_stop_0 lamaVM2" -> "FAKE4_start_0 lamaVM2" [ style = bold] "FAKE4_stop_0 lamaVM2" -> "lamaVM2-G4_stopped_0" [ style = bold] "FAKE4_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] "FAKE5-IP_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] "FAKE5-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE5_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] "FAKE6-IP_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] "FAKE6-IP_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FAKE6-clone_running_0" [ style=bold color="green" fontcolor="orange"] "FAKE6-clone_start_0" -> "FAKE6-clone_running_0" [ style = bold] "FAKE6-clone_start_0" -> "FAKE6_start_0 lamaVM2" [ style = bold] "FAKE6-clone_start_0" [ style=bold color="green" fontcolor="orange"] "FAKE6-clone_stop_0" -> "FAKE6-clone_stopped_0" [ style = bold] "FAKE6-clone_stop_0" -> "FAKE6_stop_0 lamaVM2" [ style = bold] "FAKE6-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "FAKE6-clone_stopped_0" -> "FAKE6-clone_start_0" [ style = bold] "FAKE6-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "FAKE6_monitor_30000 lamaVM2" [ style=bold color="green" fontcolor="black"] "FAKE6_start_0 lamaVM2" -> "FAKE6-clone_running_0" [ style = bold] "FAKE6_start_0 lamaVM2" -> "FAKE6_monitor_30000 lamaVM2" [ style = bold] "FAKE6_start_0 lamaVM2" [ style=bold color="green" fontcolor="black"] "FAKE6_stop_0 lamaVM2" -> "FAKE6-clone_stopped_0" [ style = bold] "FAKE6_stop_0 lamaVM2" -> "FAKE6_start_0 lamaVM2" [ style = bold] "FAKE6_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] "FSlun1_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FSlun2_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FSlun3_monitor_0 lamaVM1" -> "FSlun3_start_0 lama2" [ style = bold] +"FSlun3_monitor_0 lamaVM1" -> "VM2_stop_0 lama3" [ style = bold] "FSlun3_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] "FSlun3_monitor_0 lamaVM3" -> "FSlun3_start_0 lama2" [ style = bold] +"FSlun3_monitor_0 lamaVM3" -> "VM2_stop_0 lama3" [ style = bold] "FSlun3_monitor_0 lamaVM3" [ style=bold color="green" fontcolor="black"] "FSlun3_monitor_10000 lama2" [ style=bold color="green" fontcolor="black"] "FSlun3_monitor_10000 lamaVM2" [ style=bold color="green" fontcolor="black"] "FSlun3_start_0 lama2" -> "FSlun3_monitor_10000 lama2" [ style = bold] "FSlun3_start_0 lama2" -> "lamaVM2-G4_start_0" [ style = bold] "FSlun3_start_0 lama2" [ style=bold color="green" fontcolor="black"] "FSlun3_stop_0 lamaVM2" -> "FSlun3_start_0 lama2" [ style = bold] "FSlun3_stop_0 lamaVM2" [ style=bold color="green" fontcolor="orange"] "FSlun4_monitor_0 lamaVM1" [ style=bold color="green" fontcolor="black"] "VM2_monitor_10000 lama3" [ style=bold color="green" fontcolor="black"] "VM2_start_0 lama3" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] "VM2_start_0 lama3" -> "FAKE4_start_0 lamaVM2" [ style = bold] "VM2_start_0 lama3" -> "FAKE6_start_0 lamaVM2" [ style = bold] "VM2_start_0 lama3" -> "FSlun3_start_0 lama2" [ style = bold] "VM2_start_0 lama3" -> "VM2_monitor_10000 lama3" [ style = bold] "VM2_start_0 lama3" -> "lamaVM2_start_0 lama3" [ style = bold] "VM2_start_0 lama3" [ style=bold color="green" fontcolor="black"] "VM2_stop_0 lama3" -> "VM2_start_0 lama3" [ style = bold] "VM2_stop_0 lama3" -> "stonith 'reboot' lamaVM2" [ style = bold] "VM2_stop_0 lama3" [ style=bold color="green" fontcolor="black"] "lamaVM2-G4_running_0" [ style=bold color="green" fontcolor="orange"] "lamaVM2-G4_start_0" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] "lamaVM2-G4_start_0" -> "FAKE4_start_0 lamaVM2" [ style = bold] "lamaVM2-G4_start_0" -> "lamaVM2-G4_running_0" [ style = bold] "lamaVM2-G4_start_0" [ style=bold color="green" fontcolor="orange"] "lamaVM2-G4_stop_0" -> "FAKE4-IP_stop_0 lamaVM2" [ style = bold] "lamaVM2-G4_stop_0" -> "FAKE4_stop_0 lamaVM2" [ style = bold] "lamaVM2-G4_stop_0" -> "lamaVM2-G4_stopped_0" [ style = bold] "lamaVM2-G4_stop_0" [ style=bold color="green" fontcolor="orange"] "lamaVM2-G4_stopped_0" -> "FSlun3_stop_0 lamaVM2" [ style = bold] "lamaVM2-G4_stopped_0" -> "lamaVM2-G4_start_0" [ style = bold] "lamaVM2-G4_stopped_0" [ style=bold color="green" fontcolor="orange"] "lamaVM2_monitor_30000 lama3" [ style=bold color="green" fontcolor="black"] "lamaVM2_start_0 lama3" -> "FAKE4-IP_monitor_30000 lamaVM2" [ style = bold] "lamaVM2_start_0 lama3" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] "lamaVM2_start_0 lama3" -> "FAKE4_monitor_30000 lamaVM2" [ style = bold] "lamaVM2_start_0 lama3" -> "FAKE4_start_0 lamaVM2" [ style = bold] "lamaVM2_start_0 lama3" -> "FAKE6_monitor_30000 lamaVM2" [ style = bold] "lamaVM2_start_0 lama3" -> "FAKE6_start_0 lamaVM2" [ style = bold] "lamaVM2_start_0 lama3" -> "FSlun3_monitor_10000 lamaVM2" [ style = bold] "lamaVM2_start_0 lama3" -> "lamaVM2_monitor_30000 lama3" [ style = bold] "lamaVM2_start_0 lama3" [ style=bold color="green" fontcolor="black"] "lamaVM2_stop_0 lama3" -> "VM2_stop_0 lama3" [ style = bold] "lamaVM2_stop_0 lama3" -> "lamaVM2_start_0 lama3" [ style = bold] "lamaVM2_stop_0 lama3" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' lamaVM2" -> "FAKE4-IP_start_0 lamaVM2" [ style = bold] "stonith 'reboot' lamaVM2" -> "FAKE4-IP_stop_0 lamaVM2" [ style = bold] "stonith 'reboot' lamaVM2" -> "FAKE4_start_0 lamaVM2" [ style = bold] "stonith 'reboot' lamaVM2" -> "FAKE4_stop_0 lamaVM2" [ style = bold] "stonith 'reboot' lamaVM2" -> "FAKE6-clone_stop_0" [ style = bold] "stonith 'reboot' lamaVM2" -> "FAKE6_start_0 lamaVM2" [ style = bold] "stonith 'reboot' lamaVM2" -> "FAKE6_stop_0 lamaVM2" [ style = bold] "stonith 'reboot' lamaVM2" -> "FSlun3_start_0 lama2" [ style = bold] "stonith 'reboot' lamaVM2" -> "FSlun3_stop_0 lamaVM2" [ style = bold] "stonith 'reboot' lamaVM2" -> "VM2_start_0 lama3" [ style = bold] "stonith 'reboot' lamaVM2" -> "lamaVM2-G4_stop_0" [ style = bold] "stonith 'reboot' lamaVM2" -> "lamaVM2_start_0 lama3" [ style = bold] "stonith 'reboot' lamaVM2" [ style=bold color="green" fontcolor="orange"] } diff --git a/cts/scheduler/bug-rh-1097457.exp b/cts/scheduler/bug-rh-1097457.exp index 677c24bcae..0f60fa62b7 100644 --- a/cts/scheduler/bug-rh-1097457.exp +++ b/cts/scheduler/bug-rh-1097457.exp @@ -1,652 +1,676 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/bundle-replicas-change.dot b/cts/scheduler/bundle-replicas-change.dot index f4d9f223aa..39e565a0fd 100644 --- a/cts/scheduler/bundle-replicas-change.dot +++ b/cts/scheduler/bundle-replicas-change.dot @@ -1,105 +1,107 @@ digraph "g" { "httpd-bundle-0_monitor_30000 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-0_start_0 rh74-test" -> "httpd-bundle-0_monitor_30000 rh74-test" [ style = bold] "httpd-bundle-0_start_0 rh74-test" -> "httpd:0_monitor_0 httpd-bundle-0" [ style = bold] "httpd-bundle-0_start_0 rh74-test" -> "httpd:0_monitor_10000 httpd-bundle-0" [ style = bold] "httpd-bundle-0_start_0 rh74-test" -> "httpd:0_start_0 httpd-bundle-0" [ style = bold] "httpd-bundle-0_start_0 rh74-test" -> "httpd_delete_0 httpd-bundle-0" [ style = bold] "httpd-bundle-0_start_0 rh74-test" -> "httpd_monitor_10000 httpd-bundle-0" [ style = dashed] "httpd-bundle-0_start_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-0_stop_0 rh74-test" -> "httpd-bundle-0_start_0 rh74-test" [ style = bold] "httpd-bundle-0_stop_0 rh74-test" -> "httpd-bundle-docker-0_stop_0 rh74-test" [ style = bold] "httpd-bundle-0_stop_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-1_monitor_0 rh74-test" -> "httpd-bundle-1_start_0 rh74-test" [ style = bold] "httpd-bundle-1_monitor_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-1_monitor_30000 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-1_start_0 rh74-test" -> "httpd-bundle-1_monitor_30000 rh74-test" [ style = bold] "httpd-bundle-1_start_0 rh74-test" -> "httpd:1_monitor_10000 httpd-bundle-1" [ style = bold] "httpd-bundle-1_start_0 rh74-test" -> "httpd:1_start_0 httpd-bundle-1" [ style = bold] "httpd-bundle-1_start_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-2_monitor_0 rh74-test" -> "httpd-bundle-2_start_0 rh74-test" [ style = bold] "httpd-bundle-2_monitor_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-2_monitor_30000 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-2_start_0 rh74-test" -> "httpd-bundle-2_monitor_30000 rh74-test" [ style = bold] "httpd-bundle-2_start_0 rh74-test" -> "httpd:2_monitor_10000 httpd-bundle-2" [ style = bold] "httpd-bundle-2_start_0 rh74-test" -> "httpd:2_start_0 httpd-bundle-2" [ style = bold] "httpd-bundle-2_start_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-clone_running_0" -> "httpd-bundle_running_0" [ style = bold] "httpd-bundle-clone_running_0" [ style=bold color="green" fontcolor="orange"] "httpd-bundle-clone_start_0" -> "httpd-bundle-clone_running_0" [ style = bold] "httpd-bundle-clone_start_0" -> "httpd:0_start_0 httpd-bundle-0" [ style = bold] "httpd-bundle-clone_start_0" -> "httpd:1_start_0 httpd-bundle-1" [ style = bold] "httpd-bundle-clone_start_0" -> "httpd:2_start_0 httpd-bundle-2" [ style = bold] "httpd-bundle-clone_start_0" [ style=bold color="green" fontcolor="orange"] "httpd-bundle-docker-0_monitor_60000 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-docker-0_start_0 rh74-test" -> "httpd-bundle-0_start_0 rh74-test" [ style = bold] "httpd-bundle-docker-0_start_0 rh74-test" -> "httpd-bundle-docker-0_monitor_60000 rh74-test" [ style = bold] "httpd-bundle-docker-0_start_0 rh74-test" -> "httpd-bundle_running_0" [ style = bold] "httpd-bundle-docker-0_start_0 rh74-test" -> "httpd:0_start_0 httpd-bundle-0" [ style = bold] "httpd-bundle-docker-0_start_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-docker-0_stop_0 rh74-test" -> "httpd-bundle-docker-0_start_0 rh74-test" [ style = bold] "httpd-bundle-docker-0_stop_0 rh74-test" -> "httpd-bundle_stopped_0" [ style = bold] "httpd-bundle-docker-0_stop_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-docker-1_monitor_0 rh74-test" -> "httpd-bundle-clone_start_0" [ style = bold] "httpd-bundle-docker-1_monitor_0 rh74-test" -> "httpd-bundle-docker-1_start_0 rh74-test" [ style = bold] +"httpd-bundle-docker-1_monitor_0 rh74-test" -> "httpd-bundle_stopped_0" [ style = bold] "httpd-bundle-docker-1_monitor_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-docker-1_monitor_60000 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-docker-1_start_0 rh74-test" -> "httpd-bundle-1_monitor_0 rh74-test" [ style = bold] "httpd-bundle-docker-1_start_0 rh74-test" -> "httpd-bundle-1_start_0 rh74-test" [ style = bold] "httpd-bundle-docker-1_start_0 rh74-test" -> "httpd-bundle-docker-1_monitor_60000 rh74-test" [ style = bold] "httpd-bundle-docker-1_start_0 rh74-test" -> "httpd-bundle_running_0" [ style = bold] "httpd-bundle-docker-1_start_0 rh74-test" -> "httpd:1_start_0 httpd-bundle-1" [ style = bold] "httpd-bundle-docker-1_start_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-docker-2_monitor_0 rh74-test" -> "httpd-bundle-clone_start_0" [ style = bold] "httpd-bundle-docker-2_monitor_0 rh74-test" -> "httpd-bundle-docker-2_start_0 rh74-test" [ style = bold] +"httpd-bundle-docker-2_monitor_0 rh74-test" -> "httpd-bundle_stopped_0" [ style = bold] "httpd-bundle-docker-2_monitor_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-docker-2_monitor_60000 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-docker-2_start_0 rh74-test" -> "httpd-bundle-2_monitor_0 rh74-test" [ style = bold] "httpd-bundle-docker-2_start_0 rh74-test" -> "httpd-bundle-2_start_0 rh74-test" [ style = bold] "httpd-bundle-docker-2_start_0 rh74-test" -> "httpd-bundle-docker-2_monitor_60000 rh74-test" [ style = bold] "httpd-bundle-docker-2_start_0 rh74-test" -> "httpd-bundle_running_0" [ style = bold] "httpd-bundle-docker-2_start_0 rh74-test" -> "httpd:2_start_0 httpd-bundle-2" [ style = bold] "httpd-bundle-docker-2_start_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-ip-192.168.20.189_monitor_0 rh74-test" -> "httpd-bundle-ip-192.168.20.189_start_0 rh74-test" [ style = bold] "httpd-bundle-ip-192.168.20.189_monitor_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-ip-192.168.20.189_monitor_60000 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-ip-192.168.20.189_start_0 rh74-test" -> "httpd-bundle-docker-1_start_0 rh74-test" [ style = bold] "httpd-bundle-ip-192.168.20.189_start_0 rh74-test" -> "httpd-bundle-ip-192.168.20.189_monitor_60000 rh74-test" [ style = bold] "httpd-bundle-ip-192.168.20.189_start_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-ip-192.168.20.190_monitor_0 rh74-test" -> "httpd-bundle-ip-192.168.20.190_start_0 rh74-test" [ style = bold] "httpd-bundle-ip-192.168.20.190_monitor_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-ip-192.168.20.190_monitor_60000 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle-ip-192.168.20.190_start_0 rh74-test" -> "httpd-bundle-docker-2_start_0 rh74-test" [ style = bold] "httpd-bundle-ip-192.168.20.190_start_0 rh74-test" -> "httpd-bundle-ip-192.168.20.190_monitor_60000 rh74-test" [ style = bold] "httpd-bundle-ip-192.168.20.190_start_0 rh74-test" [ style=bold color="green" fontcolor="black"] "httpd-bundle_running_0" [ style=bold color="green" fontcolor="orange"] "httpd-bundle_start_0" -> "httpd-bundle-clone_start_0" [ style = bold] "httpd-bundle_start_0" -> "httpd-bundle-docker-0_start_0 rh74-test" [ style = bold] "httpd-bundle_start_0" -> "httpd-bundle-docker-1_start_0 rh74-test" [ style = bold] "httpd-bundle_start_0" -> "httpd-bundle-docker-2_start_0 rh74-test" [ style = bold] "httpd-bundle_start_0" [ style=bold color="green" fontcolor="orange"] "httpd-bundle_stop_0" -> "httpd-bundle-docker-0_stop_0 rh74-test" [ style = bold] "httpd-bundle_stop_0" [ style=bold color="green" fontcolor="orange"] "httpd-bundle_stopped_0" [ style=bold color="green" fontcolor="orange"] "httpd:0_monitor_0 httpd-bundle-0" -> "httpd-bundle-clone_start_0" [ style = bold] "httpd:0_monitor_0 httpd-bundle-0" [ style=bold color="green" fontcolor="black"] "httpd:0_monitor_10000 httpd-bundle-0" [ style=bold color="green" fontcolor="black"] "httpd:0_start_0 httpd-bundle-0" -> "httpd-bundle-clone_running_0" [ style = bold] "httpd:0_start_0 httpd-bundle-0" -> "httpd:0_monitor_10000 httpd-bundle-0" [ style = bold] "httpd:0_start_0 httpd-bundle-0" -> "httpd:1_start_0 httpd-bundle-1" [ style = bold] "httpd:0_start_0 httpd-bundle-0" [ style=bold color="green" fontcolor="black"] "httpd:1_monitor_10000 httpd-bundle-1" [ style=bold color="green" fontcolor="black"] "httpd:1_start_0 httpd-bundle-1" -> "httpd-bundle-clone_running_0" [ style = bold] "httpd:1_start_0 httpd-bundle-1" -> "httpd:1_monitor_10000 httpd-bundle-1" [ style = bold] "httpd:1_start_0 httpd-bundle-1" -> "httpd:2_start_0 httpd-bundle-2" [ style = bold] "httpd:1_start_0 httpd-bundle-1" [ style=bold color="green" fontcolor="black"] "httpd:2_monitor_10000 httpd-bundle-2" [ style=bold color="green" fontcolor="black"] "httpd:2_start_0 httpd-bundle-2" -> "httpd-bundle-clone_running_0" [ style = bold] "httpd:2_start_0 httpd-bundle-2" -> "httpd:2_monitor_10000 httpd-bundle-2" [ style = bold] "httpd:2_start_0 httpd-bundle-2" [ style=bold color="green" fontcolor="black"] "httpd_delete_0 httpd-bundle-0" [ style=bold color="green" fontcolor="black"] "httpd_monitor_10000 httpd-bundle-0" [ style=dashed color="red" fontcolor="black"] "httpd_stop_0 httpd-bundle-0" -> "httpd-bundle-0_stop_0 rh74-test" [ style = bold] "httpd_stop_0 httpd-bundle-0" -> "httpd_delete_0 httpd-bundle-0" [ style = bold] "httpd_stop_0 httpd-bundle-0" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/bundle-replicas-change.exp b/cts/scheduler/bundle-replicas-change.exp index cf42ab55da..a6712c71cc 100644 --- a/cts/scheduler/bundle-replicas-change.exp +++ b/cts/scheduler/bundle-replicas-change.exp @@ -1,568 +1,574 @@ + + + + + + diff --git a/cts/scheduler/clone-no-shuffle.dot b/cts/scheduler/clone-no-shuffle.dot index 9ac9e1356e..5174ecb91c 100644 --- a/cts/scheduler/clone-no-shuffle.dot +++ b/cts/scheduler/clone-no-shuffle.dot @@ -1,79 +1,81 @@ digraph "g" { "drbd1:0_demote_0 dktest2sles10" -> "drbd1:0_stop_0 dktest2sles10" [ style = bold] "drbd1:0_demote_0 dktest2sles10" -> "ms-drbd1_demoted_0" [ style = bold] "drbd1:0_demote_0 dktest2sles10" [ style=bold color="green" fontcolor="black" ] "drbd1:0_post_notify_demote_0 dktest2sles10" -> "ms-drbd1_confirmed-post_notify_demoted_0" [ style = bold] "drbd1:0_post_notify_demote_0 dktest2sles10" [ style=bold color="green" fontcolor="black" ] "drbd1:0_pre_notify_demote_0 dktest2sles10" -> "ms-drbd1_confirmed-pre_notify_demote_0" [ style = bold] "drbd1:0_pre_notify_demote_0 dktest2sles10" [ style=bold color="green" fontcolor="black" ] "drbd1:0_pre_notify_stop_0 dktest2sles10" -> "ms-drbd1_confirmed-pre_notify_stop_0" [ style = bold] "drbd1:0_pre_notify_stop_0 dktest2sles10" [ style=bold color="green" fontcolor="black" ] "drbd1:0_stop_0 dktest2sles10" -> "ms-drbd1_stopped_0" [ style = bold] "drbd1:0_stop_0 dktest2sles10" [ style=bold color="green" fontcolor="black" ] "drbd1:1_monitor_0 dktest1sles10" -> "ms-drbd1_start_0" [ style = bold] +"drbd1:1_monitor_0 dktest1sles10" -> "ms-drbd1_stopped_0" [ style = bold] "drbd1:1_monitor_0 dktest1sles10" [ style=bold color="green" fontcolor="black" ] "drbd1:1_monitor_11000 dktest1sles10" [ style=bold color="green" fontcolor="black" ] "drbd1:1_post_notify_start_0 dktest1sles10" -> "ms-drbd1_confirmed-post_notify_running_0" [ style = bold] "drbd1:1_post_notify_start_0 dktest1sles10" [ style=bold color="green" fontcolor="black" ] "drbd1:1_start_0 dktest1sles10" -> "drbd1:1_monitor_11000 dktest1sles10" [ style = bold] "drbd1:1_start_0 dktest1sles10" -> "ms-drbd1_running_0" [ style = bold] "drbd1:1_start_0 dktest1sles10" [ style=bold color="green" fontcolor="black" ] "ms-drbd1_confirmed-post_notify_demoted_0" -> "ms-drbd1_pre_notify_start_0" [ style = bold] "ms-drbd1_confirmed-post_notify_demoted_0" -> "ms-drbd1_pre_notify_stop_0" [ style = bold] "ms-drbd1_confirmed-post_notify_demoted_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_confirmed-post_notify_running_0" -> "drbd1:1_monitor_11000 dktest1sles10" [ style = bold] "ms-drbd1_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_confirmed-post_notify_stopped_0" -> "ms-drbd1_pre_notify_start_0" [ style = bold] "ms-drbd1_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_confirmed-pre_notify_demote_0" -> "ms-drbd1_demote_0" [ style = bold] "ms-drbd1_confirmed-pre_notify_demote_0" -> "ms-drbd1_post_notify_demoted_0" [ style = bold] "ms-drbd1_confirmed-pre_notify_demote_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_confirmed-pre_notify_start_0" -> "ms-drbd1_post_notify_running_0" [ style = bold] "ms-drbd1_confirmed-pre_notify_start_0" -> "ms-drbd1_start_0" [ style = bold] "ms-drbd1_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_confirmed-pre_notify_stop_0" -> "ms-drbd1_post_notify_stopped_0" [ style = bold] "ms-drbd1_confirmed-pre_notify_stop_0" -> "ms-drbd1_stop_0" [ style = bold] "ms-drbd1_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_demote_0" -> "drbd1:0_demote_0 dktest2sles10" [ style = bold] "ms-drbd1_demote_0" -> "ms-drbd1_demoted_0" [ style = bold] "ms-drbd1_demote_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_demoted_0" -> "ms-drbd1_post_notify_demoted_0" [ style = bold] "ms-drbd1_demoted_0" -> "ms-drbd1_start_0" [ style = bold] "ms-drbd1_demoted_0" -> "ms-drbd1_stop_0" [ style = bold] "ms-drbd1_demoted_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_post_notify_demoted_0" -> "drbd1:0_post_notify_demote_0 dktest2sles10" [ style = bold] "ms-drbd1_post_notify_demoted_0" -> "ms-drbd1_confirmed-post_notify_demoted_0" [ style = bold] "ms-drbd1_post_notify_demoted_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_post_notify_running_0" -> "drbd1:1_post_notify_start_0 dktest1sles10" [ style = bold] "ms-drbd1_post_notify_running_0" -> "ms-drbd1_confirmed-post_notify_running_0" [ style = bold] "ms-drbd1_post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_post_notify_stopped_0" -> "ms-drbd1_confirmed-post_notify_stopped_0" [ style = bold] "ms-drbd1_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_pre_notify_demote_0" -> "drbd1:0_pre_notify_demote_0 dktest2sles10" [ style = bold] "ms-drbd1_pre_notify_demote_0" -> "ms-drbd1_confirmed-pre_notify_demote_0" [ style = bold] "ms-drbd1_pre_notify_demote_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_pre_notify_start_0" -> "ms-drbd1_confirmed-pre_notify_start_0" [ style = bold] "ms-drbd1_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_pre_notify_stop_0" -> "drbd1:0_pre_notify_stop_0 dktest2sles10" [ style = bold] "ms-drbd1_pre_notify_stop_0" -> "ms-drbd1_confirmed-pre_notify_stop_0" [ style = bold] "ms-drbd1_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_running_0" -> "ms-drbd1_post_notify_running_0" [ style = bold] "ms-drbd1_running_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_start_0" -> "drbd1:1_start_0 dktest1sles10" [ style = bold] "ms-drbd1_start_0" -> "ms-drbd1_running_0" [ style = bold] "ms-drbd1_start_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_stop_0" -> "drbd1:0_stop_0 dktest2sles10" [ style = bold] "ms-drbd1_stop_0" -> "ms-drbd1_stopped_0" [ style = bold] "ms-drbd1_stop_0" [ style=bold color="green" fontcolor="orange" ] "ms-drbd1_stopped_0" -> "ms-drbd1_post_notify_stopped_0" [ style = bold] "ms-drbd1_stopped_0" -> "ms-drbd1_start_0" [ style = bold] "ms-drbd1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "stonith-1_monitor_0 dktest1sles10" -> "stonith-1_start_0 dktest1sles10" [ style = bold] "stonith-1_monitor_0 dktest1sles10" [ style=bold color="green" fontcolor="black" ] "stonith-1_monitor_0 dktest2sles10" -> "stonith-1_start_0 dktest1sles10" [ style = bold] "stonith-1_monitor_0 dktest2sles10" [ style=bold color="green" fontcolor="black" ] "stonith-1_start_0 dktest1sles10" [ style=bold color="green" fontcolor="black" ] +"testip_monitor_0 dktest1sles10" -> "ms-drbd1_demote_0" [ style = bold] "testip_monitor_0 dktest1sles10" [ style=bold color="green" fontcolor="black" ] "testip_stop_0 dktest2sles10" -> "ms-drbd1_demote_0" [ style = bold] "testip_stop_0 dktest2sles10" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/clone-no-shuffle.exp b/cts/scheduler/clone-no-shuffle.exp index 52332b1378..e826242f3f 100644 --- a/cts/scheduler/clone-no-shuffle.exp +++ b/cts/scheduler/clone-no-shuffle.exp @@ -1,433 +1,439 @@ + + + + + + diff --git a/cts/scheduler/group5.dot b/cts/scheduler/group5.dot index 6f524bdfb9..3fe019378e 100644 --- a/cts/scheduler/group5.dot +++ b/cts/scheduler/group5.dot @@ -1,54 +1,60 @@ digraph "g" { "child_rsc1_monitor_0 node2" -> "child_rsc1_start_0 node2" [ style = bold] +"child_rsc1_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1_start_0 node2" -> "child_rsc2_start_0 node2" [ style = bold] "child_rsc1_start_0 node2" -> "rsc2_running_0" [ style = bold] "child_rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1_stop_0 node1" -> "child_rsc1_start_0 node2" [ style = bold] "child_rsc1_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc2_monitor_0 node2" -> "child_rsc1_stop_0 node1" [ style = bold] "child_rsc2_monitor_0 node2" -> "child_rsc2_start_0 node2" [ style = bold] +"child_rsc2_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2_start_0 node2" -> "child_rsc3_start_0 node2" [ style = bold] "child_rsc2_start_0 node2" -> "rsc2_running_0" [ style = bold] "child_rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2_stop_0 node1" -> "child_rsc1_stop_0 node1" [ style = bold] "child_rsc2_stop_0 node1" -> "child_rsc2_start_0 node2" [ style = bold] "child_rsc2_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc3_monitor_0 node2" -> "child_rsc2_stop_0 node1" [ style = bold] "child_rsc3_monitor_0 node2" -> "child_rsc3_start_0 node2" [ style = bold] +"child_rsc3_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc3_start_0 node2" -> "rsc2_running_0" [ style = bold] "child_rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc3_stop_0 node1" -> "child_rsc2_stop_0 node1" [ style = bold] "child_rsc3_stop_0 node1" -> "child_rsc3_start_0 node2" [ style = bold] "child_rsc3_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_start_0 node2" -> "rsc2_start_0" [ style = bold] "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = bold] "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc2_running_0" -> "rsc3_start_0 node2" [ style = bold] "rsc2_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_start_0" -> "child_rsc1_start_0 node2" [ style = bold] "rsc2_start_0" -> "child_rsc2_start_0 node2" [ style = bold] "rsc2_start_0" -> "child_rsc3_start_0 node2" [ style = bold] "rsc2_start_0" -> "rsc2_running_0" [ style = bold] "rsc2_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc1_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "child_rsc2_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "child_rsc3_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" -> "rsc1_stop_0 node1" [ style = bold] "rsc2_stopped_0" -> "rsc2_start_0" [ style = bold] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] +"rsc3_monitor_0 node2" -> "rsc2_stop_0" [ style = bold] "rsc3_monitor_0 node2" -> "rsc3_start_0 node2" [ style = bold] "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc3_stop_0 node1" -> "rsc2_stop_0" [ style = bold] "rsc3_stop_0 node1" -> "rsc3_start_0 node2" [ style = bold] "rsc3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/group5.exp b/cts/scheduler/group5.exp index 270f53356a..d1ec4329ed 100644 --- a/cts/scheduler/group5.exp +++ b/cts/scheduler/group5.exp @@ -1,281 +1,299 @@ + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/group6.dot b/cts/scheduler/group6.dot index 101763f611..a563e059a4 100644 --- a/cts/scheduler/group6.dot +++ b/cts/scheduler/group6.dot @@ -1,80 +1,90 @@ digraph "g" { "child_rsc1_monitor_0 node2" -> "child_rsc1_start_0 node2" [ style = bold] +"child_rsc1_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1_start_0 node2" -> "child_rsc2_start_0 node2" [ style = bold] "child_rsc1_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1_stop_0 node1" -> "child_rsc1_start_0 node2" [ style = bold] "child_rsc1_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc2_monitor_0 node2" -> "child_rsc1_stop_0 node1" [ style = bold] "child_rsc2_monitor_0 node2" -> "child_rsc2_start_0 node2" [ style = bold] +"child_rsc2_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2_start_0 node2" -> "child_rsc3_start_0 node2" [ style = bold] "child_rsc2_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2_stop_0 node1" -> "child_rsc1_stop_0 node1" [ style = bold] "child_rsc2_stop_0 node1" -> "child_rsc2_start_0 node2" [ style = bold] "child_rsc2_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc3_monitor_0 node2" -> "child_rsc2_stop_0 node1" [ style = bold] "child_rsc3_monitor_0 node2" -> "child_rsc3_start_0 node2" [ style = bold] +"child_rsc3_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc3_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc3_stop_0 node1" -> "child_rsc2_stop_0 node1" [ style = bold] "child_rsc3_stop_0 node1" -> "child_rsc3_start_0 node2" [ style = bold] "child_rsc3_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc4_monitor_0 node2" -> "child_rsc4_start_0 node2" [ style = bold] +"child_rsc4_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc4_start_0 node2" -> "child_rsc5_start_0 node2" [ style = bold] "child_rsc4_start_0 node2" -> "rsc2_running_0" [ style = bold] "child_rsc4_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc4_stop_0 node1" -> "child_rsc4_start_0 node2" [ style = bold] "child_rsc4_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc5_monitor_0 node2" -> "child_rsc4_stop_0 node1" [ style = bold] "child_rsc5_monitor_0 node2" -> "child_rsc5_start_0 node2" [ style = bold] +"child_rsc5_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc5_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc5_start_0 node2" -> "child_rsc6_start_0 node2" [ style = bold] "child_rsc5_start_0 node2" -> "rsc2_running_0" [ style = bold] "child_rsc5_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc5_stop_0 node1" -> "child_rsc4_stop_0 node1" [ style = bold] "child_rsc5_stop_0 node1" -> "child_rsc5_start_0 node2" [ style = bold] "child_rsc5_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc5_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc6_monitor_0 node2" -> "child_rsc5_stop_0 node1" [ style = bold] "child_rsc6_monitor_0 node2" -> "child_rsc6_start_0 node2" [ style = bold] +"child_rsc6_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc6_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc6_start_0 node2" -> "rsc2_running_0" [ style = bold] "child_rsc6_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc6_stop_0 node1" -> "child_rsc5_stop_0 node1" [ style = bold] "child_rsc6_stop_0 node1" -> "child_rsc6_start_0 node2" [ style = bold] "child_rsc6_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc6_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc1_running_0" -> "rsc2_start_0" [ style = bold] "rsc1_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_start_0" -> "child_rsc1_start_0 node2" [ style = bold] "rsc1_start_0" -> "child_rsc2_start_0 node2" [ style = bold] "rsc1_start_0" -> "child_rsc3_start_0 node2" [ style = bold] "rsc1_start_0" -> "rsc1_running_0" [ style = bold] "rsc1_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stop_0" -> "child_rsc1_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "child_rsc2_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "child_rsc3_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "rsc1_stopped_0" [ style = bold] "rsc1_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stopped_0" -> "rsc1_start_0" [ style = bold] "rsc1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_start_0" -> "child_rsc4_start_0 node2" [ style = bold] "rsc2_start_0" -> "child_rsc5_start_0 node2" [ style = bold] "rsc2_start_0" -> "child_rsc6_start_0 node2" [ style = bold] "rsc2_start_0" -> "rsc2_running_0" [ style = bold] "rsc2_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc4_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "child_rsc5_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "child_rsc6_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" -> "rsc1_stop_0" [ style = bold] "rsc2_stopped_0" -> "rsc2_start_0" [ style = bold] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/group6.exp b/cts/scheduler/group6.exp index d10d2be97a..08612626e1 100644 --- a/cts/scheduler/group6.exp +++ b/cts/scheduler/group6.exp @@ -1,403 +1,433 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/group9.dot b/cts/scheduler/group9.dot index d3c3d0ef48..610fe9351b 100644 --- a/cts/scheduler/group9.dot +++ b/cts/scheduler/group9.dot @@ -1,70 +1,79 @@ digraph "g" { "bar_running_0" [ style=bold color="green" fontcolor="orange" ] "bar_start_0" -> "bar_running_0" [ style = bold] "bar_start_0" -> "rsc6_start_0 node2" [ style = bold] "bar_start_0" -> "rsc7_start_0 node2" [ style = bold] "bar_start_0" -> "rsc8_start_0 node2" [ style = bold] "bar_start_0" [ style=bold color="green" fontcolor="orange" ] "bar_stop_0" -> "bar_stopped_0" [ style = bold] "bar_stop_0" -> "rsc6_stop_0 node1" [ style = bold] "bar_stop_0" -> "rsc7_stop_0 node1" [ style = bold] "bar_stop_0" -> "rsc8_stop_0 node1" [ style = bold] "bar_stop_0" [ style=bold color="green" fontcolor="orange" ] "bar_stopped_0" -> "bar_start_0" [ style = bold] "bar_stopped_0" [ style=bold color="green" fontcolor="orange" ] "foo_running_0" [ style=bold color="green" fontcolor="orange" ] "foo_start_0" -> "foo_running_0" [ style = bold] "foo_start_0" -> "rsc4_start_0 node1" [ style = bold] "foo_start_0" -> "rsc5_start_0 node1" [ style = bold] "foo_start_0" [ style=bold color="green" fontcolor="orange" ] "foo_stop_0" -> "foo_stopped_0" [ style = bold] "foo_stop_0" -> "rsc4_stop_0 node1" [ style = bold] "foo_stop_0" -> "rsc5_stop_0 node1" [ style = bold] "foo_stop_0" [ style=bold color="green" fontcolor="orange" ] "foo_stopped_0" -> "foo_start_0" [ style = bold] "foo_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] +"rsc3_monitor_0 node2" -> "foo_stopped_0" [ style = bold] "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] +"rsc4_monitor_0 node2" -> "foo_stopped_0" [ style = bold] "rsc4_monitor_0 node2" -> "rsc4_start_0 node1" [ style = bold] "rsc4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc4_start_0 node1" -> "foo_running_0" [ style = bold] "rsc4_start_0 node1" -> "rsc5_start_0 node1" [ style = bold] "rsc4_start_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc4_stop_0 node1" -> "foo_stopped_0" [ style = bold] "rsc4_stop_0 node1" -> "rsc4_start_0 node1" [ style = bold] "rsc4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc5_monitor_0 node2" -> "foo_stopped_0" [ style = bold] +"rsc5_monitor_0 node2" -> "rsc4_stop_0 node1" [ style = bold] "rsc5_monitor_0 node2" -> "rsc5_start_0 node1" [ style = bold] "rsc5_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc5_start_0 node1" -> "foo_running_0" [ style = bold] "rsc5_start_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc5_stop_0 node1" -> "foo_stopped_0" [ style = bold] "rsc5_stop_0 node1" -> "rsc4_stop_0 node1" [ style = bold] "rsc5_stop_0 node1" -> "rsc5_start_0 node1" [ style = bold] "rsc5_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc6_monitor_0 node2" -> "bar_stopped_0" [ style = bold] "rsc6_monitor_0 node2" -> "rsc6_start_0 node2" [ style = bold] "rsc6_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc6_start_0 node2" -> "bar_running_0" [ style = bold] "rsc6_start_0 node2" -> "rsc7_start_0 node2" [ style = bold] "rsc6_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc6_stop_0 node1" -> "bar_stopped_0" [ style = bold] "rsc6_stop_0 node1" -> "rsc6_start_0 node2" [ style = bold] "rsc6_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc7_monitor_0 node2" -> "bar_stopped_0" [ style = bold] +"rsc7_monitor_0 node2" -> "rsc6_stop_0 node1" [ style = bold] "rsc7_monitor_0 node2" -> "rsc7_start_0 node2" [ style = bold] "rsc7_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc7_start_0 node2" -> "bar_running_0" [ style = bold] "rsc7_start_0 node2" -> "rsc8_start_0 node2" [ style = bold] "rsc7_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc7_stop_0 node1" -> "bar_stopped_0" [ style = bold] "rsc7_stop_0 node1" -> "rsc6_stop_0 node1" [ style = bold] "rsc7_stop_0 node1" -> "rsc7_start_0 node2" [ style = bold] "rsc7_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc8_monitor_0 node2" -> "bar_stopped_0" [ style = bold] +"rsc8_monitor_0 node2" -> "rsc7_stop_0 node1" [ style = bold] "rsc8_monitor_0 node2" -> "rsc8_start_0 node2" [ style = bold] "rsc8_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc8_start_0 node2" -> "bar_running_0" [ style = bold] "rsc8_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc8_stop_0 node1" -> "bar_stopped_0" [ style = bold] "rsc8_stop_0 node1" -> "rsc7_stop_0 node1" [ style = bold] "rsc8_stop_0 node1" -> "rsc8_start_0 node2" [ style = bold] "rsc8_stop_0 node1" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/group9.exp b/cts/scheduler/group9.exp index 6b486eaa67..04bb5dc7b4 100644 --- a/cts/scheduler/group9.exp +++ b/cts/scheduler/group9.exp @@ -1,370 +1,397 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/inc2.dot b/cts/scheduler/inc2.dot index 456f21f927..357536f6da 100644 --- a/cts/scheduler/inc2.dot +++ b/cts/scheduler/inc2.dot @@ -1,36 +1,41 @@ digraph "g" { "child_rsc1:0_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:0_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:1_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:2_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc1:2_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_stop_0 node1" -> "child_rsc1:2_start_0 node2" [ style = bold] "child_rsc1:2_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:3_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:3_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:3_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc1:3_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:3_stop_0 node1" -> "child_rsc1:3_start_0 node2" [ style = bold] "child_rsc1:3_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:4_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:4_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:4_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc1_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_start_0" -> "child_rsc1:2_start_0 node2" [ style = bold] "rsc1_start_0" -> "child_rsc1:3_start_0 node2" [ style = bold] "rsc1_start_0" -> "rsc1_running_0" [ style = bold] "rsc1_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stop_0" -> "child_rsc1:2_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "child_rsc1:3_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "child_rsc1:4_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "rsc1_stopped_0" [ style = bold] "rsc1_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stopped_0" -> "rsc1_start_0" [ style = bold] "rsc1_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/inc2.exp b/cts/scheduler/inc2.exp index 2e1ef57252..ce3aa78085 100644 --- a/cts/scheduler/inc2.exp +++ b/cts/scheduler/inc2.exp @@ -1,193 +1,208 @@ + + + + + + + + + + + + + + + diff --git a/cts/scheduler/inc3.dot b/cts/scheduler/inc3.dot index 8e5b06376e..36ab9b45de 100644 --- a/cts/scheduler/inc3.dot +++ b/cts/scheduler/inc3.dot @@ -1,69 +1,79 @@ digraph "g" { "child_rsc1:0_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:0_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:1_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:2_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc1:2_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_stop_0 node1" -> "child_rsc1:2_start_0 node2" [ style = bold] "child_rsc1:2_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:3_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:3_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:3_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc1:3_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:3_stop_0 node1" -> "child_rsc1:3_start_0 node2" [ style = bold] "child_rsc1:3_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:4_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:4_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:4_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:0_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:1_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:1_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:2_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:2_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:3_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:3_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:3_start_0 node1" -> "rsc2_running_0" [ style = bold] "child_rsc2:3_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:3_stop_0 node2" -> "child_rsc2:3_start_0 node1" [ style = bold] "child_rsc2:3_stop_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:3_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2:4_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:4_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:4_start_0 node1" -> "rsc2_running_0" [ style = bold] "child_rsc2:4_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:4_stop_0 node2" -> "child_rsc2:4_start_0 node1" [ style = bold] "child_rsc2:4_stop_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:4_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_running_0" -> "rsc2_start_0" [ style = bold] "rsc1_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_start_0" -> "child_rsc1:2_start_0 node2" [ style = bold] "rsc1_start_0" -> "child_rsc1:3_start_0 node2" [ style = bold] "rsc1_start_0" -> "rsc1_running_0" [ style = bold] "rsc1_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stop_0" -> "child_rsc1:2_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "child_rsc1:3_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "child_rsc1:4_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "rsc1_stopped_0" [ style = bold] "rsc1_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stopped_0" -> "rsc1_start_0" [ style = bold] "rsc1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_start_0" -> "child_rsc2:3_start_0 node1" [ style = bold] "rsc2_start_0" -> "child_rsc2:4_start_0 node1" [ style = bold] "rsc2_start_0" -> "rsc2_running_0" [ style = bold] "rsc2_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc2:3_stop_0 node2" [ style = bold] "rsc2_stop_0" -> "child_rsc2:4_stop_0 node2" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" -> "rsc1_stop_0" [ style = bold] "rsc2_stopped_0" -> "rsc2_start_0" [ style = bold] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/inc3.exp b/cts/scheduler/inc3.exp index 088fab4519..c9966f684a 100644 --- a/cts/scheduler/inc3.exp +++ b/cts/scheduler/inc3.exp @@ -1,374 +1,404 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/inc4.dot b/cts/scheduler/inc4.dot index 250052f29d..5c2ec9c944 100644 --- a/cts/scheduler/inc4.dot +++ b/cts/scheduler/inc4.dot @@ -1,74 +1,87 @@ digraph "g" { "child_rsc1:0_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:0_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:1_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:2_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_start_0 node2" -> "child_rsc1:3_start_0 node2" [ style = bold] "child_rsc1:2_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc1:2_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_stop_0 node1" -> "child_rsc1:2_start_0 node2" [ style = bold] "child_rsc1:2_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc1:3_monitor_0 node2" -> "child_rsc1:2_stop_0 node1" [ style = bold] "child_rsc1:3_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:3_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:3_start_0 node2" -> "rsc1_running_0" [ style = bold] "child_rsc1:3_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:3_stop_0 node1" -> "child_rsc1:2_stop_0 node1" [ style = bold] "child_rsc1:3_stop_0 node1" -> "child_rsc1:3_start_0 node2" [ style = bold] "child_rsc1:3_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc1:4_monitor_0 node2" -> "child_rsc1:3_stop_0 node1" [ style = bold] "child_rsc1:4_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:4_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:4_stop_0 node1" -> "child_rsc1:3_stop_0 node1" [ style = bold] "child_rsc1:4_stop_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:0_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:1_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:1_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:2_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:2_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:3_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:3_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:3_start_0 node1" -> "child_rsc2:4_start_0 node1" [ style = bold] "child_rsc2:3_start_0 node1" -> "rsc2_running_0" [ style = bold] "child_rsc2:3_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:3_stop_0 node2" -> "child_rsc2:3_start_0 node1" [ style = bold] "child_rsc2:3_stop_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:3_stop_0 node2" [ style=bold color="green" fontcolor="black" ] +"child_rsc2:4_monitor_0 node1" -> "child_rsc2:3_stop_0 node2" [ style = bold] "child_rsc2:4_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:4_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:4_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:4_start_0 node1" -> "rsc2_running_0" [ style = bold] "child_rsc2:4_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:4_stop_0 node2" -> "child_rsc2:3_stop_0 node2" [ style = bold] "child_rsc2:4_stop_0 node2" -> "child_rsc2:4_start_0 node1" [ style = bold] "child_rsc2:4_stop_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:4_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_running_0" -> "rsc2_start_0" [ style = bold] "rsc1_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_start_0" -> "child_rsc1:2_start_0 node2" [ style = bold] "rsc1_start_0" -> "child_rsc1:3_start_0 node2" [ style = bold] "rsc1_start_0" -> "rsc1_running_0" [ style = bold] "rsc1_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stop_0" -> "child_rsc1:2_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "child_rsc1:3_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "child_rsc1:4_stop_0 node1" [ style = bold] "rsc1_stop_0" -> "rsc1_stopped_0" [ style = bold] "rsc1_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stopped_0" -> "rsc1_start_0" [ style = bold] "rsc1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_start_0" -> "child_rsc2:3_start_0 node1" [ style = bold] "rsc2_start_0" -> "child_rsc2:4_start_0 node1" [ style = bold] "rsc2_start_0" -> "rsc2_running_0" [ style = bold] "rsc2_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc2:3_stop_0 node2" [ style = bold] "rsc2_stop_0" -> "child_rsc2:4_stop_0 node2" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" -> "rsc1_stop_0" [ style = bold] "rsc2_stopped_0" -> "rsc2_start_0" [ style = bold] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/inc4.exp b/cts/scheduler/inc4.exp index 13ebd6e6ba..72392f8c09 100644 --- a/cts/scheduler/inc4.exp +++ b/cts/scheduler/inc4.exp @@ -1,389 +1,428 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/inc5.dot b/cts/scheduler/inc5.dot index dad7dd3a90..2a3d9f5bc7 100644 --- a/cts/scheduler/inc5.dot +++ b/cts/scheduler/inc5.dot @@ -1,106 +1,122 @@ digraph "g" { "child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_monitor_0 node2" -> "rsc2_start_0" [ style = bold] +"child_rsc2:0_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2:1_monitor_0 node2" -> "rsc2_start_0" [ style = bold] +"child_rsc2:1_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2:1_start_0 node2" -> "rsc2_running_0" [ style = bold] "child_rsc2:1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2:1_stop_0 node1" -> "child_rsc2:1_start_0 node2" [ style = bold] "child_rsc2:1_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:2_monitor_0 node1" -> "rsc2_start_0" [ style = bold] +"child_rsc2:2_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:2_monitor_0 node2" -> "rsc2_start_0" [ style = bold] +"child_rsc2:2_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc3:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc3:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc3:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc3:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc4:0_monitor_0 node2" -> "rsc4_start_0" [ style = bold] +"child_rsc4:0_monitor_0 node2" -> "rsc4_stopped_0" [ style = bold] "child_rsc4:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc4:1_monitor_0 node2" -> "rsc4_start_0" [ style = bold] +"child_rsc4:1_monitor_0 node2" -> "rsc4_stopped_0" [ style = bold] "child_rsc4:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc4:1_start_0 node2" -> "rsc4_running_0" [ style = bold] "child_rsc4:1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc4:1_stop_0 node1" -> "child_rsc4:1_start_0 node2" [ style = bold] "child_rsc4:1_stop_0 node1" -> "rsc4_stopped_0" [ style = bold] "child_rsc4:1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc4:2_monitor_0 node1" -> "rsc4_start_0" [ style = bold] +"child_rsc4:2_monitor_0 node1" -> "rsc4_stopped_0" [ style = bold] "child_rsc4:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc4:2_monitor_0 node2" -> "rsc4_start_0" [ style = bold] +"child_rsc4:2_monitor_0 node2" -> "rsc4_stopped_0" [ style = bold] "child_rsc4:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc5:0_monitor_0 node1" -> "rsc5_start_0" [ style = bold] +"child_rsc5:0_monitor_0 node1" -> "rsc5_stopped_0" [ style = bold] "child_rsc5:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc5:1_monitor_0 node1" -> "rsc5_start_0" [ style = bold] +"child_rsc5:1_monitor_0 node1" -> "rsc5_stopped_0" [ style = bold] "child_rsc5:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc5:1_start_0 node1" -> "rsc5_running_0" [ style = bold] "child_rsc5:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc5:1_stop_0 node2" -> "child_rsc5:1_start_0 node1" [ style = bold] "child_rsc5:1_stop_0 node2" -> "rsc5_stopped_0" [ style = bold] "child_rsc5:1_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc5:2_monitor_0 node1" -> "rsc5_start_0" [ style = bold] +"child_rsc5:2_monitor_0 node1" -> "rsc5_stopped_0" [ style = bold] "child_rsc5:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc5:2_monitor_0 node2" -> "rsc5_start_0" [ style = bold] +"child_rsc5:2_monitor_0 node2" -> "rsc5_stopped_0" [ style = bold] "child_rsc5:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc6:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc6:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc6:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc6:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc7:0_monitor_0 node1" -> "rsc7_start_0" [ style = bold] +"child_rsc7:0_monitor_0 node1" -> "rsc7_stopped_0" [ style = bold] "child_rsc7:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc7:1_monitor_0 node1" -> "rsc7_start_0" [ style = bold] +"child_rsc7:1_monitor_0 node1" -> "rsc7_stopped_0" [ style = bold] "child_rsc7:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc7:1_start_0 node1" -> "rsc7_running_0" [ style = bold] "child_rsc7:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc7:1_stop_0 node2" -> "child_rsc7:1_start_0 node1" [ style = bold] "child_rsc7:1_stop_0 node2" -> "rsc7_stopped_0" [ style = bold] "child_rsc7:1_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc7:2_monitor_0 node1" -> "rsc7_start_0" [ style = bold] +"child_rsc7:2_monitor_0 node1" -> "rsc7_stopped_0" [ style = bold] "child_rsc7:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc7:2_monitor_0 node2" -> "rsc7_start_0" [ style = bold] +"child_rsc7:2_monitor_0 node2" -> "rsc7_stopped_0" [ style = bold] "child_rsc7:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc8:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc8:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc8:2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc8:2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_start_0" -> "child_rsc2:1_start_0 node2" [ style = bold] "rsc2_start_0" -> "rsc2_running_0" [ style = bold] "rsc2_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc2:1_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" -> "rsc2_start_0" [ style = bold] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc4_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc4_start_0" -> "child_rsc4:1_start_0 node2" [ style = bold] "rsc4_start_0" -> "rsc4_running_0" [ style = bold] "rsc4_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc4_stop_0" -> "child_rsc4:1_stop_0 node1" [ style = bold] "rsc4_stop_0" -> "rsc4_stopped_0" [ style = bold] "rsc4_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc4_stopped_0" -> "rsc4_start_0" [ style = bold] "rsc4_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc5_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc5_start_0" -> "child_rsc5:1_start_0 node1" [ style = bold] "rsc5_start_0" -> "rsc5_running_0" [ style = bold] "rsc5_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc5_stop_0" -> "child_rsc5:1_stop_0 node2" [ style = bold] "rsc5_stop_0" -> "rsc5_stopped_0" [ style = bold] "rsc5_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc5_stopped_0" -> "rsc5_start_0" [ style = bold] "rsc5_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc7_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc7_start_0" -> "child_rsc7:1_start_0 node1" [ style = bold] "rsc7_start_0" -> "rsc7_running_0" [ style = bold] "rsc7_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc7_stop_0" -> "child_rsc7:1_stop_0 node2" [ style = bold] "rsc7_stop_0" -> "rsc7_stopped_0" [ style = bold] "rsc7_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc7_stopped_0" -> "rsc7_start_0" [ style = bold] "rsc7_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/inc5.exp b/cts/scheduler/inc5.exp index 3bdb11a18c..63a9d8febb 100644 --- a/cts/scheduler/inc5.exp +++ b/cts/scheduler/inc5.exp @@ -1,654 +1,702 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/master-7.dot b/cts/scheduler/master-7.dot index 18502fdf79..3ce5779b06 100644 --- a/cts/scheduler/master-7.dot +++ b/cts/scheduler/master-7.dot @@ -1,104 +1,117 @@ digraph "g" { "DcIPaddr_monitor_5000 c001n03" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_start_0 c001n03" -> "DcIPaddr_monitor_5000 c001n03" [ style = bold] "DcIPaddr_start_0 c001n03" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_stop_0 c001n01" -> "DcIPaddr_start_0 c001n03" [ style = bold] "DcIPaddr_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stop_0" -> "DoFencing_stopped_0" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:0_stop_0 c001n01" [ style = bold] "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] "child_DoFencing:0_stop_0 c001n01" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] +"child_DoFencing:2_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 c001n08" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "group-1_running_0" [ style=bold color="green" fontcolor="orange" ] "group-1_start_0" -> "group-1_running_0" [ style = bold] "group-1_start_0" -> "heartbeat_192.168.100.182_start_0 c001n02" [ style = bold] "group-1_start_0" -> "ocf_192.168.100.181_start_0 c001n02" [ style = bold] "group-1_start_0" -> "ocf_192.168.100.183_start_0 c001n02" [ style = bold] "group-1_start_0" [ style=bold color="green" fontcolor="orange" ] "group-1_stop_0" -> "group-1_stopped_0" [ style = bold] "group-1_stop_0" -> "heartbeat_192.168.100.182_stop_0 c001n03" [ style = bold] "group-1_stop_0" -> "ocf_192.168.100.181_stop_0 c001n03" [ style = bold] "group-1_stop_0" -> "ocf_192.168.100.183_stop_0 c001n03" [ style = bold] "group-1_stop_0" [ style=bold color="green" fontcolor="orange" ] "group-1_stopped_0" -> "group-1_start_0" [ style = bold] "group-1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "heartbeat_192.168.100.182_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black" ] "heartbeat_192.168.100.182_start_0 c001n02" -> "group-1_running_0" [ style = bold] "heartbeat_192.168.100.182_start_0 c001n02" -> "heartbeat_192.168.100.182_monitor_5000 c001n02" [ style = bold] "heartbeat_192.168.100.182_start_0 c001n02" -> "ocf_192.168.100.183_start_0 c001n02" [ style = bold] "heartbeat_192.168.100.182_start_0 c001n02" [ style=bold color="green" fontcolor="black" ] "heartbeat_192.168.100.182_stop_0 c001n03" -> "group-1_stopped_0" [ style = bold] "heartbeat_192.168.100.182_stop_0 c001n03" -> "heartbeat_192.168.100.182_start_0 c001n02" [ style = bold] "heartbeat_192.168.100.182_stop_0 c001n03" -> "ocf_192.168.100.181_stop_0 c001n03" [ style = bold] "heartbeat_192.168.100.182_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "lsb_dummy_monitor_5000 c001n08" [ style=bold color="green" fontcolor="black" ] "lsb_dummy_start_0 c001n08" -> "lsb_dummy_monitor_5000 c001n08" [ style = bold] "lsb_dummy_start_0 c001n08" [ style=bold color="green" fontcolor="black" ] "lsb_dummy_stop_0 c001n02" -> "lsb_dummy_start_0 c001n08" [ style = bold] "lsb_dummy_stop_0 c001n02" [ style=bold color="green" fontcolor="black" ] "master_rsc_1_demote_0" -> "master_rsc_1_demoted_0" [ style = bold] "master_rsc_1_demote_0" -> "ocf_msdummy:0_demote_0 c001n01" [ style = bold] "master_rsc_1_demote_0" [ style=bold color="green" fontcolor="orange" ] "master_rsc_1_demoted_0" -> "master_rsc_1_stop_0" [ style = bold] "master_rsc_1_demoted_0" [ style=bold color="green" fontcolor="orange" ] "master_rsc_1_stop_0" -> "master_rsc_1_stopped_0" [ style = bold] "master_rsc_1_stop_0" -> "ocf_msdummy:0_stop_0 c001n01" [ style = bold] "master_rsc_1_stop_0" -> "ocf_msdummy:4_stop_0 c001n01" [ style = bold] "master_rsc_1_stop_0" [ style=bold color="green" fontcolor="orange" ] "master_rsc_1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "ocf_192.168.100.181_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.181_start_0 c001n02" -> "group-1_running_0" [ style = bold] "ocf_192.168.100.181_start_0 c001n02" -> "heartbeat_192.168.100.182_start_0 c001n02" [ style = bold] "ocf_192.168.100.181_start_0 c001n02" -> "ocf_192.168.100.181_monitor_5000 c001n02" [ style = bold] "ocf_192.168.100.181_start_0 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.181_stop_0 c001n03" -> "group-1_stopped_0" [ style = bold] "ocf_192.168.100.181_stop_0 c001n03" -> "ocf_192.168.100.181_start_0 c001n02" [ style = bold] "ocf_192.168.100.181_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.183_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.183_start_0 c001n02" -> "group-1_running_0" [ style = bold] "ocf_192.168.100.183_start_0 c001n02" -> "ocf_192.168.100.183_monitor_5000 c001n02" [ style = bold] "ocf_192.168.100.183_start_0 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.183_stop_0 c001n03" -> "group-1_stopped_0" [ style = bold] "ocf_192.168.100.183_stop_0 c001n03" -> "heartbeat_192.168.100.182_stop_0 c001n03" [ style = bold] "ocf_192.168.100.183_stop_0 c001n03" -> "ocf_192.168.100.183_start_0 c001n02" [ style = bold] "ocf_192.168.100.183_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:0_demote_0 c001n01" -> "master_rsc_1_demoted_0" [ style = bold] "ocf_msdummy:0_demote_0 c001n01" -> "ocf_msdummy:0_stop_0 c001n01" [ style = bold] "ocf_msdummy:0_demote_0 c001n01" [ style=bold color="green" fontcolor="orange" ] "ocf_msdummy:0_stop_0 c001n01" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:0_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] +"ocf_msdummy:4_monitor_0 c001n02" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:4_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +"ocf_msdummy:4_monitor_0 c001n03" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:4_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] +"ocf_msdummy:4_monitor_0 c001n08" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:4_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:4_stop_0 c001n01" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:4_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] +"ocf_msdummy:5_monitor_0 c001n02" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:5_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +"ocf_msdummy:5_monitor_0 c001n08" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:5_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] +"ocf_msdummy:6_monitor_0 c001n03" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:6_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] +"ocf_msdummy:6_monitor_0 c001n08" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:6_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] +"ocf_msdummy:7_monitor_0 c001n02" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:7_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +"ocf_msdummy:7_monitor_0 c001n03" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:7_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_monitor_5000 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_start_0 c001n03" -> "rsc_c001n01_monitor_5000 c001n03" [ style = bold] "rsc_c001n01_start_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_stop_0 c001n01" -> "rsc_c001n01_start_0 c001n03" [ style = bold] "rsc_c001n01_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] "stonith 'reboot' c001n01" -> "DcIPaddr_start_0 c001n03" [ style = bold] "stonith 'reboot' c001n01" -> "DcIPaddr_stop_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" -> "heartbeat_192.168.100.182_start_0 c001n02" [ style = bold] "stonith 'reboot' c001n01" -> "lsb_dummy_start_0 c001n08" [ style = bold] "stonith 'reboot' c001n01" -> "master_rsc_1_stop_0" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_192.168.100.181_start_0 c001n02" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_192.168.100.183_start_0 c001n02" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_msdummy:0_demote_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_msdummy:0_stop_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_msdummy:4_stop_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" -> "rsc_c001n01_start_0 c001n03" [ style = bold] "stonith 'reboot' c001n01" -> "rsc_c001n01_stop_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/master-7.exp b/cts/scheduler/master-7.exp index daec4c2dfc..37254434fb 100644 --- a/cts/scheduler/master-7.exp +++ b/cts/scheduler/master-7.exp @@ -1,604 +1,643 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/master-8.dot b/cts/scheduler/master-8.dot index 55ff8eac20..56ef186a81 100644 --- a/cts/scheduler/master-8.dot +++ b/cts/scheduler/master-8.dot @@ -1,124 +1,138 @@ digraph "g" { "DcIPaddr_monitor_5000 c001n03" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_start_0 c001n03" -> "DcIPaddr_monitor_5000 c001n03" [ style = bold] "DcIPaddr_start_0 c001n03" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_stop_0 c001n01" -> "DcIPaddr_start_0 c001n03" [ style = bold] "DcIPaddr_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stop_0" -> "DoFencing_stopped_0" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:0_stop_0 c001n01" [ style = bold] "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] "child_DoFencing:0_stop_0 c001n01" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:0_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] +"child_DoFencing:2_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 c001n08" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n02" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "group-1_running_0" [ style=bold color="green" fontcolor="orange" ] "group-1_start_0" -> "group-1_running_0" [ style = bold] "group-1_start_0" -> "heartbeat_192.168.100.182_start_0 c001n02" [ style = bold] "group-1_start_0" -> "ocf_192.168.100.181_start_0 c001n02" [ style = bold] "group-1_start_0" -> "ocf_192.168.100.183_start_0 c001n02" [ style = bold] "group-1_start_0" [ style=bold color="green" fontcolor="orange" ] "group-1_stop_0" -> "group-1_stopped_0" [ style = bold] "group-1_stop_0" -> "heartbeat_192.168.100.182_stop_0 c001n03" [ style = bold] "group-1_stop_0" -> "ocf_192.168.100.181_stop_0 c001n03" [ style = bold] "group-1_stop_0" -> "ocf_192.168.100.183_stop_0 c001n03" [ style = bold] "group-1_stop_0" [ style=bold color="green" fontcolor="orange" ] "group-1_stopped_0" -> "group-1_start_0" [ style = bold] "group-1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "heartbeat_192.168.100.182_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black" ] "heartbeat_192.168.100.182_start_0 c001n02" -> "group-1_running_0" [ style = bold] "heartbeat_192.168.100.182_start_0 c001n02" -> "heartbeat_192.168.100.182_monitor_5000 c001n02" [ style = bold] "heartbeat_192.168.100.182_start_0 c001n02" -> "ocf_192.168.100.183_start_0 c001n02" [ style = bold] "heartbeat_192.168.100.182_start_0 c001n02" [ style=bold color="green" fontcolor="black" ] "heartbeat_192.168.100.182_stop_0 c001n03" -> "group-1_stopped_0" [ style = bold] "heartbeat_192.168.100.182_stop_0 c001n03" -> "heartbeat_192.168.100.182_start_0 c001n02" [ style = bold] "heartbeat_192.168.100.182_stop_0 c001n03" -> "ocf_192.168.100.181_stop_0 c001n03" [ style = bold] "heartbeat_192.168.100.182_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "lsb_dummy_monitor_5000 c001n08" [ style=bold color="green" fontcolor="black" ] "lsb_dummy_start_0 c001n08" -> "lsb_dummy_monitor_5000 c001n08" [ style = bold] "lsb_dummy_start_0 c001n08" [ style=bold color="green" fontcolor="black" ] "lsb_dummy_stop_0 c001n02" -> "lsb_dummy_start_0 c001n08" [ style = bold] "lsb_dummy_stop_0 c001n02" [ style=bold color="green" fontcolor="black" ] "master_rsc_1_demote_0" -> "master_rsc_1_demoted_0" [ style = bold] "master_rsc_1_demote_0" -> "ocf_msdummy:0_demote_0 c001n01" [ style = bold] "master_rsc_1_demote_0" [ style=bold color="green" fontcolor="orange" ] "master_rsc_1_demoted_0" -> "master_rsc_1_start_0" [ style = bold] "master_rsc_1_demoted_0" -> "master_rsc_1_stop_0" [ style = bold] "master_rsc_1_demoted_0" [ style=bold color="green" fontcolor="orange" ] "master_rsc_1_running_0" [ style=bold color="green" fontcolor="orange" ] "master_rsc_1_start_0" -> "master_rsc_1_running_0" [ style = bold] "master_rsc_1_start_0" -> "ocf_msdummy:0_start_0 c001n03" [ style = bold] "master_rsc_1_start_0" [ style=bold color="green" fontcolor="orange" ] "master_rsc_1_stop_0" -> "master_rsc_1_stopped_0" [ style = bold] "master_rsc_1_stop_0" -> "ocf_msdummy:0_stop_0 c001n01" [ style = bold] "master_rsc_1_stop_0" [ style=bold color="green" fontcolor="orange" ] "master_rsc_1_stopped_0" -> "master_rsc_1_start_0" [ style = bold] "master_rsc_1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "ocf_192.168.100.181_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.181_start_0 c001n02" -> "group-1_running_0" [ style = bold] "ocf_192.168.100.181_start_0 c001n02" -> "heartbeat_192.168.100.182_start_0 c001n02" [ style = bold] "ocf_192.168.100.181_start_0 c001n02" -> "ocf_192.168.100.181_monitor_5000 c001n02" [ style = bold] "ocf_192.168.100.181_start_0 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.181_stop_0 c001n03" -> "group-1_stopped_0" [ style = bold] "ocf_192.168.100.181_stop_0 c001n03" -> "ocf_192.168.100.181_start_0 c001n02" [ style = bold] "ocf_192.168.100.181_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.183_monitor_5000 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.183_start_0 c001n02" -> "group-1_running_0" [ style = bold] "ocf_192.168.100.183_start_0 c001n02" -> "ocf_192.168.100.183_monitor_5000 c001n02" [ style = bold] "ocf_192.168.100.183_start_0 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_192.168.100.183_stop_0 c001n03" -> "group-1_stopped_0" [ style = bold] "ocf_192.168.100.183_stop_0 c001n03" -> "heartbeat_192.168.100.182_stop_0 c001n03" [ style = bold] "ocf_192.168.100.183_stop_0 c001n03" -> "ocf_192.168.100.183_start_0 c001n02" [ style = bold] "ocf_192.168.100.183_stop_0 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:0_demote_0 c001n01" -> "master_rsc_1_demoted_0" [ style = bold] "ocf_msdummy:0_demote_0 c001n01" -> "ocf_msdummy:0_monitor_5000 c001n03" [ style = bold] "ocf_msdummy:0_demote_0 c001n01" -> "ocf_msdummy:0_stop_0 c001n01" [ style = bold] "ocf_msdummy:0_demote_0 c001n01" [ style=bold color="green" fontcolor="orange" ] "ocf_msdummy:0_monitor_5000 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:0_start_0 c001n03" -> "master_rsc_1_running_0" [ style = bold] "ocf_msdummy:0_start_0 c001n03" -> "ocf_msdummy:0_monitor_5000 c001n03" [ style = bold] "ocf_msdummy:0_start_0 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:0_stop_0 c001n01" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:0_stop_0 c001n01" -> "ocf_msdummy:0_start_0 c001n03" [ style = bold] "ocf_msdummy:0_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] "ocf_msdummy:4_monitor_0 c001n02" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:4_monitor_0 c001n02" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:4_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:4_monitor_0 c001n03" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:4_monitor_0 c001n03" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:4_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:4_monitor_0 c001n08" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:4_monitor_0 c001n08" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:4_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:5_monitor_0 c001n02" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:5_monitor_0 c001n02" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:5_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:5_monitor_0 c001n03" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:5_monitor_0 c001n03" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:5_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:5_monitor_0 c001n08" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:5_monitor_0 c001n08" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:5_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:6_monitor_0 c001n03" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:6_monitor_0 c001n03" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:6_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:6_monitor_0 c001n08" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:6_monitor_0 c001n08" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:6_monitor_0 c001n08" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:7_monitor_0 c001n02" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:7_monitor_0 c001n02" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:7_monitor_0 c001n02" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:7_monitor_0 c001n03" -> "master_rsc_1_start_0" [ style = bold] +"ocf_msdummy:7_monitor_0 c001n03" -> "master_rsc_1_stopped_0" [ style = bold] "ocf_msdummy:7_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_monitor_5000 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_start_0 c001n03" -> "rsc_c001n01_monitor_5000 c001n03" [ style = bold] "rsc_c001n01_start_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_stop_0 c001n01" -> "rsc_c001n01_start_0 c001n03" [ style = bold] "rsc_c001n01_stop_0 c001n01" [ style=bold color="green" fontcolor="orange" ] "stonith 'reboot' c001n01" -> "DcIPaddr_start_0 c001n03" [ style = bold] "stonith 'reboot' c001n01" -> "DcIPaddr_stop_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" -> "heartbeat_192.168.100.182_start_0 c001n02" [ style = bold] "stonith 'reboot' c001n01" -> "lsb_dummy_start_0 c001n08" [ style = bold] "stonith 'reboot' c001n01" -> "master_rsc_1_stop_0" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_192.168.100.181_start_0 c001n02" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_192.168.100.183_start_0 c001n02" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_msdummy:0_demote_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_msdummy:0_start_0 c001n03" [ style = bold] "stonith 'reboot' c001n01" -> "ocf_msdummy:0_stop_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" -> "rsc_c001n01_start_0 c001n03" [ style = bold] "stonith 'reboot' c001n01" -> "rsc_c001n01_stop_0 c001n01" [ style = bold] "stonith 'reboot' c001n01" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/master-8.exp b/cts/scheduler/master-8.exp index ea863849b4..bb411dc4d1 100644 --- a/cts/scheduler/master-8.exp +++ b/cts/scheduler/master-8.exp @@ -1,690 +1,732 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/master-9.dot b/cts/scheduler/master-9.dot index 16e756e98f..370c214e09 100644 --- a/cts/scheduler/master-9.dot +++ b/cts/scheduler/master-9.dot @@ -1,38 +1,43 @@ digraph "g" { "DcIPaddr_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "DoFencing_stop_0" -> "DoFencing_stopped_0" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:1_stop_0 ibm1" [ style = bold] "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] +"child_DoFencing:1_monitor_0 va1" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:1_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:1_stop_0 ibm1" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:1_stop_0 ibm1" -> "do_shutdown ibm1" [ style = bold] "child_DoFencing:1_stop_0 ibm1" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 ibm1" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:2_monitor_0 va1" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 ibm1" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 va1" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] "do_shutdown ibm1" [ style=bold color="green" fontcolor="black" ] "heartbeat_127.0.0.12_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "lsb_dummy_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "ocf_127.0.0.11_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "ocf_127.0.0.13_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "ocf_msdummy:0_monitor_6000 va1" [ style=dashed color="red" fontcolor="black"] "ocf_msdummy:1_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "ocf_msdummy:2_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:2_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:3_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:3_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:4_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:4_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:5_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:5_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:6_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:6_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:7_monitor_0 ibm1" [ style=bold color="green" fontcolor="black" ] "ocf_msdummy:7_monitor_0 va1" [ style=bold color="green" fontcolor="black" ] "rsc_ibm1_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "rsc_sgi2_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "rsc_test02_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] "rsc_va1_monitor_5000 va1" [ style=dashed color="red" fontcolor="black" ] } diff --git a/cts/scheduler/master-9.exp b/cts/scheduler/master-9.exp index a5997c9672..8baf3f4433 100644 --- a/cts/scheduler/master-9.exp +++ b/cts/scheduler/master-9.exp @@ -1,207 +1,222 @@ + + + + + + + + + + + + + + + diff --git a/cts/scheduler/notify-0.dot b/cts/scheduler/notify-0.dot index b0a1355aaf..691cc68426 100644 --- a/cts/scheduler/notify-0.dot +++ b/cts/scheduler/notify-0.dot @@ -1,17 +1,18 @@ digraph "g" { "child_rsc1:1_monitor_0 node1" -> "rsc1_start_0" [ style = bold] "child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_start_0 node1" -> "rsc1_running_0" [ style = bold] "child_rsc1:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:0_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc2:1_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc1_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_start_0" -> "child_rsc1:1_start_0 node1" [ style = bold] "rsc1_start_0" -> "rsc1_running_0" [ style = bold] "rsc1_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc2:0_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/notify-0.exp b/cts/scheduler/notify-0.exp index d837373968..098c0a94a5 100644 --- a/cts/scheduler/notify-0.exp +++ b/cts/scheduler/notify-0.exp @@ -1,96 +1,99 @@ + + + diff --git a/cts/scheduler/notify-1.dot b/cts/scheduler/notify-1.dot index d2f618382d..ecdf8baed3 100644 --- a/cts/scheduler/notify-1.dot +++ b/cts/scheduler/notify-1.dot @@ -1,47 +1,48 @@ digraph "g" { "child_rsc1:0_post_notify_start_0 node1" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "child_rsc1:0_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:0_pre_notify_start_0 node1" -> "rsc1_confirmed-pre_notify_start_0" [ style = bold] "child_rsc1:0_pre_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_monitor_0 node1" -> "rsc1_start_0" [ style = bold] "child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_post_notify_start_0 node1" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "child_rsc1:1_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_start_0 node1" -> "rsc1_running_0" [ style = bold] "child_rsc1:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_pre_notify_stop_0 node1" -> "rsc2_confirmed-pre_notify_stop_0" [ style = bold] "child_rsc2:0_pre_notify_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:0_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc2:1_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc1_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_confirmed-pre_notify_start_0" -> "rsc1_post_notify_running_0" [ style = bold] "rsc1_confirmed-pre_notify_start_0" -> "rsc1_start_0" [ style = bold] "rsc1_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_post_notify_running_0" -> "child_rsc1:0_post_notify_start_0 node1" [ style = bold] "rsc1_post_notify_running_0" -> "child_rsc1:1_post_notify_start_0 node1" [ style = bold] "rsc1_post_notify_running_0" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "rsc1_post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_pre_notify_start_0" -> "child_rsc1:0_pre_notify_start_0 node1" [ style = bold] "rsc1_pre_notify_start_0" -> "rsc1_confirmed-pre_notify_start_0" [ style = bold] "rsc1_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_running_0" -> "rsc1_post_notify_running_0" [ style = bold] "rsc1_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_start_0" -> "child_rsc1:1_start_0 node1" [ style = bold] "rsc1_start_0" -> "rsc1_running_0" [ style = bold] "rsc1_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_confirmed-pre_notify_stop_0" -> "rsc2_post_notify_stopped_0" [ style = bold] "rsc2_confirmed-pre_notify_stop_0" -> "rsc2_stop_0" [ style = bold] "rsc2_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_post_notify_stopped_0" -> "rsc2_confirmed-post_notify_stopped_0" [ style = bold] "rsc2_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_pre_notify_stop_0" -> "child_rsc2:0_pre_notify_stop_0 node1" [ style = bold] "rsc2_pre_notify_stop_0" -> "rsc2_confirmed-pre_notify_stop_0" [ style = bold] "rsc2_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc2:0_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" -> "rsc2_post_notify_stopped_0" [ style = bold] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/notify-1.exp b/cts/scheduler/notify-1.exp index 077c2997ed..93ddefe1fc 100644 --- a/cts/scheduler/notify-1.exp +++ b/cts/scheduler/notify-1.exp @@ -1,262 +1,265 @@ + + + diff --git a/cts/scheduler/notify-2.dot b/cts/scheduler/notify-2.dot index d2f618382d..ecdf8baed3 100644 --- a/cts/scheduler/notify-2.dot +++ b/cts/scheduler/notify-2.dot @@ -1,47 +1,48 @@ digraph "g" { "child_rsc1:0_post_notify_start_0 node1" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "child_rsc1:0_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:0_pre_notify_start_0 node1" -> "rsc1_confirmed-pre_notify_start_0" [ style = bold] "child_rsc1:0_pre_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_monitor_0 node1" -> "rsc1_start_0" [ style = bold] "child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_post_notify_start_0 node1" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "child_rsc1:1_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_start_0 node1" -> "rsc1_running_0" [ style = bold] "child_rsc1:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_pre_notify_stop_0 node1" -> "rsc2_confirmed-pre_notify_stop_0" [ style = bold] "child_rsc2:0_pre_notify_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:0_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc2:1_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc1_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_confirmed-pre_notify_start_0" -> "rsc1_post_notify_running_0" [ style = bold] "rsc1_confirmed-pre_notify_start_0" -> "rsc1_start_0" [ style = bold] "rsc1_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_post_notify_running_0" -> "child_rsc1:0_post_notify_start_0 node1" [ style = bold] "rsc1_post_notify_running_0" -> "child_rsc1:1_post_notify_start_0 node1" [ style = bold] "rsc1_post_notify_running_0" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "rsc1_post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_pre_notify_start_0" -> "child_rsc1:0_pre_notify_start_0 node1" [ style = bold] "rsc1_pre_notify_start_0" -> "rsc1_confirmed-pre_notify_start_0" [ style = bold] "rsc1_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_running_0" -> "rsc1_post_notify_running_0" [ style = bold] "rsc1_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_start_0" -> "child_rsc1:1_start_0 node1" [ style = bold] "rsc1_start_0" -> "rsc1_running_0" [ style = bold] "rsc1_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_confirmed-pre_notify_stop_0" -> "rsc2_post_notify_stopped_0" [ style = bold] "rsc2_confirmed-pre_notify_stop_0" -> "rsc2_stop_0" [ style = bold] "rsc2_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_post_notify_stopped_0" -> "rsc2_confirmed-post_notify_stopped_0" [ style = bold] "rsc2_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_pre_notify_stop_0" -> "child_rsc2:0_pre_notify_stop_0 node1" [ style = bold] "rsc2_pre_notify_stop_0" -> "rsc2_confirmed-pre_notify_stop_0" [ style = bold] "rsc2_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc2:0_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" -> "rsc2_post_notify_stopped_0" [ style = bold] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/notify-2.exp b/cts/scheduler/notify-2.exp index 077c2997ed..93ddefe1fc 100644 --- a/cts/scheduler/notify-2.exp +++ b/cts/scheduler/notify-2.exp @@ -1,262 +1,265 @@ + + + diff --git a/cts/scheduler/notify-3.dot b/cts/scheduler/notify-3.dot index 66341d0f34..a0e1c0b347 100644 --- a/cts/scheduler/notify-3.dot +++ b/cts/scheduler/notify-3.dot @@ -1,78 +1,83 @@ digraph "g" { "child_rsc1:0_monitor_0 node2" -> "rsc1_start_0" [ style = bold] +"child_rsc1:0_monitor_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:0_post_notify_start_0 node1" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "child_rsc1:0_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:0_post_notify_stop_0 node1" -> "rsc1_confirmed-post_notify_stopped_0" [ style = bold] "child_rsc1:0_post_notify_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:0_pre_notify_start_0 node1" -> "rsc1_confirmed-pre_notify_start_0" [ style = bold] "child_rsc1:0_pre_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:0_pre_notify_stop_0 node1" -> "rsc1_confirmed-pre_notify_stop_0" [ style = bold] "child_rsc1:0_pre_notify_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_monitor_0 node1" -> "rsc1_start_0" [ style = bold] +"child_rsc1:1_monitor_0 node1" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_post_notify_start_0 node1" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "child_rsc1:1_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_pre_notify_stop_0 node2" -> "rsc1_confirmed-pre_notify_stop_0" [ style = bold] "child_rsc1:1_pre_notify_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_start_0 node1" -> "rsc1_running_0" [ style = bold] "child_rsc1:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc1:1_stop_0 node2" -> "child_rsc1:1_start_0 node1" [ style = bold] "child_rsc1:1_stop_0 node2" -> "rsc1_stopped_0" [ style = bold] "child_rsc1:1_stop_0 node2" [ style=bold color="green" fontcolor="black" ] +"child_rsc2:0_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:0_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_pre_notify_stop_0 node1" -> "rsc2_confirmed-pre_notify_stop_0" [ style = bold] "child_rsc2:0_pre_notify_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "child_rsc2:0_stop_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:0_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc2:1_monitor_0 node1" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] +"child_rsc2:1_monitor_0 node2" -> "rsc2_stopped_0" [ style = bold] "child_rsc2:1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_confirmed-post_notify_stopped_0" -> "rsc1_pre_notify_start_0" [ style = bold] "rsc1_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_confirmed-pre_notify_start_0" -> "rsc1_post_notify_running_0" [ style = bold] "rsc1_confirmed-pre_notify_start_0" -> "rsc1_start_0" [ style = bold] "rsc1_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_confirmed-pre_notify_stop_0" -> "rsc1_post_notify_stopped_0" [ style = bold] "rsc1_confirmed-pre_notify_stop_0" -> "rsc1_stop_0" [ style = bold] "rsc1_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_post_notify_running_0" -> "child_rsc1:0_post_notify_start_0 node1" [ style = bold] "rsc1_post_notify_running_0" -> "child_rsc1:1_post_notify_start_0 node1" [ style = bold] "rsc1_post_notify_running_0" -> "rsc1_confirmed-post_notify_running_0" [ style = bold] "rsc1_post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_post_notify_stopped_0" -> "child_rsc1:0_post_notify_stop_0 node1" [ style = bold] "rsc1_post_notify_stopped_0" -> "rsc1_confirmed-post_notify_stopped_0" [ style = bold] "rsc1_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_pre_notify_start_0" -> "child_rsc1:0_pre_notify_start_0 node1" [ style = bold] "rsc1_pre_notify_start_0" -> "rsc1_confirmed-pre_notify_start_0" [ style = bold] "rsc1_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_pre_notify_stop_0" -> "child_rsc1:0_pre_notify_stop_0 node1" [ style = bold] "rsc1_pre_notify_stop_0" -> "child_rsc1:1_pre_notify_stop_0 node2" [ style = bold] "rsc1_pre_notify_stop_0" -> "rsc1_confirmed-pre_notify_stop_0" [ style = bold] "rsc1_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_running_0" -> "rsc1_post_notify_running_0" [ style = bold] "rsc1_running_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_start_0" -> "child_rsc1:1_start_0 node1" [ style = bold] "rsc1_start_0" -> "rsc1_running_0" [ style = bold] "rsc1_start_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stop_0" -> "child_rsc1:1_stop_0 node2" [ style = bold] "rsc1_stop_0" -> "rsc1_stopped_0" [ style = bold] "rsc1_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc1_stopped_0" -> "rsc1_post_notify_stopped_0" [ style = bold] "rsc1_stopped_0" -> "rsc1_start_0" [ style = bold] "rsc1_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_confirmed-pre_notify_stop_0" -> "rsc2_post_notify_stopped_0" [ style = bold] "rsc2_confirmed-pre_notify_stop_0" -> "rsc2_stop_0" [ style = bold] "rsc2_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_post_notify_stopped_0" -> "rsc2_confirmed-post_notify_stopped_0" [ style = bold] "rsc2_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_pre_notify_stop_0" -> "child_rsc2:0_pre_notify_stop_0 node1" [ style = bold] "rsc2_pre_notify_stop_0" -> "rsc2_confirmed-pre_notify_stop_0" [ style = bold] "rsc2_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stop_0" -> "child_rsc2:0_stop_0 node1" [ style = bold] "rsc2_stop_0" -> "rsc2_stopped_0" [ style = bold] "rsc2_stop_0" [ style=bold color="green" fontcolor="orange" ] "rsc2_stopped_0" -> "rsc2_post_notify_stopped_0" [ style = bold] "rsc2_stopped_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/notify-3.exp b/cts/scheduler/notify-3.exp index 5eb3fff3cf..e2954ddf53 100644 --- a/cts/scheduler/notify-3.exp +++ b/cts/scheduler/notify-3.exp @@ -1,437 +1,452 @@ + + + + + + + + + + + + + + + diff --git a/cts/scheduler/novell-252693-3.dot b/cts/scheduler/novell-252693-3.dot index d1c72bbc7b..9bbeb92a80 100644 --- a/cts/scheduler/novell-252693-3.dot +++ b/cts/scheduler/novell-252693-3.dot @@ -1,155 +1,157 @@ digraph "g" { "configstoreclone:0_monitor_20000 node2" [ style=bold color="green" fontcolor="black"] "configstoreclone:0_post_notify_start_0 node2" -> "configstorecloneset_confirmed-post_notify_running_0" [ style = bold] "configstoreclone:0_post_notify_start_0 node2" [ style=bold color="green" fontcolor="black" ] "configstoreclone:0_pre_notify_start_0 node2" -> "configstorecloneset_confirmed-pre_notify_start_0" [ style = bold] "configstoreclone:0_pre_notify_start_0 node2" [ style=bold color="green" fontcolor="black" ] "configstoreclone:1_monitor_0 node1" -> "configstorecloneset_start_0" [ style = bold] "configstoreclone:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "configstoreclone:1_monitor_20000 node1" [ style=bold color="green" fontcolor="black" ] "configstoreclone:1_post_notify_start_0 node1" -> "configstorecloneset_confirmed-post_notify_running_0" [ style = bold] "configstoreclone:1_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "configstoreclone:1_start_0 node1" -> "configstoreclone:1_monitor_20000 node1" [ style = bold] "configstoreclone:1_start_0 node1" -> "configstorecloneset_running_0" [ style = bold] "configstoreclone:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "configstorecloneset_confirmed-post_notify_running_0" -> "configstoreclone:0_monitor_20000 node2" [ style = bold] "configstorecloneset_confirmed-post_notify_running_0" -> "configstoreclone:1_monitor_20000 node1" [ style = bold] "configstorecloneset_confirmed-post_notify_running_0" -> "sles10_migrate_to_0 node2" [ style = bold] "configstorecloneset_confirmed-post_notify_running_0" -> "sles10_start_0 node1" [ style = bold] "configstorecloneset_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "configstorecloneset_confirmed-pre_notify_start_0" -> "configstorecloneset_post_notify_running_0" [ style = bold] "configstorecloneset_confirmed-pre_notify_start_0" -> "configstorecloneset_start_0" [ style = bold] "configstorecloneset_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "configstorecloneset_post_notify_running_0" -> "configstoreclone:0_post_notify_start_0 node2" [ style = bold] "configstorecloneset_post_notify_running_0" -> "configstoreclone:1_post_notify_start_0 node1" [ style = bold] "configstorecloneset_post_notify_running_0" -> "configstorecloneset_confirmed-post_notify_running_0" [ style = bold] "configstorecloneset_post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "configstorecloneset_pre_notify_start_0" -> "configstoreclone:0_pre_notify_start_0 node2" [ style = bold] "configstorecloneset_pre_notify_start_0" -> "configstorecloneset_confirmed-pre_notify_start_0" [ style = bold] "configstorecloneset_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "configstorecloneset_running_0" -> "configstorecloneset_post_notify_running_0" [ style = bold] "configstorecloneset_running_0" [ style=bold color="green" fontcolor="orange" ] "configstorecloneset_start_0" -> "configstoreclone:1_start_0 node1" [ style = bold] "configstorecloneset_start_0" -> "configstorecloneset_running_0" [ style = bold] "configstorecloneset_start_0" [ style=bold color="green" fontcolor="orange" ] "evmsclone:0_post_notify_start_0 node2" -> "evmscloneset_confirmed-post_notify_running_0" [ style = bold] "evmsclone:0_post_notify_start_0 node2" [ style=bold color="green" fontcolor="black" ] "evmsclone:0_pre_notify_start_0 node2" -> "evmscloneset_confirmed-pre_notify_start_0" [ style = bold] "evmsclone:0_pre_notify_start_0 node2" [ style=bold color="green" fontcolor="black" ] "evmsclone:1_monitor_0 node1" -> "evmscloneset_start_0" [ style = bold] "evmsclone:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "evmsclone:1_post_notify_start_0 node1" -> "evmscloneset_confirmed-post_notify_running_0" [ style = bold] "evmsclone:1_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "evmsclone:1_start_0 node1" -> "evmscloneset_running_0" [ style = bold] "evmsclone:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "evmscloneset_confirmed-post_notify_running_0" -> "configstorecloneset_start_0" [ style = bold] "evmscloneset_confirmed-post_notify_running_0" -> "imagestorecloneset_start_0" [ style = bold] "evmscloneset_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "evmscloneset_confirmed-pre_notify_start_0" -> "evmscloneset_post_notify_running_0" [ style = bold] "evmscloneset_confirmed-pre_notify_start_0" -> "evmscloneset_start_0" [ style = bold] "evmscloneset_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "evmscloneset_post_notify_running_0" -> "evmsclone:0_post_notify_start_0 node2" [ style = bold] "evmscloneset_post_notify_running_0" -> "evmsclone:1_post_notify_start_0 node1" [ style = bold] "evmscloneset_post_notify_running_0" -> "evmscloneset_confirmed-post_notify_running_0" [ style = bold] "evmscloneset_post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "evmscloneset_pre_notify_start_0" -> "evmsclone:0_pre_notify_start_0 node2" [ style = bold] "evmscloneset_pre_notify_start_0" -> "evmscloneset_confirmed-pre_notify_start_0" [ style = bold] "evmscloneset_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "evmscloneset_running_0" -> "evmscloneset_post_notify_running_0" [ style = bold] "evmscloneset_running_0" [ style=bold color="green" fontcolor="orange" ] "evmscloneset_start_0" -> "evmsclone:1_start_0 node1" [ style = bold] "evmscloneset_start_0" -> "evmscloneset_running_0" [ style = bold] "evmscloneset_start_0" [ style=bold color="green" fontcolor="orange" ] "evmsdclone:0_monitor_5000 node2" [ style=bold color="green" fontcolor="black"] "evmsdclone:1_monitor_0 node1" -> "evmsdcloneset_start_0" [ style = bold] "evmsdclone:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "evmsdclone:1_monitor_5000 node1" [ style=bold color="green" fontcolor="black" ] "evmsdclone:1_start_0 node1" -> "evmsdclone:1_monitor_5000 node1" [ style = bold] "evmsdclone:1_start_0 node1" -> "evmsdcloneset_running_0" [ style = bold] "evmsdclone:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "evmsdcloneset_running_0" -> "evmscloneset_start_0" [ style = bold] "evmsdcloneset_running_0" [ style=bold color="green" fontcolor="orange" ] "evmsdcloneset_start_0" -> "evmsdclone:1_start_0 node1" [ style = bold] "evmsdcloneset_start_0" -> "evmsdcloneset_running_0" [ style = bold] "evmsdcloneset_start_0" [ style=bold color="green" fontcolor="orange" ] "imagestoreclone:0_monitor_0 node1" -> "imagestorecloneset_start_0" [ style = bold] +"imagestoreclone:0_monitor_0 node1" -> "imagestorecloneset_stopped_0" [ style = bold] "imagestoreclone:0_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "imagestoreclone:0_monitor_20000 node1" [ style=bold color="green" fontcolor="black" ] "imagestoreclone:0_post_notify_start_0 node1" -> "imagestorecloneset_confirmed-post_notify_running_0" [ style = bold] "imagestoreclone:0_post_notify_start_0 node1" [ style=bold color="green" fontcolor="black" ] "imagestoreclone:0_pre_notify_stop_0 node2" -> "imagestorecloneset_confirmed-pre_notify_stop_0" [ style = bold] "imagestoreclone:0_pre_notify_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "imagestoreclone:0_start_0 node1" -> "imagestoreclone:0_monitor_20000 node1" [ style = bold] "imagestoreclone:0_start_0 node1" -> "imagestorecloneset_running_0" [ style = bold] "imagestoreclone:0_start_0 node1" [ style=bold color="green" fontcolor="black" ] "imagestoreclone:0_stop_0 node2" -> "imagestoreclone:0_start_0 node1" [ style = bold] "imagestoreclone:0_stop_0 node2" -> "imagestorecloneset_stopped_0" [ style = bold] "imagestoreclone:0_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "imagestoreclone:1_monitor_20000 node2" [ style=bold color="green" fontcolor="black" ] "imagestoreclone:1_post_notify_start_0 node2" -> "imagestorecloneset_confirmed-post_notify_running_0" [ style = bold] "imagestoreclone:1_post_notify_start_0 node2" [ style=bold color="green" fontcolor="black" ] "imagestoreclone:1_start_0 node2" -> "imagestoreclone:1_monitor_20000 node2" [ style = bold] "imagestoreclone:1_start_0 node2" -> "imagestorecloneset_running_0" [ style = bold] "imagestoreclone:1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "imagestorecloneset_confirmed-post_notify_running_0" -> "imagestoreclone:0_monitor_20000 node1" [ style = bold] "imagestorecloneset_confirmed-post_notify_running_0" -> "imagestoreclone:1_monitor_20000 node2" [ style = bold] "imagestorecloneset_confirmed-post_notify_running_0" -> "sles10_migrate_to_0 node2" [ style = bold] "imagestorecloneset_confirmed-post_notify_running_0" -> "sles10_start_0 node1" [ style = bold] "imagestorecloneset_confirmed-post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_confirmed-post_notify_stopped_0" -> "imagestorecloneset_pre_notify_start_0" [ style = bold] "imagestorecloneset_confirmed-post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_confirmed-pre_notify_start_0" -> "imagestorecloneset_post_notify_running_0" [ style = bold] "imagestorecloneset_confirmed-pre_notify_start_0" -> "imagestorecloneset_start_0" [ style = bold] "imagestorecloneset_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_confirmed-pre_notify_stop_0" -> "imagestorecloneset_post_notify_stopped_0" [ style = bold] "imagestorecloneset_confirmed-pre_notify_stop_0" -> "imagestorecloneset_stop_0" [ style = bold] "imagestorecloneset_confirmed-pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_post_notify_running_0" -> "imagestoreclone:0_post_notify_start_0 node1" [ style = bold] "imagestorecloneset_post_notify_running_0" -> "imagestoreclone:1_post_notify_start_0 node2" [ style = bold] "imagestorecloneset_post_notify_running_0" -> "imagestorecloneset_confirmed-post_notify_running_0" [ style = bold] "imagestorecloneset_post_notify_running_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_post_notify_stopped_0" -> "imagestorecloneset_confirmed-post_notify_stopped_0" [ style = bold] "imagestorecloneset_post_notify_stopped_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_pre_notify_start_0" -> "imagestorecloneset_confirmed-pre_notify_start_0" [ style = bold] "imagestorecloneset_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_pre_notify_stop_0" -> "imagestoreclone:0_pre_notify_stop_0 node2" [ style = bold] "imagestorecloneset_pre_notify_stop_0" -> "imagestorecloneset_confirmed-pre_notify_stop_0" [ style = bold] "imagestorecloneset_pre_notify_stop_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_running_0" -> "imagestorecloneset_post_notify_running_0" [ style = bold] "imagestorecloneset_running_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_start_0" -> "imagestoreclone:0_start_0 node1" [ style = bold] "imagestorecloneset_start_0" -> "imagestoreclone:1_start_0 node2" [ style = bold] "imagestorecloneset_start_0" -> "imagestorecloneset_running_0" [ style = bold] "imagestorecloneset_start_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_stop_0" -> "imagestoreclone:0_stop_0 node2" [ style = bold] "imagestorecloneset_stop_0" -> "imagestorecloneset_stopped_0" [ style = bold] "imagestorecloneset_stop_0" [ style=bold color="green" fontcolor="orange" ] "imagestorecloneset_stopped_0" -> "imagestorecloneset_post_notify_stopped_0" [ style = bold] "imagestorecloneset_stopped_0" -> "imagestorecloneset_start_0" [ style = bold] "imagestorecloneset_stopped_0" [ style=bold color="green" fontcolor="orange" ] "sles10_migrate_from_0 node1" -> "sles10_start_0 node1" [ style = bold] "sles10_migrate_from_0 node1" -> "sles10_stop_0 node2" [ style = bold] "sles10_migrate_from_0 node1" [ style=bold color="green" fontcolor="black"] "sles10_migrate_to_0 node2" -> "sles10_migrate_from_0 node1" [ style = bold] "sles10_migrate_to_0 node2" [ style=bold color="green" fontcolor="black"] +"sles10_monitor_0 node1" -> "imagestorecloneset_stop_0" [ style = bold] "sles10_monitor_0 node1" -> "sles10_migrate_to_0 node2" [ style = bold] "sles10_monitor_0 node1" -> "sles10_start_0 node1" [ style = bold] "sles10_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "sles10_monitor_10000 node1" [ style=bold color="green" fontcolor="black" ] "sles10_start_0 node1" -> "sles10_monitor_10000 node1" [ style = bold] "sles10_start_0 node1" [ style=bold color="green" fontcolor="orange"] "sles10_stop_0 node2" -> "imagestorecloneset_stop_0" [ style = dashed] "sles10_stop_0 node2" -> "sles10_start_0 node1" [ style = bold] "sles10_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "stonithclone:0_monitor_5000 node2" [ style=bold color="green" fontcolor="black"] "stonithclone:1_monitor_0 node1" -> "stonithcloneset_start_0" [ style = bold] "stonithclone:1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "stonithclone:1_monitor_5000 node1" [ style=bold color="green" fontcolor="black" ] "stonithclone:1_start_0 node1" -> "stonithclone:1_monitor_5000 node1" [ style = bold] "stonithclone:1_start_0 node1" -> "stonithcloneset_running_0" [ style = bold] "stonithclone:1_start_0 node1" [ style=bold color="green" fontcolor="black" ] "stonithcloneset_running_0" [ style=bold color="green" fontcolor="orange" ] "stonithcloneset_start_0" -> "stonithclone:1_start_0 node1" [ style = bold] "stonithcloneset_start_0" -> "stonithcloneset_running_0" [ style = bold] "stonithcloneset_start_0" [ style=bold color="green" fontcolor="orange" ] } diff --git a/cts/scheduler/novell-252693-3.exp b/cts/scheduler/novell-252693-3.exp index 69066d2de9..276d06a39d 100644 --- a/cts/scheduler/novell-252693-3.exp +++ b/cts/scheduler/novell-252693-3.exp @@ -1,859 +1,865 @@ + + + + + + diff --git a/cts/scheduler/order-first-probes.dot b/cts/scheduler/order-first-probes.dot new file mode 100644 index 0000000000..1251318171 --- /dev/null +++ b/cts/scheduler/order-first-probes.dot @@ -0,0 +1,28 @@ +digraph "g" { +"grpDummy_running_0" [ style=bold color="green" fontcolor="orange"] +"grpDummy_start_0" -> "grpDummy_running_0" [ style = bold] +"grpDummy_start_0" -> "prmDummy1_start_0 rh72-02" [ style = bold] +"grpDummy_start_0" -> "prmDummy2_start_0 rh72-02" [ style = bold] +"grpDummy_start_0" [ style=bold color="green" fontcolor="orange"] +"grpDummy_stop_0" -> "grpDummy_stopped_0" [ style = bold] +"grpDummy_stop_0" -> "prmDummy1_stop_0 rh72-01" [ style = bold] +"grpDummy_stop_0" [ style=bold color="green" fontcolor="orange"] +"grpDummy_stopped_0" -> "grpDummy_start_0" [ style = bold] +"grpDummy_stopped_0" [ style=bold color="green" fontcolor="orange"] +"prmDummy1_monitor_10000 rh72-02" [ style=bold color="green" fontcolor="black"] +"prmDummy1_start_0 rh72-02" -> "grpDummy_running_0" [ style = bold] +"prmDummy1_start_0 rh72-02" -> "prmDummy1_monitor_10000 rh72-02" [ style = bold] +"prmDummy1_start_0 rh72-02" -> "prmDummy2_start_0 rh72-02" [ style = bold] +"prmDummy1_start_0 rh72-02" [ style=bold color="green" fontcolor="black"] +"prmDummy1_stop_0 rh72-01" -> "grpDummy_stopped_0" [ style = bold] +"prmDummy1_stop_0 rh72-01" -> "prmDummy1_start_0 rh72-02" [ style = bold] +"prmDummy1_stop_0 rh72-01" [ style=bold color="green" fontcolor="black"] +"prmDummy2_monitor_0 rh72-01" -> "grpDummy_stopped_0" [ style = bold] +"prmDummy2_monitor_0 rh72-01" -> "prmDummy1_stop_0 rh72-01" [ style = bold] +"prmDummy2_monitor_0 rh72-01" -> "prmDummy2_start_0 rh72-02" [ style = bold] +"prmDummy2_monitor_0 rh72-01" [ style=bold color="green" fontcolor="black"] +"prmDummy2_monitor_10000 rh72-02" [ style=bold color="green" fontcolor="black"] +"prmDummy2_start_0 rh72-02" -> "grpDummy_running_0" [ style = bold] +"prmDummy2_start_0 rh72-02" -> "prmDummy2_monitor_10000 rh72-02" [ style = bold] +"prmDummy2_start_0 rh72-02" [ style=bold color="green" fontcolor="black"] +} diff --git a/cts/scheduler/order-first-probes.exp b/cts/scheduler/order-first-probes.exp new file mode 100644 index 0000000000..3ab8801b88 --- /dev/null +++ b/cts/scheduler/order-first-probes.exp @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/order-first-probes.scores b/cts/scheduler/order-first-probes.scores new file mode 100644 index 0000000000..555caf487b --- /dev/null +++ b/cts/scheduler/order-first-probes.scores @@ -0,0 +1,12 @@ +Allocation scores: +Using the original execution date of: 2016-10-05 07:32:34Z +group_color: grpDummy allocation score on rh72-01: 200 +group_color: grpDummy allocation score on rh72-02: 100 +group_color: prmDummy1 allocation score on rh72-01: INFINITY +group_color: prmDummy1 allocation score on rh72-02: 100 +group_color: prmDummy2 allocation score on rh72-01: 0 +group_color: prmDummy2 allocation score on rh72-02: 0 +native_color: prmDummy1 allocation score on rh72-01: -INFINITY +native_color: prmDummy1 allocation score on rh72-02: 100 +native_color: prmDummy2 allocation score on rh72-01: -INFINITY +native_color: prmDummy2 allocation score on rh72-02: 0 diff --git a/cts/scheduler/order-first-probes.summary b/cts/scheduler/order-first-probes.summary new file mode 100644 index 0000000000..54b5bc19de --- /dev/null +++ b/cts/scheduler/order-first-probes.summary @@ -0,0 +1,35 @@ +Using the original execution date of: 2016-10-05 07:32:34Z + +Current cluster status: +Node rh72-01 (3232238257): standby +Online: [ rh72-02 ] + + Resource Group: grpDummy + prmDummy1 (ocf::pacemaker:Dummy1): Started rh72-01 + prmDummy2 (ocf::pacemaker:Dummy2): Stopped + +Transition Summary: + * Move prmDummy1 ( rh72-01 -> rh72-02 ) + * Start prmDummy2 ( rh72-02 ) + +Executing cluster transition: + * Pseudo action: grpDummy_stop_0 + * Resource action: prmDummy2 monitor on rh72-01 + * Resource action: prmDummy1 stop on rh72-01 + * Pseudo action: grpDummy_stopped_0 + * Pseudo action: grpDummy_start_0 + * Resource action: prmDummy1 start on rh72-02 + * Resource action: prmDummy2 start on rh72-02 + * Pseudo action: grpDummy_running_0 + * Resource action: prmDummy1 monitor=10000 on rh72-02 + * Resource action: prmDummy2 monitor=10000 on rh72-02 +Using the original execution date of: 2016-10-05 07:32:34Z + +Revised cluster status: +Node rh72-01 (3232238257): standby +Online: [ rh72-02 ] + + Resource Group: grpDummy + prmDummy1 (ocf::pacemaker:Dummy1): Started rh72-02 + prmDummy2 (ocf::pacemaker:Dummy2): Started rh72-02 + diff --git a/cts/scheduler/order-first-probes.xml b/cts/scheduler/order-first-probes.xml new file mode 100644 index 0000000000..6fe1be2a2b --- /dev/null +++ b/cts/scheduler/order-first-probes.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/order3.dot b/cts/scheduler/order3.dot index dd4e4276d5..9c94c40e83 100644 --- a/cts/scheduler/order3.dot +++ b/cts/scheduler/order3.dot @@ -1,28 +1,31 @@ digraph "g" { "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_start_0 node2" -> "rsc2_start_0 node2" [ style = bold] "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = bold] "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc2_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] +"rsc2_monitor_0 node2" -> "rsc4_stop_0 node1" [ style = bold] "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_start_0 node2" -> "rsc3_start_0 node2" [ style = bold] "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_stop_0 node1" -> "rsc1_stop_0 node1" [ style = bold] "rsc2_stop_0 node1" -> "rsc2_start_0 node2" [ style = bold] "rsc2_stop_0 node1" -> "rsc4_stop_0 node1" [ style = bold] "rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc3_monitor_0 node2" -> "rsc2_stop_0 node1" [ style = bold] "rsc3_monitor_0 node2" -> "rsc3_start_0 node2" [ style = bold] "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc3_stop_0 node1" -> "rsc2_stop_0 node1" [ style = bold] "rsc3_stop_0 node1" -> "rsc3_start_0 node2" [ style = bold] "rsc3_stop_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc4_monitor_0 node2" -> "rsc4_start_0 node2" [ style = bold] "rsc4_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc4_start_0 node2" -> "rsc2_start_0 node2" [ style = bold] "rsc4_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc4_stop_0 node1" -> "rsc4_start_0 node2" [ style = bold] "rsc4_stop_0 node1" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/order3.exp b/cts/scheduler/order3.exp index 991c839970..a4e5f7d73b 100644 --- a/cts/scheduler/order3.exp +++ b/cts/scheduler/order3.exp @@ -1,159 +1,168 @@ + + + + + + + + + diff --git a/cts/scheduler/rec-node-11.dot b/cts/scheduler/rec-node-11.dot index 6749d23272..3f48ea8a29 100644 --- a/cts/scheduler/rec-node-11.dot +++ b/cts/scheduler/rec-node-11.dot @@ -1,45 +1,48 @@ digraph "g" { "group1_running_0" [ style=bold color="green" fontcolor="orange" ] "group1_start_0" -> "group1_running_0" [ style = bold] "group1_start_0" -> "rsc1_start_0 node2" [ style = bold] "group1_start_0" -> "rsc2_start_0 node2" [ style = bold] "group1_start_0" [ style=bold color="green" fontcolor="orange" ] "group1_stop_0" -> "group1_stopped_0" [ style = bold] "group1_stop_0" -> "rsc1_stop_0 node1" [ style = bold] "group1_stop_0" -> "rsc2_stop_0 node1" [ style = bold] "group1_stop_0" [ style=bold color="green" fontcolor="orange" ] "group1_stopped_0" -> "group1_start_0" [ style = bold] "group1_stopped_0" -> "rsc3_stop_0 node2" [ style = bold] "group1_stopped_0" [ style=bold color="green" fontcolor="orange" ] +"rsc1_monitor_0 node2" -> "group1_stopped_0" [ style = bold] "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_start_0 node2" -> "group1_running_0" [ style = bold] "rsc1_start_0 node2" -> "rsc2_start_0 node2" [ style = bold] "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_stop_0 node1" -> "group1_stopped_0" [ style = bold] "rsc1_stop_0 node1" -> "rsc1_start_0 node2" [ style = bold] "rsc1_stop_0 node1" [ style=bold color="green" fontcolor="orange" ] +"rsc2_monitor_0 node2" -> "group1_stopped_0" [ style = bold] +"rsc2_monitor_0 node2" -> "rsc1_stop_0 node1" [ style = bold] "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_start_0 node2" -> "group1_running_0" [ style = bold] "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_stop_0 node1" -> "group1_stopped_0" [ style = bold] "rsc2_stop_0 node1" -> "rsc1_stop_0 node1" [ style = bold] "rsc2_stop_0 node1" -> "rsc2_start_0 node2" [ style = bold] "rsc2_stop_0 node1" [ style=bold color="green" fontcolor="orange" ] "rsc3_start_0 node2" -> "group1_start_0" [ style = bold] "rsc3_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc3_stop_0 node2" -> "rsc3_start_0 node2" [ style = bold] "rsc3_stop_0 node2" [ style=bold color="green" fontcolor="black" ] "stonith 'reboot' node1" -> "group1_stop_0" [ style = bold] "stonith 'reboot' node1" -> "rsc1_start_0 node2" [ style = bold] "stonith 'reboot' node1" -> "rsc1_stop_0 node1" [ style = bold] "stonith 'reboot' node1" -> "rsc2_start_0 node2" [ style = bold] "stonith 'reboot' node1" -> "rsc2_stop_0 node1" [ style = bold] "stonith 'reboot' node1" -> "rsc3_start_0 node2" [ style = bold] "stonith 'reboot' node1" -> "stonith-1_start_0 node2" [ style = bold] "stonith 'reboot' node1" [ style=bold color="green" fontcolor="black"] "stonith-1_monitor_0 node2" -> "stonith-1_start_0 node2" [ style = bold] "stonith-1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "stonith-1_start_0 node2" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/rec-node-11.exp b/cts/scheduler/rec-node-11.exp index d394973429..d48cf29413 100644 --- a/cts/scheduler/rec-node-11.exp +++ b/cts/scheduler/rec-node-11.exp @@ -1,228 +1,237 @@ + + + + + + + + + diff --git a/cts/scheduler/reload-becomes-restart.dot b/cts/scheduler/reload-becomes-restart.dot index ed3720ace6..a6616f9fc6 100644 --- a/cts/scheduler/reload-becomes-restart.dot +++ b/cts/scheduler/reload-becomes-restart.dot @@ -1,52 +1,53 @@ digraph "g" { "Fencing_monitor_0 node1" -> "Fencing_start_0 node1" [ style = bold] "Fencing_monitor_0 node1" [ style=bold color="green" fontcolor="black"] "Fencing_monitor_0 node2" -> "Fencing_start_0 node1" [ style = bold] "Fencing_monitor_0 node2" [ style=bold color="green" fontcolor="black"] "Fencing_monitor_120000 node1" [ style=bold color="green" fontcolor="black"] "Fencing_start_0 node1" -> "Fencing_monitor_120000 node1" [ style = bold] "Fencing_start_0 node1" [ style=bold color="green" fontcolor="black"] "cl-rsc1_running_0" -> "cl-rsc2_start_0" [ style = bold] "cl-rsc1_running_0" [ style=bold color="green" fontcolor="orange"] "cl-rsc1_start_0" -> "cl-rsc1_running_0" [ style = bold] "cl-rsc1_start_0" -> "rsc1:0_start_0 node2" [ style = bold] "cl-rsc1_start_0" -> "rsc1:1_start_0 node1" [ style = bold] "cl-rsc1_start_0" [ style=bold color="green" fontcolor="orange"] "cl-rsc2_running_0" [ style=bold color="green" fontcolor="orange"] "cl-rsc2_start_0" -> "cl-rsc2_running_0" [ style = bold] "cl-rsc2_start_0" -> "rsc2:1_start_0 node2" [ style = bold] "cl-rsc2_start_0" -> "rsc2_start_0 node1" [ style = bold] "cl-rsc2_start_0" [ style=bold color="green" fontcolor="orange"] "cl-rsc2_stop_0" -> "cl-rsc2_stopped_0" [ style = bold] "cl-rsc2_stop_0" -> "rsc2_stop_0 node1" [ style = bold] "cl-rsc2_stop_0" [ style=bold color="green" fontcolor="orange"] "cl-rsc2_stopped_0" -> "cl-rsc2_start_0" [ style = bold] "cl-rsc2_stopped_0" [ style=bold color="green" fontcolor="orange"] "rsc1:0_monitor_0 node2" -> "cl-rsc1_start_0" [ style = bold] "rsc1:0_monitor_0 node2" [ style=bold color="green" fontcolor="black"] "rsc1:0_monitor_120000 node2" [ style=bold color="green" fontcolor="black"] "rsc1:0_start_0 node2" -> "cl-rsc1_running_0" [ style = bold] "rsc1:0_start_0 node2" -> "rsc1:0_monitor_120000 node2" [ style = bold] "rsc1:0_start_0 node2" -> "rsc2:1_start_0 node2" [ style = bold] "rsc1:0_start_0 node2" [ style=bold color="green" fontcolor="black"] "rsc1:1_monitor_0 node1" -> "cl-rsc1_start_0" [ style = bold] "rsc1:1_monitor_0 node1" [ style=bold color="green" fontcolor="black"] "rsc1:1_monitor_120000 node1" [ style=bold color="green" fontcolor="black"] "rsc1:1_start_0 node1" -> "cl-rsc1_running_0" [ style = bold] "rsc1:1_start_0 node1" -> "rsc1:1_monitor_120000 node1" [ style = bold] "rsc1:1_start_0 node1" -> "rsc2_start_0 node1" [ style = bold] "rsc1:1_start_0 node1" [ style=bold color="green" fontcolor="black"] "rsc2:1_monitor_0 node2" -> "cl-rsc2_start_0" [ style = bold] +"rsc2:1_monitor_0 node2" -> "cl-rsc2_stopped_0" [ style = bold] "rsc2:1_monitor_0 node2" [ style=bold color="green" fontcolor="black"] "rsc2:1_monitor_200000 node2" [ style=bold color="green" fontcolor="black"] "rsc2:1_start_0 node2" -> "cl-rsc2_running_0" [ style = bold] "rsc2:1_start_0 node2" -> "rsc2:1_monitor_200000 node2" [ style = bold] "rsc2:1_start_0 node2" [ style=bold color="green" fontcolor="black"] "rsc2_monitor_200000 node1" [ style=bold color="green" fontcolor="black"] "rsc2_start_0 node1" -> "cl-rsc2_running_0" [ style = bold] "rsc2_start_0 node1" -> "rsc2_monitor_200000 node1" [ style = bold] "rsc2_start_0 node1" [ style=bold color="green" fontcolor="black"] "rsc2_stop_0 node1" -> "cl-rsc2_stopped_0" [ style = bold] "rsc2_stop_0 node1" -> "rsc2_start_0 node1" [ style = bold] "rsc2_stop_0 node1" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/reload-becomes-restart.exp b/cts/scheduler/reload-becomes-restart.exp index 63ebff08b0..c3e372155b 100644 --- a/cts/scheduler/reload-becomes-restart.exp +++ b/cts/scheduler/reload-becomes-restart.exp @@ -1,294 +1,297 @@ + + + diff --git a/cts/scheduler/remote-connection-unrecoverable.dot b/cts/scheduler/remote-connection-unrecoverable.dot index 3a7bd5e268..77284257ce 100644 --- a/cts/scheduler/remote-connection-unrecoverable.dot +++ b/cts/scheduler/remote-connection-unrecoverable.dot @@ -1,44 +1,46 @@ digraph "g" { "killer_monitor_60000 node2" [ style=bold color="green" fontcolor="black"] "killer_start_0 node2" -> "killer_monitor_60000 node2" [ style = bold] "killer_start_0 node2" [ style=bold color="green" fontcolor="black"] "killer_stop_0 node2" -> "killer_start_0 node2" [ style = bold] "killer_stop_0 node2" [ style=bold color="green" fontcolor="black"] "remote1_stop_0 node1" [ style=bold color="green" fontcolor="orange"] "rsc1_delete_0 remote1" -> "rsc1_start_0 node2" [ style = dashed] "rsc1_delete_0 remote1" [ style=dashed color="red" fontcolor="black"] +"rsc1_monitor_0 node2" -> "remote1_stop_0 node1" [ style = bold] "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] +"rsc1_monitor_0 node2" -> "rsc2-master_demote_0" [ style = bold] "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black"] "rsc1_monitor_10000 node2" [ style=bold color="green" fontcolor="black"] "rsc1_start_0 node2" -> "rsc1_monitor_10000 node2" [ style = bold] "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black"] "rsc1_stop_0 remote1" -> "remote1_stop_0 node1" [ style = bold] "rsc1_stop_0 remote1" -> "rsc1_delete_0 remote1" [ style = dashed] "rsc1_stop_0 remote1" -> "rsc1_start_0 node2" [ style = bold] "rsc1_stop_0 remote1" -> "rsc2-master_demote_0" [ style = bold] "rsc1_stop_0 remote1" [ style=bold color="green" fontcolor="orange"] "rsc2-master_demote_0" -> "rsc2-master_demoted_0" [ style = bold] "rsc2-master_demote_0" -> "rsc2_demote_0 node1" [ style = bold] "rsc2-master_demote_0" [ style=bold color="green" fontcolor="orange"] "rsc2-master_demoted_0" -> "rsc2-master_stop_0" [ style = bold] "rsc2-master_demoted_0" [ style=bold color="green" fontcolor="orange"] "rsc2-master_stop_0" -> "rsc2-master_stopped_0" [ style = bold] "rsc2-master_stop_0" -> "rsc2_stop_0 node1" [ style = bold] "rsc2-master_stop_0" [ style=bold color="green" fontcolor="orange"] "rsc2-master_stopped_0" [ style=bold color="green" fontcolor="orange"] "rsc2_demote_0 node1" -> "rsc2-master_demoted_0" [ style = bold] "rsc2_demote_0 node1" -> "rsc2_stop_0 node1" [ style = bold] "rsc2_demote_0 node1" [ style=bold color="green" fontcolor="orange"] "rsc2_stop_0 node1" -> "rsc2-master_stopped_0" [ style = bold] "rsc2_stop_0 node1" [ style=bold color="green" fontcolor="orange"] "stonith 'reboot' node1" -> "rsc1_start_0 node2" [ style = bold] "stonith 'reboot' node1" -> "rsc2-master_stop_0" [ style = bold] "stonith 'reboot' node1" -> "rsc2_demote_0 node1" [ style = bold] "stonith 'reboot' node1" -> "rsc2_stop_0 node1" [ style = bold] "stonith 'reboot' node1" -> "stonith 'reboot' remote1" [ style = bold] "stonith 'reboot' node1" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' remote1" -> "killer_start_0 node2" [ style = bold] "stonith 'reboot' remote1" -> "rsc1_start_0 node2" [ style = bold] "stonith 'reboot' remote1" -> "rsc1_stop_0 remote1" [ style = bold] "stonith 'reboot' remote1" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/remote-connection-unrecoverable.exp b/cts/scheduler/remote-connection-unrecoverable.exp index 80a63dc6cb..2c9357b78a 100644 --- a/cts/scheduler/remote-connection-unrecoverable.exp +++ b/cts/scheduler/remote-connection-unrecoverable.exp @@ -1,224 +1,230 @@ + + + + + + diff --git a/cts/scheduler/rsc_dep1.dot b/cts/scheduler/rsc_dep1.dot index 49d686c54d..da1da7dfe8 100644 --- a/cts/scheduler/rsc_dep1.dot +++ b/cts/scheduler/rsc_dep1.dot @@ -1,12 +1,14 @@ digraph "g" { "rsc1_monitor_0 node1" -> "rsc1_start_0 node2" [ style = bold] +"rsc1_monitor_0 node1" -> "rsc2_start_0 node1" [ style = bold] "rsc1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc1_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc1_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_monitor_0 node1" -> "rsc2_start_0 node1" [ style = bold] "rsc2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc2_monitor_0 node2" -> "rsc1_start_0 node2" [ style = bold] "rsc2_monitor_0 node2" -> "rsc2_start_0 node1" [ style = bold] "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_start_0 node1" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/rsc_dep1.exp b/cts/scheduler/rsc_dep1.exp index 2ab4b0bd6e..436e6a496d 100644 --- a/cts/scheduler/rsc_dep1.exp +++ b/cts/scheduler/rsc_dep1.exp @@ -1,70 +1,76 @@ + + + + + + diff --git a/cts/scheduler/rsc_dep5.dot b/cts/scheduler/rsc_dep5.dot index ec7c307784..8bdc4ed3f4 100644 --- a/cts/scheduler/rsc_dep5.dot +++ b/cts/scheduler/rsc_dep5.dot @@ -1,14 +1,18 @@ digraph "g" { +"rsc1_monitor_0 node1" -> "rsc3_start_0 node1" [ style = bold] "rsc1_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc1_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] "rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_monitor_0 node1" -> "rsc2_start_0 node2" [ style = bold] +"rsc2_monitor_0 node1" -> "rsc3_start_0 node1" [ style = bold] "rsc2_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] "rsc2_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] "rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc2_start_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc3_monitor_0 node1" -> "rsc3_start_0 node1" [ style = bold] "rsc3_monitor_0 node1" [ style=bold color="green" fontcolor="black" ] +"rsc3_monitor_0 node2" -> "rsc2_start_0 node2" [ style = bold] "rsc3_monitor_0 node2" -> "rsc3_start_0 node1" [ style = bold] "rsc3_monitor_0 node2" [ style=bold color="green" fontcolor="black" ] "rsc3_start_0 node1" [ style=bold color="green" fontcolor="black" ] } diff --git a/cts/scheduler/rsc_dep5.exp b/cts/scheduler/rsc_dep5.exp index 4eeef38cb6..11c44a7cc5 100644 --- a/cts/scheduler/rsc_dep5.exp +++ b/cts/scheduler/rsc_dep5.exp @@ -1,88 +1,100 @@ + + + + + + + + + + + + diff --git a/cts/scheduler/unfence-definition.dot b/cts/scheduler/unfence-definition.dot index e2dc564969..e899ff3197 100644 --- a/cts/scheduler/unfence-definition.dot +++ b/cts/scheduler/unfence-definition.dot @@ -1,79 +1,83 @@ digraph "g" { "clvmd-clone_running_0" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_start_0" -> "clvmd-clone_running_0" [ style = bold] "clvmd-clone_start_0" -> "clvmd:1_start_0 virt-2" [ style = bold] "clvmd-clone_start_0" -> "clvmd:2_start_0 virt-3" [ style = bold] "clvmd-clone_start_0" -> "clvmd_start_0 virt-1" [ style = bold] "clvmd-clone_start_0" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_stop_0" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd-clone_stop_0" -> "clvmd_stop_0 virt-1" [ style = bold] "clvmd-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_stopped_0" -> "clvmd-clone_start_0" [ style = bold] "clvmd-clone_stopped_0" -> "dlm-clone_stop_0" [ style = bold] "clvmd-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "clvmd:1_monitor_0 virt-2" -> "clvmd-clone_start_0" [ style = bold] +"clvmd:1_monitor_0 virt-2" -> "clvmd-clone_stopped_0" [ style = bold] +"clvmd:1_monitor_0 virt-2" -> "clvmd_stop_0 virt-1" [ style = bold] "clvmd:1_monitor_0 virt-2" [ style=bold color="green" fontcolor="black"] "clvmd:1_start_0 virt-2" -> "clvmd-clone_running_0" [ style = bold] "clvmd:1_start_0 virt-2" -> "clvmd:2_start_0 virt-3" [ style = bold] "clvmd:1_start_0 virt-2" [ style=bold color="green" fontcolor="black"] "clvmd:2_monitor_0 virt-3" -> "clvmd-clone_start_0" [ style = bold] +"clvmd:2_monitor_0 virt-3" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] "clvmd:2_start_0 virt-3" -> "clvmd-clone_running_0" [ style = bold] "clvmd:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] "clvmd_start_0 virt-1" -> "clvmd-clone_running_0" [ style = bold] "clvmd_start_0 virt-1" -> "clvmd:1_start_0 virt-2" [ style = bold] "clvmd_start_0 virt-1" [ style=bold color="green" fontcolor="black"] "clvmd_stop_0 virt-1" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd_stop_0 virt-1" -> "clvmd_start_0 virt-1" [ style = bold] "clvmd_stop_0 virt-1" -> "dlm_stop_0 virt-1" [ style = bold] "clvmd_stop_0 virt-1" -> "stonith 'on' virt-1" [ style = bold] "clvmd_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] "dlm-clone_running_0" -> "clvmd-clone_start_0" [ style = bold] "dlm-clone_running_0" [ style=bold color="green" fontcolor="orange"] "dlm-clone_start_0" -> "dlm-clone_running_0" [ style = bold] "dlm-clone_start_0" -> "dlm:2_start_0 virt-3" [ style = bold] "dlm-clone_start_0" -> "dlm_start_0 virt-1" [ style = bold] "dlm-clone_start_0" [ style=bold color="green" fontcolor="orange"] "dlm-clone_stop_0" -> "dlm-clone_stopped_0" [ style = bold] "dlm-clone_stop_0" -> "dlm_stop_0 virt-1" [ style = bold] "dlm-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "dlm-clone_stopped_0" -> "dlm-clone_start_0" [ style = bold] "dlm-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "dlm:2_monitor_0 virt-3" -> "dlm-clone_start_0" [ style = bold] +"dlm:2_monitor_0 virt-3" -> "dlm-clone_stopped_0" [ style = bold] "dlm:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] "dlm:2_start_0 virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] "dlm:2_start_0 virt-3" -> "dlm-clone_running_0" [ style = bold] "dlm:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] "dlm_start_0 virt-1" -> "clvmd_start_0 virt-1" [ style = bold] "dlm_start_0 virt-1" -> "dlm-clone_running_0" [ style = bold] "dlm_start_0 virt-1" [ style=bold color="green" fontcolor="black"] "dlm_stop_0 virt-1" -> "dlm-clone_stopped_0" [ style = bold] "dlm_stop_0 virt-1" -> "dlm_start_0 virt-1" [ style = bold] "dlm_stop_0 virt-1" -> "stonith 'on' virt-1" [ style = bold] "dlm_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] "fencing_delete_0 virt-1" -> "fencing_start_0 virt-1" [ style = bold] "fencing_delete_0 virt-1" [ style=bold color="green" fontcolor="black"] "fencing_monitor_0 virt-3" -> "fencing_start_0 virt-1" [ style = bold] "fencing_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] "fencing_start_0 virt-1" [ style=bold color="green" fontcolor="black"] "fencing_stop_0 virt-1" -> "fencing_delete_0 virt-1" [ style = bold] "fencing_stop_0 virt-1" -> "fencing_start_0 virt-1" [ style = bold] "fencing_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] "stonith 'on' virt-1" -> "clvmd_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" -> "dlm_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" -> "fencing_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" [ style=bold color="green" fontcolor="black"] "stonith 'on' virt-3" -> "clvmd:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_start_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "fencing_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' virt-4" -> "clvmd:1_start_0 virt-2" [ style = bold] "stonith 'reboot' virt-4" -> "clvmd:2_start_0 virt-3" [ style = bold] "stonith 'reboot' virt-4" -> "clvmd_start_0 virt-1" [ style = bold] "stonith 'reboot' virt-4" -> "dlm:2_start_0 virt-3" [ style = bold] "stonith 'reboot' virt-4" -> "dlm_start_0 virt-1" [ style = bold] "stonith 'reboot' virt-4" -> "fencing_start_0 virt-1" [ style = bold] "stonith 'reboot' virt-4" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/unfence-definition.exp b/cts/scheduler/unfence-definition.exp index 019c03d2a5..840a8d212a 100644 --- a/cts/scheduler/unfence-definition.exp +++ b/cts/scheduler/unfence-definition.exp @@ -1,395 +1,407 @@ + + + + + + + + + + + + diff --git a/cts/scheduler/unfence-parameters.dot b/cts/scheduler/unfence-parameters.dot index ab3ce3742b..a1ee9693ae 100644 --- a/cts/scheduler/unfence-parameters.dot +++ b/cts/scheduler/unfence-parameters.dot @@ -1,76 +1,80 @@ digraph "g" { "clvmd-clone_running_0" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_start_0" -> "clvmd-clone_running_0" [ style = bold] "clvmd-clone_start_0" -> "clvmd:1_start_0 virt-2" [ style = bold] "clvmd-clone_start_0" -> "clvmd:2_start_0 virt-3" [ style = bold] "clvmd-clone_start_0" -> "clvmd_start_0 virt-1" [ style = bold] "clvmd-clone_start_0" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_stop_0" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd-clone_stop_0" -> "clvmd_stop_0 virt-1" [ style = bold] "clvmd-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_stopped_0" -> "clvmd-clone_start_0" [ style = bold] "clvmd-clone_stopped_0" -> "dlm-clone_stop_0" [ style = bold] "clvmd-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "clvmd:1_monitor_0 virt-2" -> "clvmd-clone_start_0" [ style = bold] +"clvmd:1_monitor_0 virt-2" -> "clvmd-clone_stopped_0" [ style = bold] +"clvmd:1_monitor_0 virt-2" -> "clvmd_stop_0 virt-1" [ style = bold] "clvmd:1_monitor_0 virt-2" [ style=bold color="green" fontcolor="black"] "clvmd:1_start_0 virt-2" -> "clvmd-clone_running_0" [ style = bold] "clvmd:1_start_0 virt-2" -> "clvmd:2_start_0 virt-3" [ style = bold] "clvmd:1_start_0 virt-2" [ style=bold color="green" fontcolor="black"] "clvmd:2_monitor_0 virt-3" -> "clvmd-clone_start_0" [ style = bold] +"clvmd:2_monitor_0 virt-3" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] "clvmd:2_start_0 virt-3" -> "clvmd-clone_running_0" [ style = bold] "clvmd:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] "clvmd_start_0 virt-1" -> "clvmd-clone_running_0" [ style = bold] "clvmd_start_0 virt-1" -> "clvmd:1_start_0 virt-2" [ style = bold] "clvmd_start_0 virt-1" [ style=bold color="green" fontcolor="black"] "clvmd_stop_0 virt-1" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd_stop_0 virt-1" -> "clvmd_start_0 virt-1" [ style = bold] "clvmd_stop_0 virt-1" -> "dlm_stop_0 virt-1" [ style = bold] "clvmd_stop_0 virt-1" -> "stonith 'on' virt-1" [ style = bold] "clvmd_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] "dlm-clone_running_0" -> "clvmd-clone_start_0" [ style = bold] "dlm-clone_running_0" [ style=bold color="green" fontcolor="orange"] "dlm-clone_start_0" -> "dlm-clone_running_0" [ style = bold] "dlm-clone_start_0" -> "dlm:2_start_0 virt-3" [ style = bold] "dlm-clone_start_0" -> "dlm_start_0 virt-1" [ style = bold] "dlm-clone_start_0" [ style=bold color="green" fontcolor="orange"] "dlm-clone_stop_0" -> "dlm-clone_stopped_0" [ style = bold] "dlm-clone_stop_0" -> "dlm_stop_0 virt-1" [ style = bold] "dlm-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "dlm-clone_stopped_0" -> "dlm-clone_start_0" [ style = bold] "dlm-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "dlm:2_monitor_0 virt-3" -> "dlm-clone_start_0" [ style = bold] +"dlm:2_monitor_0 virt-3" -> "dlm-clone_stopped_0" [ style = bold] "dlm:2_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] "dlm:2_start_0 virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] "dlm:2_start_0 virt-3" -> "dlm-clone_running_0" [ style = bold] "dlm:2_start_0 virt-3" [ style=bold color="green" fontcolor="black"] "dlm_start_0 virt-1" -> "clvmd_start_0 virt-1" [ style = bold] "dlm_start_0 virt-1" -> "dlm-clone_running_0" [ style = bold] "dlm_start_0 virt-1" [ style=bold color="green" fontcolor="black"] "dlm_stop_0 virt-1" -> "dlm-clone_stopped_0" [ style = bold] "dlm_stop_0 virt-1" -> "dlm_start_0 virt-1" [ style = bold] "dlm_stop_0 virt-1" -> "stonith 'on' virt-1" [ style = bold] "dlm_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] "fencing_monitor_0 virt-3" -> "fencing_start_0 virt-1" [ style = bold] "fencing_monitor_0 virt-3" [ style=bold color="green" fontcolor="black"] "fencing_start_0 virt-1" [ style=bold color="green" fontcolor="black"] "fencing_stop_0 virt-1" -> "fencing_start_0 virt-1" [ style = bold] "fencing_stop_0 virt-1" [ style=bold color="green" fontcolor="black"] "stonith 'on' virt-1" -> "clvmd_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" -> "dlm_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" -> "fencing_start_0 virt-1" [ style = bold] "stonith 'on' virt-1" [ style=bold color="green" fontcolor="black"] "stonith 'on' virt-3" -> "clvmd:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "clvmd:2_start_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "dlm:2_start_0 virt-3" [ style = bold] "stonith 'on' virt-3" -> "fencing_monitor_0 virt-3" [ style = bold] "stonith 'on' virt-3" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' virt-4" -> "clvmd:1_start_0 virt-2" [ style = bold] "stonith 'reboot' virt-4" -> "clvmd:2_start_0 virt-3" [ style = bold] "stonith 'reboot' virt-4" -> "clvmd_start_0 virt-1" [ style = bold] "stonith 'reboot' virt-4" -> "dlm:2_start_0 virt-3" [ style = bold] "stonith 'reboot' virt-4" -> "dlm_start_0 virt-1" [ style = bold] "stonith 'reboot' virt-4" -> "fencing_start_0 virt-1" [ style = bold] "stonith 'reboot' virt-4" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/unfence-parameters.exp b/cts/scheduler/unfence-parameters.exp index fc3317d652..3e70cb8e9d 100644 --- a/cts/scheduler/unfence-parameters.exp +++ b/cts/scheduler/unfence-parameters.exp @@ -1,379 +1,391 @@ + + + + + + + + + + + + diff --git a/cts/scheduler/unrunnable-1.dot b/cts/scheduler/unrunnable-1.dot index 7ead826e3b..6164046a27 100644 --- a/cts/scheduler/unrunnable-1.dot +++ b/cts/scheduler/unrunnable-1.dot @@ -1,27 +1,30 @@ digraph "g" { "DcIPaddr_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "DcIPaddr_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] "DoFencing_stop_0" -> "DoFencing_stopped_0" [ style = bold] "DoFencing_stop_0" -> "child_DoFencing:1_stop_0 c001n02" [ style = dashed] "DoFencing_stop_0" [ style=bold color="green" fontcolor="orange" ] "DoFencing_stopped_0" [ style=bold color="green" fontcolor="orange" ] "child_192.168.100.181_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "child_192.168.100.181_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] "child_192.168.100.182_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "child_192.168.100.182_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] "child_192.168.100.183_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "child_192.168.100.183_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] +"child_DoFencing:1_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:1_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "child_DoFencing:1_stop_0 c001n02" -> "DoFencing_stopped_0" [ style = dashed] "child_DoFencing:1_stop_0 c001n02" [ style=dashed color="red" fontcolor="black" ] +"child_DoFencing:2_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:2_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] +"child_DoFencing:3_monitor_0 c001n03" -> "DoFencing_stopped_0" [ style = bold] "child_DoFencing:3_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n01_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n02_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n02_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n03_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n03_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] "rsc_c001n08_monitor_0 c001n03" [ style=bold color="green" fontcolor="black" ] "rsc_c001n08_monitor_5000 c001n03" [ style=dashed color="red" fontcolor="black" ] } diff --git a/cts/scheduler/unrunnable-1.exp b/cts/scheduler/unrunnable-1.exp index 56fb4c0d75..94ab05c5a6 100644 --- a/cts/scheduler/unrunnable-1.exp +++ b/cts/scheduler/unrunnable-1.exp @@ -1,121 +1,130 @@ + + + + + + + + + diff --git a/cts/scheduler/whitebox-imply-stop-on-fence.dot b/cts/scheduler/whitebox-imply-stop-on-fence.dot index a58e7c7c3d..62ba699eb6 100644 --- a/cts/scheduler/whitebox-imply-stop-on-fence.dot +++ b/cts/scheduler/whitebox-imply-stop-on-fence.dot @@ -1,103 +1,109 @@ digraph "g" { "R-lxc-01_kiff-01_monitor_10000 kiff-02" [ style=bold color="green" fontcolor="black"] "R-lxc-01_kiff-01_start_0 kiff-02" -> "R-lxc-01_kiff-01_monitor_10000 kiff-02" [ style = bold] "R-lxc-01_kiff-01_start_0 kiff-02" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "R-lxc-01_kiff-01_start_0 kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "R-lxc-01_kiff-01_start_0 kiff-02" [ style=bold color="green" fontcolor="black"] "R-lxc-01_kiff-01_stop_0 kiff-01" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "R-lxc-01_kiff-01_stop_0 kiff-01" -> "shared0-clone_stop_0" [ style = bold] "R-lxc-01_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "R-lxc-02_kiff-01_monitor_10000 kiff-02" [ style=bold color="green" fontcolor="black"] "R-lxc-02_kiff-01_start_0 kiff-02" -> "R-lxc-02_kiff-01_monitor_10000 kiff-02" [ style = bold] "R-lxc-02_kiff-01_start_0 kiff-02" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "R-lxc-02_kiff-01_start_0 kiff-02" [ style=bold color="green" fontcolor="black"] "R-lxc-02_kiff-01_stop_0 kiff-01" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "R-lxc-02_kiff-01_stop_0 kiff-01" -> "shared0-clone_stop_0" [ style = bold] "R-lxc-02_kiff-01_stop_0 kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "R-lxc-02_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_stop_0" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd-clone_stop_0" -> "clvmd_stop_0 kiff-01" [ style = bold] "clvmd-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "clvmd-clone_stopped_0" -> "dlm-clone_stop_0" [ style = bold] "clvmd-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"clvmd_monitor_0 lxc-01_kiff-02" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] +"clvmd_monitor_0 lxc-02_kiff-02" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] "clvmd_stop_0 kiff-01" -> "clvmd-clone_stopped_0" [ style = bold] "clvmd_stop_0 kiff-01" -> "dlm_stop_0 kiff-01" [ style = bold] "clvmd_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "dlm-clone_stop_0" -> "dlm-clone_stopped_0" [ style = bold] "dlm-clone_stop_0" -> "dlm_stop_0 kiff-01" [ style = bold] "dlm-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "dlm-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"dlm_monitor_0 lxc-01_kiff-02" -> "dlm-clone_stopped_0" [ style = bold] "dlm_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] +"dlm_monitor_0 lxc-02_kiff-02" -> "dlm-clone_stopped_0" [ style = bold] "dlm_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] "dlm_stop_0 kiff-01" -> "dlm-clone_stopped_0" [ style = bold] "dlm_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "fence-kiff-02_monitor_60000 kiff-02" [ style=bold color="green" fontcolor="black"] "fence-kiff-02_start_0 kiff-02" -> "fence-kiff-02_monitor_60000 kiff-02" [ style = bold] "fence-kiff-02_start_0 kiff-02" [ style=bold color="green" fontcolor="black"] "fence-kiff-02_stop_0 kiff-01" -> "fence-kiff-02_start_0 kiff-02" [ style = bold] "fence-kiff-02_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "lxc-01_kiff-01_monitor_30000 kiff-02" [ style=bold color="green" fontcolor="black"] "lxc-01_kiff-01_start_0 kiff-02" -> "lxc-01_kiff-01_monitor_30000 kiff-02" [ style = bold] "lxc-01_kiff-01_start_0 kiff-02" -> "vm-fs_monitor_20000 lxc-01_kiff-01" [ style = bold] "lxc-01_kiff-01_start_0 kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "lxc-01_kiff-01_start_0 kiff-02" [ style=bold color="green" fontcolor="black"] "lxc-01_kiff-01_stop_0 kiff-01" -> "R-lxc-01_kiff-01_stop_0 kiff-01" [ style = bold] "lxc-01_kiff-01_stop_0 kiff-01" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "lxc-01_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "lxc-02_kiff-01_monitor_30000 kiff-02" [ style=bold color="green" fontcolor="black"] "lxc-02_kiff-01_start_0 kiff-02" -> "lxc-02_kiff-01_monitor_30000 kiff-02" [ style = bold] "lxc-02_kiff-01_start_0 kiff-02" [ style=bold color="green" fontcolor="black"] "lxc-02_kiff-01_stop_0 kiff-01" -> "R-lxc-02_kiff-01_stop_0 kiff-01" [ style = bold] "lxc-02_kiff-01_stop_0 kiff-01" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "lxc-02_kiff-01_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "shared0-clone_stop_0" -> "shared0-clone_stopped_0" [ style = bold] "shared0-clone_stop_0" -> "shared0_stop_0 kiff-01" [ style = bold] "shared0-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "shared0-clone_stopped_0" -> "clvmd-clone_stop_0" [ style = bold] "shared0-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] +"shared0_monitor_0 lxc-01_kiff-02" -> "shared0-clone_stopped_0" [ style = bold] "shared0_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] +"shared0_monitor_0 lxc-02_kiff-02" -> "shared0-clone_stopped_0" [ style = bold] "shared0_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] "shared0_stop_0 kiff-01" -> "clvmd_stop_0 kiff-01" [ style = bold] "shared0_stop_0 kiff-01" -> "shared0-clone_stopped_0" [ style = bold] "shared0_stop_0 kiff-01" [ style=bold color="green" fontcolor="orange"] "stonith 'reboot' kiff-01" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' kiff-01" -> "R-lxc-01_kiff-01_stop_0 kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' kiff-01" -> "R-lxc-02_kiff-01_stop_0 kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "clvmd-clone_stop_0" [ style = bold] "stonith 'reboot' kiff-01" -> "clvmd_stop_0 kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "dlm-clone_stop_0" [ style = bold] "stonith 'reboot' kiff-01" -> "dlm_stop_0 kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "shared0-clone_stop_0" [ style = bold] "stonith 'reboot' kiff-01" -> "shared0_stop_0 kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "stonith 'reboot' lxc-01_kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "stonith 'reboot' lxc-02_kiff-01" [ style = bold] "stonith 'reboot' kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "stonith 'reboot' kiff-01" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' lxc-01_kiff-01" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-01_kiff-01" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-01_kiff-01" -> "fence-kiff-02_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-01_kiff-01" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-01_kiff-01" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-01_kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "stonith 'reboot' lxc-01_kiff-01" -> "vm-fs_stop_0 lxc-01_kiff-01" [ style = bold] "stonith 'reboot' lxc-01_kiff-01" [ style=bold color="green" fontcolor="orange"] "stonith 'reboot' lxc-02_kiff-01" -> "R-lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-02_kiff-01" -> "R-lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-02_kiff-01" -> "fence-kiff-02_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-02_kiff-01" -> "lxc-01_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-02_kiff-01" -> "lxc-02_kiff-01_start_0 kiff-02" [ style = bold] "stonith 'reboot' lxc-02_kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "stonith 'reboot' lxc-02_kiff-01" [ style=bold color="green" fontcolor="orange"] "vm-fs_monitor_0 lxc-01_kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "vm-fs_monitor_0 lxc-01_kiff-02" [ style=bold color="green" fontcolor="black"] "vm-fs_monitor_0 lxc-02_kiff-02" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "vm-fs_monitor_0 lxc-02_kiff-02" [ style=bold color="green" fontcolor="black"] "vm-fs_monitor_20000 lxc-01_kiff-01" [ style=bold color="green" fontcolor="black"] "vm-fs_start_0 lxc-01_kiff-01" -> "vm-fs_monitor_20000 lxc-01_kiff-01" [ style = bold] "vm-fs_start_0 lxc-01_kiff-01" [ style=bold color="green" fontcolor="black"] "vm-fs_stop_0 lxc-01_kiff-01" -> "vm-fs_start_0 lxc-01_kiff-01" [ style = bold] "vm-fs_stop_0 lxc-01_kiff-01" [ style=bold color="green" fontcolor="orange"] } diff --git a/cts/scheduler/whitebox-imply-stop-on-fence.exp b/cts/scheduler/whitebox-imply-stop-on-fence.exp index cdba621fe2..3b2476852c 100644 --- a/cts/scheduler/whitebox-imply-stop-on-fence.exp +++ b/cts/scheduler/whitebox-imply-stop-on-fence.exp @@ -1,552 +1,570 @@ + + + + + + + + + + + + + + + + + + diff --git a/cts/scheduler/whitebox-migrate1.dot b/cts/scheduler/whitebox-migrate1.dot index ae88207b65..85e465fa53 100644 --- a/cts/scheduler/whitebox-migrate1.dot +++ b/cts/scheduler/whitebox-migrate1.dot @@ -1,41 +1,42 @@ digraph "g" { "FAKE3_monitor_10000 rhel7-node2" [ style=bold color="green" fontcolor="black"] "FAKE3_start_0 rhel7-node2" -> "FAKE3_monitor_10000 rhel7-node2" [ style = bold] "FAKE3_start_0 rhel7-node2" [ style=bold color="green" fontcolor="black"] "FAKE3_stop_0 rhel7-node3" -> "FAKE3_start_0 rhel7-node2" [ style = bold] "FAKE3_stop_0 rhel7-node3" [ style=bold color="green" fontcolor="black"] "remote-rsc_migrate_from_0 rhel7-node3" -> "remote-rsc_start_0 rhel7-node3" [ style = bold] "remote-rsc_migrate_from_0 rhel7-node3" -> "remote-rsc_stop_0 rhel7-node2" [ style = bold] "remote-rsc_migrate_from_0 rhel7-node3" -> "rhel7-node1_migrate_to_0 rhel7-node2" [ style = bold] "remote-rsc_migrate_from_0 rhel7-node3" [ style=bold color="green" fontcolor="black"] "remote-rsc_migrate_to_0 rhel7-node2" -> "remote-rsc_migrate_from_0 rhel7-node3" [ style = bold] "remote-rsc_migrate_to_0 rhel7-node2" [ style=bold color="green" fontcolor="black"] "remote-rsc_monitor_10000 rhel7-node3" [ style=bold color="green" fontcolor="black"] "remote-rsc_start_0 rhel7-node3" -> "remote-rsc_monitor_10000 rhel7-node3" [ style = bold] "remote-rsc_start_0 rhel7-node3" -> "rhel7-node1_migrate_to_0 rhel7-node2" [ style = dashed] "remote-rsc_start_0 rhel7-node3" -> "rhel7-node1_start_0 rhel7-node3" [ style = bold] "remote-rsc_start_0 rhel7-node3" [ style=bold color="green" fontcolor="orange"] "remote-rsc_stop_0 rhel7-node2" -> "FAKE3_start_0 rhel7-node2" [ style = dashed] "remote-rsc_stop_0 rhel7-node2" -> "remote-rsc_start_0 rhel7-node3" [ style = bold] "remote-rsc_stop_0 rhel7-node2" [ style=bold color="green" fontcolor="black"] "rhel7-node1_migrate_from_0 rhel7-node3" -> "rhel7-node1_start_0 rhel7-node3" [ style = bold] "rhel7-node1_migrate_from_0 rhel7-node3" -> "rhel7-node1_stop_0 rhel7-node2" [ style = bold] "rhel7-node1_migrate_from_0 rhel7-node3" [ style=bold color="green" fontcolor="black"] "rhel7-node1_migrate_to_0 rhel7-node2" -> "rhel7-node1_migrate_from_0 rhel7-node3" [ style = bold] "rhel7-node1_migrate_to_0 rhel7-node2" [ style=bold color="green" fontcolor="black"] +"rhel7-node1_monitor_0 rhel7-node3" -> "remote-rsc_migrate_to_0 rhel7-node2" [ style = bold] "rhel7-node1_monitor_0 rhel7-node3" -> "rhel7-node1_migrate_to_0 rhel7-node2" [ style = bold] "rhel7-node1_monitor_0 rhel7-node3" -> "rhel7-node1_start_0 rhel7-node3" [ style = bold] "rhel7-node1_monitor_0 rhel7-node3" [ style=bold color="green" fontcolor="black"] "rhel7-node1_monitor_30000 rhel7-node3" [ style=bold color="green" fontcolor="black"] "rhel7-node1_start_0 rhel7-node3" -> "rhel7-node1_monitor_30000 rhel7-node3" [ style = bold] "rhel7-node1_start_0 rhel7-node3" [ style=bold color="green" fontcolor="orange"] "rhel7-node1_stop_0 rhel7-node2" -> "remote-rsc_migrate_to_0 rhel7-node2" [ style = dashed] "rhel7-node1_stop_0 rhel7-node2" -> "remote-rsc_stop_0 rhel7-node2" [ style = bold] "rhel7-node1_stop_0 rhel7-node2" -> "rhel7-node1_start_0 rhel7-node3" [ style = bold] "rhel7-node1_stop_0 rhel7-node2" [ style=bold color="green" fontcolor="black"] "shooter1_monitor_60000 rhel7-node2" [ style=bold color="green" fontcolor="black"] "shooter1_start_0 rhel7-node2" -> "shooter1_monitor_60000 rhel7-node2" [ style = bold] "shooter1_start_0 rhel7-node2" [ style=bold color="green" fontcolor="black"] "shooter1_stop_0 rhel7-node3" -> "shooter1_start_0 rhel7-node2" [ style = bold] "shooter1_stop_0 rhel7-node3" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/whitebox-migrate1.exp b/cts/scheduler/whitebox-migrate1.exp index 81c35ece40..48c255024e 100644 --- a/cts/scheduler/whitebox-migrate1.exp +++ b/cts/scheduler/whitebox-migrate1.exp @@ -1,223 +1,227 @@ - + + + + + diff --git a/cts/scheduler/whitebox-migrate1.summary b/cts/scheduler/whitebox-migrate1.summary index 58ef985114..c45f36060d 100644 --- a/cts/scheduler/whitebox-migrate1.summary +++ b/cts/scheduler/whitebox-migrate1.summary @@ -1,54 +1,54 @@ Current cluster status: Online: [ rhel7-node2 rhel7-node3 ] Containers: [ rhel7-node1:remote-rsc ] shooter1 (stonith:fence_xvm): Started rhel7-node3 FAKE1 (ocf::heartbeat:Dummy): Started rhel7-node1 FAKE2 (ocf::heartbeat:Dummy): Started rhel7-node1 FAKE3 (ocf::heartbeat:Dummy): Started rhel7-node3 FAKE4 (ocf::heartbeat:Dummy): Started rhel7-node3 FAKE5 (ocf::heartbeat:Dummy): Started rhel7-node2 FAKE6 (ocf::heartbeat:Dummy): Started rhel7-node1 FAKE7 (ocf::heartbeat:Dummy): Started rhel7-node3 remote-rsc (ocf::heartbeat:Dummy): Started rhel7-node2 Transition Summary: * Move shooter1 ( rhel7-node3 -> rhel7-node2 ) * Move FAKE3 ( rhel7-node3 -> rhel7-node2 ) * Migrate remote-rsc ( rhel7-node2 -> rhel7-node3 ) * Migrate rhel7-node1 ( rhel7-node2 -> rhel7-node3 ) Executing cluster transition: * Resource action: shooter1 stop on rhel7-node3 * Resource action: FAKE3 stop on rhel7-node3 - * Resource action: remote-rsc migrate_to on rhel7-node2 * Resource action: rhel7-node1 monitor on rhel7-node3 * Resource action: shooter1 start on rhel7-node2 * Resource action: FAKE3 start on rhel7-node2 - * Resource action: remote-rsc migrate_from on rhel7-node3 - * Resource action: rhel7-node1 migrate_to on rhel7-node2 + * Resource action: remote-rsc migrate_to on rhel7-node2 * Resource action: shooter1 monitor=60000 on rhel7-node2 * Resource action: FAKE3 monitor=10000 on rhel7-node2 + * Resource action: remote-rsc migrate_from on rhel7-node3 + * Resource action: rhel7-node1 migrate_to on rhel7-node2 * Resource action: rhel7-node1 migrate_from on rhel7-node3 * Resource action: rhel7-node1 stop on rhel7-node2 * Resource action: remote-rsc stop on rhel7-node2 * Pseudo action: remote-rsc_start_0 * Pseudo action: rhel7-node1_start_0 * Resource action: remote-rsc monitor=10000 on rhel7-node3 * Resource action: rhel7-node1 monitor=30000 on rhel7-node3 Revised cluster status: Online: [ rhel7-node2 rhel7-node3 ] Containers: [ rhel7-node1:remote-rsc ] shooter1 (stonith:fence_xvm): Started rhel7-node2 FAKE1 (ocf::heartbeat:Dummy): Started rhel7-node1 FAKE2 (ocf::heartbeat:Dummy): Started rhel7-node1 FAKE3 (ocf::heartbeat:Dummy): Started rhel7-node2 FAKE4 (ocf::heartbeat:Dummy): Started rhel7-node3 FAKE5 (ocf::heartbeat:Dummy): Started rhel7-node2 FAKE6 (ocf::heartbeat:Dummy): Started rhel7-node1 FAKE7 (ocf::heartbeat:Dummy): Started rhel7-node3 remote-rsc (ocf::heartbeat:Dummy): Started rhel7-node3 diff --git a/cts/scheduler/whitebox-move.dot b/cts/scheduler/whitebox-move.dot index 418e63b775..0442f435fd 100644 --- a/cts/scheduler/whitebox-move.dot +++ b/cts/scheduler/whitebox-move.dot @@ -1,43 +1,44 @@ digraph "g" { "A_monitor_0 lxc2" -> "A_start_0 lxc1" [ style = bold] +"A_monitor_0 lxc2" -> "lxc1_stop_0 18node1" [ style = bold] "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "A_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"] "A_start_0 lxc1" -> "A_monitor_10000 lxc1" [ style = bold] "A_start_0 lxc1" [ style=bold color="green" fontcolor="black"] "A_stop_0 lxc1" -> "A_start_0 lxc1" [ style = bold] "A_stop_0 lxc1" -> "lxc1_stop_0 18node1" [ style = bold] "A_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] "M-clone_running_0" [ style=bold color="green" fontcolor="orange"] "M-clone_start_0" -> "M-clone_running_0" [ style = bold] "M-clone_start_0" -> "M_start_0 lxc1" [ style = bold] "M-clone_start_0" [ style=bold color="green" fontcolor="orange"] "M-clone_stop_0" -> "M-clone_stopped_0" [ style = bold] "M-clone_stop_0" -> "M_stop_0 lxc1" [ style = bold] "M-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "M-clone_stopped_0" -> "M-clone_start_0" [ style = bold] "M-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "M_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"] "M_start_0 lxc1" -> "M-clone_running_0" [ style = bold] "M_start_0 lxc1" -> "M_monitor_10000 lxc1" [ style = bold] "M_start_0 lxc1" [ style=bold color="green" fontcolor="black"] "M_stop_0 lxc1" -> "M-clone_stopped_0" [ style = bold] "M_stop_0 lxc1" -> "M_start_0 lxc1" [ style = bold] "M_stop_0 lxc1" -> "lxc1_stop_0 18node1" [ style = bold] "M_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] "container1_start_0 18node2" -> "A_start_0 lxc1" [ style = bold] "container1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] "container1_start_0 18node2" -> "lxc1_start_0 18node2" [ style = bold] "container1_start_0 18node2" [ style=bold color="green" fontcolor="black"] "container1_stop_0 18node1" -> "container1_start_0 18node2" [ style = bold] "container1_stop_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc1_monitor_30000 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_start_0 18node2" -> "A_monitor_10000 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "A_start_0 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "M_monitor_10000 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "M_start_0 lxc1" [ style = bold] "lxc1_start_0 18node2" -> "lxc1_monitor_30000 18node2" [ style = bold] "lxc1_start_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_stop_0 18node1" -> "container1_stop_0 18node1" [ style = bold] "lxc1_stop_0 18node1" -> "lxc1_start_0 18node2" [ style = bold] "lxc1_stop_0 18node1" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/whitebox-move.exp b/cts/scheduler/whitebox-move.exp index 5d17dc62b0..9f8593ca5f 100644 --- a/cts/scheduler/whitebox-move.exp +++ b/cts/scheduler/whitebox-move.exp @@ -1,234 +1,237 @@ + + + diff --git a/cts/scheduler/whitebox-ms-ordering.dot b/cts/scheduler/whitebox-ms-ordering.dot index ba0dd300b2..59bdbaace7 100644 --- a/cts/scheduler/whitebox-ms-ordering.dot +++ b/cts/scheduler/whitebox-ms-ordering.dot @@ -1,112 +1,115 @@ digraph "g" { "container1_monitor_0 18node1" -> "container1_start_0 18node1" [ style = bold] "container1_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] "container1_monitor_0 18node2" -> "container1_start_0 18node1" [ style = bold] "container1_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] "container1_monitor_0 18node3" -> "container1_start_0 18node1" [ style = bold] "container1_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] "container1_start_0 18node1" -> "lxc-ms_promote_0 lxc1" [ style = bold] "container1_start_0 18node1" -> "lxc-ms_start_0 lxc1" [ style = bold] "container1_start_0 18node1" -> "lxc1_start_0 18node1" [ style = bold] "container1_start_0 18node1" [ style=bold color="green" fontcolor="black"] "container2_monitor_0 18node1" -> "container2_start_0 18node1" [ style = bold] "container2_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] "container2_monitor_0 18node2" -> "container2_start_0 18node1" [ style = bold] "container2_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] "container2_monitor_0 18node3" -> "container2_start_0 18node1" [ style = bold] "container2_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] "container2_start_0 18node1" -> "lxc-ms_start_0 lxc2" [ style = bold] "container2_start_0 18node1" -> "lxc2_start_0 18node1" [ style = bold] "container2_start_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc-ms-master_demote_0" -> "lxc-ms-master_demoted_0" [ style = bold] "lxc-ms-master_demote_0" -> "lxc-ms_demote_0 lxc1" [ style = bold] "lxc-ms-master_demote_0" [ style=bold color="green" fontcolor="orange"] "lxc-ms-master_demoted_0" -> "lxc-ms-master_promote_0" [ style = bold] "lxc-ms-master_demoted_0" -> "lxc-ms-master_start_0" [ style = bold] "lxc-ms-master_demoted_0" -> "lxc-ms-master_stop_0" [ style = bold] "lxc-ms-master_demoted_0" [ style=bold color="green" fontcolor="orange"] "lxc-ms-master_promote_0" -> "lxc-ms_promote_0 lxc1" [ style = bold] "lxc-ms-master_promote_0" [ style=bold color="green" fontcolor="orange"] "lxc-ms-master_promoted_0" [ style=bold color="green" fontcolor="orange"] "lxc-ms-master_running_0" -> "lxc-ms-master_promote_0" [ style = bold] "lxc-ms-master_running_0" [ style=bold color="green" fontcolor="orange"] "lxc-ms-master_start_0" -> "lxc-ms-master_running_0" [ style = bold] "lxc-ms-master_start_0" -> "lxc-ms_start_0 lxc1" [ style = bold] "lxc-ms-master_start_0" -> "lxc-ms_start_0 lxc2" [ style = bold] "lxc-ms-master_start_0" [ style=bold color="green" fontcolor="orange"] "lxc-ms-master_stop_0" -> "lxc-ms-master_stopped_0" [ style = bold] "lxc-ms-master_stop_0" -> "lxc-ms_stop_0 lxc1" [ style = bold] "lxc-ms-master_stop_0" -> "lxc-ms_stop_0 lxc2" [ style = bold] "lxc-ms-master_stop_0" [ style=bold color="green" fontcolor="orange"] "lxc-ms-master_stopped_0" -> "lxc-ms-master_promote_0" [ style = bold] "lxc-ms-master_stopped_0" -> "lxc-ms-master_start_0" [ style = bold] "lxc-ms-master_stopped_0" [ style=bold color="green" fontcolor="orange"] "lxc-ms_demote_0 lxc1" -> "lxc-ms-master_demoted_0" [ style = bold] "lxc-ms_demote_0 lxc1" -> "lxc-ms_promote_0 lxc1" [ style = bold] "lxc-ms_demote_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold] "lxc-ms_demote_0 lxc1" [ style=bold color="green" fontcolor="orange"] "lxc-ms_monitor_0 18node1" -> "lxc-ms-master_start_0" [ style = bold] +"lxc-ms_monitor_0 18node1" -> "lxc-ms-master_stopped_0" [ style = bold] "lxc-ms_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc-ms_monitor_0 18node2" -> "lxc-ms-master_start_0" [ style = bold] +"lxc-ms_monitor_0 18node2" -> "lxc-ms-master_stopped_0" [ style = bold] "lxc-ms_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc-ms_monitor_0 18node3" -> "lxc-ms-master_start_0" [ style = bold] +"lxc-ms_monitor_0 18node3" -> "lxc-ms-master_stopped_0" [ style = bold] "lxc-ms_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] "lxc-ms_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] "lxc-ms_promote_0 lxc1" -> "lxc-ms-master_promoted_0" [ style = bold] "lxc-ms_promote_0 lxc1" [ style=bold color="green" fontcolor="black"] "lxc-ms_start_0 lxc1" -> "lxc-ms-master_running_0" [ style = bold] "lxc-ms_start_0 lxc1" -> "lxc-ms_promote_0 lxc1" [ style = bold] "lxc-ms_start_0 lxc1" [ style=bold color="green" fontcolor="black"] "lxc-ms_start_0 lxc2" -> "lxc-ms-master_running_0" [ style = bold] "lxc-ms_start_0 lxc2" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] "lxc-ms_start_0 lxc2" [ style=bold color="green" fontcolor="black"] "lxc-ms_stop_0 lxc1" -> "lxc-ms-master_stopped_0" [ style = bold] "lxc-ms_stop_0 lxc1" -> "lxc-ms_start_0 lxc1" [ style = bold] "lxc-ms_stop_0 lxc1" [ style=bold color="green" fontcolor="orange"] "lxc-ms_stop_0 lxc2" -> "lxc-ms-master_stopped_0" [ style = bold] "lxc-ms_stop_0 lxc2" -> "lxc-ms_start_0 lxc2" [ style = bold] "lxc-ms_stop_0 lxc2" [ style=bold color="green" fontcolor="orange"] "lxc1_monitor_0 18node1" -> "lxc1_start_0 18node1" [ style = bold] "lxc1_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc1_monitor_0 18node2" -> "lxc1_start_0 18node1" [ style = bold] "lxc1_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_monitor_0 18node3" -> "lxc1_start_0 18node1" [ style = bold] "lxc1_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] "lxc1_monitor_30000 18node1" [ style=bold color="green" fontcolor="black"] "lxc1_start_0 18node1" -> "lxc-ms_promote_0 lxc1" [ style = bold] "lxc1_start_0 18node1" -> "lxc-ms_start_0 lxc1" [ style = bold] "lxc1_start_0 18node1" -> "lxc1_monitor_30000 18node1" [ style = bold] "lxc1_start_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc2_monitor_0 18node1" -> "lxc2_start_0 18node1" [ style = bold] "lxc2_monitor_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc2_monitor_0 18node2" -> "lxc2_start_0 18node1" [ style = bold] "lxc2_monitor_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc2_monitor_0 18node3" -> "lxc2_start_0 18node1" [ style = bold] "lxc2_monitor_0 18node3" [ style=bold color="green" fontcolor="black"] "lxc2_monitor_30000 18node1" [ style=bold color="green" fontcolor="black"] "lxc2_start_0 18node1" -> "lxc-ms_monitor_10000 lxc2" [ style = bold] "lxc2_start_0 18node1" -> "lxc-ms_start_0 lxc2" [ style = bold] "lxc2_start_0 18node1" -> "lxc2_monitor_30000 18node1" [ style = bold] "lxc2_start_0 18node1" [ style=bold color="green" fontcolor="black"] "stonith 'reboot' lxc1" -> "container1_start_0 18node1" [ style = bold] "stonith 'reboot' lxc1" -> "container2_start_0 18node1" [ style = bold] "stonith 'reboot' lxc1" -> "lxc-ms-master_stop_0" [ style = bold] "stonith 'reboot' lxc1" -> "lxc-ms_demote_0 lxc1" [ style = bold] "stonith 'reboot' lxc1" -> "lxc-ms_promote_0 lxc1" [ style = bold] "stonith 'reboot' lxc1" -> "lxc-ms_start_0 lxc1" [ style = bold] "stonith 'reboot' lxc1" -> "lxc-ms_start_0 lxc2" [ style = bold] "stonith 'reboot' lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold] "stonith 'reboot' lxc1" -> "lxc1_start_0 18node1" [ style = bold] "stonith 'reboot' lxc1" -> "lxc2_start_0 18node1" [ style = bold] "stonith 'reboot' lxc1" [ style=bold color="green" fontcolor="orange"] "stonith 'reboot' lxc2" -> "container1_start_0 18node1" [ style = bold] "stonith 'reboot' lxc2" -> "container2_start_0 18node1" [ style = bold] "stonith 'reboot' lxc2" -> "lxc-ms-master_stop_0" [ style = bold] "stonith 'reboot' lxc2" -> "lxc-ms_promote_0 lxc1" [ style = bold] "stonith 'reboot' lxc2" -> "lxc-ms_start_0 lxc1" [ style = bold] "stonith 'reboot' lxc2" -> "lxc-ms_start_0 lxc2" [ style = bold] "stonith 'reboot' lxc2" -> "lxc-ms_stop_0 lxc2" [ style = bold] "stonith 'reboot' lxc2" -> "lxc1_start_0 18node1" [ style = bold] "stonith 'reboot' lxc2" -> "lxc2_start_0 18node1" [ style = bold] "stonith 'reboot' lxc2" [ style=bold color="green" fontcolor="orange"] } diff --git a/cts/scheduler/whitebox-ms-ordering.exp b/cts/scheduler/whitebox-ms-ordering.exp index 6ab6beeb62..f88c4eb1c4 100644 --- a/cts/scheduler/whitebox-ms-ordering.exp +++ b/cts/scheduler/whitebox-ms-ordering.exp @@ -1,573 +1,582 @@ + + + + + + + + + diff --git a/cts/scheduler/whitebox-orphaned.dot b/cts/scheduler/whitebox-orphaned.dot index 1511877527..fdb1547c31 100644 --- a/cts/scheduler/whitebox-orphaned.dot +++ b/cts/scheduler/whitebox-orphaned.dot @@ -1,38 +1,39 @@ digraph "g" { "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_monitor_0 lxc2" -> "B_start_0 lxc2" [ style = bold] +"B_monitor_0 lxc2" -> "lxc1_stop_0 18node2" [ style = bold] "B_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] "B_start_0 lxc2" -> "B_monitor_10000 lxc2" [ style = bold] "B_start_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_stop_0 lxc1" -> "B_start_0 lxc2" [ style = bold] "B_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] "B_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] "D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "M-clone_stop_0" -> "M-clone_stopped_0" [ style = bold] "M-clone_stop_0" -> "M_stop_0 lxc1" [ style = bold] "M-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "M-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "M_stop_0 lxc1" -> "M-clone_stopped_0" [ style = bold] "M_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] "M_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] "container1_clear_failcount_0 18node2" -> "container1_stop_0 18node2" [ style = bold] "container1_clear_failcount_0 18node2" [ style=bold color="green" fontcolor="black"] "container1_delete_0 18node1" [ style=bold color="green" fontcolor="black"] "container1_delete_0 18node2" [ style=bold color="green" fontcolor="black"] "container1_delete_0 18node3" [ style=bold color="green" fontcolor="black"] "container1_stop_0 18node2" -> "container1_delete_0 18node1" [ style = bold] "container1_stop_0 18node2" -> "container1_delete_0 18node2" [ style = bold] "container1_stop_0 18node2" -> "container1_delete_0 18node3" [ style = bold] "container1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_clear_failcount_0 18node2" -> "lxc1_stop_0 18node2" [ style = bold] "lxc1_clear_failcount_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_delete_0 18node1" [ style=bold color="green" fontcolor="black"] "lxc1_delete_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_delete_0 18node3" [ style=bold color="green" fontcolor="black"] "lxc1_stop_0 18node2" -> "container1_stop_0 18node2" [ style = bold] "lxc1_stop_0 18node2" -> "lxc1_delete_0 18node1" [ style = bold] "lxc1_stop_0 18node2" -> "lxc1_delete_0 18node2" [ style = bold] "lxc1_stop_0 18node2" -> "lxc1_delete_0 18node3" [ style = bold] "lxc1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/whitebox-orphaned.exp b/cts/scheduler/whitebox-orphaned.exp index 251aa49f2b..ee7132a476 100644 --- a/cts/scheduler/whitebox-orphaned.exp +++ b/cts/scheduler/whitebox-orphaned.exp @@ -1,237 +1,240 @@ + + + diff --git a/cts/scheduler/whitebox-stop.dot b/cts/scheduler/whitebox-stop.dot index 304f1343af..8e03f9b0c0 100644 --- a/cts/scheduler/whitebox-stop.dot +++ b/cts/scheduler/whitebox-stop.dot @@ -1,22 +1,23 @@ digraph "g" { "A_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_monitor_0 lxc2" -> "B_start_0 lxc2" [ style = bold] +"B_monitor_0 lxc2" -> "lxc1_stop_0 18node2" [ style = bold] "B_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_monitor_10000 lxc2" [ style=bold color="green" fontcolor="black"] "B_start_0 lxc2" -> "B_monitor_10000 lxc2" [ style = bold] "B_start_0 lxc2" [ style=bold color="green" fontcolor="black"] "B_stop_0 lxc1" -> "B_start_0 lxc2" [ style = bold] "B_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] "B_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] "D_monitor_0 lxc2" [ style=bold color="green" fontcolor="black"] "M-clone_stop_0" -> "M-clone_stopped_0" [ style = bold] "M-clone_stop_0" -> "M_stop_0 lxc1" [ style = bold] "M-clone_stop_0" [ style=bold color="green" fontcolor="orange"] "M-clone_stopped_0" [ style=bold color="green" fontcolor="orange"] "M_stop_0 lxc1" -> "M-clone_stopped_0" [ style = bold] "M_stop_0 lxc1" -> "lxc1_stop_0 18node2" [ style = bold] "M_stop_0 lxc1" [ style=bold color="green" fontcolor="black"] "container1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] "lxc1_stop_0 18node2" -> "container1_stop_0 18node2" [ style = bold] "lxc1_stop_0 18node2" [ style=bold color="green" fontcolor="black"] } diff --git a/cts/scheduler/whitebox-stop.exp b/cts/scheduler/whitebox-stop.exp index 3640b0386d..81f55afedb 100644 --- a/cts/scheduler/whitebox-stop.exp +++ b/cts/scheduler/whitebox-stop.exp @@ -1,136 +1,139 @@ + + + diff --git a/lib/internal/pcmki_sched_allocate.c b/lib/internal/pcmki_sched_allocate.c index 89427d8513..b1671e46f3 100644 --- a/lib/internal/pcmki_sched_allocate.c +++ b/lib/internal/pcmki_sched_allocate.c @@ -1,2575 +1,2738 @@ /* * Copyright 2004-2019 Andrew Beekhof * * 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 #include CRM_TRACE_INIT_DATA(pe_allocate); void set_alloc_actions(pe_working_set_t * data_set); extern void ReloadRsc(resource_t * rsc, node_t *node, pe_working_set_t * data_set); extern gboolean DeleteRsc(resource_t * rsc, node_t * node, gboolean optional, pe_working_set_t * data_set); static void apply_remote_node_ordering(pe_working_set_t *data_set); static enum remote_connection_state get_remote_node_state(pe_node_t *node); enum remote_connection_state { remote_state_unknown = 0, remote_state_alive = 1, remote_state_resting = 2, remote_state_failed = 3, remote_state_stopped = 4 }; static const char * state2text(enum remote_connection_state state) { switch (state) { case remote_state_unknown: return "unknown"; case remote_state_alive: return "alive"; case remote_state_resting: return "resting"; case remote_state_failed: return "failed"; case remote_state_stopped: return "stopped"; } return "impossible"; } resource_alloc_functions_t resource_class_alloc_functions[] = { { native_merge_weights, native_color, native_create_actions, native_create_probe, native_internal_constraints, native_rsc_colocation_lh, native_rsc_colocation_rh, native_rsc_location, native_action_flags, native_update_actions, native_expand, native_append_meta, }, { group_merge_weights, group_color, group_create_actions, native_create_probe, group_internal_constraints, group_rsc_colocation_lh, group_rsc_colocation_rh, group_rsc_location, group_action_flags, group_update_actions, group_expand, group_append_meta, }, { clone_merge_weights, clone_color, clone_create_actions, clone_create_probe, clone_internal_constraints, clone_rsc_colocation_lh, clone_rsc_colocation_rh, clone_rsc_location, clone_action_flags, container_update_actions, clone_expand, clone_append_meta, }, { container_merge_weights, container_color, container_create_actions, container_create_probe, container_internal_constraints, container_rsc_colocation_lh, container_rsc_colocation_rh, container_rsc_location, container_action_flags, container_update_actions, container_expand, container_append_meta, } }; gboolean update_action_flags(action_t * action, enum pe_action_flags flags, const char *source, int line) { static unsigned long calls = 0; gboolean changed = FALSE; gboolean clear = is_set(flags, pe_action_clear); enum pe_action_flags last = action->flags; if (clear) { action->flags = crm_clear_bit(source, line, action->uuid, action->flags, flags); } else { action->flags = crm_set_bit(source, line, action->uuid, action->flags, flags); } if (last != action->flags) { calls++; changed = TRUE; /* Useful for tracking down _who_ changed a specific flag */ /* CRM_ASSERT(calls != 534); */ clear_bit(flags, pe_action_clear); crm_trace("%s on %s: %sset flags 0x%.6x (was 0x%.6x, now 0x%.6x, %lu, %s)", action->uuid, action->node ? action->node->details->uname : "[none]", clear ? "un-" : "", flags, last, action->flags, calls, source); } return changed; } static gboolean check_rsc_parameters(resource_t * rsc, node_t * node, xmlNode * rsc_entry, gboolean active_here, pe_working_set_t * data_set) { int attr_lpc = 0; gboolean force_restart = FALSE; gboolean delete_resource = FALSE; gboolean changed = FALSE; const char *value = NULL; const char *old_value = NULL; const char *attr_list[] = { XML_ATTR_TYPE, XML_AGENT_ATTR_CLASS, XML_AGENT_ATTR_PROVIDER }; for (; attr_lpc < DIMOF(attr_list); attr_lpc++) { value = crm_element_value(rsc->xml, attr_list[attr_lpc]); old_value = crm_element_value(rsc_entry, attr_list[attr_lpc]); if (value == old_value /* i.e. NULL */ || crm_str_eq(value, old_value, TRUE)) { continue; } changed = TRUE; trigger_unfencing(rsc, node, "Device definition changed", NULL, data_set); if (active_here) { force_restart = TRUE; crm_notice("Forcing restart of %s on %s, %s changed: %s -> %s", rsc->id, node->details->uname, attr_list[attr_lpc], crm_str(old_value), crm_str(value)); } } if (force_restart) { /* make sure the restart happens */ stop_action(rsc, node, FALSE); set_bit(rsc->flags, pe_rsc_start_pending); delete_resource = TRUE; } else if (changed) { delete_resource = TRUE; } return delete_resource; } static void CancelXmlOp(resource_t * rsc, xmlNode * xml_op, node_t * active_node, const char *reason, pe_working_set_t * data_set) { guint interval_ms = 0; action_t *cancel = NULL; const char *task = NULL; const char *call_id = NULL; const char *interval_ms_s = NULL; CRM_CHECK(xml_op != NULL, return); CRM_CHECK(active_node != NULL, return); task = crm_element_value(xml_op, XML_LRM_ATTR_TASK); call_id = crm_element_value(xml_op, XML_LRM_ATTR_CALLID); interval_ms_s = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL_MS); interval_ms = crm_parse_ms(interval_ms_s); crm_info("Action " CRM_OP_FMT " on %s will be stopped: %s", rsc->id, task, interval_ms, active_node->details->uname, (reason? reason : "unknown")); cancel = pe_cancel_op(rsc, task, interval_ms, active_node, data_set); add_hash_param(cancel->meta, XML_LRM_ATTR_CALLID, call_id); custom_action_order(rsc, stop_key(rsc), NULL, rsc, NULL, cancel, pe_order_optional, data_set); } static gboolean check_action_definition(resource_t * rsc, node_t * active_node, xmlNode * xml_op, pe_working_set_t * data_set) { char *key = NULL; guint interval_ms = 0; const char *interval_ms_s = NULL; const op_digest_cache_t *digest_data = NULL; gboolean did_change = FALSE; const char *task = crm_element_value(xml_op, XML_LRM_ATTR_TASK); const char *digest_secure = NULL; CRM_CHECK(active_node != NULL, return FALSE); interval_ms_s = crm_element_value(xml_op, XML_LRM_ATTR_INTERVAL_MS); interval_ms = crm_parse_ms(interval_ms_s); if (interval_ms > 0) { xmlNode *op_match = NULL; /* we need to reconstruct the key because of the way we used to construct resource IDs */ key = generate_op_key(rsc->id, task, interval_ms); pe_rsc_trace(rsc, "Checking parameters for %s", key); op_match = find_rsc_op_entry(rsc, key); if (op_match == NULL && is_set(data_set->flags, pe_flag_stop_action_orphans)) { CancelXmlOp(rsc, xml_op, active_node, "orphan", data_set); free(key); return TRUE; } else if (op_match == NULL) { pe_rsc_debug(rsc, "Orphan action detected: %s on %s", key, active_node->details->uname); free(key); return TRUE; } free(key); key = NULL; } crm_trace("Testing " CRM_OP_FMT " on %s", rsc->id, task, interval_ms, active_node->details->uname); if ((interval_ms == 0) && safe_str_eq(task, RSC_STATUS)) { /* Reload based on the start action not a probe */ task = RSC_START; } else if ((interval_ms == 0) && safe_str_eq(task, RSC_MIGRATED)) { /* Reload based on the start action not a migrate */ task = RSC_START; } else if ((interval_ms == 0) && safe_str_eq(task, RSC_PROMOTE)) { /* Reload based on the start action not a promote */ task = RSC_START; } digest_data = rsc_action_digest_cmp(rsc, xml_op, active_node, data_set); if(is_set(data_set->flags, pe_flag_sanitized)) { digest_secure = crm_element_value(xml_op, XML_LRM_ATTR_SECURE_DIGEST); } if(digest_data->rc != RSC_DIGEST_MATCH && digest_secure && digest_data->digest_secure_calc && strcmp(digest_data->digest_secure_calc, digest_secure) == 0) { if (is_set(data_set->flags, pe_flag_stdout)) { printf("Only 'private' parameters to " CRM_OP_FMT " on %s changed: %s\n", rsc->id, task, interval_ms, active_node->details->uname, crm_element_value(xml_op, XML_ATTR_TRANSITION_MAGIC)); } } else if (digest_data->rc == RSC_DIGEST_RESTART) { /* Changes that force a restart */ pe_action_t *required = NULL; did_change = TRUE; key = generate_op_key(rsc->id, task, interval_ms); crm_log_xml_info(digest_data->params_restart, "params:restart"); required = custom_action(rsc, key, task, NULL, TRUE, TRUE, data_set); pe_action_set_flag_reason(__FUNCTION__, __LINE__, required, NULL, "resource definition change", pe_action_optional, TRUE); trigger_unfencing(rsc, active_node, "Device parameters changed", NULL, data_set); } else if ((digest_data->rc == RSC_DIGEST_ALL) || (digest_data->rc == RSC_DIGEST_UNKNOWN)) { /* Changes that can potentially be handled by a reload */ const char *digest_restart = crm_element_value(xml_op, XML_LRM_ATTR_RESTART_DIGEST); did_change = TRUE; trigger_unfencing(rsc, active_node, "Device parameters changed (reload)", NULL, data_set); crm_log_xml_info(digest_data->params_all, "params:reload"); key = generate_op_key(rsc->id, task, interval_ms); if (interval_ms > 0) { action_t *op = NULL; #if 0 /* Always reload/restart the entire resource */ ReloadRsc(rsc, active_node, data_set); #else /* Re-sending the recurring op is sufficient - the old one will be cancelled automatically */ op = custom_action(rsc, key, task, active_node, TRUE, TRUE, data_set); set_bit(op->flags, pe_action_reschedule); #endif } else if (digest_restart) { pe_rsc_trace(rsc, "Reloading '%s' action for resource %s", task, rsc->id); /* Reload this resource */ ReloadRsc(rsc, active_node, data_set); free(key); } else { pe_action_t *required = NULL; pe_rsc_trace(rsc, "Resource %s doesn't know how to reload", rsc->id); /* Re-send the start/demote/promote op * Recurring ops will be detected independently */ required = custom_action(rsc, key, task, NULL, TRUE, TRUE, data_set); pe_action_set_flag_reason(__FUNCTION__, __LINE__, required, NULL, "resource definition change", pe_action_optional, TRUE); } } return did_change; } /*! * \internal * \brief Do deferred action checks after allocation * * \param[in] data_set Working set for cluster */ static void check_params(pe_resource_t *rsc, pe_node_t *node, xmlNode *rsc_op, enum pe_check_parameters check, pe_working_set_t *data_set) { const char *reason = NULL; op_digest_cache_t *digest_data = NULL; switch (check) { case pe_check_active: if (check_action_definition(rsc, node, rsc_op, data_set) && pe_get_failcount(node, rsc, NULL, pe_fc_effective, NULL, data_set)) { reason = "action definition changed"; } break; case pe_check_last_failure: digest_data = rsc_action_digest_cmp(rsc, rsc_op, node, data_set); switch (digest_data->rc) { case RSC_DIGEST_UNKNOWN: crm_trace("Resource %s history entry %s on %s has no digest to compare", rsc->id, ID(rsc_op), node->details->id); break; case RSC_DIGEST_MATCH: break; default: reason = "resource parameters have changed"; break; } break; } if (reason) { pe__clear_failcount(rsc, node, reason, data_set); } } static void check_actions_for(xmlNode * rsc_entry, resource_t * rsc, node_t * node, pe_working_set_t * data_set) { GListPtr gIter = NULL; int offset = -1; guint interval_ms = 0; int stop_index = 0; int start_index = 0; const char *task = NULL; const char *interval_ms_s = NULL; xmlNode *rsc_op = NULL; GListPtr op_list = NULL; GListPtr sorted_op_list = NULL; CRM_CHECK(node != NULL, return); if (is_set(rsc->flags, pe_rsc_orphan)) { resource_t *parent = uber_parent(rsc); if(parent == NULL || pe_rsc_is_clone(parent) == FALSE || is_set(parent->flags, pe_rsc_unique)) { pe_rsc_trace(rsc, "Skipping param check for %s and deleting: orphan", rsc->id); DeleteRsc(rsc, node, FALSE, data_set); } else { pe_rsc_trace(rsc, "Skipping param check for %s (orphan clone)", rsc->id); } return; } else if (pe_find_node_id(rsc->running_on, node->details->id) == NULL) { if (check_rsc_parameters(rsc, node, rsc_entry, FALSE, data_set)) { DeleteRsc(rsc, node, FALSE, data_set); } pe_rsc_trace(rsc, "Skipping param check for %s: no longer active on %s", rsc->id, node->details->uname); return; } pe_rsc_trace(rsc, "Processing %s on %s", rsc->id, node->details->uname); if (check_rsc_parameters(rsc, node, rsc_entry, TRUE, data_set)) { DeleteRsc(rsc, node, FALSE, data_set); } for (rsc_op = __xml_first_child(rsc_entry); rsc_op != NULL; rsc_op = __xml_next_element(rsc_op)) { if (crm_str_eq((const char *)rsc_op->name, XML_LRM_TAG_RSC_OP, TRUE)) { op_list = g_list_prepend(op_list, rsc_op); } } sorted_op_list = g_list_sort(op_list, sort_op_by_callid); calculate_active_ops(sorted_op_list, &start_index, &stop_index); for (gIter = sorted_op_list; gIter != NULL; gIter = gIter->next) { xmlNode *rsc_op = (xmlNode *) gIter->data; offset++; if (start_index < stop_index) { /* stopped */ continue; } else if (offset < start_index) { /* action occurred prior to a start */ continue; } task = crm_element_value(rsc_op, XML_LRM_ATTR_TASK); interval_ms_s = crm_element_value(rsc_op, XML_LRM_ATTR_INTERVAL_MS); interval_ms = crm_parse_ms(interval_ms_s); if ((interval_ms > 0) && (is_set(rsc->flags, pe_rsc_maintenance) || node->details->maintenance)) { // Maintenance mode cancels recurring operations CancelXmlOp(rsc, rsc_op, node, "maintenance mode", data_set); } else if ((interval_ms > 0) || safe_str_eq(task, RSC_STATUS) || safe_str_eq(task, RSC_START) || safe_str_eq(task, RSC_PROMOTE) || safe_str_eq(task, RSC_MIGRATED)) { /* If a resource operation failed, and the operation's definition * has changed, clear any fail count so they can be retried fresh. */ if (container_fix_remote_addr(rsc)) { /* We haven't allocated resources to nodes yet, so if the * REMOTE_CONTAINER_HACK is used, we may calculate the digest * based on the literal "#uname" value rather than the properly * substituted value. That would mistakenly make the action * definition appear to have been changed. Defer the check until * later in this case. */ pe__add_param_check(rsc_op, rsc, node, pe_check_active, data_set); } else if (check_action_definition(rsc, node, rsc_op, data_set) && pe_get_failcount(node, rsc, NULL, pe_fc_effective, NULL, data_set)) { pe__clear_failcount(rsc, node, "action definition changed", data_set); } } } g_list_free(sorted_op_list); } static GListPtr find_rsc_list(GListPtr result, resource_t * rsc, const char *id, gboolean renamed_clones, gboolean partial, pe_working_set_t * data_set) { GListPtr gIter = NULL; gboolean match = FALSE; if (id == NULL) { return NULL; } else if (rsc == NULL && data_set) { for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { resource_t *child = (resource_t *) gIter->data; result = find_rsc_list(result, child, id, renamed_clones, partial, NULL); } return result; } else if (rsc == NULL) { return NULL; } if (partial) { if (strstr(rsc->id, id)) { match = TRUE; } else if (renamed_clones && rsc->clone_name && strstr(rsc->clone_name, id)) { match = TRUE; } } else { if (strcmp(rsc->id, id) == 0) { match = TRUE; } else if (renamed_clones && rsc->clone_name && strcmp(rsc->clone_name, id) == 0) { match = TRUE; } } if (match) { result = g_list_prepend(result, rsc); } if (rsc->children) { gIter = rsc->children; for (; gIter != NULL; gIter = gIter->next) { resource_t *child = (resource_t *) gIter->data; result = find_rsc_list(result, child, id, renamed_clones, partial, NULL); } } return result; } static void check_actions(pe_working_set_t * data_set) { const char *id = NULL; node_t *node = NULL; xmlNode *lrm_rscs = NULL; xmlNode *status = get_object_root(XML_CIB_TAG_STATUS, data_set->input); xmlNode *node_state = NULL; for (node_state = __xml_first_child(status); node_state != NULL; node_state = __xml_next_element(node_state)) { if (crm_str_eq((const char *)node_state->name, XML_CIB_TAG_STATE, TRUE)) { id = crm_element_value(node_state, XML_ATTR_ID); lrm_rscs = find_xml_node(node_state, XML_CIB_TAG_LRM, FALSE); lrm_rscs = find_xml_node(lrm_rscs, XML_LRM_TAG_RESOURCES, FALSE); node = pe_find_node_id(data_set->nodes, id); if (node == NULL) { continue; /* Still need to check actions for a maintenance node to cancel existing monitor operations */ } else if (can_run_resources(node) == FALSE && node->details->maintenance == FALSE) { crm_trace("Skipping param check for %s: can't run resources", node->details->uname); continue; } crm_trace("Processing node %s", node->details->uname); if (node->details->online || is_set(data_set->flags, pe_flag_stonith_enabled)) { xmlNode *rsc_entry = NULL; for (rsc_entry = __xml_first_child(lrm_rscs); rsc_entry != NULL; rsc_entry = __xml_next_element(rsc_entry)) { if (crm_str_eq((const char *)rsc_entry->name, XML_LRM_TAG_RESOURCE, TRUE)) { if (xml_has_children(rsc_entry)) { GListPtr gIter = NULL; GListPtr result = NULL; const char *rsc_id = ID(rsc_entry); CRM_CHECK(rsc_id != NULL, return); result = find_rsc_list(NULL, NULL, rsc_id, TRUE, FALSE, data_set); for (gIter = result; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; if (rsc->variant != pe_native) { continue; } check_actions_for(rsc_entry, rsc, node, data_set); } g_list_free(result); } } } } } } } static gboolean apply_placement_constraints(pe_working_set_t * data_set) { GListPtr gIter = NULL; crm_trace("Applying constraints..."); for (gIter = data_set->placement_constraints; gIter != NULL; gIter = gIter->next) { pe__location_t *cons = gIter->data; cons->rsc_lh->cmds->rsc_location(cons->rsc_lh, cons); } return TRUE; } static gboolean failcount_clear_action_exists(node_t * node, resource_t * rsc) { gboolean rc = FALSE; char *key = generate_op_key(rsc->id, CRM_OP_CLEAR_FAILCOUNT, 0); GListPtr list = find_actions_exact(rsc->actions, key, node); if (list) { rc = TRUE; } g_list_free(list); free(key); return rc; } /*! * \internal * \brief Force resource away if failures hit migration threshold * * \param[in,out] rsc Resource to check for failures * \param[in,out] node Node to check for failures * \param[in,out] data_set Cluster working set to update */ static void check_migration_threshold(resource_t *rsc, node_t *node, pe_working_set_t *data_set) { int fail_count, countdown; resource_t *failed; /* Migration threshold of 0 means never force away */ if (rsc->migration_threshold == 0) { return; } // If we're ignoring failures, also ignore the migration threshold if (is_set(rsc->flags, pe_rsc_failure_ignored)) { return; } /* If there are no failures, there's no need to force away */ fail_count = pe_get_failcount(node, rsc, NULL, pe_fc_effective|pe_fc_fillers, NULL, data_set); if (fail_count <= 0) { return; } /* How many more times recovery will be tried on this node */ countdown = QB_MAX(rsc->migration_threshold - fail_count, 0); /* If failed resource has a parent, we'll force the parent away */ failed = rsc; if (is_not_set(rsc->flags, pe_rsc_unique)) { failed = uber_parent(rsc); } if (countdown == 0) { resource_location(failed, node, -INFINITY, "__fail_limit__", data_set); crm_warn("Forcing %s away from %s after %d failures (max=%d)", failed->id, node->details->uname, fail_count, rsc->migration_threshold); } else { crm_info("%s can fail %d more times on %s before being forced off", failed->id, countdown, node->details->uname); } } static void common_apply_stickiness(resource_t * rsc, node_t * node, pe_working_set_t * data_set) { if (rsc->children) { GListPtr gIter = rsc->children; for (; gIter != NULL; gIter = gIter->next) { resource_t *child_rsc = (resource_t *) gIter->data; common_apply_stickiness(child_rsc, node, data_set); } return; } if (is_set(rsc->flags, pe_rsc_managed) && rsc->stickiness != 0 && g_list_length(rsc->running_on) == 1) { node_t *current = pe_find_node_id(rsc->running_on, node->details->id); node_t *match = pe_hash_table_lookup(rsc->allowed_nodes, node->details->id); if (current == NULL) { } else if (match != NULL || is_set(data_set->flags, pe_flag_symmetric_cluster)) { resource_t *sticky_rsc = rsc; resource_location(sticky_rsc, node, rsc->stickiness, "stickiness", data_set); pe_rsc_debug(sticky_rsc, "Resource %s: preferring current location" " (node=%s, weight=%d)", sticky_rsc->id, node->details->uname, rsc->stickiness); } else { GHashTableIter iter; node_t *nIter = NULL; pe_rsc_debug(rsc, "Ignoring stickiness for %s: the cluster is asymmetric" " and node %s is not explicitly allowed", rsc->id, node->details->uname); g_hash_table_iter_init(&iter, rsc->allowed_nodes); while (g_hash_table_iter_next(&iter, NULL, (void **)&nIter)) { crm_err("%s[%s] = %d", rsc->id, nIter->details->uname, nIter->weight); } } } /* Check the migration threshold only if a failcount clear action * has not already been placed for this resource on the node. * There is no sense in potentially forcing the resource from this * node if the failcount is being reset anyway. * * @TODO A clear_failcount operation can be scheduled in stage4() via * check_actions_for(), or in stage5() via check_params(). This runs in * stage2(), so it cannot detect those, meaning we might check the migration * threshold when we shouldn't -- worst case, we stop or move the resource, * then move it back next transition. */ if (failcount_clear_action_exists(node, rsc) == FALSE) { check_migration_threshold(rsc, node, data_set); } } void complex_set_cmds(resource_t * rsc) { GListPtr gIter = rsc->children; rsc->cmds = &resource_class_alloc_functions[rsc->variant]; for (; gIter != NULL; gIter = gIter->next) { resource_t *child_rsc = (resource_t *) gIter->data; complex_set_cmds(child_rsc); } } void set_alloc_actions(pe_working_set_t * data_set) { GListPtr gIter = data_set->resources; for (; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; complex_set_cmds(rsc); } } static void calculate_system_health(gpointer gKey, gpointer gValue, gpointer user_data) { const char *key = (const char *)gKey; const char *value = (const char *)gValue; int *system_health = (int *)user_data; if (!gKey || !gValue || !user_data) { return; } if (crm_starts_with(key, "#health")) { int score; /* Convert the value into an integer */ score = char2score(value); /* Add it to the running total */ *system_health = merge_weights(score, *system_health); } } static gboolean apply_system_health(pe_working_set_t * data_set) { GListPtr gIter = NULL; const char *health_strategy = pe_pref(data_set->config_hash, "node-health-strategy"); int base_health = 0; if (health_strategy == NULL || safe_str_eq(health_strategy, "none")) { /* Prevent any accidental health -> score translation */ node_score_red = 0; node_score_yellow = 0; node_score_green = 0; return TRUE; } else if (safe_str_eq(health_strategy, "migrate-on-red")) { /* Resources on nodes which have health values of red are * weighted away from that node. */ node_score_red = -INFINITY; node_score_yellow = 0; node_score_green = 0; } else if (safe_str_eq(health_strategy, "only-green")) { /* Resources on nodes which have health values of red or yellow * are forced away from that node. */ node_score_red = -INFINITY; node_score_yellow = -INFINITY; node_score_green = 0; } else if (safe_str_eq(health_strategy, "progressive")) { /* Same as the above, but use the r/y/g scores provided by the user * Defaults are provided by the pe_prefs table * Also, custom health "base score" can be used */ base_health = crm_parse_int(pe_pref(data_set->config_hash, "node-health-base"), "0"); } else if (safe_str_eq(health_strategy, "custom")) { /* Requires the admin to configure the rsc_location constaints for * processing the stored health scores */ /* TODO: Check for the existence of appropriate node health constraints */ return TRUE; } else { crm_err("Unknown node health strategy: %s", health_strategy); return FALSE; } crm_info("Applying automated node health strategy: %s", health_strategy); for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { int system_health = base_health; node_t *node = (node_t *) gIter->data; /* Search through the node hash table for system health entries. */ g_hash_table_foreach(node->details->attrs, calculate_system_health, &system_health); crm_info(" Node %s has an combined system health of %d", node->details->uname, system_health); /* If the health is non-zero, then create a new rsc2node so that the * weight will be added later on. */ if (system_health != 0) { GListPtr gIter2 = data_set->resources; for (; gIter2 != NULL; gIter2 = gIter2->next) { resource_t *rsc = (resource_t *) gIter2->data; rsc2node_new(health_strategy, rsc, system_health, NULL, node, data_set); } } } return TRUE; } gboolean stage0(pe_working_set_t * data_set) { xmlNode *cib_constraints = get_object_root(XML_CIB_TAG_CONSTRAINTS, data_set->input); if (data_set->input == NULL) { return FALSE; } if (is_set(data_set->flags, pe_flag_have_status) == FALSE) { crm_trace("Calculating status"); cluster_status(data_set); } set_alloc_actions(data_set); apply_system_health(data_set); unpack_constraints(cib_constraints, data_set); return TRUE; } /* * Check nodes for resources started outside of the LRM */ gboolean probe_resources(pe_working_set_t * data_set) { action_t *probe_node_complete = NULL; for (GListPtr gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; const char *probed = pe_node_attribute_raw(node, CRM_OP_PROBED); if (node->details->online == FALSE) { if (is_baremetal_remote_node(node) && node->details->remote_rsc && (get_remote_node_state(node) == remote_state_failed)) { pe_fence_node(data_set, node, "the connection is unrecoverable"); } continue; } else if (node->details->unclean) { continue; } else if (node->details->rsc_discovery_enabled == FALSE) { /* resource discovery is disabled for this node */ continue; } if (probed != NULL && crm_is_true(probed) == FALSE) { action_t *probe_op = custom_action(NULL, crm_strdup_printf("%s-%s", CRM_OP_REPROBE, node->details->uname), CRM_OP_REPROBE, node, FALSE, TRUE, data_set); add_hash_param(probe_op->meta, XML_ATTR_TE_NOWAIT, XML_BOOLEAN_TRUE); continue; } for (GListPtr gIter2 = data_set->resources; gIter2 != NULL; gIter2 = gIter2->next) { resource_t *rsc = (resource_t *) gIter2->data; rsc->cmds->create_probe(rsc, node, probe_node_complete, FALSE, data_set); } } return TRUE; } static void rsc_discover_filter(resource_t *rsc, node_t *node) { GListPtr gIter = rsc->children; resource_t *top = uber_parent(rsc); node_t *match; if (rsc->exclusive_discover == FALSE && top->exclusive_discover == FALSE) { return; } for (; gIter != NULL; gIter = gIter->next) { resource_t *child_rsc = (resource_t *) gIter->data; rsc_discover_filter(child_rsc, node); } match = g_hash_table_lookup(rsc->allowed_nodes, node->details->id); if (match && match->rsc_discover_mode != pe_discover_exclusive) { match->weight = -INFINITY; } } /* * Count how many valid nodes we have (so we know the maximum number of * colors we can resolve). * * Apply node constraints (i.e. filter the "allowed_nodes" part of resources) */ gboolean stage2(pe_working_set_t * data_set) { GListPtr gIter = NULL; crm_trace("Applying placement constraints"); gIter = data_set->nodes; for (; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; if (node == NULL) { /* error */ } else if (node->weight >= 0.0 /* global weight */ && node->details->online && node->details->type != node_ping) { data_set->max_valid_nodes++; } } apply_placement_constraints(data_set); gIter = data_set->nodes; for (; gIter != NULL; gIter = gIter->next) { GListPtr gIter2 = NULL; node_t *node = (node_t *) gIter->data; gIter2 = data_set->resources; for (; gIter2 != NULL; gIter2 = gIter2->next) { resource_t *rsc = (resource_t *) gIter2->data; common_apply_stickiness(rsc, node, data_set); rsc_discover_filter(rsc, node); } } return TRUE; } /* * Create internal resource constraints before allocation */ gboolean stage3(pe_working_set_t * data_set) { GListPtr gIter = data_set->resources; for (; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; rsc->cmds->internal_constraints(rsc, data_set); } return TRUE; } /* * Check for orphaned or redefined actions */ gboolean stage4(pe_working_set_t * data_set) { check_actions(data_set); return TRUE; } static void * convert_const_pointer(const void *ptr) { /* Worst function ever */ return (void *)ptr; } static gint sort_rsc_process_order(gconstpointer a, gconstpointer b, gpointer data) { int rc = 0; int r1_weight = -INFINITY; int r2_weight = -INFINITY; const char *reason = "existence"; const GListPtr nodes = (GListPtr) data; const resource_t *resource1 = a; const resource_t *resource2 = b; node_t *r1_node = NULL; node_t *r2_node = NULL; GListPtr gIter = NULL; GHashTable *r1_nodes = NULL; GHashTable *r2_nodes = NULL; if (a == NULL && b == NULL) { goto done; } if (a == NULL) { return 1; } if (b == NULL) { return -1; } reason = "priority"; r1_weight = resource1->priority; r2_weight = resource2->priority; if (r1_weight > r2_weight) { rc = -1; goto done; } if (r1_weight < r2_weight) { rc = 1; goto done; } reason = "no node list"; if (nodes == NULL) { goto done; } r1_nodes = rsc_merge_weights(convert_const_pointer(resource1), resource1->id, NULL, NULL, 1, pe_weights_forward | pe_weights_init); dump_node_scores(LOG_TRACE, NULL, resource1->id, r1_nodes); r2_nodes = rsc_merge_weights(convert_const_pointer(resource2), resource2->id, NULL, NULL, 1, pe_weights_forward | pe_weights_init); dump_node_scores(LOG_TRACE, NULL, resource2->id, r2_nodes); /* Current location score */ reason = "current location"; r1_weight = -INFINITY; r2_weight = -INFINITY; if (resource1->running_on) { r1_node = pe__current_node(resource1); r1_node = g_hash_table_lookup(r1_nodes, r1_node->details->id); if (r1_node != NULL) { r1_weight = r1_node->weight; } } if (resource2->running_on) { r2_node = pe__current_node(resource2); r2_node = g_hash_table_lookup(r2_nodes, r2_node->details->id); if (r2_node != NULL) { r2_weight = r2_node->weight; } } if (r1_weight > r2_weight) { rc = -1; goto done; } if (r1_weight < r2_weight) { rc = 1; goto done; } reason = "score"; for (gIter = nodes; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; r1_node = NULL; r2_node = NULL; r1_weight = -INFINITY; if (r1_nodes) { r1_node = g_hash_table_lookup(r1_nodes, node->details->id); } if (r1_node) { r1_weight = r1_node->weight; } r2_weight = -INFINITY; if (r2_nodes) { r2_node = g_hash_table_lookup(r2_nodes, node->details->id); } if (r2_node) { r2_weight = r2_node->weight; } if (r1_weight > r2_weight) { rc = -1; goto done; } if (r1_weight < r2_weight) { rc = 1; goto done; } } done: crm_trace("%s (%d) on %s %c %s (%d) on %s: %s", resource1->id, r1_weight, r1_node ? r1_node->details->id : "n/a", rc < 0 ? '>' : rc > 0 ? '<' : '=', resource2->id, r2_weight, r2_node ? r2_node->details->id : "n/a", reason); if (r1_nodes) { g_hash_table_destroy(r1_nodes); } if (r2_nodes) { g_hash_table_destroy(r2_nodes); } return rc; } static void allocate_resources(pe_working_set_t * data_set) { GListPtr gIter = NULL; if (is_set(data_set->flags, pe_flag_have_remote_nodes)) { /* Force remote connection resources to be allocated first. This * also forces any colocation dependencies to be allocated as well */ for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; if (rsc->is_remote_node == FALSE) { continue; } pe_rsc_trace(rsc, "Allocating: %s", rsc->id); /* For remote node connection resources, always prefer the partial * migration target during resource allocation, if the rsc is in the * middle of a migration. */ rsc->cmds->allocate(rsc, rsc->partial_migration_target, data_set); } } /* now do the rest of the resources */ for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; if (rsc->is_remote_node == TRUE) { continue; } pe_rsc_trace(rsc, "Allocating: %s", rsc->id); rsc->cmds->allocate(rsc, NULL, data_set); } } /* We always use pe_order_preserve with these convenience functions to exempt * internally generated constraints from the prohibition of user constraints * involving remote connection resources. * * The start ordering additionally uses pe_order_runnable_left so that the * specified action is not runnable if the start is not runnable. */ static inline void order_start_then_action(resource_t *lh_rsc, action_t *rh_action, enum pe_ordering extra, pe_working_set_t *data_set) { if (lh_rsc && rh_action && data_set) { custom_action_order(lh_rsc, start_key(lh_rsc), NULL, rh_action->rsc, NULL, rh_action, pe_order_preserve | pe_order_runnable_left | extra, data_set); } } static inline void order_action_then_stop(action_t *lh_action, resource_t *rh_rsc, enum pe_ordering extra, pe_working_set_t *data_set) { if (lh_action && rh_rsc && data_set) { custom_action_order(lh_action->rsc, NULL, lh_action, rh_rsc, stop_key(rh_rsc), NULL, pe_order_preserve | extra, data_set); } } static void cleanup_orphans(resource_t * rsc, pe_working_set_t * data_set) { GListPtr gIter = NULL; if (is_set(data_set->flags, pe_flag_stop_rsc_orphans) == FALSE) { return; } /* Don't recurse into ->children, those are just unallocated clone instances */ if(is_not_set(rsc->flags, pe_rsc_orphan)) { return; } for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; if (node->details->online && pe_get_failcount(node, rsc, NULL, pe_fc_effective, NULL, data_set)) { pe_action_t *clear_op = NULL; clear_op = pe__clear_failcount(rsc, node, "it is orphaned", data_set); /* We can't use order_action_then_stop() here because its * pe_order_preserve breaks things */ custom_action_order(clear_op->rsc, NULL, clear_op, rsc, stop_key(rsc), NULL, pe_order_optional, data_set); } } } gboolean stage5(pe_working_set_t * data_set) { GListPtr gIter = NULL; if (safe_str_neq(data_set->placement_strategy, "default")) { GListPtr nodes = g_list_copy(data_set->nodes); nodes = sort_nodes_by_weight(nodes, NULL, data_set); data_set->resources = g_list_sort_with_data(data_set->resources, sort_rsc_process_order, nodes); g_list_free(nodes); } gIter = data_set->nodes; for (; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; dump_node_capacity(show_utilization ? 0 : utilization_log_level, "Original", node); } crm_trace("Allocating services"); /* Take (next) highest resource, assign it and create its actions */ allocate_resources(data_set); gIter = data_set->nodes; for (; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; dump_node_capacity(show_utilization ? 0 : utilization_log_level, "Remaining", node); } // Process deferred action checks pe__foreach_param_check(data_set, check_params); pe__free_param_checks(data_set); if (is_set(data_set->flags, pe_flag_startup_probes)) { crm_trace("Calculating needed probes"); /* This code probably needs optimization * ptest -x with 100 nodes, 100 clones and clone-max=100: With probes: ptest[14781]: 2010/09/27_17:56:46 notice: TRACE: do_calculations: pengine.c:258 Calculate cluster status ptest[14781]: 2010/09/27_17:56:46 notice: TRACE: do_calculations: pengine.c:278 Applying placement constraints ptest[14781]: 2010/09/27_17:56:47 notice: TRACE: do_calculations: pengine.c:285 Create internal constraints ptest[14781]: 2010/09/27_17:56:47 notice: TRACE: do_calculations: pengine.c:292 Check actions ptest[14781]: 2010/09/27_17:56:48 notice: TRACE: do_calculations: pengine.c:299 Allocate resources ptest[14781]: 2010/09/27_17:56:48 notice: TRACE: stage5: allocate.c:881 Allocating services ptest[14781]: 2010/09/27_17:56:49 notice: TRACE: stage5: allocate.c:894 Calculating needed probes ptest[14781]: 2010/09/27_17:56:51 notice: TRACE: stage5: allocate.c:899 Creating actions ptest[14781]: 2010/09/27_17:56:52 notice: TRACE: stage5: allocate.c:905 Creating done ptest[14781]: 2010/09/27_17:56:52 notice: TRACE: do_calculations: pengine.c:306 Processing fencing and shutdown cases ptest[14781]: 2010/09/27_17:56:52 notice: TRACE: do_calculations: pengine.c:313 Applying ordering constraints 36s ptest[14781]: 2010/09/27_17:57:28 notice: TRACE: do_calculations: pengine.c:320 Create transition graph Without probes: ptest[14637]: 2010/09/27_17:56:21 notice: TRACE: do_calculations: pengine.c:258 Calculate cluster status ptest[14637]: 2010/09/27_17:56:22 notice: TRACE: do_calculations: pengine.c:278 Applying placement constraints ptest[14637]: 2010/09/27_17:56:22 notice: TRACE: do_calculations: pengine.c:285 Create internal constraints ptest[14637]: 2010/09/27_17:56:22 notice: TRACE: do_calculations: pengine.c:292 Check actions ptest[14637]: 2010/09/27_17:56:23 notice: TRACE: do_calculations: pengine.c:299 Allocate resources ptest[14637]: 2010/09/27_17:56:23 notice: TRACE: stage5: allocate.c:881 Allocating services ptest[14637]: 2010/09/27_17:56:24 notice: TRACE: stage5: allocate.c:899 Creating actions ptest[14637]: 2010/09/27_17:56:25 notice: TRACE: stage5: allocate.c:905 Creating done ptest[14637]: 2010/09/27_17:56:25 notice: TRACE: do_calculations: pengine.c:306 Processing fencing and shutdown cases ptest[14637]: 2010/09/27_17:56:25 notice: TRACE: do_calculations: pengine.c:313 Applying ordering constraints ptest[14637]: 2010/09/27_17:56:25 notice: TRACE: do_calculations: pengine.c:320 Create transition graph */ probe_resources(data_set); } crm_trace("Handle orphans"); for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; cleanup_orphans(rsc, data_set); } crm_trace("Creating actions"); for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; rsc->cmds->create_actions(rsc, data_set); } crm_trace("Creating done"); return TRUE; } static gboolean is_managed(const resource_t * rsc) { GListPtr gIter = rsc->children; if (is_set(rsc->flags, pe_rsc_managed)) { return TRUE; } for (; gIter != NULL; gIter = gIter->next) { resource_t *child_rsc = (resource_t *) gIter->data; if (is_managed(child_rsc)) { return TRUE; } } return FALSE; } static gboolean any_managed_resources(pe_working_set_t * data_set) { GListPtr gIter = data_set->resources; for (; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; if (is_managed(rsc)) { return TRUE; } } return FALSE; } /*! * \internal * \brief Create pseudo-op for guest node fence, and order relative to it * * \param[in] node Guest node to fence * \param[in] data_set Working set of CIB state */ static void fence_guest(pe_node_t *node, pe_working_set_t *data_set) { resource_t *container = node->details->remote_rsc->container; pe_action_t *stop = NULL; pe_action_t *stonith_op = NULL; /* The fence action is just a label; we don't do anything differently for * off vs. reboot. We specify it explicitly, rather than let it default to * cluster's default action, because we are not _initiating_ fencing -- we * are creating a pseudo-event to describe fencing that is already occurring * by other means (container recovery). */ const char *fence_action = "off"; /* Check whether guest's container resource has any explicit stop or * start (the stop may be implied by fencing of the guest's host). */ if (container) { stop = find_first_action(container->actions, NULL, CRMD_ACTION_STOP, NULL); if (find_first_action(container->actions, NULL, CRMD_ACTION_START, NULL)) { fence_action = "reboot"; } } /* Create a fence pseudo-event, so we have an event to order actions * against, and the controller can always detect it. */ stonith_op = pe_fence_op(node, fence_action, FALSE, "guest is unclean", data_set); update_action_flags(stonith_op, pe_action_pseudo | pe_action_runnable, __FUNCTION__, __LINE__); /* We want to imply stops/demotes after the guest is stopped, not wait until * it is restarted, so we always order pseudo-fencing after stop, not start * (even though start might be closer to what is done for a real reboot). */ if(stop && is_set(stop->flags, pe_action_pseudo)) { pe_action_t *parent_stonith_op = pe_fence_op(stop->node, NULL, FALSE, NULL, data_set); crm_info("Implying guest node %s is down (action %d) after %s fencing", node->details->uname, stonith_op->id, stop->node->details->uname); order_actions(parent_stonith_op, stonith_op, pe_order_runnable_left|pe_order_implies_then); } else if (stop) { order_actions(stop, stonith_op, pe_order_runnable_left|pe_order_implies_then); crm_info("Implying guest node %s is down (action %d) " "after container %s is stopped (action %d)", node->details->uname, stonith_op->id, container->id, stop->id); } else { /* If we're fencing the guest node but there's no stop for the guest * resource, we must think the guest is already stopped. However, we may * think so because its resource history was just cleaned. To avoid * unnecessarily considering the guest node down if it's really up, * order the pseudo-fencing after any stop of the connection resource, * which will be ordered after any container (re-)probe. */ stop = find_first_action(node->details->remote_rsc->actions, NULL, RSC_STOP, NULL); if (stop) { order_actions(stop, stonith_op, pe_order_optional); crm_info("Implying guest node %s is down (action %d) " "after connection is stopped (action %d)", node->details->uname, stonith_op->id, stop->id); } else { /* Not sure why we're fencing, but everything must already be * cleanly stopped. */ crm_info("Implying guest node %s is down (action %d) ", node->details->uname, stonith_op->id); } } /* Order/imply other actions relative to pseudo-fence as with real fence */ stonith_constraints(node, stonith_op, data_set); } /* * Create dependencies for stonith and shutdown operations */ gboolean stage6(pe_working_set_t * data_set) { action_t *dc_down = NULL; action_t *stonith_op = NULL; gboolean integrity_lost = FALSE; gboolean need_stonith = TRUE; GListPtr gIter; GListPtr stonith_ops = NULL; GList *shutdown_ops = NULL; /* Remote ordering constraints need to happen prior to calculate * fencing because it is one more place we will mark the node as * dirty. * * A nice side-effect of doing it first is that we can remove a * bunch of special logic from apply_*_ordering() because its * already part of pe_fence_node() */ crm_trace("Creating remote ordering constraints"); apply_remote_node_ordering(data_set); crm_trace("Processing fencing and shutdown cases"); if (any_managed_resources(data_set) == FALSE) { crm_notice("Delaying fencing operations until there are resources to manage"); need_stonith = FALSE; } /* Check each node for stonith/shutdown */ for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { node_t *node = (node_t *) gIter->data; /* Guest nodes are "fenced" by recovering their container resource, * so handle them separately. */ if (is_container_remote_node(node)) { if (node->details->remote_requires_reset && need_stonith) { fence_guest(node, data_set); } continue; } stonith_op = NULL; if (node->details->unclean && need_stonith && pe_can_fence(data_set, node)) { stonith_op = pe_fence_op(node, NULL, FALSE, "node is unclean", data_set); pe_warn("Scheduling Node %s for STONITH", node->details->uname); stonith_constraints(node, stonith_op, data_set); if (node->details->is_dc) { // Remember if the DC is being fenced dc_down = stonith_op; } else { if (is_not_set(data_set->flags, pe_flag_concurrent_fencing) && (stonith_ops != NULL)) { /* Concurrent fencing is disabled, so order each non-DC * fencing in a chain. If there is any DC fencing or * shutdown, it will be ordered after the last action in the * chain later. */ order_actions((pe_action_t *) stonith_ops->data, stonith_op, pe_order_optional); } // Remember all non-DC fencing actions in a separate list stonith_ops = g_list_prepend(stonith_ops, stonith_op); } } else if (node->details->online && node->details->shutdown && /* TODO define what a shutdown op means for a remote node. * For now we do not send shutdown operations for remote nodes, but * if we can come up with a good use for this in the future, we will. */ is_remote_node(node) == FALSE) { action_t *down_op = sched_shutdown_op(node, data_set); if (node->details->is_dc) { // Remember if the DC is being shut down dc_down = down_op; } else { // Remember non-DC shutdowns for later ordering shutdown_ops = g_list_prepend(shutdown_ops, down_op); } } if (node->details->unclean && stonith_op == NULL) { integrity_lost = TRUE; pe_warn("Node %s is unclean!", node->details->uname); } } if (integrity_lost) { if (is_set(data_set->flags, pe_flag_stonith_enabled) == FALSE) { pe_warn("YOUR RESOURCES ARE NOW LIKELY COMPROMISED"); pe_err("ENABLE STONITH TO KEEP YOUR RESOURCES SAFE"); } else if (is_set(data_set->flags, pe_flag_have_quorum) == FALSE) { crm_notice("Cannot fence unclean nodes until quorum is" " attained (or no-quorum-policy is set to ignore)"); } } if (dc_down != NULL) { /* Order any non-DC shutdowns before any DC shutdown, to avoid repeated * DC elections. However, we don't want to order non-DC shutdowns before * a DC *fencing*, because even though we don't want a node that's * shutting down to become DC, the DC fencing could be ordered before a * clone stop that's also ordered before the shutdowns, thus leading to * a graph loop. */ if (safe_str_eq(dc_down->task, CRM_OP_SHUTDOWN)) { for (gIter = shutdown_ops; gIter != NULL; gIter = gIter->next) { action_t *node_stop = (action_t *) gIter->data; crm_debug("Ordering shutdown on %s before %s on DC %s", node_stop->node->details->uname, dc_down->task, dc_down->node->details->uname); order_actions(node_stop, dc_down, pe_order_optional); } } // Order any non-DC fencing before any DC fencing or shutdown if (is_set(data_set->flags, pe_flag_concurrent_fencing)) { /* With concurrent fencing, order each non-DC fencing action * separately before any DC fencing or shutdown. */ for (gIter = stonith_ops; gIter != NULL; gIter = gIter->next) { order_actions((pe_action_t *) gIter->data, dc_down, pe_order_optional); } } else if (stonith_ops) { /* Without concurrent fencing, the non-DC fencing actions are * already ordered relative to each other, so we just need to order * the DC fencing after the last action in the chain (which is the * first item in the list). */ order_actions((pe_action_t *) stonith_ops->data, dc_down, pe_order_optional); } } g_list_free(stonith_ops); g_list_free(shutdown_ops); return TRUE; } /* * Determine the sets of independent actions and the correct order for the * actions in each set. * * Mark dependencies of un-runnable actions un-runnable * */ static GListPtr find_actions_by_task(GListPtr actions, resource_t * rsc, const char *original_key) { GListPtr list = NULL; list = find_actions(actions, original_key, NULL); if (list == NULL) { /* we're potentially searching a child of the original resource */ char *key = NULL; char *task = NULL; guint interval_ms = 0; if (parse_op_key(original_key, NULL, &task, &interval_ms)) { key = generate_op_key(rsc->id, task, interval_ms); list = find_actions(actions, key, NULL); } else { crm_err("search key: %s", original_key); } free(key); free(task); } return list; } static void rsc_order_then(pe_action_t *lh_action, pe_resource_t *rsc, pe__ordering_t *order) { GListPtr gIter = NULL; GListPtr rh_actions = NULL; action_t *rh_action = NULL; enum pe_ordering type; CRM_CHECK(rsc != NULL, return); CRM_CHECK(order != NULL, return); type = order->type; rh_action = order->rh_action; crm_trace("Processing RH of ordering constraint %d", order->id); if (rh_action != NULL) { rh_actions = g_list_prepend(NULL, rh_action); } else if (rsc != NULL) { rh_actions = find_actions_by_task(rsc->actions, rsc, order->rh_action_task); } if (rh_actions == NULL) { pe_rsc_trace(rsc, "No RH-Side (%s/%s) found for constraint..." " ignoring", rsc->id, order->rh_action_task); if (lh_action) { pe_rsc_trace(rsc, "LH-Side was: %s", lh_action->uuid); } return; } if (lh_action && lh_action->rsc == rsc && is_set(lh_action->flags, pe_action_dangle)) { pe_rsc_trace(rsc, "Detected dangling operation %s -> %s", lh_action->uuid, order->rh_action_task); clear_bit(type, pe_order_implies_then); } gIter = rh_actions; for (; gIter != NULL; gIter = gIter->next) { action_t *rh_action_iter = (action_t *) gIter->data; if (lh_action) { order_actions(lh_action, rh_action_iter, type); } else if (type & pe_order_implies_then) { update_action_flags(rh_action_iter, pe_action_runnable | pe_action_clear, __FUNCTION__, __LINE__); crm_warn("Unrunnable %s 0x%.6x", rh_action_iter->uuid, type); } else { crm_warn("neither %s 0x%.6x", rh_action_iter->uuid, type); } } g_list_free(rh_actions); } static void rsc_order_first(pe_resource_t *lh_rsc, pe__ordering_t *order, pe_working_set_t *data_set) { GListPtr gIter = NULL; GListPtr lh_actions = NULL; action_t *lh_action = order->lh_action; resource_t *rh_rsc = order->rh_rsc; crm_trace("Processing LH of ordering constraint %d", order->id); CRM_ASSERT(lh_rsc != NULL); if (lh_action != NULL) { lh_actions = g_list_prepend(NULL, lh_action); } else { lh_actions = find_actions_by_task(lh_rsc->actions, lh_rsc, order->lh_action_task); } if (lh_actions == NULL && lh_rsc != rh_rsc) { char *key = NULL; char *op_type = NULL; guint interval_ms = 0; parse_op_key(order->lh_action_task, NULL, &op_type, &interval_ms); key = generate_op_key(lh_rsc->id, op_type, interval_ms); if (lh_rsc->fns->state(lh_rsc, TRUE) == RSC_ROLE_STOPPED && safe_str_eq(op_type, RSC_STOP)) { free(key); pe_rsc_trace(lh_rsc, "No LH-Side (%s/%s) found for constraint %d with %s - ignoring", lh_rsc->id, order->lh_action_task, order->id, order->rh_action_task); } else if (lh_rsc->fns->state(lh_rsc, TRUE) == RSC_ROLE_SLAVE && safe_str_eq(op_type, RSC_DEMOTE)) { free(key); pe_rsc_trace(lh_rsc, "No LH-Side (%s/%s) found for constraint %d with %s - ignoring", lh_rsc->id, order->lh_action_task, order->id, order->rh_action_task); } else { pe_rsc_trace(lh_rsc, "No LH-Side (%s/%s) found for constraint %d with %s - creating", lh_rsc->id, order->lh_action_task, order->id, order->rh_action_task); lh_action = custom_action(lh_rsc, key, op_type, NULL, TRUE, TRUE, data_set); lh_actions = g_list_prepend(NULL, lh_action); } free(op_type); } gIter = lh_actions; for (; gIter != NULL; gIter = gIter->next) { action_t *lh_action_iter = (action_t *) gIter->data; if (rh_rsc == NULL && order->rh_action) { rh_rsc = order->rh_action->rsc; } if (rh_rsc) { rsc_order_then(lh_action_iter, rh_rsc, order); } else if (order->rh_action) { order_actions(lh_action_iter, order->rh_action, order->type); } } g_list_free(lh_actions); } extern void update_colo_start_chain(pe_action_t *action, pe_working_set_t *data_set); static int is_recurring_action(action_t *action) { const char *interval_ms_s = g_hash_table_lookup(action->meta, XML_LRM_ATTR_INTERVAL_MS); guint interval_ms = crm_parse_ms(interval_ms_s); return (interval_ms > 0); } static void apply_container_ordering(action_t *action, pe_working_set_t *data_set) { /* VMs are also classified as containers for these purposes... in * that they both involve a 'thing' running on a real or remote * cluster node. * * This allows us to be smarter about the type and extent of * recovery actions required in various scenarios */ resource_t *remote_rsc = NULL; resource_t *container = NULL; enum action_tasks task = text2task(action->task); CRM_ASSERT(action->rsc); CRM_ASSERT(action->node); CRM_ASSERT(is_remote_node(action->node)); remote_rsc = action->node->details->remote_rsc; CRM_ASSERT(remote_rsc); container = remote_rsc->container; CRM_ASSERT(container); if(is_set(container->flags, pe_rsc_failed)) { pe_fence_node(data_set, action->node, "container failed"); } crm_trace("Order %s action %s relative to %s%s for %s%s", action->task, action->uuid, is_set(remote_rsc->flags, pe_rsc_failed)? "failed " : "", remote_rsc->id, is_set(container->flags, pe_rsc_failed)? "failed " : "", container->id); if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE) || safe_str_eq(action->task, CRMD_ACTION_MIGRATED)) { /* Migration ops map to "no_action", but we need to apply the same * ordering as for stop or demote (see get_router_node()). */ task = stop_rsc; } switch (task) { case start_rsc: case action_promote: /* Force resource recovery if the container is recovered */ order_start_then_action(container, action, pe_order_implies_then, data_set); /* Wait for the connection resource to be up too */ order_start_then_action(remote_rsc, action, pe_order_none, data_set); break; case stop_rsc: case action_demote: if (is_set(container->flags, pe_rsc_failed)) { /* When the container representing a guest node fails, any stop * or demote actions for resources running on the guest node * are implied by the container stopping. This is similar to * how fencing operations work for cluster nodes and remote * nodes. */ } else { /* Ensure the operation happens before the connection is brought * down. * * If we really wanted to, we could order these after the * connection start, IFF the container's current role was * stopped (otherwise we re-introduce an ordering loop when the * connection is restarting). */ order_action_then_stop(action, remote_rsc, pe_order_none, data_set); } break; default: /* Wait for the connection resource to be up */ if (is_recurring_action(action)) { /* In case we ever get the recovery logic wrong, force * recurring monitors to be restarted, even if just * the connection was re-established */ if(task != no_action) { order_start_then_action(remote_rsc, action, pe_order_implies_then, data_set); } } else { order_start_then_action(remote_rsc, action, pe_order_none, data_set); } break; } } static enum remote_connection_state get_remote_node_state(pe_node_t *node) { resource_t *remote_rsc = NULL; node_t *cluster_node = NULL; CRM_ASSERT(node); remote_rsc = node->details->remote_rsc; CRM_ASSERT(remote_rsc); cluster_node = pe__current_node(remote_rsc); /* If the cluster node the remote connection resource resides on * is unclean or went offline, we can't process any operations * on that remote node until after it starts elsewhere. */ if(remote_rsc->next_role == RSC_ROLE_STOPPED || remote_rsc->allocated_to == NULL) { /* The connection resource is not going to run anywhere */ if (cluster_node && cluster_node->details->unclean) { /* The remote connection is failed because its resource is on a * failed node and can't be recovered elsewhere, so we must fence. */ return remote_state_failed; } if (is_not_set(remote_rsc->flags, pe_rsc_failed)) { /* Connection resource is cleanly stopped */ return remote_state_stopped; } /* Connection resource is failed */ if ((remote_rsc->next_role == RSC_ROLE_STOPPED) && remote_rsc->remote_reconnect_ms && node->details->remote_was_fenced) { /* We won't know whether the connection is recoverable until the * reconnect interval expires and we reattempt connection. */ return remote_state_unknown; } /* The remote connection is in a failed state. If there are any * resources known to be active on it (stop) or in an unknown state * (probe), we must assume the worst and fence it. */ return remote_state_failed; } else if (cluster_node == NULL) { /* Connection is recoverable but not currently running anywhere, see if we can recover it first */ return remote_state_unknown; } else if(cluster_node->details->unclean == TRUE || cluster_node->details->online == FALSE) { /* Connection is running on a dead node, see if we can recover it first */ return remote_state_resting; } else if (g_list_length(remote_rsc->running_on) > 1 && remote_rsc->partial_migration_source && remote_rsc->partial_migration_target) { /* We're in the middle of migrating a connection resource, * wait until after the resource migrates before performing * any actions. */ return remote_state_resting; } return remote_state_alive; } /*! * \internal * \brief Order actions on remote node relative to actions for the connection */ static void apply_remote_ordering(action_t *action, pe_working_set_t *data_set) { resource_t *remote_rsc = NULL; enum action_tasks task = text2task(action->task); enum remote_connection_state state = get_remote_node_state(action->node); enum pe_ordering order_opts = pe_order_none; if (action->rsc == NULL) { return; } CRM_ASSERT(action->node); CRM_ASSERT(is_remote_node(action->node)); remote_rsc = action->node->details->remote_rsc; CRM_ASSERT(remote_rsc); crm_trace("Order %s action %s relative to %s%s (state: %s)", action->task, action->uuid, is_set(remote_rsc->flags, pe_rsc_failed)? "failed " : "", remote_rsc->id, state2text(state)); if (safe_str_eq(action->task, CRMD_ACTION_MIGRATE) || safe_str_eq(action->task, CRMD_ACTION_MIGRATED)) { /* Migration ops map to "no_action", but we need to apply the same * ordering as for stop or demote (see get_router_node()). */ task = stop_rsc; } switch (task) { case start_rsc: case action_promote: order_opts = pe_order_none; if (state == remote_state_failed) { /* Force recovery, by making this action required */ order_opts |= pe_order_implies_then; } /* Ensure connection is up before running this action */ order_start_then_action(remote_rsc, action, order_opts, data_set); break; case stop_rsc: if(state == remote_state_alive) { order_action_then_stop(action, remote_rsc, pe_order_implies_first, data_set); } else if(state == remote_state_failed) { /* We would only be here if the resource is * running on the remote node. Since we have no * way to stop it, it is necessary to fence the * node. */ pe_fence_node(data_set, action->node, "resources are active and the connection is unrecoverable"); order_action_then_stop(action, remote_rsc, pe_order_implies_first, data_set); } else if(remote_rsc->next_role == RSC_ROLE_STOPPED) { /* State must be remote_state_unknown or remote_state_stopped. * Since the connection is not coming back up in this * transition, stop this resource first. */ order_action_then_stop(action, remote_rsc, pe_order_implies_first, data_set); } else { /* The connection is going to be started somewhere else, so * stop this resource after that completes. */ order_start_then_action(remote_rsc, action, pe_order_none, data_set); } break; case action_demote: /* Only order this demote relative to the connection start if the * connection isn't being torn down. Otherwise, the demote would be * blocked because the connection start would not be allowed. */ if(state == remote_state_resting || state == remote_state_unknown) { order_start_then_action(remote_rsc, action, pe_order_none, data_set); } /* Otherwise we can rely on the stop ordering */ break; default: /* Wait for the connection resource to be up */ if (is_recurring_action(action)) { /* In case we ever get the recovery logic wrong, force * recurring monitors to be restarted, even if just * the connection was re-established */ order_start_then_action(remote_rsc, action, pe_order_implies_then, data_set); } else { node_t *cluster_node = pe__current_node(remote_rsc); if(task == monitor_rsc && state == remote_state_failed) { /* We would only be here if we do not know the * state of the resource on the remote node. * Since we have no way to find out, it is * necessary to fence the node. */ pe_fence_node(data_set, action->node, "resources are in an unknown state and the connection is unrecoverable"); } if(cluster_node && state == remote_state_stopped) { /* The connection is currently up, but is going * down permanently. * * Make sure we check services are actually * stopped _before_ we let the connection get * closed */ order_action_then_stop(action, remote_rsc, pe_order_runnable_left, data_set); } else { order_start_then_action(remote_rsc, action, pe_order_none, data_set); } } break; } } static void apply_remote_node_ordering(pe_working_set_t *data_set) { if (is_set(data_set->flags, pe_flag_have_remote_nodes) == FALSE) { return; } for (GListPtr gIter = data_set->actions; gIter != NULL; gIter = gIter->next) { action_t *action = (action_t *) gIter->data; resource_t *remote = NULL; // We are only interested in resource actions if (action->rsc == NULL) { continue; } /* Special case: If we are clearing the failcount of an actual * remote connection resource, then make sure this happens before * any start of the resource in this transition. */ if (action->rsc->is_remote_node && safe_str_eq(action->task, CRM_OP_CLEAR_FAILCOUNT)) { custom_action_order(action->rsc, NULL, action, action->rsc, generate_op_key(action->rsc->id, RSC_START, 0), NULL, pe_order_optional, data_set); continue; } // We are only interested in actions allocated to a node if (action->node == NULL) { continue; } if (is_remote_node(action->node) == FALSE) { continue; } /* We are only interested in real actions. * * @TODO This is probably wrong; pseudo-actions might be converted to * real actions and vice versa later in update_actions() at the end of * stage7(). */ if (is_set(action->flags, pe_action_pseudo)) { continue; } remote = action->node->details->remote_rsc; if (remote == NULL) { // Orphaned continue; } /* Another special case: if a resource is moving to a Pacemaker Remote * node, order the stop on the original node after any start of the * remote connection. This ensures that if the connection fails to * start, we leave the resource running on the original node. */ if (safe_str_eq(action->task, RSC_START)) { for (GList *item = action->rsc->actions; item != NULL; item = item->next) { pe_action_t *rsc_action = item->data; if ((rsc_action->node->details != action->node->details) && safe_str_eq(rsc_action->task, RSC_STOP)) { custom_action_order(remote, start_key(remote), NULL, action->rsc, NULL, rsc_action, pe_order_optional, data_set); } } } /* The action occurs across a remote connection, so create * ordering constraints that guarantee the action occurs while the node * is active (after start, before stop ... things like that). * * This is somewhat brittle in that we need to make sure the results of * this ordering are compatible with the result of get_router_node(). * It would probably be better to add XML_LRM_ATTR_ROUTER_NODE as part * of this logic rather than action2xml(). */ if (remote->container) { crm_trace("Container ordering for %s", action->uuid); apply_container_ordering(action, data_set); } else { crm_trace("Remote ordering for %s", action->uuid); apply_remote_ordering(action, data_set); } } } +static gboolean +order_first_probe_unneeded(pe_action_t * probe, pe_action_t * rh_action) +{ + /* No need to probe the resource on the node that is being + * unfenced. Otherwise it might introduce transition loop + * since probe will be performed after the node is + * unfenced. + */ + if (safe_str_eq(rh_action->task, CRM_OP_FENCE) + && probe->node && rh_action->node + && probe->node->details == rh_action->node->details) { + const char *op = g_hash_table_lookup(rh_action->meta, "stonith_action"); + + if (safe_str_eq(op, "on")) { + return TRUE; + } + } + + // Shutdown waits for probe to complete only if it's on the same node + if ((safe_str_eq(rh_action->task, CRM_OP_SHUTDOWN)) + && probe->node && rh_action->node + && probe->node->details != rh_action->node->details) { + return TRUE; + } + return FALSE; +} + + +static void +order_first_probes(pe_working_set_t * data_set) +{ + GListPtr gIter = NULL; + + for (gIter = data_set->ordering_constraints; gIter != NULL; gIter = gIter->next) { + pe__ordering_t *order = gIter->data; + enum pe_ordering order_type = pe_order_optional; + + pe_resource_t *lh_rsc = order->lh_rsc; + pe_resource_t *rh_rsc = order->rh_rsc; + pe_action_t *lh_action = order->lh_action; + pe_action_t *rh_action = order->rh_action; + const char *lh_action_task = order->lh_action_task; + const char *rh_action_task = order->rh_action_task; + + char *key = NULL; + GListPtr probes = NULL; + GListPtr rh_actions = NULL; + + GListPtr pIter = NULL; + + if (lh_rsc == NULL) { + continue; + + } else if (rh_rsc && lh_rsc == rh_rsc) { + continue; + } + + if (lh_action == NULL && lh_action_task == NULL) { + continue; + } + + if (rh_action == NULL && rh_action_task == NULL) { + continue; + } + + /* Technically probe is expected to return "not running", which could be + * the alternative of stop action if the status of the resource is + * unknown yet. + */ + if (lh_action && safe_str_neq(lh_action->task, RSC_STOP)) { + continue; + + } else if (lh_action == NULL + && lh_action_task + && crm_ends_with(lh_action_task, "_" RSC_STOP "_0") == FALSE) { + continue; + } + + /* Do not probe the resource inside of a stopping container. Otherwise + * it might introduce transition loop since probe will be performed + * after the container starts again. + */ + if (rh_rsc && lh_rsc->container == rh_rsc) { + if (rh_action && safe_str_eq(rh_action->task, RSC_STOP)) { + continue; + + } else if (rh_action == NULL && rh_action_task + && crm_ends_with(rh_action_task,"_" RSC_STOP "_0")) { + continue; + } + } + + if (order->type == pe_order_none) { + continue; + } + + // Preserve the order options for future filtering + if (is_set(order->type, pe_order_apply_first_non_migratable)) { + set_bit(order_type, pe_order_apply_first_non_migratable); + } + + if (is_set(order->type, pe_order_same_node)) { + set_bit(order_type, pe_order_same_node); + } + + // Keep the order types for future filtering + if (order->type == pe_order_anti_colocation + || order->type == pe_order_load) { + order_type = order->type; + } + + key = generate_op_key(lh_rsc->id, RSC_STATUS, 0); + probes = find_actions(lh_rsc->actions, key, NULL); + free(key); + + if (probes == NULL) { + continue; + } + + if (rh_action) { + rh_actions = g_list_prepend(rh_actions, rh_action); + + } else if (rh_rsc && rh_action_task) { + rh_actions = find_actions(rh_rsc->actions, rh_action_task, NULL); + } + + if (rh_actions == NULL) { + g_list_free(probes); + continue; + } + + crm_trace("Processing for LH probe based on ordering constraint %s -> %s" + " (id=%d, type=%.6x)", + lh_action ? lh_action->uuid : lh_action_task, + rh_action ? rh_action->uuid : rh_action_task, + order->id, order->type); + + for (pIter = probes; pIter != NULL; pIter = pIter->next) { + pe_action_t *probe = (pe_action_t *) pIter->data; + GListPtr rIter = NULL; + + for (rIter = rh_actions; rIter != NULL; rIter = rIter->next) { + pe_action_t *rh_action_iter = (pe_action_t *) rIter->data; + + if (order_first_probe_unneeded(probe, rh_action_iter)) { + continue; + } + order_actions(probe, rh_action_iter, order_type); + } + } + + g_list_free(rh_actions); + g_list_free(probes); + } +} + static void -order_probes(pe_working_set_t * data_set) +order_then_probes(pe_working_set_t * data_set) { #if 0 GListPtr gIter = NULL; for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; /* Given "A then B", we would prefer to wait for A to be * started before probing B. * * If A was a filesystem on which the binaries and data for B * lived, it would have been useful if the author of B's agent * could assume that A is running before B.monitor will be * called. * * However we can't _only_ probe once A is running, otherwise * we'd not detect the state of B if A could not be started * for some reason. * * In practice however, we cannot even do an opportunistic * version of this because B may be moving: * * B.probe -> B.start * B.probe -> B.stop * B.stop -> B.start * A.stop -> A.start * A.start -> B.probe * * So far so good, but if we add the result of this code: * * B.stop -> A.stop * * Then we get a loop: * * B.probe -> B.stop -> A.stop -> A.start -> B.probe * * We could kill the 'B.probe -> B.stop' dependency, but that * could mean stopping B "too" soon, because B.start must wait * for the probes to complete. * * Another option is to allow it only if A is a non-unique * clone with clone-max == node-max (since we'll never be * moving it). However, we could still be stopping one * instance at the same time as starting another. * The complexity of checking for allowed conditions combined * with the ever narrowing usecase suggests that this code * should remain disabled until someone gets smarter. */ action_t *start = NULL; GListPtr actions = NULL; GListPtr probes = NULL; char *key = NULL; key = start_key(rsc); actions = find_actions(rsc->actions, key, NULL); free(key); if (actions) { start = actions->data; g_list_free(actions); } if(start == NULL) { crm_err("No start action for %s", rsc->id); continue; } key = generate_op_key(rsc->id, CRMD_ACTION_STATUS, 0); probes = find_actions(rsc->actions, key, NULL); free(key); for (actions = start->actions_before; actions != NULL; actions = actions->next) { action_wrapper_t *before = (action_wrapper_t *) actions->data; GListPtr pIter = NULL; action_t *first = before->action; resource_t *first_rsc = first->rsc; if(first->required_runnable_before) { GListPtr clone_actions = NULL; for (clone_actions = first->actions_before; clone_actions != NULL; clone_actions = clone_actions->next) { before = (action_wrapper_t *) clone_actions->data; crm_trace("Testing %s -> %s (%p) for %s", first->uuid, before->action->uuid, before->action->rsc, start->uuid); CRM_ASSERT(before->action->rsc); first_rsc = before->action->rsc; break; } } else if(safe_str_neq(first->task, RSC_START)) { crm_trace("Not a start op %s for %s", first->uuid, start->uuid); } if(first_rsc == NULL) { continue; } else if(uber_parent(first_rsc) == uber_parent(start->rsc)) { crm_trace("Same parent %s for %s", first_rsc->id, start->uuid); continue; } else if(FALSE && pe_rsc_is_clone(uber_parent(first_rsc)) == FALSE) { crm_trace("Not a clone %s for %s", first_rsc->id, start->uuid); continue; } crm_err("Applying %s before %s %d", first->uuid, start->uuid, uber_parent(first_rsc)->variant); for (pIter = probes; pIter != NULL; pIter = pIter->next) { action_t *probe = (action_t *) pIter->data; crm_err("Ordering %s before %s", first->uuid, probe->uuid); order_actions(first, probe, pe_order_optional); } } } #endif } +static void +order_probes(pe_working_set_t * data_set) +{ + order_first_probes(data_set); + order_then_probes(data_set); +} + gboolean stage7(pe_working_set_t * data_set) { GListPtr gIter = NULL; crm_trace("Applying ordering constraints"); /* Don't ask me why, but apparently they need to be processed in * the order they were created in... go figure * * Also g_list_append() has horrendous performance characteristics * So we need to use g_list_prepend() and then reverse the list here */ data_set->ordering_constraints = g_list_reverse(data_set->ordering_constraints); for (gIter = data_set->ordering_constraints; gIter != NULL; gIter = gIter->next) { pe__ordering_t *order = gIter->data; resource_t *rsc = order->lh_rsc; crm_trace("Applying ordering constraint: %d", order->id); if (rsc != NULL) { crm_trace("rsc_action-to-*"); rsc_order_first(rsc, order, data_set); continue; } rsc = order->rh_rsc; if (rsc != NULL) { crm_trace("action-to-rsc_action"); rsc_order_then(order->lh_action, rsc, order); } else { crm_trace("action-to-action"); order_actions(order->lh_action, order->rh_action, order->type); } } for (gIter = data_set->actions; gIter != NULL; gIter = gIter->next) { action_t *action = (action_t *) gIter->data; update_colo_start_chain(action, data_set); } crm_trace("Ordering probes"); order_probes(data_set); crm_trace("Updating %d actions", g_list_length(data_set->actions)); for (gIter = data_set->actions; gIter != NULL; gIter = gIter->next) { action_t *action = (action_t *) gIter->data; update_action(action, data_set); } LogNodeActions(data_set, FALSE); for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; LogActions(rsc, data_set, FALSE); } return TRUE; } int transition_id = -1; /* * Create a dependency graph to send to the transitioner (via the controller) */ gboolean stage8(pe_working_set_t * data_set) { GListPtr gIter = NULL; const char *value = NULL; transition_id++; crm_trace("Creating transition graph %d.", transition_id); data_set->graph = create_xml_node(NULL, XML_TAG_GRAPH); value = pe_pref(data_set->config_hash, "cluster-delay"); crm_xml_add(data_set->graph, "cluster-delay", value); value = pe_pref(data_set->config_hash, "stonith-timeout"); crm_xml_add(data_set->graph, "stonith-timeout", value); crm_xml_add(data_set->graph, "failed-stop-offset", "INFINITY"); if (is_set(data_set->flags, pe_flag_start_failure_fatal)) { crm_xml_add(data_set->graph, "failed-start-offset", "INFINITY"); } else { crm_xml_add(data_set->graph, "failed-start-offset", "1"); } value = pe_pref(data_set->config_hash, "batch-limit"); crm_xml_add(data_set->graph, "batch-limit", value); crm_xml_add_int(data_set->graph, "transition_id", transition_id); value = pe_pref(data_set->config_hash, "migration-limit"); if (crm_int_helper(value, NULL) > 0) { crm_xml_add(data_set->graph, "migration-limit", value); } /* errors... slist_iter(action, action_t, action_list, lpc, if(action->optional == FALSE && action->runnable == FALSE) { print_action("Ignoring", action, TRUE); } ); */ gIter = data_set->resources; for (; gIter != NULL; gIter = gIter->next) { resource_t *rsc = (resource_t *) gIter->data; pe_rsc_trace(rsc, "processing actions for rsc=%s", rsc->id); rsc->cmds->expand(rsc, data_set); } crm_log_xml_trace(data_set->graph, "created resource-driven action list"); /* pseudo action to distribute list of nodes with maintenance state update */ add_maintenance_update(data_set); /* catch any non-resource specific actions */ crm_trace("processing non-resource actions"); gIter = data_set->actions; for (; gIter != NULL; gIter = gIter->next) { action_t *action = (action_t *) gIter->data; if (action->rsc && action->node && action->node->details->shutdown && is_not_set(action->rsc->flags, pe_rsc_maintenance) && is_not_set(action->flags, pe_action_optional) && is_not_set(action->flags, pe_action_runnable) && crm_str_eq(action->task, RSC_STOP, TRUE) ) { /* Eventually we should just ignore the 'fence' case * But for now it's the best way to detect (in CTS) when * CIB resource updates are being lost */ if (is_set(data_set->flags, pe_flag_have_quorum) || data_set->no_quorum_policy == no_quorum_ignore) { crm_crit("Cannot %s node '%s' because of %s:%s%s (%s)", action->node->details->unclean ? "fence" : "shut down", action->node->details->uname, action->rsc->id, is_not_set(action->rsc->flags, pe_rsc_managed) ? " unmanaged" : " blocked", is_set(action->rsc->flags, pe_rsc_failed) ? " failed" : "", action->uuid); } } graph_element_from_action(action, data_set); } crm_log_xml_trace(data_set->graph, "created generic action list"); crm_trace("Created transition graph %d.", transition_id); return TRUE; } void LogNodeActions(pe_working_set_t * data_set, gboolean terminal) { GListPtr gIter = NULL; for (gIter = data_set->actions; gIter != NULL; gIter = gIter->next) { char *node_name = NULL; char *task = NULL; action_t *action = (action_t *) gIter->data; if (action->rsc != NULL) { continue; } else if (is_set(action->flags, pe_action_optional)) { continue; } if (is_container_remote_node(action->node)) { node_name = crm_strdup_printf("%s (resource: %s)", action->node->details->uname, action->node->details->remote_rsc->container->id); } else if(action->node) { node_name = crm_strdup_printf("%s", action->node->details->uname); } if (safe_str_eq(action->task, CRM_OP_SHUTDOWN)) { task = strdup("Shutdown"); } else if (safe_str_eq(action->task, CRM_OP_FENCE)) { const char *op = g_hash_table_lookup(action->meta, "stonith_action"); task = crm_strdup_printf("Fence (%s)", op); } if(task == NULL) { /* Nothing to report */ } else if(terminal && action->reason) { printf(" * %s %s '%s'\n", task, node_name, action->reason); } else if(terminal) { printf(" * %s %s\n", task, node_name); } else if(action->reason) { crm_notice(" * %s %s '%s'\n", task, node_name, action->reason); } else { crm_notice(" * %s %s\n", task, node_name); } free(node_name); free(task); } }