#!/bin/bash

#
# Copyright 2015-present Open Networking Laboratory
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

# -----------------------------------------------------------------------------
# Tool to manage ONOS component configurations using REST API.
# -----------------------------------------------------------------------------

# If ONOS_HOME is set, respect its value.
# If ONOS_HOME is not set (e.g. in the init or service environment),
# set it based on this script's path.
ONOS_HOME=${ONOS_HOME:-$(cd $(dirname $0)/.. >/dev/null 2>&1 && pwd)}
ONOS_WEB_USER=${ONOS_WEB_USER:-onos} # ONOS WEB User defaults to 'onos'
ONOS_WEB_PASS=${ONOS_WEB_PASS:-rocks} # ONOS WEB Password defaults to 'rocks'

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

. ${ONOS_HOME}/bin/_find-node
. ${ONOS_HOME}/bin/_check-json

node=$(find_node $1)
cmd=${2:-list}
component=${3}
file=${4}

export URL=http://$node:8181/onos/v1/configuration/${component}
export curl="curl ${fail} -sS --user $ONOS_WEB_USER:$ONOS_WEB_PASS --noproxy ${node} "

usage() {
    echo "Usage: onos-cfg node [list|post|delete] component [JSON file if posting or deleting]"
}

if [ "$node" == "" -o "$component" == "" ]; then
     usage && exit 1
fi

case $cmd in
    list)
        ${curl} -X GET ${URL} && echo;;
    post|delete)
        checkJson "$file"
        $curl -X $cmd -H 'Content-Type:application/json' \
            ${URL} -d@$file && echo;;
    *) usage && exit 1;;
esac






