#!/bin/bash
[ "$1" == "" ] && exec echo "Usage: $0 <ACTION:open/close> <MACHINE>"

WAIT_INTERVAL_SEC=30
WAIT_TIMEOUT_SEC=300   # 最多等候秒數 (例如 5 分鐘)

ACTION=$1
MACHINE=$2
case ${ACTION} in
    open)
        param="open"
        return_code="1"
        ;;
    close)
        param="close"
        return_code="0"
        ;;
    *)
        echo "Unknown parameter"
        ;;
esac

start_time=$(date +%s)

while true; do
    result=$(ssh ${MACHINE} "running_server_tools ${param}")

    if [[ "$result" == "${return_code}" ]]; then
        echo "${MACHINE} ${param} Finished"
        break
    fi

    # 檢查是否超過 WAIT_TIMEOUT_SEC
    now=$(date +%s)
    elapsed=$(( now - start_time ))
    if (( elapsed >= WAIT_TIMEOUT_SEC )); then
        echo "${MACHINE} ${param} Timeout after ${WAIT_TIMEOUT_SEC} seconds"
        break
    fi

    echo "${MACHINE} ${param} Not finished yet, elapsed ${elapsed}s, waiting ${WAIT_INTERVAL_SEC}s before retry..."
    sleep "$WAIT_INTERVAL_SEC"
done

