60 lines
1.3 KiB
Bash
Executable File
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
|