#!/bin/bash
# -----------------------------------------------------------------------------
# Provides a unioform way to simulate power on/off control over an ONOS node.
# If environment variable HARD_POWER_OFF is set and the ONOS_CELL value
# indicates that the cell is a borrowed shared cell LXC machine, it will use
# a REST call to warden, which then uses lxc-stop/lxc-start command to
# simulate a power control operations. Otherwise, it will just use the soft
# 'onos-die' command.
# -----------------------------------------------------------------------------

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

node=${1:-$OCI}
cmd=${2:-on}
user=${3:$(id -un)}

if [ "$cmd" = "on" ]; then
    if [ -n "$HARD_POWER_OFF" -a $ONOS_CELL = "borrow" ]; then
        curl -sS -X PUT "http://$CELL_WARDEN:4321/?cmd=powerOn&nodeIp=$node&user=$user"
    else
        onos-service $node start
    fi

elif [ "$cmd" = "off" ]; then
    if [ -n "$HARD_POWER_OFF" -a $ONOS_CELL = "borrow" ]; then
        curl -sS -X PUT "http://$CELL_WARDEN:4321/?cmd=powerOff&nodeIp=$node&user=$user"
    else
        onos-die $node
    fi

else
    echo "usage: $(basename $0) node-ip {on|off} user" >&2 && exit 1
fi

