prole/etc/repair_pipeline.sh

92 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# repair_pipeline.sh
# Purpose:
# - Thin wrapper around the Python-native cluster repair logic.
#
# The real orchestration now lives in `knoe/core/actions.py` and is
# invoked through `knoe/core/repair_pipeline_cli.py`.
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
ROOT_DIR=$(cd "$SCRIPT_DIR/.." && pwd)
SERVICE_NAMESPACE=""
DB_NAMESPACE=""
MODE=""
CFG_PATH=""
usage() {
cat <<'USAGE'
Usage: repair_pipeline.sh [-n|--namespace NS] [--db-namespace NS] [-m|--mode MODE] [--config PATH] [repair]
Runs a best-effort repair pass across common services and cluster add-ons.
USAGE
}
while [[ $# -gt 0 ]]; do
case "$1" in
-m|--mode)
shift
MODE="${1:-}"
;;
-m=*|--mode=*)
MODE="${1#*=}"
;;
-n|--namespace)
shift
SERVICE_NAMESPACE="${1:-}"
;;
-n=*|--namespace=*)
SERVICE_NAMESPACE="${1#*=}"
;;
--db-namespace)
shift
DB_NAMESPACE="${1:-}"
;;
--db-namespace=*)
DB_NAMESPACE="${1#*=}"
;;
--config)
shift
CFG_PATH="${1:-}"
;;
--config=*)
CFG_PATH="${1#*=}"
;;
repair)
# Backwards-compatible positional arg; no-op.
;;
-h|--help)
usage
exit 0
;;
*)
usage
exit 2
;;
esac
shift
done
export KNOE_HOME="${KNOE_HOME:-$ROOT_DIR}"
export KNOE_CONF="${KNOE_CONF:-${CFG_PATH:-$KNOE_HOME/conf}}"
# Ensure local imports work when invoked from a copied script location.
export PYTHONPATH="$ROOT_DIR${PYTHONPATH:+:$PYTHONPATH}"
args=()
if [[ -n "$SERVICE_NAMESPACE" ]]; then
args+=("--namespace" "$SERVICE_NAMESPACE")
fi
if [[ -n "$DB_NAMESPACE" ]]; then
args+=("--db-namespace" "$DB_NAMESPACE")
fi
if [[ -n "$MODE" ]]; then
args+=("--mode" "$MODE")
fi
args+=("--config" "$KNOE_CONF")
exec python3 -m knoe.core.repair_pipeline_cli "${args[@]}"