Adding onos-push-bits to selectively upload bits only if they are out of date. Helps with speeds when running over VPN.

Change-Id: I631ac84fb82a775195a472c28439bd5fd3f28e0e
diff --git a/tools/test/bin/onos-install b/tools/test/bin/onos-install
index 7c7d3fe..27a478a 100755
--- a/tools/test/bin/onos-install
+++ b/tools/test/bin/onos-install
@@ -21,7 +21,7 @@
 node=${1:-$OCI}
 remote=$ONOS_USER@$node
 
-scp -q $ONOS_TAR $remote:/tmp
+$(dirname $0)/onos-push-bits $node
 
 ssh $remote "
     [ -d $ONOS_INSTALL_DIR/bin ] && echo \"ONOS is already installed\" && exit 1
diff --git a/tools/test/bin/onos-push-bits b/tools/test/bin/onos-push-bits
new file mode 100755
index 0000000..1c14546
--- /dev/null
+++ b/tools/test/bin/onos-push-bits
@@ -0,0 +1,19 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Remotely pushes bits to a remote node in preparation for install.
+# -----------------------------------------------------------------------------
+
+[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1
+. $ONOS_ROOT/tools/build/envDefaults
+
+node=${1:-$OCI}
+remote=$ONOS_USER@$node
+
+locHash=$(cksum $ONOS_TAR | cut -d' ' -f1,2)
+remHash=$(ssh $remote cksum $ONOS_TAR | cut -d' ' -f1,2)
+
+if [ "$locHash" = "$remHash" ]; then
+    echo "ONOS bits $ONOS_TAR already up-to-date on $node..."
+else
+    scp -q $ONOS_TAR $remote:/tmp
+fi