Enhancing onos-setup-karaf to automatically force clean run when it detects discrepancy in ONOS version.

Change-Id: I5c271d68a884930652d0d46a62f4c8ef31e08124
diff --git a/tools/dev/bin/onos-setup-karaf b/tools/dev/bin/onos-setup-karaf
index 5e17d03..4814715 100755
--- a/tools/dev/bin/onos-setup-karaf
+++ b/tools/dev/bin/onos-setup-karaf
@@ -22,25 +22,34 @@
 
 # Parse optional arguments
 while [[ $# > 0 ]]; do
-case $1 in
+    case $1 in
     clean)
-        echo "Removing existing karaf, apps, and config directories..."
-        CLEAN="true"
-        [ -d $KARAF_ROOT ] && rm -fr $KARAF_ROOT $STAGE/apps $STAGE/config
-    ;;
+        CLEAN="true";;
     secure)
-        SECURE="true"
-    ;;
+        SECURE="true";;
     *)
-        break
-    ;;
-esac
-shift
+        break;;
+    esac
+    shift
 done
 
 ONOS_IP=${ONOS_IP:-127.0.0.1}
 IP="${1:-$ONOS_IP}"
 
+# If the installed version does not line-up with ONOS_POM_VERSION force clean install
+if [ ! -f $KARAF_ROOT/etc/org.apache.karaf.features.cfg ] || \
+    ! grep -q "mvn:org.onosproject/onos-features/$ONOS_POM_VERSION/xml/features" \
+        $KARAF_ROOT/etc/org.apache.karaf.features.cfg; then
+    echo "Existing ONOS Karaf uses version different from $ONOS_POM_VERSION; forcing clean install..."
+    CLEAN="true"
+fi
+
+# If clean option was specified, wipe-out existing installation
+if [ "$CLEAN" = "true" ]; then
+    echo "Removing existing ONOS Karaf, apps, and config directories..."
+    [ -d $KARAF_ROOT ] && rm -fr $KARAF_ROOT $STAGE/apps $STAGE/config
+fi
+
 # If IP was not given, nor configured attempt to use ONOS_NIC env. variable
 if [ -z "$IP" -a -n "$ONOS_NIC" ]; then
     IP=$(validateIp $ONOS_NIC)