post-check and docs for NetworkManager WANs
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KqhjP7nud5gdBg25zCiRk9
This commit is contained in:
@@ -433,5 +433,38 @@ done
|
||||
sed 's/^STARLINK_IFACE=.*/STARLINK_IFACE="a'"'"'b"/' hosts/van.conf > "$gs/bad.conf"
|
||||
if ./deploy.sh --check "$gs/bad.conf" >/dev/null 2>&1; then bad "STARLINK_IFACE with a quote must be rejected"; else ok "STARLINK_IFACE with a quote is rejected"; fi
|
||||
rm -rf "$gs"
|
||||
# 19. post_check NetworkManager additions
|
||||
tc=$(mktemp -d)
|
||||
sed 's/^ENABLE_NM_WAN=.*/ENABLE_NM_WAN=0/' hosts/van.conf > "$tc/off.conf"
|
||||
pc=$(POSTCHECK_WAIT=0 ./deploy.sh --post-check "$tc/off.conf" 2>&1) || true
|
||||
if ! echo "$pc" | grep -q '^== post-deploy check ==$'; then bad "19: --post-check (ENABLE_NM_WAN=0) did not run"
|
||||
elif echo "$pc" | grep -q 'NetworkManager'; then bad "19: --post-check mentions NetworkManager with ENABLE_NM_WAN=0"
|
||||
else ok "19: --post-check omits NetworkManager when ENABLE_NM_WAN=0"; fi
|
||||
pc=$(POSTCHECK_WAIT=0 ./deploy.sh --post-check hosts/van.conf 2>&1) || true
|
||||
echo "$pc" | grep -q 'NetworkManager' && ok "19: --post-check mentions NetworkManager when ENABLE_NM_WAN=1" || bad "19: --post-check lacks NetworkManager with ENABLE_NM_WAN=1"
|
||||
# 19b. apply status file (VANLINK_APPLY_STATUS)
|
||||
pcs() { POSTCHECK_WAIT=0 VANLINK_APPLY_STATUS="$1" ./deploy.sh --post-check hosts/van.conf 2>&1 || true; }
|
||||
echo "ok 2026-01-01T00:00:00+00:00" > "$tc/st"
|
||||
pcs "$tc/st" | grep -qF ' ok last --apply-network: ok 2026-01-01T00:00:00+00:00' && ok "19b: status ok -> ok line" || bad "19b: status ok line missing"
|
||||
for w in "running 2026-01-01T00:00:00+00:00 /bak" "rolled-back 2026-01-01T00:00:00+00:00 no-uplink" "rollback-failed 2026-01-01T00:00:00+00:00 boom"; do
|
||||
echo "$w" > "$tc/st"
|
||||
pcs "$tc/st" | grep -qF -- "-> post-deploy: last --apply-network status: $w — see /var/log/vanlink-apply-network.log" && ok "19b: status ${w%% *} -> warn" || bad "19b: status ${w%% *} warn missing"
|
||||
done
|
||||
pcs "$tc/none" | grep -q 'last --apply-network' && bad "19b: absent status file must print nothing" || ok "19b: absent status file prints nothing"
|
||||
# 19c. van-failover state.json (VANLINK_FAILOVER_STATE, VANLINK_SYSNET)
|
||||
mkdir -p "$tc/sys/dev1" "$tc/sys/dev2"
|
||||
fo() { POSTCHECK_WAIT=0 VANLINK_SYSNET="$tc/sys" VANLINK_FAILOVER_STATE="$1" VANLINK_APPLY_STATUS="$tc/none" ./deploy.sh --post-check hosts/van.conf 2>&1 || true; }
|
||||
cat > "$tc/f.json" <<'J'
|
||||
{"wans":[{"name":"starlink","device":"dev1","present":false},{"name":"cell","device":"dev2","present":true},
|
||||
{"name":"wifi","device":"","present":false},{"name":"gone","device":"nodev","present":false}]}
|
||||
J
|
||||
o=$(fo "$tc/f.json")
|
||||
echo "$o" | grep -q -- '-> post-deploy: .*WAN starlink' && ok "19c: existing device present:false -> warn" || bad "19c: starlink warn missing"
|
||||
echo "$o" | grep -q ' ok .*WAN cell' && ok "19c: present:true -> ok" || bad "19c: cell ok missing"
|
||||
echo "$o" | grep -qE 'WAN (wifi|gone)' && bad "19c: empty/nonexistent device must be ignored" || ok "19c: empty/nonexistent device ignored"
|
||||
echo '{ not json' > "$tc/bad.json"
|
||||
o=$(fo "$tc/bad.json"); [ "$(echo "$o" | grep -- '-> post-deploy: .*failover state' | sort -u | wc -l)" = 1 ] && ok "19c: invalid JSON -> one warn" || bad "19c: invalid JSON warn count"
|
||||
o=$(fo "$tc/nofile"); [ "$(echo "$o" | grep -- '-> post-deploy: .*failover state' | sort -u | wc -l)" = 1 ] && ok "19c: missing file -> one warn" || bad "19c: missing file warn count"
|
||||
rm -rf "$tc"
|
||||
|
||||
exit "$fail"
|
||||
|
||||
Reference in New Issue
Block a user