onos-cell 1.92 KB
#!/bin/bash
# -----------------------------------------------------------------------------
# Applies the settings in the specified cell file or lists current cell
# definition if no cell file is given.
# -----------------------------------------------------------------------------

# Sets the primary instance to the specified instance number.
function setPrimaryInstance {
    export OCI=$(env | egrep "OC[0-9]+" | sort | egrep OC${1:-1} | cut -d= -f2)
    echo $OCI
}

cell=$1
case "$cell" in
"borrow")
    aux="/tmp/cell-$$"
    curl -sS -X POST "http://$CELL_WARDEN:4321/?duration=${2:-0}&user=${3:-$(id -un)}" \
        -d "$(cat ~/.ssh/id_rsa.pub)" > $aux
    . $aux
    rm -f $aux
    export ONOS_INSTANCES=$(env | grep 'OC[0-9]*=' | sort | cut -d= -f2)
    setPrimaryInstance 1 >/dev/null
    onos-verify-cell
    ;;
"return")
    curl -sS -X DELETE "http://$CELL_WARDEN:4321/?user=${2:-$(id -un)}"
    unset ONOS_CELL ONOS_NIC ONOS_IP ONOS_APPS ONOS_BOOT_FEATURES
    unset OCI OCN OCT ONOS_INSTANCES ONOS_FEATURES
    unset $(env | sed -n 's:\(^OC[0-9]\{1,\}\)=.*:\1 :g p')
    ;;

"status")
    curl -sS "http://$CELL_WARDEN:4321/" | sort
    ;;

"")
    env | egrep "ONOS_CELL"
    env | egrep "OCI"
    env | egrep "OC[0-9]+" | sort
    env | egrep "OC[NT]"
    env | egrep "ONOS_" | egrep -v 'ONOS_ROOT|ONOS_CELL|ONOS_INSTANCES' | sort
    ;;

*)
    [ ! -f $ONOS_ROOT/tools/test/cells/$1 ] && \
        echo "No such cell: $1" >&2 && return 1
    unset ONOS_CELL ONOS_NIC ONOS_IP ONOS_APPS ONOS_BOOT_FEATURES
    unset OCI OCN OCT ONOS_INSTANCES ONOS_FEATURES
    unset $(env | sed -n 's:\(^OC[0-9]\{1,\}\)=.*:\1 :g p')
    export ONOS_USER=${ONOS_USER:-sdn}
    export ONOS_GROUP=${ONOS_GROUP:-sdn}
    export ONOS_WEB_USER=onos
    export ONOS_WEB_PASS=rocks
    export ONOS_CELL=$1
    . $ONOS_ROOT/tools/test/cells/$1
    export ONOS_INSTANCES=$(env | grep 'OC[0-9]*=' | sort | cut -d= -f2)
    setPrimaryInstance 1 >/dev/null
    onos-cell
esac