#!/bin/bash

export ANSIBLE_NOCOLOR="true"
export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
export TERM="xterm"

FD_ALERTING_ALERTNAME=""
FD_ALERTING_GROUP=""
FD_ALERTING_ARGS=""
FD_ALERTING_TIMEOUT=""
FD_ALERTING_VERBOSE=false

[[ -f "${HOME}/.profile" ]] && . "${HOME}/.profile" 1>/dev/null 2>&1

USAGE="
    ${0} -a <alertname> -g <group> -T <timeout> -v
"

while getopts 'ha:g:T:v' OPT;
do
    case ${OPT} in
    h)
        echo ${USAGE}
        exit 0
        ;;
    a)
        FD_ALERTING_ALERTNAME="$(echo -n "$(basename "${OPTARG}")")"
        ;;
    g)
        FD_ALERTING_GROUP="${OPTARG}"
        ;;
    T)
        FD_ALERTING_TIMEOUT="${OPTARG}"
        ;;
    v)
        FD_ALERTING_VERBOSE=true
        ;;
    :)
        echo "Option -${OPTARG} requires an argument." >&2
        exit 1
        ;;
    esac
done

if [[ -z "${FD_ALERTING_ALERTNAME}" ]];
then
    echo 'missing alert name' >&2
    exit 1
fi

if [[ -z "${FD_ALERTING_GROUP}" ]];
then
    echo 'missing alert instance group' >&2
    exit 1
fi

if [[ ! -z "${FD_ALERTING_TIMEOUT}" ]];
then
    FD_ALERTING_ARGS="${FD_ALERTING_ARGS} -T ${FD_ALERTING_TIMEOUT}"
fi

if [[ "${FD_ALERTING_VERBOSE}" == true ]];
then
    FD_ALERTING_ARGS="${FD_ALERTING_ARGS} -v"
fi

stdbuf -oL -eL fd-ansible play "/etc/ansible/playbooks/alerting/${FD_ALERTING_ALERTNAME}.yml" -e alerting_hostgroup="${FD_ALERTING_GROUP}" ${FD_ALERTING_ARGS} \
    | stdbuf -oL -eL perl -pe 's/\e\[?.*?[\@-~]//g;s/\r\?12l//g' >> "/var/log/fd-alerting/${FD_ALERTING_GROUP}.log" 2>&1
