#!/usr/bin/env bash set -euo pipefail ROOT="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)" FILE="$ROOT/ocf/loxthelion/managed-container.d/applications/postgresql/promote.sh" FAKE="$(mktemp)" cleanup() { rm -f "$FAKE" } trap cleanup EXIT ocf_log() { : } export OCF_RESOURCE_INSTANCE=postgresql-ha export MC_PROXY_CLIENT="$FAKE" # Valid disagreement. cat > "$FAKE" <<'EOF' import json print(json.dumps({ "ocf_rc": 1, "ready": False, "mutation": False, })) EOF chmod 0755 "$FAKE" # shellcheck disable=SC1090 . "$FILE" unset MC_PROMOTE_DATABASE_GATE mc_pg_promote_database_shadow export MC_PROMOTE_DATABASE_GATE=true if mc_pg_promote_database_shadow; then echo "FAIL: promotion mismatch was not gated" exit 1 fi # Transport failure. cat > "$FAKE" <<'EOF' raise SystemExit(10) EOF chmod 0755 "$FAKE" unset MC_PROMOTE_DATABASE_GATE mc_pg_promote_database_shadow export MC_PROMOTE_DATABASE_GATE=true if mc_pg_promote_database_shadow; then echo "FAIL: promotion transport failure was not gated" exit 1 fi # Positive daemon agreement must still pass with the gate enabled. cat > "$FAKE" <<'EOF' import json print(json.dumps({ "ocf_rc": 0, "ready": True, "mutation": False, })) EOF chmod 0755 "$FAKE" export MC_PROMOTE_DATABASE_GATE=true mc_pg_promote_database_shadow echo "PROMOTE_DATABASE_GATE_RUNTIME_TEST_PASS=1"