#!/bin/bash
# -----------------------------------------------------------------------------
# Remotely administers the ONOS service on the specified node.
# -----------------------------------------------------------------------------

[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
. $ONOS_ROOT/tools/build/envDefaults
. $ONOS_ROOT/tools/test/bin/find-node.sh

function print_usage {
    command_name=`basename $0`
    echo "Remotely administer the ONOS service on a single node or the current ONOS cell."
    echo
    echo "Usage:     $command_name <TARGET> [COMMAND]"
    echo "           $command_name [-h | --help]"
    echo "Options:"
    echo "    TARGET          The target of the command"
    echo "    COMMAND         The command to execute. Default value is 'status'"
    echo "    [-h | --help]   Print this help"
    echo ""
    echo "TARGET:  <hostname | --cell>"
    echo "      hostname        Execute on the specified host name"
    echo "        --cell        Execute on the current ONOS cell"
    echo ""
    echo "COMMAND: [start|stop|restart|status]"
    echo ""
}

# Print usage
if [ "${1}" = "-h" -o "${1}" = "--help" ]; then
    print_usage
    exit 0
fi

# Select the target
if [ "${1}" = "--cell" ]; then
    nodes=$(env | sort | egrep "^OCC[0-9]+" | cut -d= -f2)
else
    nodes=$(find_node ${1:-$OCI})
fi

# Define the java options for atomix
# FIXME atomix-agent already provides a gc algorithm. Once we fix atomix-agent we can allow this
# JAVA_OPTS="${JAVA_OPTS:--XX:+UseG1GC -XX:MaxGCPauseMillis=200}"
if [ ! -z "$ONOS_YOURKIT" ]; then
    #JAVA_OPTS+=" -agentpath:$ATOMIX_INSTALL_DIR/libyjpagent.so=listen=all"
    JAVA_OPTS="${JAVA_OPTS:--agentpath:$ATOMIX_INSTALL_DIR/libyjpagent.so=listen=all}"
fi

case $2 in
    start)
        # Execute the remote commands
        for node in $nodes; do
            ssh $ONOS_USER@${node} "JAVA_OPTS=\"${JAVA_OPTS}\" nohup $ATOMIX_INSTALL_DIR/bin/atomix-agent -c $ATOMIX_INSTALL_DIR/atomix.json >/dev/null 2>&1 &"
        done
    ;;
    stop)
        # Execute the remote commands
        for node in $nodes; do
            ssh -tt $ONOS_USER@${node} "
                pid=\$(ps -ef | grep AtomixAgent | grep -v grep | cut -c10-15 | tr -d ' ')
                if [ -n \"\$pid\" ]; then
                    echo \"Killing Atomix process \$pid on \$(hostname)...\"
                    kill -9 \$pid
                else
                    echo \"Atomix process is not running...\"
                    exit 1
                fi
            "
        done
    ;;
    *)
        echo "error: $2 is not a valid command"
        echo ""
        print_usage
    ;;
esac
