mirror of
				https://git.haproxy.org/git/haproxy.git/
				synced 2025-10-31 08:30:59 +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
 |