#!/bin/bash

set -e

SELF="${0##*/}"

usage()
{
  echo "Usage: $SELF [<option>...]

Options:
  -h, --help    display this help text and exit
  -q, --quiet   set output mode to quiet

Return codes and verbose output:

  RC  Verbose     Description
  --  -------     -----------
  0   running     The HA service is running.
  1   stopped     The HA service is stopped.
  2   unknown     Error retrieving HA service state.
"
}

state()
{
  if [ "${OUTPUT}" = 'verbose' ]; then
    echo "$2"
  fi
  exit "$1"
}

running()
{
  state 0 running
}

stopped()
{
  state 1 stopped
}

unknown()
{
  state 2 unknown
}

OUTPUT=verbose

while [ $# -gt 0 ]; do
  case "$1" in
  -q|--quiet)
    OUTPUT=none
    ;;
  -h|--help)
    usage
    exit 0
    ;;
  esac

  shift
done

HACRM=$(ngcp-ha-crm)

case "${HACRM}" in
  none)
    running
    ;;
  pacemaker)
    props="ActiveState,UnitFileState,SubState"
    servs=(corosync pacemaker)
    if systemctl show --value -p$props "${servs[@]}" |
       grep -Eq '^(inactive|dead|disabled)' 2>/dev/null; then
      stopped
    else
      running
    fi
    ;;
  *)
    unknown
    ;;
esac
