#!/bin/bash
#
# ansible-tower
#
# chkconfig: - 20 80
# description: support init to manage tower and its related services

### BEGIN INIT INFO
# Required-Start: $local_fs $remote_fs $network $named
# Required-Stop: $local_fs $remote_fs $network
# Should-Start: distcache
# Should-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: support init to manage tower and its related services
# Description: Ansible Tower provides an easy-to-use UI and dashboard, role-based access control and more for your Ansible initiative
### END INIT INFO

# Default configured services
if [ -e /etc/debian_version ]; then
    TOWER_CONFIG="/etc/default/ansible-tower"
else
    TOWER_CONFIG="/etc/sysconfig/ansible-tower"
fi

# Load default configuration
[ -e "${TOWER_CONFIG}" ] && . "${TOWER_CONFIG}"

service_action() {
    for svc in ${TOWER_SERVICES}; do
        service ${svc} $1
        this_return=$?
        if [ $this_return -gt $worst_return ]; then
            worst_return=$this_return
        fi
        # Allow supervisor time to cleanup child pids (ubuntu only)
        if [[ ${svc} == supervisor* && ${1} == stop && -e /etc/debian_version ]]; then
            echo "Waiting to allow supervisor time to cleanup ..."
            sleep 5
        fi
    done
}

worst_return=0
case "$1" in
    start)
	echo "Starting Tower"
	service_action start
	;;
    stop)
	echo "Stopping Tower"
	service_action stop
	;;
    restart)
	echo "Restarting Tower"
	service_action stop
	service_action start
	;;
    status)
	echo "Showing Tower Status"
	service_action status
	;;
    *)
	echo "Usage: $0 {start|stop|restart|status}"
esac
exit $worst_return
