#!/bin/bash
# -----------------------------------------------------------------------------
# Runs ONOS from distributable onos.tar.gz
# -----------------------------------------------------------------------------

ONOS_TAR=

cd /tmp

# Kill any running instances
[ -f /tmp/onos.pid ] && kill -9 $(cat /tmp/onos.pid) &>/dev/null

set -e

ONOS_DIR=$(tar tf $ONOS_TAR | head -n 1 | cut -d/ -f1)

if [ -d $ONOS_DIR -a "$1" = "clean" -o ! -d $ONOS_DIR ]; then
    # Blitz previously unrolled onos- directory
    rm -fr $ONOS_DIR

    # Unroll new image from the specified tar file
    [ -f $ONOS_TAR ] && tar zxf $ONOS_TAR

    # Change into the ONOS home directory
    cd $ONOS_DIR
    export ONOS_HOME=$PWD

    # FIXME: for now we're running using the karaf client; later use raw SSH
    unset ONOS_USE_SSH

    # Create config/cluster.json (cluster metadata)
    IP=${ONOS_IP:-127.0.0.1}
    echo "Creating local cluster configs for IP $IP..."
    [ -d $ONOS_HOME/config ] || mkdir -p $ONOS_HOME/config
    cat > $ONOS_HOME/config/cluster.json <<-EOF
    {
      "name": "default",
      "nodes": [ {"id": "$IP", "ip": "$IP", "port": 9876 } ],
      "partitions": [ { "id": 1, "members": [ "$IP" ] } ]
    }
EOF
else
    # Change into the ONOS home directory
    cd $ONOS_DIR
    export ONOS_HOME=$PWD
fi

# Start ONOS as a server, but include any specified options
./bin/onos-service server "$@" &>onos.log &
echo "$!" > /tmp/onos.pid

# Hang-on a bit and then start tailing the ONOS log output
RETRY_COUNT=5
echo "Waiting for karaf.log"
until [ $RETRY_COUNT -le 0 ]; do
    KARAF_LOG=$(find $ONOS_HOME -type f -name karaf.log)
    if [ $KARAF_LOG ]; then
        tail -f $KARAF_LOG
        return
    fi
    RETRY_COUNT=$[$RETRY_COUNT-1]
    sleep 1
done
echo "Fail to open karaf.log"

