about summary refs log tree commit diff
path: root/bundles/svtree-containers/files/bin/podman-healthcheck
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/svtree-containers/files/bin/podman-healthcheck')
-rwxr-xr-xbundles/svtree-containers/files/bin/podman-healthcheck32
1 files changed, 32 insertions, 0 deletions
diff --git a/bundles/svtree-containers/files/bin/podman-healthcheck b/bundles/svtree-containers/files/bin/podman-healthcheck
new file mode 100755
index 0000000..ab3dcc7
--- /dev/null
+++ b/bundles/svtree-containers/files/bin/podman-healthcheck
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -eu
+[ -n "${DEBUG:-}" ] && set -x
+
+healthcheck() {
+	local container=${1:?}
+
+	podman healthcheck run "$container" >/dev/null 2>&1 || true
+
+	podman inspect --format '{{if .State.Health}}{{.Name}} {{.State.Health.Status}}{{end}}' "$container" | (
+		read -r name status
+
+		test -n "$name" || return
+
+		printf '%s (%s) is %s\n' "$container" "$name" "$status"
+		case "$status" in
+		healthy) ;;
+		*)
+			# tgnotify "!!! service $container unhealthy"
+			;;
+		esac
+	)
+}
+
+main() {
+	case "${1:-}" in
+	"") podman container ls --format '{{.ID}}' | xargs -n1 $0 ;;
+	*) healthcheck "$1" ;;
+	esac
+}
+
+main $@