onos-netcfg 1.11 KB
#!/bin/bash
# -----------------------------------------------------------------------------
# ONOS network configuration uploader.
# -----------------------------------------------------------------------------

[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
. $ONOS_ROOT/tools/build/envDefaults
. $ONOS_ROOT/tools/test/bin/find-node.sh

fail="--fail"
[ "$1" == "-v" ] && shift && fail=""

node=$(find_node $1)
file="${2:-$ONOS_ROOT/tools/test/topos/oe-linear-3.json}"
url="${3}"

method="POST"
[ $(echo $file | awk '{print tolower($0)}') == "delete" ] && method="DELETE"

if [ $method == "POST" ]; then
    # Validate JSON
    cat $file | python -m json.tool >> /dev/null
    if [ "$?" -ne "0" ]; then
        echo "Not valid JSON File" && exit 1
    fi
    curl $fail -sSL --user $ONOS_WEB_USER:$ONOS_WEB_PASS \
        -X POST -H 'Content-Type:application/json' \
        http://$node:8181/onos/v1/network/configuration/${url} -d@$file
elif [ $method == "DELETE" ]; then
    curl $fail -sSL --user $ONOS_WEB_USER:$ONOS_WEB_PASS \
        -X DELETE http://$node:8181/onos/v1/network/configuration/${url}
fi