ONOS-1328 Converted ONOS features to apps.

ONOS_FEATURES env. var is now deprecated!

Cells are expected to use ONOS_APPS env. var to tailor which builtin apps should be activated by default.  All builtin apps are installed by default, but can be uninstalled if desired.

Cleaned up cell definitions accordingly.

Change-Id: If3bb4691a73543a69197f4bf1855c8368f558450
diff --git a/tools/test/bin/onos-config b/tools/test/bin/onos-config
index 082f506..178bd23 100755
--- a/tools/test/bin/onos-config
+++ b/tools/test/bin/onos-config
@@ -8,9 +8,11 @@
 
 remote=$ONOS_USER@${1:-$OCI}
 
-# Customize features
-export ONOS_FEATURES="${ONOS_FEATURES:-webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-gui,onos-openflow}"
+# ONOS boot features
+export ONOS_BOOT_FEATURES="${ONOS_BOOT_FEATURES:-webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-gui}"
 
+# ONOS builtin apps and providers ignited by default
+export ONOS_APPS="${ONOS_APPS:-openflow}"
 
 # Generate a cluster.json from the ON* environment variables
 CDEF_FILE=/tmp/${remote}.cluster.json
@@ -40,9 +42,14 @@
     echo "log4j.logger.com.hazelcast.cluster.impl.MulticastService= ERROR" \
         >> $ONOS_INSTALL_DIR/$KARAF_DIST/etc/org.ops4j.pax.logging.cfg
 
-    # Patch the Apache Karaf distribution file to load ONOS features
-    perl -pi.old -e \"s|^(featuresBoot=.*,management)(,webconsole,.*)|\1,$ONOS_FEATURES|\" \
+    # Patch the Apache Karaf distribution file to load ONOS boot features
+    perl -pi.old -e \"s|^(featuresBoot=.*,management)(,webconsole,.*)|\1,$ONOS_BOOT_FEATURES|\" \
         $ONOS_INSTALL_DIR/$KARAF_DIST/etc/org.apache.karaf.features.cfg
+
+    # Customize which builtin apps should be ignited
+    for app in $(echo $ONOS_APPS | tr ',' ' '); do
+        touch $ONOS_INSTALL_DIR/apps/org.onosproject.\$app/active
+    done
 "
 
 # Generate a default tablets.json from the ON* environment variables
@@ -52,4 +59,3 @@
 
 # copy tools/package/config/ to remote
 scp -qr ${ONOS_ROOT}/tools/package/config/ $remote:$ONOS_INSTALL_DIR/
-
diff --git a/tools/test/bin/onos-show-cell b/tools/test/bin/onos-show-cell
index 3b11a1d..f5c7572 100755
--- a/tools/test/bin/onos-show-cell
+++ b/tools/test/bin/onos-show-cell
@@ -51,5 +51,7 @@
     fi
 done
 echo "OCN=${OCN}"
+echo "OCT=${OCT}"
 echo "OCI=${OCI}"
-echo "ONOS_FEATURES=${ONOS_FEATURES}"
+echo "ONOS_APPS=${ONOS_APPS}"
+echo "ONOS_BOOT_FEATURES=${ONOS_BOOT_FEATURES}"
diff --git a/tools/test/cells/beast b/tools/test/cells/beast
index c3ed41e..aa34e51 100644
--- a/tools/test/cells/beast
+++ b/tools/test/cells/beast
@@ -1,7 +1,7 @@
-# Bare metal cluster
+# Bare metal cluster (7-node)
 
-# Use the 10G NIC for cluster communications
-export ONOS_NIC="192.168.200.*"
+# Use the 1G NIC for cluster communications
+export ONOS_NIC="10.254.1.*"
 
 # ONOS Test proxy
 export OCT=10.254.1.200
@@ -15,6 +15,4 @@
 export OC6=10.254.1.206
 export OC7=10.254.1.207
 
-export OCI=${OC1}
-
-export ONOS_FEATURES=webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-null
+export ONOS_APPS=null,intentperf
diff --git a/tools/test/cells/beast-1 b/tools/test/cells/beast-1
new file mode 100644
index 0000000..c6e45e4
--- /dev/null
+++ b/tools/test/cells/beast-1
@@ -0,0 +1,12 @@
+# Bare metal cluster (1-node)
+
+# Use the 1G NIC for cluster communications
+export ONOS_NIC="10.254.1.*"
+
+# ONOS Test proxy
+export OCT=10.254.1.200
+
+# Use the 1G NICs for external access
+export OC1=10.254.1.201
+
+export ONOS_APPS=null,intentperf
diff --git a/tools/test/cells/beast-3 b/tools/test/cells/beast-3
index c2db173..fc58137 100644
--- a/tools/test/cells/beast-3
+++ b/tools/test/cells/beast-3
@@ -1,7 +1,7 @@
-# Bare metal cluster
+# Bare metal cluster (3-node)
 
-# Use the 10G NIC for cluster communications
-export ONOS_NIC="192.168.200.*"
+# Use the 1G NIC for cluster communications
+export ONOS_NIC="10.254.1.*"
 
 # ONOS Test proxy
 export OCT=10.254.1.200
@@ -11,6 +11,4 @@
 export OC2=10.254.1.202
 export OC3=10.254.1.203
 
-export OCI=${OC1}
-
-export ONOS_FEATURES=webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-null
+export ONOS_APPS=null,intentperf
diff --git a/tools/test/cells/beast-5 b/tools/test/cells/beast-5
new file mode 100644
index 0000000..4734281
--- /dev/null
+++ b/tools/test/cells/beast-5
@@ -0,0 +1,16 @@
+# Bare metal cluster (5-node)
+
+# Use the 1G NIC for cluster communications
+export ONOS_NIC="10.254.1.*"
+
+# ONOS Test proxy
+export OCT=10.254.1.200
+
+# Use the 1G NICs for external access
+export OC1=10.254.1.201
+export OC2=10.254.1.202
+export OC3=10.254.1.203
+export OC4=10.254.1.204
+export OC5=10.254.1.205
+
+export ONOS_APPS=null,intentperf
diff --git a/tools/test/cells/beastMod b/tools/test/cells/beastMod
deleted file mode 100644
index b0c8a5a..0000000
--- a/tools/test/cells/beastMod
+++ /dev/null
@@ -1,18 +0,0 @@
-# Bare metal cluster with rearranged nodes
-
-# Use the 10G NIC for cluster communications
-export ONOS_NIC="10.254.1.*"
-
-# ONOS Test proxy
-export OCT=10.254.1.200
-
-# Use the 1G NICs for external access
-export OC1=10.254.1.207
-export OC2=10.254.1.202
-export OC3=10.254.1.203
-export OC4=10.254.1.204
-export OC5=10.254.1.206
-
-export OCI=${OC1}
-
-export ONOS_FEATURES=webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-null
diff --git a/tools/test/cells/cbench b/tools/test/cells/cbench
deleted file mode 100644
index 8601929..0000000
--- a/tools/test/cells/cbench
+++ /dev/null
@@ -1,8 +0,0 @@
-# Local VirtualBox-based single ONOS instance & ONOS mininet box
-
-export ONOS_NIC=192.168.56.*
-export OC1="192.168.56.103"
-export OCN="192.168.56.103"
-export OCI="${OC1}"
-
-export ONOS_FEATURES="webconsole,onos-api,onos-core-trivial,onos-cli,onos-openflow,onos-app-fwd"
diff --git a/tools/test/cells/ec2 b/tools/test/cells/ec2
index 204988e..ff7d08d 100644
--- a/tools/test/cells/ec2
+++ b/tools/test/cells/ec2
@@ -1,4 +1,4 @@
-# Bare metal cluster
+# EC2-based cluster (7-node)
 
 # Use the 10G NIC for cluster communications
 export ONOS_NIC="192.168.200.*"
@@ -15,6 +15,4 @@
 export OC6=192.168.200.106
 export OC7=192.168.200.107
 
-export OCI=${OC1}
-
-export ONOS_FEATURES=webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-null
+export ONOS_APPS=null,intentperf
diff --git a/tools/test/cells/local b/tools/test/cells/local
index 3972f1d..c99d250 100644
--- a/tools/test/cells/local
+++ b/tools/test/cells/local
@@ -4,6 +4,5 @@
 export OC1="192.168.56.101"
 export OC2="192.168.56.102"
 export OCN="192.168.56.103"
-export OCI="${OC1}"
 
-export ONOS_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-openflow,onos-gui,onos-rest,onos-app-fwd,onos-app-proxyarp"
+export ONOS_APPS="openflow,fwd,proxyarp,mobility"
diff --git a/tools/test/cells/office b/tools/test/cells/office
index 87e06f8..dd8a5d5 100644
--- a/tools/test/cells/office
+++ b/tools/test/cells/office
@@ -1,7 +1,7 @@
-# ProxMox-based cell of ONOS instance; no mininet-box
+# ONLAB_OF Wifi ProxMox-based cell; single node; no mininet-box
 
 export ONOS_NIC="10.1.10.*"
 export OC1="10.1.10.223"
-export OCI="${OC1}"
 
-export ONOS_FEATURES="webconsole,onos-api,onos-core-trivial,onos-cli,onos-openflow,onos-app-fwd,onos-app-mobility,onos-app-gui,onos-app-proxyarp"
+export ONOS_APPS="openflow,fwd,proxyarp,mobility"
+
diff --git a/tools/test/cells/prox b/tools/test/cells/prox
index 28e073f..8af4198 100644
--- a/tools/test/cells/prox
+++ b/tools/test/cells/prox
@@ -4,6 +4,3 @@
 export OC1="10.1.9.94"
 export OC2="10.1.9.82"
 export OCN="10.1.9.93"
-export OCI="${OC1}"
-
-export ONOS_FEATURES=""
diff --git a/tools/test/cells/sdnip-pmox b/tools/test/cells/sdnip-pmox
index 9f66265..0329616 100644
--- a/tools/test/cells/sdnip-pmox
+++ b/tools/test/cells/sdnip-pmox
@@ -1,10 +1,8 @@
 # SDN-IP ProxMox cell
 
-export ONOS_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-openflow,onos-app-config,onos-app-proxyarp,onos-gui,onos-rest"
-
 export ONOS_NIC=10.128.4.*
 export OC1="10.128.4.65"
 export OC2="10.128.4.66"
 export OC3="10.128.4.67"
 
-export ONOS_USER=sdn
+export ONOS_APPS="openflow,fwd,proxyarp,mobility,config,sdnip"
diff --git a/tools/test/cells/single b/tools/test/cells/single
index 3810482..19485a9 100644
--- a/tools/test/cells/single
+++ b/tools/test/cells/single
@@ -3,6 +3,5 @@
 export ONOS_NIC=192.168.56.*
 export OC1="192.168.56.101"
 export OCN="192.168.56.103"
-export OCI="${OC1}"
 
-export ONOS_FEATURES=webconsole,onos-api,onos-core-trivial,onos-cli,onos-rest,onos-openflow,onos-app-fwd,onos-app-proxyarp,onos-app-gui
+export ONOS_APPS="openflow,fwd,proxyarp,mobility"
diff --git a/tools/test/cells/single_optical b/tools/test/cells/single_optical
index 9eb613c..1785bfc 100644
--- a/tools/test/cells/single_optical
+++ b/tools/test/cells/single_optical
@@ -1,7 +1,7 @@
-# Local VirtualBox-based single ONOS instance & ONOS mininet box
+# Optical use-case VirtualBox-based single ONOS instance & ONOS mininet box
 
 export ONOS_NIC=192.168.56.*
 export OC1="192.168.56.101"
 export OCN="192.168.56.103"
 
-export ONOS_FEATURES=webconsole,onos-api,onos-core-trivial,onos-cli,onos-openflow,onos-app-fwd,onos-app-mobility,onos-app-gui,onos-app-optical
+export ONOS_APPS="openflow,fwd,proxyarp,mobility,optical"
diff --git a/tools/test/cells/tom b/tools/test/cells/tom
index cba30f3..a48933b 100644
--- a/tools/test/cells/tom
+++ b/tools/test/cells/tom
@@ -1,8 +1,7 @@
-# Thomas' VirtualBox-based single ONOS instance & ONOS mininet box
+# Thomas' VirtualBox-based 3 ONOS instances & ONOS mininet box
 
 export ONOS_NIC=192.168.56.*
 export OC1="192.168.56.11"
-export OCN="192.168.56.7"
-export OCI="${OC1}"
-
-export ONOS_FEATURES=webconsole,onos-api,onos-core-trivial,onos-cli,onos-rest,onos-gui,onos-openflow,onos-app-fwd,onos-app-proxyarp,onos-app-mobility
+export OC2="192.168.56.12"
+export OC3="192.168.56.13"
+export OCN="192.168.56.14"
diff --git a/tools/test/cells/tom3 b/tools/test/cells/tom3
deleted file mode 100644
index c209f8f..0000000
--- a/tools/test/cells/tom3
+++ /dev/null
@@ -1,10 +0,0 @@
-# Thomas' VirtualBox-based 3 ONOS instances & ONOS mininet box
-
-export ONOS_NIC=192.168.56.*
-export OC1="192.168.56.11"
-export OC2="192.168.56.12"
-export OC3="192.168.56.13"
-export OCN="192.168.56.14"
-export OCI="${OC1}"
-
-unset ONOS_FEATURES
diff --git a/tools/test/cells/tomx b/tools/test/cells/tomx
index 700be43..48018de 100644
--- a/tools/test/cells/tomx
+++ b/tools/test/cells/tomx
@@ -1,13 +1,7 @@
-# Local VirtualBox-based ONOS instances 1,2,3 & ONOS mininet box
+# Office ProxMox ONOS instances 1,2,3 & ONOS mininet box
 
 export ONOS_NIC=10.128.11.*
 export OC1="10.128.11.1"
 export OC2="10.128.11.2"
 export OC3="10.128.11.3"
 export OCN="10.128.11.4"
-
-export OCI="${OC1}"
-export OCT="${OC1}"
-
-export ONOS_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-gui,onos-openflow"
-export ONOS_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-gui,onos-null"
diff --git a/tools/test/cells/triple b/tools/test/cells/triple
index cd7f174..5a929f9 100644
--- a/tools/test/cells/triple
+++ b/tools/test/cells/triple
@@ -5,6 +5,5 @@
 export OC2="192.168.56.102"
 export OC3="192.168.56.104"
 export OCN="192.168.56.103"
-export OCI="${OC1}"
 
-export ONOS_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-openflow,onos-gui,onos-rest,onos-app-fwd,onos-app-proxyarp"
+export ONOS_APPS="openflow,fwd,proxyarp,mobility"