Reviewed-on: #17 Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn> Reviewed-by: xuxt <xuxt@zgclab.edu.cn>
66 lines
1.6 KiB
Bash
Executable File
66 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
TEST_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
TMP_ROOT="$TEST_ROOT/tmp"
|
|
API_BASE="http://localhost:32300/api/v1/master"
|
|
AGENT_HOSTNAME="dev-e2euser-e2einst-pod-0"
|
|
NODE_FILE="$TEST_ROOT/private/argus/agent/$AGENT_HOSTNAME/node.json"
|
|
|
|
mkdir -p "$TMP_ROOT"
|
|
|
|
node_id=""
|
|
for _ in {1..30}; do
|
|
sleep 2
|
|
response=$(curl -sS "$API_BASE/nodes" || true)
|
|
if [[ -z "$response" ]]; then
|
|
continue
|
|
fi
|
|
list_file="$TMP_ROOT/nodes_list.json"
|
|
echo "$response" > "$list_file"
|
|
node_id=$(python3 - "$list_file" <<'PY'
|
|
import json, sys
|
|
with open(sys.argv[1]) as handle:
|
|
nodes = json.load(handle)
|
|
print(nodes[0]["id"] if nodes else "")
|
|
PY
|
|
)
|
|
if [[ -n "$node_id" ]]; then
|
|
break
|
|
fi
|
|
done
|
|
|
|
if [[ -z "$node_id" ]]; then
|
|
echo "[ERROR] Agent did not register within timeout" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "$node_id" > "$TMP_ROOT/node_id"
|
|
|
|
if [[ ! -f "$NODE_FILE" ]]; then
|
|
echo "[ERROR] node.json not created at $NODE_FILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
python3 - "$NODE_FILE" <<'PY'
|
|
import json, sys
|
|
with open(sys.argv[1]) as handle:
|
|
node = json.load(handle)
|
|
assert "id" in node and node["id"], "node.json missing id"
|
|
PY
|
|
|
|
detail_file="$TMP_ROOT/initial_detail.json"
|
|
curl -sS "$API_BASE/nodes/$node_id" -o "$detail_file"
|
|
python3 - "$detail_file" "$TMP_ROOT/initial_ip" <<'PY'
|
|
import json, sys, pathlib
|
|
with open(sys.argv[1]) as handle:
|
|
node = json.load(handle)
|
|
ip = node["meta_data"].get("ip")
|
|
if not ip:
|
|
raise SystemExit("meta_data.ip missing")
|
|
pathlib.Path(sys.argv[2]).write_text(ip)
|
|
PY
|
|
|
|
echo "[INFO] Agent registered with node id $node_id"
|