diff --git a/RebuildBdd/run-rebuild-bdd.sh b/RebuildBdd/run-rebuild-bdd.sh index e050fb1..1ba8481 100755 --- a/RebuildBdd/run-rebuild-bdd.sh +++ b/RebuildBdd/run-rebuild-bdd.sh @@ -102,7 +102,7 @@ shell_quote() { } cleanup() { - rm -f "${BOOTSTRAP_JSON:-}" + rm -f "${BOOTSTRAP_JSON:-}" "${REMOTE_RESULT_JSON:-}" } trap cleanup EXIT @@ -269,6 +269,7 @@ ssh "${SSH_OPTS[@]}" "${TARGET_USER}@${TARGET_HOST}" "exit 0" >/dev/null 2>&1 \ || fail "connexion SSH impossible vers la cible ${TARGET_USER}@${TARGET_HOST}" TARGET_CORE_SCRIPT="${TARGET_SCRIPT_DIR}/rebuild-bdd-core.sh" +REMOTE_RESULT_JSON="/tmp/run_rebuild_bdd_${REQUEST_ID}.json" REMOTE_BOOTSTRAP_CMD=" set -euo pipefail @@ -341,4 +342,42 @@ exec \"\$CORE_SCRIPT\" \ --json-only " -ssh "${SSH_OPTS[@]}" "${TARGET_USER}@${TARGET_HOST}" "$REMOTE_BOOTSTRAP_CMD" +ssh "${SSH_OPTS[@]}" "${TARGET_USER}@${TARGET_HOST}" "$REMOTE_BOOTSTRAP_CMD" >"$REMOTE_RESULT_JSON" \ + || { + cat "$REMOTE_RESULT_JSON" 2>/dev/null || true + fail "échec d'exécution distante sur la cible ${TARGET}" + } + +REMOTE_STATUS="$( + python3 - <<'PY' "$REMOTE_RESULT_JSON" +import json, sys +with open(sys.argv[1], 'r', encoding='utf-8') as f: + data = json.load(f) +print(data.get("status", "error")) +PY +)" + +if [[ "$REMOTE_STATUS" != "success" ]]; then + cat "$REMOTE_RESULT_JSON" + fail "restauration distante échouée pour la cible ${TARGET}" +fi + +python3 - <<'PY' "$REMOTE_RESULT_JSON" +import json, sys + +with open(sys.argv[1], 'r', encoding='utf-8') as f: + data = json.load(f) + +message = data.get("message", "restauration terminée") +environment = data.get("environment") or "N/A" +database = data.get("database") or "N/A" +request_id = data.get("request_id") or "N/A" +dump_file = data.get("dump_file") or "N/A" +log_file = data.get("log_file") or "N/A" + +print(f"[{request_id}] {message}") +print(f"Environnement : {environment}") +print(f"Base : {database}") +print(f"Dump : {dump_file}") +print(f"Log : {log_file}") +PY