#!/bin/bash
#-------------------------------------------------------------------------------
# Remotely pushes bits to a remote node and installs ONOS on it.
#-------------------------------------------------------------------------------

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

# If the first option is -f attempt uninstall first.
[ "$1" = "-f" ] && shift && onos-uninstall ${1:-$OCI}

node=${1:-$OCI}
remote=$ONOS_USER@$node

scp -q $ONOS_TAR $remote:/tmp

ssh $remote "
    [ -d $ONOS_INSTALL_DIR/bin ] && echo \"ONOS is already installed\" && exit 1

    # Prepare a landing zone and unroll the bits
    sudo mkdir -p $ONOS_INSTALL_DIR && sudo chown sdn:sdn $ONOS_INSTALL_DIR
    tar zxmf /tmp/$ONOS_BITS.tar.gz -C $ONOS_INSTALL_DIR --strip-components=1

    # Make a link to the log file directory and make a home for auxiliaries
    ln -s $ONOS_INSTALL_DIR/$KARAF_DIST/data/log /opt/onos/log
    mkdir $ONOS_INSTALL_DIR/var

    # Install the upstart configuration file and setup options for debugging
    sudo cp $ONOS_INSTALL_DIR/debian/onos.conf /etc/init/onos.conf
    echo 'export ONOS_OPTS=debug' > $ONOS_INSTALL_DIR/options

    # Remove any previous ON.Lab bits from ~/.m2 repo
    rm -fr ~/.m2/repository/org/onlab
"

# Configure the ONOS installation
onos-config $node

# Ignite the ONOS service.
onos-service $node start†