When setup-ovn.sh migrates the host's WAN IP to br-external, stopping
openvswitch-switch destroys the bridge and the host loses all network
connectivity — unreachable via SSH, requires console reboot.
Now checks if br-external has an IP before stopping OVS. If it does,
skip the OVS stop and only stop ovn-controller + ovn-central. OVS is
infrastructure — bridges must survive service stop/start cycles.
Discovered during 3-node E2E testing: stop-dev.sh killed all 3 nodes'
WAN connectivity simultaneously.
is_multinode() counted all [nodes.*] TOML subsections (daemon, nats, awsgw,
etc.) instead of just top-level node entries. A single-node config has ~8
such sections, causing the single-node Docker E2E to use coordinated cluster
shutdown and exit with code 254.
Fix grep to match only [nodes.X] (not [nodes.X.Y]) and preserve the original
test exit code in the cleanup trap.
- Add ./scripts/start-dev.sh to start all services in correct order
- Add ./scripts/stop-dev.sh to gracefully stop all services
- Uses Hive service commands: nats, predastore, viperblock
- Includes service health checks and proper logging
- Scripts are based on user's working command examples
- Update go.mod with AWS SDK v2 dependencies
Note: Existing compilation errors in codebase need to be fixed
for unit tests to pass (slog formatting, duplicate mains in tmp/)
Mulga Defense Corporation <security@mulgadc.com>