#!/bin/sh
# E3 (Readiness-Analyse): puppetserver ist BEREIT, wenn er auf 8140 die
# Statusseite mit "running" beantwortet -- nicht, wenn die JVM laeuft.
#
# Bis dahin vergehen je nach Knoten 12 s bis ueber eine Minute (JVM-Anlauf,
# JRuby-Pool, beim ersten Start die CA). "up" ist in dieser Zeit wahr und
# nutzlos: genau dann haengen der erste Agentenlauf, die Zertifikatsausstellung
# und jede Abnahme daran (gemessen: puppet-1.tick1 hatte keinen einzigen Dienst
# mit Bereitschaftsmeldung).
#
# Geprueft wird die ANTWORT, nicht der Rueckgabewert von curl. /status/v1/simple
# braucht keine Anmeldung (auth.conf der Upstream-Pakete) und sagt "running",
# sobald alle Dienste gestartet sind; waehrend des Anlaufs ist der Port zu oder
# die Antwort eine andere.
#
# -k: die Anfrage geht an 127.0.0.1, das Serverzertifikat traegt den Knotennamen
# -- eine Namenspruefung waere hier falsch, und beim allerersten Start gibt es
# noch gar keine CA, gegen die man pruefen koennte. Gefragt wird nur der eigene
# Loopback.
#
# Port 8140 ist der Upstream-Standard (webserver.conf ssl-port). Wer ihn
# umstellt, stellt diese Pruefung mit um.
r=$(curl -sk -m 5 https://127.0.0.1:8140/status/v1/simple 2>/dev/null) || exit 1
[ "$r" = running ]
