#!/bin/bash
# -----------------------------------------------------------------------------
# Forms ONOS cluster using REST API of each separate instance.
# -----------------------------------------------------------------------------
function usage() {
    echo "usage: $(basename $0)[-x] [-u user] [-p password] [-s partitionSize] ip1 ip2..." && exit 1
}

# Scan arguments for user/password or other options...
while getopts u:p:s: o; do
    case "$o" in
        u) user=$OPTARG;;
        p) password=$OPTARG;;
        s) partitionsize=$OPTARG;;
        *) usage;;
    esac
done
ONOS_WEB_USER=${ONOS_WEB_USER:-onos} # ONOS WEB User defaults to 'onos'
ONOS_WEB_PASS=${ONOS_WEB_PASS:-rocks} # ONOS WEB Password defaults to 'rocks'
user=${user:-$ONOS_WEB_USER}
password=${password:-$ONOS_WEB_PASS}
let OPC=$OPTIND-1
shift $OPC

[ $# -lt 2 ] && usage

ip=$1
shift
nodes=$*

ipPrefix=${ip%.*}

aux=/tmp/${ipPrefix}.cluster.json
trap "rm -f $aux" EXIT

echo "{ \"nodes\": [ { \"ip\": \"$ip\" }" > $aux
for node in $nodes; do
    echo ", { \"ip\": \"$node\" }" >> $aux
done
echo "], \"ipPrefix\": \"$ipPrefix.*\"" >> $aux
if ! [ -z ${partitionsize} ]; then
    echo ", \"partitionSize\": $partitionsize" >> $aux
fi
echo " }" >> $aux

for node in $ip $nodes; do
    echo "Forming cluster on $node..."
    curl --user $user:$password -X POST \
        http://$node:8181/onos/v1/cluster/configuration -d @$aux
done
