prole/tests/etc/test_status_common_services_k8s_skips_opentofu.sh
chrisfu c94c62e1bb Harden prod deploy namespace/context routing and vault password handling
- persist and load DB master password via Ansible Vault bootstrap flow

- enforce knoe-system service namespace and explicit app/db kubecontext targeting

- improve OpenBao/CNPG deploy reliability and logging; add retries/readiness diagnostics

- tighten reset/delete cluster behavior and expand installer/deploy pipeline test coverage

Co-authored-by: Junie <junie@jetbrains.com>
2026-04-10 00:43:07 -07:00

168 lines
4.7 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
PROLE_HOME_REPO=$(cd "$SCRIPT_DIR/../.." && pwd)
SCRIPT_UNDER_TEST="$PROLE_HOME_REPO/etc/status_common_services.sh"
TMP_DIR=$(mktemp -d)
trap 'rm -rf "$TMP_DIR"' EXIT
export TMP_DIR
BIN_DIR="$TMP_DIR/bin"
mkdir -p "$BIN_DIR"
cat <<'K_EOF' >"$BIN_DIR/kubectl"
#!/usr/bin/env bash
set -euo pipefail
_log_file="${TMP_DIR}/mock_calls.log"
args="$*"
echo "$args" >>"${_log_file}"
if [[ "$args" == *"opentofu"* ]]; then
echo "$args" >>"${TMP_DIR}/opentofu_calls.log"
echo "Error from server (NotFound): opentofu removed" >&2
exit 1
fi
if [[ "$args" == "config current-context" ]]; then
echo "gke_plenary-truck-485623-p7_us-west3_knoe-dev-0"
exit 0
fi
if [[ "$args" == "config view --minify -o jsonpath={.clusters[0].cluster.server}" ]]; then
echo "https://34.106.133.94"
exit 0
fi
if [[ "$args" == "-n test-ns get svc garage openbao" ]]; then
cat <<'EOF'
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
garage ClusterIP 34.118.228.37 <none> 3900/TCP,3901/TCP,3903/TCP 30m
openbao ClusterIP 34.118.231.12 <none> 8200/TCP 31m
EOF
exit 0
fi
if [[ "$args" == "-n test-ns get svc knoe-svc-kong" ]]; then
echo "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE"
echo "knoe-svc-kong ClusterIP 34.118.226.103 <none> 8000/TCP 26m"
exit 0
fi
if [[ "$args" == "-n cert-manager get svc cert-manager cert-manager-webhook" ]]; then
echo "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE"
echo "cert-manager ClusterIP 34.118.236.229 <none> 9402/TCP 30m"
echo "cert-manager-webhook ClusterIP 34.118.232.148 <none> 443/TCP 30m"
exit 0
fi
if [[ "$args" == "-n test-ns get statefulset openbao" ]]; then
echo "NAME READY AGE"
echo "openbao 1/1 31m"
exit 0
fi
if [[ "$args" == "-n test-ns get statefulset garage" ]]; then
echo "NAME READY AGE"
echo "garage 1/1 30m"
exit 0
fi
if [[ "$args" == "-n test-ns get deploy knoe-svc-kong" ]]; then
echo "NAME READY UP-TO-DATE AVAILABLE AGE"
echo "knoe-svc-kong 1/1 1 1 27m"
exit 0
fi
if [[ "$args" == "-n cert-manager get deploy cert-manager cert-manager-cainjector cert-manager-webhook" ]]; then
echo "NAME READY UP-TO-DATE AVAILABLE AGE"
echo "cert-manager 1/1 1 1 31m"
echo "cert-manager-cainjector 1/1 1 1 31m"
echo "cert-manager-webhook 1/1 1 1 30m"
exit 0
fi
# check_resource queries
if [[ "$args" == "-n test-ns get svc garage" || "$args" == "-n test-ns get svc openbao" || "$args" == "-n test-ns get svc knoe-svc-kong" ]]; then
exit 0
fi
if [[ "$args" == "-n cert-manager get svc cert-manager" || "$args" == "-n cert-manager get svc cert-manager-webhook" ]]; then
exit 0
fi
if [[ "$args" == "-n test-ns get statefulset openbao" || "$args" == "-n test-ns get statefulset garage" ]]; then
exit 0
fi
if [[ "$args" == "-n test-ns get deploy knoe-svc-kong" ]]; then
exit 0
fi
if [[ "$args" == "-n cert-manager get deploy cert-manager" || "$args" == "-n cert-manager get deploy cert-manager-cainjector" || "$args" == "-n cert-manager get deploy cert-manager-webhook" ]]; then
exit 0
fi
if [[ "$args" == "-n test-ns get pods --no-headers" ]]; then
cat <<'EOF'
garage-0 1/1 Running 0 30m
openbao-0 1/1 Running 0 32m
knoe-svc-kong-f685786f-rgtwl 1/1 Running 0 27m
EOF
exit 0
fi
if [[ "$args" == "-n cert-manager get pods --no-headers" ]]; then
cat <<'EOF'
cert-manager-7b67f8d7d8-gsf2t 1/1 Running 0 31m
cert-manager-cainjector-76f94d9655-blqd9 1/1 Running 0 31m
cert-manager-webhook-7b86d8b889-l88kr 1/1 Running 0 31m
EOF
exit 0
fi
exit 0
K_EOF
chmod +x "$BIN_DIR/kubectl"
CFG_DIR="$TMP_DIR/conf"
mkdir -p "$CFG_DIR"
cat <<C_EOF >"$CFG_DIR/prole.cfg"
[User]
NAMESPACE = test-ns
SERVICE_NAMESPACE = test-ns
KONG_NAMESPACE = test-ns
CERT_MANAGER_NAMESPACE = cert-manager
[Global]
DEPLOYMENT_MODE = k8s
C_EOF
export PATH="$BIN_DIR:$PATH"
set +e
KONG_NAME=knoe-svc-kong bash "$SCRIPT_UNDER_TEST" -c "$CFG_DIR/prole.cfg" --mode k8s -n test-ns >"$TMP_DIR/stdout" 2>"$TMP_DIR/stderr"
RC=$?
set -e
if [[ $RC -ne 0 ]]; then
echo "FAILURE: expected status_common_services.sh to succeed in k8s mode without OpenTofu" >&2
sed -n '1,240p' "$TMP_DIR/stdout" >&2 || true
sed -n '1,240p' "$TMP_DIR/stderr" >&2 || true
exit 1
fi
if [[ -s "$TMP_DIR/opentofu_calls.log" ]]; then
echo "FAILURE: expected no OpenTofu kubectl calls in k8s mode" >&2
sed -n '1,240p' "$TMP_DIR/opentofu_calls.log" >&2 || true
sed -n '1,240p' "$TMP_DIR/mock_calls.log" >&2 || true
exit 1
fi
if ! grep -q "skipping OpenTofu service check" "$TMP_DIR/stdout"; then
echo "FAILURE: expected informational OpenTofu skip message" >&2
sed -n '1,240p' "$TMP_DIR/stdout" >&2 || true
exit 1
fi
echo "SUCCESS"