30 lines
1.0 KiB
Bash
Executable File
30 lines
1.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
if [[ ${EUID} -ne 0 ]]; then
|
|
echo "root required" >&2
|
|
exit 1
|
|
fi
|
|
|
|
TARGET=${1:?usage: rollback_automation_quorum_controller.sh ABSOLUTE_RELEASE_PATH}
|
|
INSTALL_ROOT=/opt/aios-automation-quorum
|
|
TARGET_REAL=$(readlink -f -- "${TARGET}" 2>/dev/null || true)
|
|
[[ -n ${TARGET_REAL} && ${TARGET} == "${TARGET_REAL}" ]] || { echo "non-canonical or missing rollback target" >&2; exit 1; }
|
|
case ${TARGET_REAL} in
|
|
"${INSTALL_ROOT}"/releases/*) ;;
|
|
*) echo "target outside release root" >&2; exit 1 ;;
|
|
esac
|
|
[[ -d ${TARGET_REAL} && ! -L ${TARGET} ]] || { echo "invalid rollback target" >&2; exit 1; }
|
|
|
|
CURRENT=$(readlink -f "${INSTALL_ROOT}/current" 2>/dev/null || true)
|
|
if [[ ${CURRENT} == "${TARGET_REAL}" ]]; then
|
|
echo "already_current=${CURRENT}"
|
|
exit 0
|
|
fi
|
|
|
|
ln -sfn "${TARGET_REAL}" "${INSTALL_ROOT}/.rollback-current"
|
|
mv -Tf "${INSTALL_ROOT}/.rollback-current" "${INSTALL_ROOT}/current"
|
|
systemctl daemon-reload
|
|
systemctl try-restart aios-automation-quorum-controller.timer
|
|
echo "rolled_back_to=$(readlink -f "${INSTALL_ROOT}/current")"
|