79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| #
 | |
| # NAME
 | |
| #     status.sh - Checks the status of the nevisAuth instance.
 | |
| #
 | |
| # SYNOPSIS
 | |
| #     status.sh
 | |
| #
 | |
| # DESCRIPTION
 | |
| #     Performs periodic checks until the instance is up or broken or timeout is reached.
 | |
| #     The script terminates when the process of the instance stops running.
 | |
| #     There are no arguments for this script.
 | |
| #
 | |
| # EXIT CODES
 | |
| #  0    Instance is up.
 | |
| #  1    Instance process is not running.
 | |
| #  2    Instance is broken.
 | |
| #  3    Timeout reached.
 | |
| 
 | |
| # Defines how much we should sleep between checking if the instance is up.
 | |
| interval=1
 | |
| # Defines how much we should wait the instance to start up until we give up and exit.
 | |
| timeout=70
 | |
| ((end_time=${SECONDS}+$timeout))
 | |
| 
 | |
| # Checks if the process of the instance is still running.
 | |
| # Arguments:
 | |
| #   None
 | |
| # Returns:
 | |
| #   In case it is running, returns 0, otherwise non-zero (exit code of systemctl).
 | |
| isProcessRunning() {
 | |
|   systemctl is-active --quiet nevisauth@default
 | |
|   IS_RUNNING=$?
 | |
|   return $IS_RUNNING
 | |
| }
 | |
| 
 | |
| # Checks if the instance is up. (Attempts connecting to the instance)
 | |
| # Arguments:
 | |
| #   None
 | |
| # Returns:
 | |
| #   If the connection was successful and the instance up (is not broken), returns 0.
 | |
| #   If the connection was not successful, returns 1.
 | |
| checkInstance() {
 | |
|   lsof -i :8991 -sTCP:LISTEN
 | |
|   EXIT_CODE=$?
 | |
|   return $EXIT_CODE
 | |
| }
 | |
| 
 | |
| # This function encapsulates the logic of checking if the process is running and if the instance is up.
 | |
| # In case the process is not running, exits with exit code 1.
 | |
| # Arguments:
 | |
| #   None
 | |
| # Returns:
 | |
| #   If the instance process is running, returns the result of the instance check function.
 | |
| check() {
 | |
|  if isProcessRunning
 | |
|   then
 | |
|     checkInstance
 | |
|     CS=$?
 | |
|     return $CS
 | |
|   else
 | |
|     echo "Process is not running."
 | |
|     exit 1
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # Check the status of the instance periodically.
 | |
| while ((${SECONDS} < ${end_time}))
 | |
| do
 | |
|   sleep ${interval}
 | |
|   if check
 | |
|   then
 | |
|     echo "Instance is up."
 | |
|     exit 0
 | |
|   fi
 | |
| done
 | |
| 
 | |
| echo "Exceeded check timeout (70s). Instance is down."
 | |
| exit 3 |