Making REST API port as a command-line option for various admin commands.
Also cleaning up usage for consistency.
Change-Id: I1d8a10c063cab5992033b97d6efa60bba030ed9e
(cherry picked from commit a7be50dc8856d223d49ef3157f763461cade2a8c)
diff --git a/tools/package/bin/onos-form-cluster b/tools/package/bin/onos-form-cluster
index e677873..4e3645c 100755
--- a/tools/package/bin/onos-form-cluster
+++ b/tools/package/bin/onos-form-cluster
@@ -1,24 +1,47 @@
#!/bin/bash
+
+#
+# Copyright 2015-present Open Networking Foundation
+#
+# 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.
+#
+
# -----------------------------------------------------------------------------
# Forms ONOS cluster using REST API of each separate instance.
# -----------------------------------------------------------------------------
function usage() {
- echo "usage: $(basename $0)[-x] [-u user] [-p password] [-s partitionSize] ip1 ip2..." && exit 1
+ echo "usage: $(basename $0)[-x] [-P port] [-u user] [-p password] [-s partitionSize] ip1 ip2..." && exit 1
}
+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'
+ONOS_WEB_PORT=${ONOS_WEB_PORT:-8181} # REST API port defaults to '8181'
+
+port=${ONOS_WEB_PORT}
+user=${ONOS_WEB_USER}
+password=${ONOS_WEB_PASS}
+
# Scan arguments for user/password or other options...
-while getopts u:p:s: o; do
+while getopts P:u:p:s: o; do
case "$o" in
+ P) port=$OPTARG;;
u) user=$OPTARG;;
p) password=$OPTARG;;
s) partitionsize=$OPTARG;;
*) usage;;
esac
done
-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'
-user=${user:-$ONOS_WEB_USER}
-password=${password:-$ONOS_WEB_PASS}
+
let OPC=$OPTIND-1
shift $OPC
@@ -45,6 +68,6 @@
for node in $ip $nodes; do
echo "Forming cluster on $node..."
- curl --user $user:$password -X POST \
- http://$node:8181/onos/v1/cluster/configuration -d @$aux
+ curl --fail -sSL --user $user:$password -X POST \
+ http://$node:$port/onos/v1/cluster/configuration -d @$aux
done
diff --git a/tools/package/runtime/bin/_check-json b/tools/package/runtime/bin/_check-json
index 2fde753..1eef25b 100644
--- a/tools/package/runtime/bin/_check-json
+++ b/tools/package/runtime/bin/_check-json
@@ -21,7 +21,6 @@
# Utility for checking syntax of JSON files
# -----------------------------------------------------------------------------
-
checkJson() {
cat ${1} | python -m json.tool >> /dev/null
if [ "$?" -ne "0" ]; then
diff --git a/tools/package/runtime/bin/_rest-port b/tools/package/runtime/bin/_rest-port
new file mode 100644
index 0000000..15c2b15
--- /dev/null
+++ b/tools/package/runtime/bin/_rest-port
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+
+#
+# Copyright 2015-present Open Networking Foundation
+#
+# 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.
+#
+
+# -----------------------------------------------------------------------------
+# Utility for handling common REST API usage.
+# -----------------------------------------------------------------------------
+
+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'
+ONOS_WEB_PORT=${ONOS_WEB_PORT:-8181} # REST API port defaults to '8181'
+
+port=${ONOS_WEB_PORT}
+user=${ONOS_WEB_USER}
+password=${ONOS_WEB_PASS}
+fail="--fail"
+
+while getopts P:u:p:v?h o; do
+ case "$o" in
+ P) port=$OPTARG;;
+ u) user=$OPTARG;;
+ p) password=$OPTARG;;
+ v) fail="";;
+ *) usage;;
+ esac
+done
+
+let OPC=$OPTIND-1
+shift $OPC
diff --git a/tools/package/runtime/bin/onos-app b/tools/package/runtime/bin/onos-app
index 7ea93a7..4d5441d 100755
--- a/tools/package/runtime/bin/onos-app
+++ b/tools/package/runtime/bin/onos-app
@@ -19,29 +19,28 @@
# -----------------------------------------------------------------------------
# Tool to manage ONOS applications using REST API.
# -----------------------------------------------------------------------------
+function usage {
+ echo "usage: onos-app [options] <node-ip> list" >&2
+ echo " onos-app [options] <node-ip> {install|install!} <app-file>" >&2
+ echo " onos-app [options] <node-ip> {reinstall|reinstall!} [<app-name>] <app-file>" >&2
+ echo " onos-app [options] <node-ip> {activate|deactivate|uninstall} <app-name>" >&2
+ echo ""
+ echo "options: [-P port] [-u user] [-p password] [-v]"
+ exit 1
+}
-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'
-
+. $(dirname $0)/_rest-port
. $(dirname $0)/_find-node
node=$(find_node $1)
cmd=${2:-list}
app=${3}
-export URL=http://$node:8181/onos/v1/applications
+export URL=http://$node:$port/onos/v1/applications
export HDR="-HContent-Type:application/octet-stream"
export HAJ="-HContent-Type:application/json"
-export curl="curl -sS --user $ONOS_WEB_USER:$ONOS_WEB_PASS --noproxy localhost "
+export curl="curl $fail -sSL --user $user:$password --noproxy ${node} "
-# 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 {
diff --git a/tools/package/runtime/bin/onos-cfg b/tools/package/runtime/bin/onos-cfg
index 6855d03..abb3be6 100755
--- a/tools/package/runtime/bin/onos-cfg
+++ b/tools/package/runtime/bin/onos-cfg
@@ -19,10 +19,12 @@
# -----------------------------------------------------------------------------
# Tool to manage ONOS component configurations using REST API.
# -----------------------------------------------------------------------------
+usage() {
+ echo "usage: onos-cfg [-P port] [-u user] [-p password] [-v] \\"
+ echo " node [list|post|delete] component [JSON file if posting or deleting]"
+}
-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'
-
+. $(dirname $0)/_rest-port
. $(dirname $0)/_find-node
. $(dirname $0)/_check-json
@@ -34,12 +36,8 @@
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]"
-}
+export URL=http://$node:$port/onos/v1/configuration/${component}
+export curl="curl ${fail} -sSL --user $user:$password --noproxy ${node} "
if [ "$node" == "" -o "$component" == "" ]; then
usage && exit 1
@@ -50,8 +48,7 @@
${curl} -X GET ${URL} && echo;;
post|delete)
checkJson "$file"
- $curl -X $cmd -H 'Content-Type:application/json' \
- ${URL} -d@$file && echo;;
+ $curl -X $cmd -H 'Content-Type:application/json' ${URL} -d@$file && echo;;
*) usage && exit 1;;
esac
diff --git a/tools/package/runtime/bin/onos-compile-yang b/tools/package/runtime/bin/onos-compile-yang
index e1bb987..22044b5 100755
--- a/tools/package/runtime/bin/onos-compile-yang
+++ b/tools/package/runtime/bin/onos-compile-yang
@@ -19,23 +19,20 @@
# -----------------------------------------------------------------------------
# Tool to compile the specified YANG file(s) using the ONOS live compilation.
# -----------------------------------------------------------------------------
+function usage {
+ echo "usage: onos-compile-yang [-P port] [-u user] [-p password] [-v] \\"
+ echo " <yang-file|zip-file|jar-file|directory>" >&2
+ exit 1
+}
-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'
-
+. $(dirname $0)/_rest-port
. $(dirname $0)/_find-node
node=$(find_node $1)
yang=$2
-export URL=http://$node:8181/onos/yang/models
-export curl="curl -sS --user $ONOS_WEB_USER:$ONOS_WEB_PASS --noproxy localhost "
-
-# Prints usage help
-function usage {
- echo "usage: onos-compile-yang <yang-file|zip-file|jar-file|directory>" >&2
- exit 1
-}
+export URL=http://$node:$port/onos/yang/models
+export curl="curl $fail -sSL --user $user:$password --noproxy ${node} "
[ -z $node -o "$node" = "-h" -o "$node" = "--help" -o "$node" = "-?" ] && usage
diff --git a/tools/package/runtime/bin/onos-diagnostics b/tools/package/runtime/bin/onos-diagnostics
index 9cccb0e..ee610d1 100755
--- a/tools/package/runtime/bin/onos-diagnostics
+++ b/tools/package/runtime/bin/onos-diagnostics
@@ -19,14 +19,8 @@
# -----------------------------------------------------------------------------
# Tool to collect cluster-wide diagnostics into a single tar stream.
# -----------------------------------------------------------------------------
-
-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'
-
-. $(dirname $0)/_find-node
-
function usage() {
- echo "usage: $(basename $0) [-x] [-n name] [-u user] [-p password] [ip1 ip2...]"
+ echo "usage: $(basename $0) [-x] [-n name] [-P port] [-u user] [-p password] [ip1 ip2...]"
echo ""
echo "Environment Variables:"
echo " ONOS_INSTANCES IPs or hostnames of ONOS cluster machines"
@@ -56,6 +50,12 @@
exit 1
}
+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'
+ONOS_WEB_PORT=${ONOS_WEB_PORT:-8181} # REST API port defaults to '8181'
+
+. $(dirname $0)/_find-node
+
# TODO We should make SR commands optional
CLI_COMMANDS=(
"feature:repo-list"
@@ -105,10 +105,15 @@
"mcast-host-show"
)
+port=${ONOS_WEB_PORT}
+user=${ONOS_WEB_USER}
+password=${ONOS_WEB_PASS}
+
# Scan arguments for user/password or other options...
-while getopts n:u:p:x?h o; do
+while getopts n:P:u:p:x?h o; do
case "$o" in
n) name=$OPTARG;;
+ P) port=$OPTARG;;
u) user=$OPTARG;;
p) password=$OPTARG;;
x) extract=true;;
@@ -116,8 +121,6 @@
esac
done
-user=${user:-$ONOS_WEB_USER}
-password=${password:-$ONOS_WEB_PASS}
let OPC=$OPTIND-1
shift $OPC
@@ -138,7 +141,7 @@
# Acquire locally obtained diagnostics via REST API and extract them
printf "logs "
curl -sS --fail --user $user:$password \
- http://$node:8181/onos/v1/diagnostics > ../$node.tar.gz
+ http://$node:$port/onos/v1/diagnostics > ../$node.tar.gz
tar zxf ../$node.tar.gz && rm ../$node.tar.gz
# Acquire remotely obtained diagnostics via ssh CLI
diff --git a/tools/package/runtime/bin/onos-netcfg b/tools/package/runtime/bin/onos-netcfg
index 5e22836..08635de 100755
--- a/tools/package/runtime/bin/onos-netcfg
+++ b/tools/package/runtime/bin/onos-netcfg
@@ -19,34 +19,30 @@
# -----------------------------------------------------------------------------
# ONOS network configuration uploader.
# -----------------------------------------------------------------------------
+function usage() {
+ echo "usage: onos-netcfg [-v] [-P port] [-u user] [-p password] node file|DELETE [url]"
+ exit 1
+}
-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'
-
+. $(dirname $0)/_rest-port
. $(dirname $0)/_find-node
. $(dirname $0)/_check-json
-fail="--fail"
-[ "$1" == "-v" ] && shift && fail=""
-
node=$(find_node $1)
file="${2}"
url="${3}"
-if [ "$node" == "" -o "$file" == "" ]; then
- echo "Usage: onos-netcfg [-v] node file|DELETE [url]"
- exit 1
-fi
+export URL="http://$node:$port/onos/v1/network/configuration/${url}"
+export curl="curl ${fail} -sSL --user $user:$password --noproxy ${node} "
+
+[ "$node" == "" -o "$file" == "" ] && usage;
method="POST"
[ $(echo $file | awk '{print tolower($0)}') == "delete" ] && method="DELETE"
if [ $method == "POST" ]; then
checkJson $file
- 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
+ $curl -X POST -H 'Content-Type:application/json' $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}
+ $curl -X DELETE $URL
fi
diff --git a/tools/test/bin/find-node.sh b/tools/test/bin/find-node.sh
index e76a84a..0636548 100644
--- a/tools/test/bin/find-node.sh
+++ b/tools/test/bin/find-node.sh
@@ -3,30 +3,26 @@
validate_number () {
local re="^[0-9]+$"
if [[ ! $1 =~ $re ]] ; then
- return 1
+ return 1
fi
-
return 0
}
find_node () {
if validate_number $1 ; then
- # input is a number, try to find if an OC node is defined
+ # input is a number, try to find if an OC node is defined
+ oc_try="OC$1"
+ node=${!oc_try}
- oc_try="OC$1"
- node=${!oc_try}
-
- if [ -n "$node" ]; then
- # node lookup succeeded, return node
- echo $node
- else
- # node lookup failed, return original input
- echo $1
- fi
-
+ if [ -n "$node" ]; then
+ # node lookup succeeded, return node
+ echo $node
+ else
+ # node lookup failed, return original input
+ echo $1
+ fi
else
- echo $1
+ echo $1
fi
-
return 0
}
diff --git a/tools/test/scenarios/wrapup.xml b/tools/test/scenarios/wrapup.xml
index b6fe489..6786df7 100644
--- a/tools/test/scenarios/wrapup.xml
+++ b/tools/test/scenarios/wrapup.xml
@@ -15,6 +15,7 @@
-->
<scenario name="wrapup" description="ONOS test wrapup">
<group name="Wrapup">
+ <step name="Final-Diagnostics" exec="onos-diagnostics -n onos-stc-diags ${OCI}"/>
<parallel var="${OC#}">
<step name="Final-Check-Logs-${#}" exec="onos-check-logs ${OC#}"/>
<step name="Fetch-Logs-${#}" exec="onos-fetch-logs ${OC#}"