#!/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 --user $ONOS_WEB_USER:$ONOS_WEB_PASS" # Prints usage help function usage { echo "usage: onos-app list" >&2 echo " onos-app {install|install!} " >&2 echo " onos-app {reinstall|reinstall!} [] " >&2 echo " onos-app {activate|deactivate|uninstall} " >&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 status=$? echo # new line for prompt exit $status