#!/bin/bash
set -euo pipefail

ADDR="http://100.81.26.3:4646"
# 检查 NOMAD_TOKEN 是否设置，如果设置了，则准备好 Header
HDR=""
if [ -n "${NOMAD_TOKEN:-}" ]; then
  HDR="-H "X-Nomad-Token: $NOMAD_TOKEN""
fi

echo "--- 节点列表 (Before) ---"
nomad node status -address="$ADDR"

echo
echo "--- 开始查找需要清理的旧节点 ---"

# 使用 jq 从 nomad node status 的 json 输出中精确查找
# 条件: 状态为 "down" 且 名称匹配列表
IDS_TO_PURGE=$(nomad node status -address="$ADDR" -json | jq -r '.[] | select(.Status == "down" and (.Name | test("^(ch3|ch2|ash1d|ash2e|semaphore)$"))) | .ID')

if [[ -z "$IDS_TO_PURGE" ]]; then
  echo "✅ 未找到符合条件的 'down' 状态节点，无需清理。"
else
  echo "以下是待清理的节点 ID:"
  echo "$IDS_TO_PURGE"
  echo

  # 循环遍历 ID，使用 curl 调用 HTTP API 进行 purge
  for NODE_ID in $IDS_TO_PURGE; do
    echo "===> 正在清理节点: $NODE_ID"
    # 构造 curl 命令，并使用 eval 来正确处理可能为空的 $HDR
    cmd="curl -sS -XPOST $HDR -w ' -> HTTP %{http_code}\n' '$ADDR/v1/node/$NODE_ID/purge'"
    eval $cmd
  done
fi

echo
echo "--- 节点列表 (After) ---"
nomad node status -address="$ADDR"