#!/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"

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
}

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

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

    reinstall)
        [ $# -lt 4  -o ! -f $4 ] && usage
        $curl -X DELETE $URL/$app
        $curl -X POST $HDR $URL --data-binary @$4;;
    reinstall!)
        [ $# -lt 4  -o ! -f $4 ] && usage
        $curl -X DELETE $URL/$app
        $curl -X POST $HDR $URL?activate=true --data-binary @$4;;

    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
