175 lines
2.6 KiB
Bash
Executable File
175 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -u
|
|
|
|
OCF_SUCCESS=0
|
|
OCF_ERR_GENERIC=1
|
|
OCF_NOT_RUNNING=7
|
|
OCF_RUNNING_PROMOTED=8
|
|
|
|
MC_PROXY_RC_TRANSPORT=10
|
|
MC_PROXY_RC_HARD_FAILURE=11
|
|
|
|
OCF_RESOURCE_INSTANCE=postgresql-ha
|
|
OCF_RESKEY_container_runtime=podman
|
|
|
|
logs=()
|
|
exit_reason=""
|
|
score=""
|
|
cache_rc=""
|
|
application_rc=0
|
|
application_calls=0
|
|
proxy_result_value="delegate|container|podman"
|
|
|
|
|
|
# Load the real function under test first. Test doubles defined below then
|
|
# override its external dependencies, including promotion-score helpers.
|
|
source ocf/loxthelion/managed-container.d/common.sh
|
|
|
|
|
|
ocf_log()
|
|
{
|
|
logs+=("$*")
|
|
}
|
|
|
|
ocf_exit_reason()
|
|
{
|
|
exit_reason="$*"
|
|
}
|
|
|
|
mc_proxy_monitor()
|
|
{
|
|
printf '%s\n' "${proxy_result_value}"
|
|
return 0
|
|
}
|
|
|
|
mc_proxy_cached_monitor()
|
|
{
|
|
return 1
|
|
}
|
|
|
|
mc_proxy_monitor_cache_clear()
|
|
{
|
|
cache_rc="cleared"
|
|
return 0
|
|
}
|
|
|
|
mc_proxy_monitor_cache_write()
|
|
{
|
|
cache_rc="$1"
|
|
return 0
|
|
}
|
|
|
|
mc_proxy_legacy_shadow_monitor()
|
|
{
|
|
echo "ERROR: shadow monitor must not execute for delegation" >&2
|
|
return 99
|
|
}
|
|
|
|
mc_application_monitor()
|
|
{
|
|
application_calls=$((application_calls + 1))
|
|
return "${application_rc}"
|
|
}
|
|
|
|
mc_promotion_score_set()
|
|
{
|
|
score="$1"
|
|
return 0
|
|
}
|
|
|
|
mc_promotion_score_from_monitor()
|
|
{
|
|
case "$1" in
|
|
0|8)
|
|
score="healthy:$1"
|
|
;;
|
|
*)
|
|
score="-INFINITY"
|
|
;;
|
|
esac
|
|
|
|
return 0
|
|
}
|
|
|
|
echo "===== PODMAN DELEGATION SUCCESS ====="
|
|
|
|
application_rc=0
|
|
proxy_result_value="delegate|container|podman"
|
|
cache_rc=""
|
|
score=""
|
|
application_calls=0
|
|
|
|
mc_promotion_monitor
|
|
rc=$?
|
|
|
|
[ "$rc" -eq 0 ]
|
|
[ "$application_calls" -eq 1 ]
|
|
[ "$cache_rc" = 0 ]
|
|
[ "$score" = "healthy:0" ]
|
|
|
|
echo "podman_success accepted"
|
|
|
|
|
|
echo
|
|
echo "===== PROMOTED DELEGATION ====="
|
|
|
|
application_rc=8
|
|
proxy_result_value="delegate|container|podman"
|
|
cache_rc=""
|
|
score=""
|
|
application_calls=0
|
|
|
|
mc_promotion_monitor
|
|
rc=$?
|
|
|
|
[ "$rc" -eq 8 ]
|
|
[ "$application_calls" -eq 1 ]
|
|
[ "$cache_rc" = 8 ]
|
|
[ "$score" = "healthy:8" ]
|
|
|
|
echo "podman_promoted accepted"
|
|
|
|
|
|
echo
|
|
echo "===== RUNTIME MISMATCH ====="
|
|
|
|
application_rc=0
|
|
proxy_result_value="delegate|container|docker"
|
|
cache_rc=""
|
|
score=""
|
|
application_calls=0
|
|
|
|
mc_promotion_monitor
|
|
rc=$?
|
|
|
|
[ "$rc" -eq 1 ]
|
|
[ "$application_calls" -eq 0 ]
|
|
[ "$cache_rc" = "cleared" ]
|
|
[ "$score" = "-INFINITY" ]
|
|
|
|
echo "runtime_mismatch rejected"
|
|
|
|
|
|
echo
|
|
echo "===== MALFORMED DELEGATION ====="
|
|
|
|
proxy_result_value="delegate|container|podman|extra"
|
|
cache_rc=""
|
|
score=""
|
|
application_calls=0
|
|
|
|
mc_promotion_monitor
|
|
rc=$?
|
|
|
|
[ "$rc" -eq 1 ]
|
|
[ "$application_calls" -eq 0 ]
|
|
[ "$cache_rc" = "cleared" ]
|
|
[ "$score" = "-INFINITY" ]
|
|
|
|
echo "malformed_delegation rejected"
|
|
|
|
|
|
echo
|
|
echo "MONITOR_DELEGATION_SHELL_TEST_PASS=1"
|