#!/bin/sh
# Docker's health check: the panel answers through nginx, and every service
# has run for a few seconds. runit starts a failing service again each
# second, so one that keeps failing (the worker, novncd, socketiod) is never
# up that long.
/srv/webvirtcloud/venv/bin/python3 -c "import urllib.request as u; u.urlopen(u.Request('http://127.0.0.1/accounts/login/', headers={'X-Forwarded-Proto': 'https'}), timeout=5)" || exit 1
for service in nginx webvirtcloud webvirtcloud-worker novnc socketiod; do
    # "run: /etc/service/novnc: (pid 60) 45556s"
    uptime=$(sv status "/etc/service/$service" | sed -n 's/^run: [^)]*) \([0-9]*\)s.*/\1/p')
    if [ -z "$uptime" ] || [ "$uptime" -lt 5 ]; then
        echo "$service is not running steadily: $(sv status "/etc/service/$service")"
        exit 1
    fi
done
