diff --git a/bin/vps b/bin/vps index 2cfebab..d56f916 100755 --- a/bin/vps +++ b/bin/vps @@ -2955,5 +2955,67 @@ cmdline.spec:monujo:cmd:set-version:run() { } +compose:get-check-services() { + local E E1 availabe_actions service relations_yml + available_actions=$(compose --get-available-actions) || exit 1 + while read-0-err E service relations_yml ; do + [ -z "$relations_yml" ] && continue + [ "$relations_yml" == "null"$'\n' ] && continue + service=${service%%$'\n'} + while read-0-err E1 relation_name _; do + relation_name=${relation_name%$'\n'} + [[ "$relation_name" == "check-"* ]] || continue + p0 "$service" "$relation_name" + done < <(p-err shyaml -y key-values-0 <<<"$relations_yml") + if [ "$E1" != 0 ]; then + err "Failed to read yaml from relation for service '$service'." + echo " relation yaml following:" >&2 + e "$relations_yml" | prefix " | " >&2 + return "$E1" + fi + done < <(p-err shyaml -y key-values-0 <<<"$available_actions") + if [ "$E" != 0 ]; then + err "Failed to read yaml from '--get-available-actions'." + return "$E" + fi +} +export -f compose:get-check-services + + + + +cmdline.spec.gnu check-service +cmdline.spec::cmd:check-service:run() { + + : :posarg: [SERVICES...] "Target service to check (all by default)" + + local service E check_name + + declare -A service_failures=() + while read-0-err E service check_name; do + short_name=${check_name#check-} + compose "$check_name" "$service"