dragonflight/deploy
Zac Gaetano 068e2eaa87 fix(node-agent): NODE_NAME override to prevent cloned-VM hostname collision
The cluster heartbeat upserts cluster_nodes ON CONFLICT (hostname), so two
machines reporting the same os.hostname() clobber each other's row. A cloned
capture VM whose /etc/hostname was "zampp1" (same as the primary) caused its
4 DeckLink cards to land on the primary's row, then get overwritten by the
primary's cardless heartbeat — so the New Recorder modal showed "No SDI
devices auto-detected" despite healthy hardware.

- node-agent now reports process.env.NODE_NAME || os.hostname() as its cluster
  identity, so node identity is explicit and collision-proof.
- docker-compose.worker.yml exposes NODE_NAME to the container.
- onboard-node.sh always writes NODE_NAME to the node .env (defaults to the OS
  hostname) so future onboarding pins identity even on cloned images.

Live remediation already applied to the zampp2 capture node: compose hostname
pinned to zampp2 and its node token rebound to zampp2; DB now reports bmd=4
for zampp2.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-01 09:00:34 -04:00
..
api-smoke.sh test: deploy/api-smoke.sh — exercises every API surface 2026-05-23 04:24:10 +00:00
install-driver.sh feat(cluster): install capture-card drivers/SDKs from the admin screen 2026-05-31 18:14:59 -04:00
onboard-node.sh fix(node-agent): NODE_NAME override to prevent cloned-VM hostname collision 2026-06-01 09:00:34 -04:00
test-api.sh fix(deploy): test-api.sh — skip capture 404 (sidecar/idle mode is normal) 2026-05-20 13:56:26 -04:00
test-cluster.sh cluster: stable hostname for mam-api, jq-based smoke test 2026-05-21 11:50:52 +00:00