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#}"
