Browse Source

new: [vps] add ``check-service``

master
Valentin Lab 1 week ago
parent
commit
d1cdee1341
  1. 62
      bin/vps

62
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" </dev/null
if [ "$?" != 0 ]; then
if [ -z "${service_failures["$service"]}" ]; then
service_failures["$service"]="$short_name"
else
service_failures["$service"]+=" $short_name"
fi
fi
done < <(
p-err compose:get-check-services
)
if [ "$E" != 0 ]; then
err "Failed to get check services."
exit "$E"
fi
if [ "${#service_failures[@]}" != 0 ]; then
echo "These services failed checks:"
for service in "${!service_failures[@]}"; do
echo " ${service}: ${service_failures["$service"]}"
done
exit 1
fi
}
cmdline::parse "$@"
Loading…
Cancel
Save