#!/bin/bash
# vega-health-check
# Boot-time health check for vega services after a firmware update.
# Invoked 30 seconds after vega.target activates on every boot.
#
# Covers the scenario where dpkg returned 0 but newly installed services
# crash on startup — which OnFailure= on dakupdate.service does NOT catch.
#
# Log filter:  journalctl -t vega-health-check

log() {
    echo "vega-health-check: $*" | systemd-cat -t vega-health-check -p "${LOG_PRIORITY:-info}"
}

HEALTHY=1

# ── Check 1: vega.target ─────────────────────────────────────────────────────

if systemctl is-active --quiet vega.target; then
    log "vega.target: active"
else
    LOG_PRIORITY=warning log "vega.target: NOT active"
    HEALTHY=0
fi

# ── Check 2: vega-networking.service ─────────────────────────────────────────

if systemctl is-active --quiet vega-networking.service; then
    log "vega-networking.service: active"
else
    LOG_PRIORITY=warning log "vega-networking.service: NOT active"
    HEALTHY=0
fi

# ── Check 3: Node.js process ─────────────────────────────────────────────────

if pgrep -x "node" > /dev/null 2>&1; then
    log "Node.js process: running"
else
    LOG_PRIORITY=warning log "Node.js process: NOT running"
    HEALTHY=0
fi

# ── Remediation ───────────────────────────────────────────────────────────────

if [ "$HEALTHY" = "0" ]; then
    LOG_PRIORITY=err log "Health check FAILED. Attempting to restore network access."

    systemctl start vega-networking.service 2>/dev/null \
        && log "vega-networking.service started." \
        || LOG_PRIORITY=err log "Failed to start vega-networking.service."

    log "Device may need manual firmware reinstall. Check: journalctl -t vega-execute-update"
    exit 1
fi

log "All health checks passed."
exit 0
