From b7f6317fd221443c163ded9c5668cf18c5f0a6fd Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Mon, 6 Apr 2026 01:02:30 -0300 Subject: [PATCH] recovery: make cluster power console self-contained --- scripts/cluster_power_console.sh | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/scripts/cluster_power_console.sh b/scripts/cluster_power_console.sh index cd71bdc3..73fcc6ad 100755 --- a/scripts/cluster_power_console.sh +++ b/scripts/cluster_power_console.sh @@ -8,8 +8,8 @@ Usage: Purpose: Friendly manual entrypoint for running cluster power recovery from a remote console. - If the repo checkout exists locally, run the recovery script here. - Otherwise, delegate to another host that has the repo checkout. + Prefer a sibling cluster_power_recovery.sh when installed as a standalone helper. + Otherwise use a repo checkout if available, or delegate to another host. Defaults: --repo-dir $HOME/Development/titan-iac @@ -22,6 +22,7 @@ Examples: USAGE } +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_DIR="${HOME}/Development/titan-iac" DELEGATE_HOST="titan-24" @@ -50,19 +51,37 @@ if [[ $# -lt 1 ]]; then exit 1 fi -LOCAL_SCRIPT="${REPO_DIR}/scripts/cluster_power_recovery.sh" +SIBLING_SCRIPT="${SCRIPT_DIR}/cluster_power_recovery.sh" +REPO_SCRIPT="${REPO_DIR}/scripts/cluster_power_recovery.sh" +LOCAL_SCRIPT="" -if [[ -x "${LOCAL_SCRIPT}" ]] && command -v kubectl >/dev/null 2>&1; then +if [[ -x "${SIBLING_SCRIPT}" ]]; then + LOCAL_SCRIPT="${SIBLING_SCRIPT}" +elif [[ -x "${REPO_SCRIPT}" ]]; then + LOCAL_SCRIPT="${REPO_SCRIPT}" +fi + +if [[ -n "${LOCAL_SCRIPT}" ]] && command -v kubectl >/dev/null 2>&1; then exec "${LOCAL_SCRIPT}" "$@" fi if [[ -z "${DELEGATE_HOST}" ]]; then - echo "cluster-power-console: local repo checkout not found at ${REPO_DIR} and no delegate host configured" >&2 + echo "cluster-power-console: no usable local recovery script found and no delegate host configured" >&2 exit 1 fi -quoted_repo_dir="$(printf '%q' "${REPO_DIR}")" quoted_args="$(printf '%q ' "$@")" +if [[ -r "${SIBLING_SCRIPT}" ]]; then + exec ssh -o BatchMode=yes -o ConnectTimeout=8 "${DELEGATE_HOST}" \ + "bash -s -- ${quoted_args}" < "${SIBLING_SCRIPT}" +fi + +if [[ -r "${REPO_SCRIPT}" ]]; then + exec ssh -o BatchMode=yes -o ConnectTimeout=8 "${DELEGATE_HOST}" \ + "bash -s -- ${quoted_args}" < "${REPO_SCRIPT}" +fi + +quoted_repo_dir="$(printf '%q' "${REPO_DIR}")" exec ssh -o BatchMode=yes -o ConnectTimeout=8 "${DELEGATE_HOST}" \ "cd ${quoted_repo_dir} && ./scripts/cluster_power_recovery.sh ${quoted_args}"