mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-10-27 06:31:23 +01:00
The -v verbose mode displays the loading messages returned by the master CLI reload command upon error. The new -vv mode displays the loading messages even upon success, showing the content of `show startup-logs` after the reload attempt.
114 lines
2.1 KiB
Bash
Executable File
114 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
export VERBOSE=1
|
|
export TIMEOUT=90
|
|
export MASTER_SOCKET=${MASTER_SOCKET:-/var/run/haproxy-master.sock}
|
|
export RET=
|
|
|
|
alert() {
|
|
if [ "$VERBOSE" -ge "1" ]; then
|
|
echo "[ALERT] $*" >&2
|
|
fi
|
|
}
|
|
|
|
|
|
reload() {
|
|
while read -r line; do
|
|
|
|
if [ "$line" = "Success=0" ]; then
|
|
RET=1
|
|
elif [ "$line" = "Success=1" ]; then
|
|
RET=0
|
|
elif [ "$line" = "Another reload is still in progress." ]; then
|
|
alert "$line"
|
|
elif [ "$line" = "--" ]; then
|
|
continue;
|
|
else
|
|
if [ "$RET" = 1 ] && [ "$VERBOSE" = "2" ]; then
|
|
echo "$line" >&2
|
|
elif [ "$VERBOSE" = "3" ]; then
|
|
echo "$line" >&2
|
|
fi
|
|
fi
|
|
|
|
done < <(echo "reload" | socat -t"${TIMEOUT}" "${MASTER_SOCKET}" -)
|
|
|
|
if [ -z "$RET" ]; then
|
|
alert "Couldn't finish the reload before the timeout (${TIMEOUT})."
|
|
return 1
|
|
fi
|
|
|
|
return "$RET"
|
|
}
|
|
|
|
usage() {
|
|
echo "Usage:"
|
|
echo " $0 [options]*"
|
|
echo ""
|
|
echo " Trigger a reload from the master socket"
|
|
echo " Require socat"
|
|
echo " EXPERIMENTAL script!"
|
|
echo ""
|
|
echo "Options:"
|
|
echo " -S, --master-socket <path> Use the master socket at <path> (default: ${MASTER_SOCKET})"
|
|
echo " -d, --debug Debug mode, set -x"
|
|
echo " -t, --timeout Timeout (socat -t) (default: ${TIMEOUT})"
|
|
echo " -s, --silent Slient mode (no output)"
|
|
echo " -v, --verbose Verbose output (output from haproxy on failure)"
|
|
echo " -vv Even more verbose output (output from haproxy on success and failure)"
|
|
echo " -h, --help This help"
|
|
echo ""
|
|
echo "Examples:"
|
|
echo " $0 -S ${MASTER_SOCKET} -d ${TIMEOUT}"
|
|
}
|
|
|
|
|
|
main() {
|
|
while [ -n "$1" ]; do
|
|
case "$1" in
|
|
-S|--master-socket)
|
|
MASTER_SOCKET="$2"
|
|
shift 2
|
|
;;
|
|
-t|--timeout)
|
|
TIMEOUT="$2"
|
|
shift 2
|
|
;;
|
|
-s|--silent)
|
|
VERBOSE=0
|
|
shift
|
|
;;
|
|
-v|--verbose)
|
|
VERBOSE=2
|
|
shift
|
|
;;
|
|
-vv|--verbose)
|
|
VERBOSE=3
|
|
shift
|
|
;;
|
|
-d|--debug)
|
|
DEBUG=1
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
usage "$@"
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "[ALERT] ($$) : Unknown option '$1'" >&2
|
|
usage "$@"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -n "$DEBUG" ]; then
|
|
set -x
|
|
fi
|
|
}
|
|
|
|
main "$@"
|
|
reload
|