Separating onos-drivers to be delivered as a separate app from onos-openflow. Apps activated by default (via onos-setup-karaf or onos-install/onos-config)  are now onos-drivers and onos-openflow.

Change-Id: I35c7cca79a4b72e966cbc2cebe72b109f2d92706
diff --git a/drivers/app.xml b/drivers/app.xml
new file mode 100644
index 0000000..ac4f5d6
--- /dev/null
+++ b/drivers/app.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2015 Open Networking Laboratory
+  ~
+  ~ 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.
+  -->
+<app name="org.onosproject.drivers" origin="ON.Lab" version="${feature.version}"
+        featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
+        features="${project.artifactId}">
+    <description>${project.description}</description>
+    <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact>
+</app>
diff --git a/drivers/pom.xml b/drivers/pom.xml
index 8538f4a..bb07a78 100644
--- a/drivers/pom.xml
+++ b/drivers/pom.xml
@@ -30,7 +30,7 @@
     <artifactId>onos-drivers</artifactId>
     <packaging>bundle</packaging>
 
-    <description>ONOS Default Device Drivers</description>
+    <description>Builtin device drivers</description>
 
     <dependencies>
         <dependency>
@@ -66,7 +66,10 @@
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
             </plugin>
-
+            <plugin>
+                <groupId>org.onosproject</groupId>
+                <artifactId>onos-maven-plugin</artifactId>
+            </plugin>
         </plugins>
     </build>
 </project>
diff --git a/features/features.xml b/features/features.xml
index bf7e17c..ce35e6d 100644
--- a/features/features.xml
+++ b/features/features.xml
@@ -68,9 +68,10 @@
     </feature>
 
     <feature name="onos-thirdparty-web" version="@FEATURE-VERSION"
-             description="ONOS 3rd party dependencies">
+             description="ONOS 3rd party dependencies for web apps">
         <feature>war</feature>
         <feature>onos-thirdparty-base</feature>
+        <!-- FIXME: we should upgrade our jersey eventually -->
         <bundle>mvn:com.sun.jersey/jersey-core/1.19</bundle>
         <bundle>mvn:com.sun.jersey/jersey-server/1.19</bundle>
         <bundle>mvn:com.sun.jersey/jersey-servlet/1.19</bundle>
@@ -120,29 +121,9 @@
         <bundle>mvn:org.onosproject/onos-cli/@ONOS-VERSION</bundle>
     </feature>
 
-    <!-- ONOS OpenFlow provider app features -->
-
-    <feature name="onos-openflow" version="@FEATURE-VERSION"
-             description="ONOS OpenFlow API, Controller &amp; Providers">
-        <feature>onos-api</feature>
-        <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>
-        <bundle>mvn:org.onosproject/onos-of-api/@ONOS-VERSION</bundle>
-        <bundle>mvn:org.onosproject/onos-of-drivers/@ONOS-VERSION</bundle>
-        <bundle>mvn:org.onosproject/onos-of-ctl/@ONOS-VERSION</bundle>
-        <bundle>mvn:org.onosproject/onos-drivers/@ONOS-VERSION</bundle>
-
-        <bundle>mvn:org.onosproject/onos-lldp-provider/@ONOS-VERSION</bundle>
-        <bundle>mvn:org.onosproject/onos-host-provider/@ONOS-VERSION</bundle>
-        <bundle>mvn:org.onosproject/onos-of-provider-device/@ONOS-VERSION</bundle>
-        <bundle>mvn:org.onosproject/onos-of-provider-packet/@ONOS-VERSION</bundle>
-        <bundle>mvn:org.onosproject/onos-of-provider-flow/@ONOS-VERSION</bundle>
-        <bundle>mvn:org.onosproject/onos-of-provider-group/@ONOS-VERSION</bundle>
-    </feature>
-
     <!-- Deprecated! For standalone testing only. -->
-
     <feature name="onos-core-trivial" version="@FEATURE-VERSION"
-             description="ONOS core components">
+             description="ONOS trivial core components">
         <feature>onos-api</feature>
         <bundle>mvn:org.onosproject/onos-core-net/@ONOS-VERSION</bundle>
         <bundle>mvn:org.onosproject/onos-core-common/@ONOS-VERSION</bundle>
diff --git a/providers/openflow/app/app.xml b/providers/openflow/app/app.xml
index afa63fa..e143328 100644
--- a/providers/openflow/app/app.xml
+++ b/providers/openflow/app/app.xml
@@ -15,8 +15,9 @@
   ~ limitations under the License.
   -->
 <app name="org.onosproject.openflow" origin="ON.Lab" version="${feature.version}"
-     features="onos-openflow">
-    <description>OpenFlow protocol southbound providers</description>
+     featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
+     features="${project.artifactId}">
+    <description>${project.description}</description>
 
     <artifact>mvn:${project.groupId}/onos-of-api/${project.version}</artifact>
     <artifact>mvn:${project.groupId}/onos-of-drivers/${project.version}</artifact>
diff --git a/providers/openflow/app/features.xml b/providers/openflow/app/features.xml
new file mode 100644
index 0000000..521a20b
--- /dev/null
+++ b/providers/openflow/app/features.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  ~ Copyright 2015 Open Networking Laboratory                                
+  ~                                                                          
+  ~ 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.
+  -->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${feature.version}">
+    <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository>
+    <feature name="${project.artifactId}" version="${feature.version}"
+             description="${project.description}">
+        <feature>onos-api</feature>
+        <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>
+        <bundle>mvn:${project.groupId}/onos-of-api/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-of-drivers/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-of-ctl/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-drivers/${project.version}</bundle>
+
+        <bundle>mvn:${project.groupId}/onos-lldp-provider/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-host-provider/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-of-provider-device/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-of-provider-packet/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-of-provider-flow/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-of-provider-group/${project.version}</bundle>
+    </feature>
+</features>
diff --git a/providers/openflow/app/pom.xml b/providers/openflow/app/pom.xml
index bcbb632..42a03d3 100644
--- a/providers/openflow/app/pom.xml
+++ b/providers/openflow/app/pom.xml
@@ -26,10 +26,10 @@
         <relativePath>../pom.xml</relativePath>
     </parent>
 
-    <artifactId>onos-of-providers-app</artifactId>
+    <artifactId>onos-openflow</artifactId>
     <packaging>pom</packaging>
 
-    <description>ONOS OpenFlow providers app</description>
+    <description>OpenFlow protocol southbound providers</description>
 
     <dependencies>
         <dependency>
diff --git a/providers/pom.xml b/providers/pom.xml
index 23f6f0d..70d867e 100644
--- a/providers/pom.xml
+++ b/providers/pom.xml
@@ -70,7 +70,6 @@
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
             </plugin>
-
             <plugin>
                 <groupId>org.onosproject</groupId>
                 <artifactId>onos-maven-plugin</artifactId>
diff --git a/tools/test/bin/onos-config b/tools/test/bin/onos-config
index 0921c13..b494852 100755
--- a/tools/test/bin/onos-config
+++ b/tools/test/bin/onos-config
@@ -12,7 +12,7 @@
 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}"
+export ONOS_APPS="${ONOS_APPS:-drivers,openflow}"
 
 # Generate a cluster.json from the ON* environment variables
 CDEF_FILE=/tmp/${remote}.cluster.json
diff --git a/tools/test/bin/onos-setup-karaf b/tools/test/bin/onos-setup-karaf
index 56102cb..ab89d58 100755
--- a/tools/test/bin/onos-setup-karaf
+++ b/tools/test/bin/onos-setup-karaf
@@ -94,6 +94,6 @@
 onos-stage-apps $STAGE/apps $KARAF_ROOT/system
 
 echo "Customizing apps to be auto-activated..."
-for app in $(echo ${ONOS_APPS:-openflow} | tr ',' ' '); do
+for app in $(echo ${ONOS_APPS:-drivers,openflow} | tr ',' ' '); do
     touch $STAGE/apps/org.onosproject.$app/active
 done