|
|
@ -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 "$@" |