增加sys/debug 部署测试;agent dev/user/instance元信息提取优化;sys/tests 优化 (#26)
Reviewed-on: #26 Reviewed-by: xuxt <xuxt@zgclab.edu.cn> Reviewed-by: huhy <husteryezi@163.com> Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn>
This commit was merged in pull request #26.
This commit is contained in:
84
src/sys/debug/scripts/05_agent_register.sh
Executable file
84
src/sys/debug/scripts/05_agent_register.sh
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# shellcheck source=common.sh
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common.sh"
|
||||
|
||||
ensure_env_file
|
||||
ensure_paths_defined
|
||||
|
||||
TMP_DIR_LOCAL="$TMP_DIR"
|
||||
mkdir -p "$TMP_DIR_LOCAL"
|
||||
|
||||
API_BASE="http://localhost:32300/api/v1/master"
|
||||
|
||||
log "Waiting for agent nodes to register"
|
||||
|
||||
extract_node() {
|
||||
local name="$1"; local output="$2"; local json_file="$3"
|
||||
python3 - "$name" "$output" "$json_file" <<'PY'
|
||||
import json, sys, pathlib
|
||||
name = sys.argv[1]
|
||||
out = pathlib.Path(sys.argv[2])
|
||||
json_file = sys.argv[3]
|
||||
with open(json_file, 'r') as fh:
|
||||
data = json.load(fh)
|
||||
node = next((n for n in data if n.get("name") == name), None)
|
||||
if node:
|
||||
out.write_text(node["id"])
|
||||
print(node["id"])
|
||||
PY
|
||||
}
|
||||
|
||||
ID_A=""; ID_B=""
|
||||
for _ in {1..60}; do
|
||||
sleep 2
|
||||
resp=$(curl -fsS "$API_BASE/nodes" 2>/dev/null || true)
|
||||
[[ -z "$resp" ]] && continue
|
||||
if ! echo "$resp" | head -c1 | grep -q '\['; then
|
||||
continue
|
||||
fi
|
||||
echo "$resp" > "$TMP_DIR_LOCAL/nodes_list.json"
|
||||
ID_A=$(extract_node "$HOST_A" "$TMP_DIR_LOCAL/node_id_a" "$TMP_DIR_LOCAL/nodes_list.json" 2>/dev/null || true)
|
||||
ID_B=$(extract_node "$HOST_B" "$TMP_DIR_LOCAL/node_id_b" "$TMP_DIR_LOCAL/nodes_list.json" 2>/dev/null || true)
|
||||
if [[ -s "$TMP_DIR_LOCAL/node_id_a" && -s "$TMP_DIR_LOCAL/node_id_b" ]]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ ! -s "$TMP_DIR_LOCAL/node_id_a" || ! -s "$TMP_DIR_LOCAL/node_id_b" ]]; then
|
||||
echo "[ERR] Agents did not register in time" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
node_detail() {
|
||||
local id="$1"; local out="$2"
|
||||
curl -fsS "$API_BASE/nodes/$id" -o "$out"
|
||||
}
|
||||
|
||||
node_detail "$(cat "$TMP_DIR_LOCAL/node_id_a")" "$TMP_DIR_LOCAL/detail_a.json"
|
||||
node_detail "$(cat "$TMP_DIR_LOCAL/node_id_b")" "$TMP_DIR_LOCAL/detail_b.json"
|
||||
|
||||
python3 - "$TMP_DIR_LOCAL/detail_a.json" "$TMP_DIR_LOCAL/initial_ip_a" <<'PY'
|
||||
import json, sys, pathlib
|
||||
node=json.load(open(sys.argv[1]))
|
||||
ip=node.get("meta_data",{}).get("ip")
|
||||
assert ip, "missing ip"
|
||||
pathlib.Path(sys.argv[2]).write_text(ip)
|
||||
PY
|
||||
|
||||
python3 - "$TMP_DIR_LOCAL/detail_b.json" "$TMP_DIR_LOCAL/initial_ip_b" <<'PY'
|
||||
import json, sys, pathlib
|
||||
node=json.load(open(sys.argv[1]))
|
||||
ip=node.get("meta_data",{}).get("ip")
|
||||
assert ip, "missing ip"
|
||||
pathlib.Path(sys.argv[2]).write_text(ip)
|
||||
PY
|
||||
|
||||
NODE_JSON_A="$SYS_DEBUG_PRIVATE_NODEA/argus/agent/$HOST_A/node.json"
|
||||
NODE_JSON_B="$SYS_DEBUG_PRIVATE_NODEB/argus/agent/$HOST_B/node.json"
|
||||
|
||||
[[ -f "$NODE_JSON_A" ]] || { echo "[ERR] node.json missing for $HOST_A" >&2; exit 1; }
|
||||
[[ -f "$NODE_JSON_B" ]] || { echo "[ERR] node.json missing for $HOST_B" >&2; exit 1; }
|
||||
|
||||
log "Agents registered: $(cat "$TMP_DIR_LOCAL/node_id_a") , $(cat "$TMP_DIR_LOCAL/node_id_b")"
|
||||
Reference in New Issue
Block a user