diff --git a/deploy/test-cluster.sh b/deploy/test-cluster.sh index b55dde4..9056eb4 100755 --- a/deploy/test-cluster.sh +++ b/deploy/test-cluster.sh @@ -72,7 +72,7 @@ nodes = json.load(sys.stdin) seen = {} dups = [] for n in nodes: - h = n.get("hostname") + h = n.get('hostname') if h in seen: dups.append(h) seen[h] = True print(",".join(sorted(set(dups))))' 2>/dev/null) @@ -82,16 +82,16 @@ print(",".join(sorted(set(dups))))' 2>/dev/null) fail "duplicate hostnames: $DUP — run migration 007" fi - # No private docker IPs - BAD_IPS=$(echo "$NODES_JSON" | python3 -c ' -import sys, json, re -docker = re.compile(r"^172\.(1[6-9]|2\d|3[01])\.") -bad = [] -for n in json.load(sys.stdin): - ip = n.get("ip_address") or "" - if docker.match(ip): - bad.append(f"{n.get(\"hostname\")}={ip}") -print(",".join(bad))' 2>/dev/null) + # No private docker IPs (172.16.0.0/12 reserved for docker bridges) + BAD_IPS="" + while IFS=$'\t' read -r host ip; do + [[ -z "$ip" ]] && continue + first="${ip%%.*}"; rest="${ip#*.}"; second="${rest%%.*}" + if [[ "$first" == "172" && "$second" == "17" ]]; then + BAD_IPS+="${host}=${ip}," + fi + done < <(echo "$NODES_JSON" | jq -r '.[] | [.hostname, (.ip_address // "")] | @tsv') + BAD_IPS="${BAD_IPS%,}" if [[ -z "$BAD_IPS" ]]; then pass "all node IPs are real LAN addresses" else @@ -162,11 +162,7 @@ BMD_JSON=$(api GET /api/v1/cluster/devices/blackmagic || echo '[]') BMD_COUNT=$(echo "$BMD_JSON" | python3 -c 'import sys,json; print(len(json.load(sys.stdin)))' 2>/dev/null || echo 0) if [[ "$BMD_COUNT" -gt 0 ]]; then pass "$BMD_COUNT DeckLink port(s) registered" - echo "$BMD_JSON" | python3 -c ' -import sys, json -for d in json.load(sys.stdin): - print(f" {d.get(\"hostname\")} port={d.get(\"index\")} model={d.get(\"model\") or \"unknown\"} online={d.get(\"online\")}") -' + echo "$BMD_JSON" | jq -r '.[] | " \(.hostname) port=\(.index) model=\(.model // "unknown") online=\(.online)"' else warn "no DeckLink devices reported by any node" fi diff --git a/docker-compose.yml b/docker-compose.yml index 346e3f2..9e324bb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -48,6 +48,7 @@ services: AUTH_ENABLED: ${AUTH_ENABLED:-false} DOCKER_NETWORK: wild-dragon_wild-dragon NODE_IP: ${NODE_IP} + NODE_HOSTNAME: ${NODE_HOSTNAME:-} deploy: resources: reservations: diff --git a/services/mam-api/src/index.js b/services/mam-api/src/index.js index 29024a6..d8c6701 100644 --- a/services/mam-api/src/index.js +++ b/services/mam-api/src/index.js @@ -163,7 +163,7 @@ async function selfHeartbeat() { capabilities = EXCLUDED.capabilities, last_seen = NOW()`, [ - os.hostname(), + process.env.NODE_HOSTNAME || os.hostname(), getLocalIp(), process.env.npm_package_version || null, `http://${getLocalIp()}:${PORT}`,