#!/bin/bash
# allcms        Start and Stops All Content Management System Application Services
#
# Authors:      Alex Rombro <alex.rombro@ericsson.com>
#
# description:  Ericsson / SA Media Watchpoint CMS Application Services Start Up Script

### BEGIN INIT INFO
# Should-Start: $remote_fs $network
# Required-Start: sshd
# Provides: cmstomcat pgbouncer adinameserver cms xportmanager xporttomcat workflow
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Content Management System Application Server start script
### END INIT INFO

#Updated to support CT node
#serv_list=('cms-snmp-subagent' 'cmstomcat' 'adinameserver' 'cms' 'xportmanager' 'xporttomcat' 'workflow')
has_ct=$(/opt/puppetlabs/bin/facter .cms.has_ct)
cluster_node=$(/opt/puppetlabs/bin/facter .node.clustergroup)
[[ "$has_ct" != true ]] && serv_list=('cms-snmp-subagent' 'cmstomcat' 'adiserver' 'cms' 'xportmanager' 'xporttomcat' 'workflow')
[[ "$has_ct" == true ]] && [[ "$cluster_node" == app ]] && serv_list=('cms-snmp-subagent' 'adiserver' 'cms' 'workflow')
[[ "$has_ct" == true ]] && [[ "$cluster_node" == ct  ]] && serv_list=('cmstomcat' 'xportmanager' 'xporttomcat')

start() {
    ping -c 4 dbserver || { echo "Unable to start CMS services:  dbserver is not reachable" ; exit ; }
    for i in "${serv_list[@]}" ; do
        service ${i} start
        sleep 1
    done
}

stop() {
    for (( idx = "${#serv_list[@]}" -1 ; idx >= 0 ; idx-- )) ; do
        service ${serv_list[${idx}]} stop
        sleep 1
    done
}

case $1 in
    stop)
        stop
        ;;
    start)
        start
        ;;
    restart)
        stop
        start
        ;;
    status)
        for i in "${serv_list[@]}" ; do
            service ${i} $1
            sleep 1
        done
        ;;
    *)
        echo -e "Unable to ${1} services, use start, stop, restart, or status. "
        ;;
esac

exit 0
