#!/bin/bash
#
# Manages a Presto node service
#
# chkconfig: 345 85 15
# description: Presto node
#
### BEGIN INIT INFO
# Provides:          presto
# Short-Description: presto node
# Default-Start:     3 4 5
# Default-Stop:      0 1 2 6
# Required-Start:    $syslog $remote_fs
# Required-Stop:     $syslog $remote_fs
# Should-Start:
# Should-Stop:
### END INIT INFO

SCRIPT_NAME=$0
ACTION_NAME=$1
SERVICE_NAME='presto'
SERVICE_USER='presto'

# Launcher Config.
# Use data-dir from node.properties file (assumes it to be at /etc/presto). For other args use defaults from rpm install
NODE_PROPERTIES=/etc/presto/node.properties
DATA_DIR=$(grep -Po "(?<=^node.data-dir=).*" $NODE_PROPERTIES)
SERVER_LOG_FILE=$(grep -Po "(?<=^node.server-log-file=).*" $NODE_PROPERTIES)
LAUNCHER_LOG_FILE=$(grep -Po "(?<=^node.launcher-log-file=).*" $NODE_PROPERTIES)
CONFIGURATION=(--launcher-config /usr/lib/presto/bin/launcher.properties --data-dir "$DATA_DIR" --node-config "$NODE_PROPERTIES" --jvm-config /etc/presto/jvm.config --config /etc/presto/config.properties --launcher-log-file "${LAUNCHER_LOG_FILE:-/var/log/presto/launcher.log}" --server-log-file "${SERVER_LOG_FILE:-/var/log/presto/server.log}")

source /etc/presto/env.sh

start () {
    echo "Starting ${SERVICE_NAME} "
    if [ -z "$JAVA8_HOME" ]
    then
        echo "Warning: No value found for JAVA8_HOME. Default Java will be used."
        sudo -u $SERVICE_USER /usr/lib/presto/bin/launcher start ${CONFIGURATION[@]}
    else
        sudo -u $SERVICE_USER PATH=${JAVA8_HOME}/bin:$PATH /usr/lib/presto/bin/launcher start "${CONFIGURATION[@]}"
    fi
    return $?
}

stop () {
    echo "Stopping ${SERVICE_NAME} "
    sudo -u $SERVICE_USER /usr/lib/presto/bin/launcher stop "${CONFIGURATION[@]}"
    return $?
}

status () {
    echo "Getting status for ${SERVICE_NAME} "
    sudo -u $SERVICE_USER /usr/lib/presto/bin/launcher status "${CONFIGURATION[@]}"
    return $?
}


restart () {
    sudo -u $SERVICE_USER /usr/lib/presto/bin/launcher restart "${CONFIGURATION[@]}"
    return $?
}

# TODO: Add kill

usage () {
    echo $"Usage: ${SCRIPT_NAME} {start|stop|restart|status}"
    return 3
}

case "${ACTION_NAME}" in
        start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    status)
        status
        ;;
    *)
        echo $"Usage: $0 {start|stop|restart|status}"
        exit 3
esac
