test/bin/fix

60 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
#
# Try to fix a service
#
# By default, the problem is "solved" the Microsoft way
# (stop and start).
# To do something more intelligent, create a
# /federated/services/<service>/fix
# script.
if [ "$#" != 1 ]; then
echo Usage: $0 service
exit 1
fi
SERVICE="$1"
if /federated/bin/check ${SERVICE}; then
echo "${SERVICE} doesn't seem to be broken"
exit 0
fi
/federated/bin/stop ${SERVICE}
/federated/bin/start ${SERVICE}
if /federated/bin/check ${SERVICE}; then
echo "${SERVICE} was (probably) fixed by a restart"
exit 0
fi
if [ -e /federated/services/${SERVICE}/fix ]; then
. /federated/services/${SERVICE}/fix
if /federated/bin/check ${SERVICE}; then
echo "${SERVICE} was (probably) fixed by the service fix script"
exit 0
fi
/federated/bin/stop ${SERVICE}
/federated/bin/start ${SERVICE}
if /federated/bin/check ${SERVICE}; then
echo "${SERVICE} was (probably) fixed by restarting after running the fix script"
exit 0
fi
fi
docker compose -f /federated/apps/${SERVICE}/docker-compose.yml down
docker rm ${SERVICE}
/federated/bin/stop ${SERVICE} || :
/federated/bin/start ${SERVICE}
if /federated/bin/check ${SERVICE}; then
echo "${SERVICE} was (probably) fixed by rebuilding the container"
exit 0
fi
echo "${SERVICE} is still broken. Please improve the fix script."
exit 1