#!/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

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

case $2 in 
    start|stop|restart|status)

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

        # Execute the remote commands
        for node in $nodes; do
            ssh $ONOS_USER@${node} "sudo ${2:-status} onos"
        done
    ;;
    *)
        echo "error: $2 is not a valid command"
        echo ""
        print_usage
    ;;
esac
