#!/bin/bash
# -----------------------------------------------------------------------------
# Tool to manage ONOS applications using REST API.
# -----------------------------------------------------------------------------

node=${1:-$OCI}
cmd=${2:-list}
app=${3}

export URL=http://$node:8181/onos/v1/applications
export HDR="-HContent-Type:application/octet-stream"
export curl="curl -sS"

# Prints usage help
function usage {
    echo "usage: onos-app <node-ip> list" >&2
    echo "       onos-app <node-ip> {install|install!} <app-file>" >&2
    echo "       onos-app <node-ip> {reinstall|reinstall!} [<app-name>] <app-file>" >&2
    echo "       onos-app <node-ip> {activate|deactivate|uninstall} <app-name>" >&2
    exit 1
}

# Extract app name from the specified *.oar file
function appName {
    aux=/tmp/aux$$.jar
    cp $1 $aux
    pushd /tmp >/dev/null
    jar xf $aux app.xml && grep name= app.xml | cut -d\" -f2
    rm -f $aux /tmp/app.xml
    popd >/dev/null
}

[ -z $node -o "$node" = "-h" -o "$node" = "--help" -o "$node" = "-?" ] && usage

case $cmd in
    list) $curl -X GET $URL;;
    install!|install)
        [ $cmd = "install!" ] && activate="?activate=true"
        [ $# -lt 3 -o ! -f $app ] && usage
        $curl -X POST $HDR $URL$activate --data-binary @$app
        ;;

    reinstall!|reinstall)
        [ $cmd = "reinstall!" ] && activate="?activate=true"
        [ $# -lt 4 -a ! -f "$3" ] && usage
        [ $# -eq 4 -a ! -f "$4" ] && usage
        oar=$4
        [ $# -lt 4 ] && oar=$3 && app=$(appName $oar)
        $curl -X DELETE $URL/$app
        $curl -X POST $HDR $URL$activate --data-binary @$oar
        ;;

    uninstall)
        [ $# -lt 3 ] && usage
        $curl -X DELETE $URL/$app
        ;;
    activate)
        [ $# -lt 3 ] && usage
        $curl -X POST $URL/$app/active
        ;;
    deactivate)
        [ $# -lt 3 ] && usage
        $curl -X DELETE $URL/$app/active
        ;;

    *) usage;;
esac

echo # new line for prompt
