Defining initial Karaf feature 21/10521/4
authorColin Dixon <colin@colindixon.com>
Sun, 31 Aug 2014 21:38:34 +0000 (16:38 -0500)
committerColin Dixon <colin@colindixon.com>
Sun, 31 Aug 2014 21:40:18 +0000 (16:40 -0500)
Have the archetype features directory created and have a single feature that
passes the automated tests.

Change-Id: I91f0637e5c0ef9c4920b13c40eee1599d7e0dbeb
Signed-off-by: Colin Dixon <colin@colindixon.com>
features/pom.xml [new file with mode: 0644]
features/src/main/resources/features.xml [new file with mode: 0644]
pom.xml
ttp-model/pom.xml

diff --git a/features/pom.xml b/features/pom.xml
new file mode 100644 (file)
index 0000000..664f22c
--- /dev/null
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014 Brocade Communications Systems, Inc. and others.  All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <parent>
+      <artifactId>ttp-parent</artifactId>
+      <groupId>org.opendaylight.ttp</groupId>
+      <version>0.0.1-SNAPSHOT</version>
+      <relativePath>../</relativePath>
+   </parent>
+   <artifactId>features-ttp</artifactId>
+   <groupId>org.opendaylight.ttp</groupId>
+   <packaging>jar</packaging>
+   <properties>
+      <features.file>features.xml</features.file>
+      <!-- Optional TODO: Move these properties to your parent pom and possibly
+            DependencyManagement section of your parent pom -->
+      <branding.version>1.0.0-SNAPSHOT</branding.version>
+      <karaf.resources.version>1.4.2-SNAPSHOT</karaf.resources.version>
+      <karaf.version>3.0.1</karaf.version>
+      <feature.test.version>0.6.2-SNAPSHOT</feature.test.version>
+      <karaf.empty.version>1.4.2-SNAPSHOT</karaf.empty.version>
+      <surefire.version>2.16</surefire.version>
+   </properties>
+   <dependencies>
+      <dependency>
+         <groupId>org.opendaylight.yangtools</groupId>
+         <artifactId>features-yangtools</artifactId>
+         <version>${yangtools.version}</version>
+         <classifier>features</classifier>
+         <type>xml</type>
+         <scope>compile</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.opendaylight.openflowjava</groupId>
+         <artifactId>features-openflowjava</artifactId>
+         <version>${openflowjava.version}</version>
+         <classifier>features</classifier>
+         <type>xml</type>
+         <scope>compile</scope>
+      </dependency>
+      <dependency>
+         <groupId>org.opendaylight.ttp</groupId>
+         <artifactId>ttp-model</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+    <!--
+      Done TODO: Put dependencies on any feature repos
+      you use in your features.xml file.
+
+      Note: they will need to be <type>xml</xml>
+      and <classifier>features</classifier>.
+      One other thing to watch for is to make sure they are
+      <scope>compile</compile>, which they should be by default,
+      but be cautious lest they be at a different scope in a parent pom.
+
+      Examples:
+        <dependency>
+          <groupId>org.opendaylight.controller</groupId>
+          <artifactId>features-mdsal</artifactId>
+          <version>1.1-SNAPSHOT</version>
+          <classifier>features</classifier>
+          <type>xml</type>
+        </dependency>
+        <dependency>
+          <groupId>org.opendaylight.openflowplugin</groupId>
+          <artifactId>features-openflowplugin</artifactId>
+          <version>0.0.3-SNAPSHOT</version>
+          <classifier>features</classifier>
+          <type>xml</type>
+        </dependency>
+    -->
+
+    <!--
+      Done TODO: Put dependencies for bundles directly referenced
+      in your features.xml file.  For every <bundle> reference in your
+      features.xml file, you need a corresponding dependency here.
+
+      Examples:
+      <dependency>
+        <groupId>org.opendaylight.ttp</groupId>
+        <artifactId>ttp-provider</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.opendaylight.ttp</groupId>
+        <artifactId>ttp-model</artifactId>
+        <version>${project.version}</version>
+      </dependency>
+    -->
+
+    <!--
+      Done TODO: Put dependencies for configfiles directly referenced
+      in your features.xml file.  For every <configfile> reference in your
+      features.xml file, you need a corresponding dependency here.
+
+      Example (presuming here version is coming from the parent pom):
+      <dependency>
+        <groupId>org.opendaylight.ttp</groupId>
+        <artifactId>ttp-config</artifactId>
+        <version>${project.version}</version>
+        <type>xml</type>
+        <classifier>config</classifier>
+      </dependency>
+    -->
+
+    <!-- test to validate features.xml -->
+    <dependency>
+      <groupId>org.opendaylight.yangtools</groupId>
+      <artifactId>features-test</artifactId>
+      <version>${feature.test.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <!-- dependency for opendaylight-karaf-empty for use by testing -->
+    <dependency>
+      <groupId>org.opendaylight.controller</groupId>
+      <artifactId>opendaylight-karaf-empty</artifactId>
+      <version>${karaf.empty.version}</version>
+      <type>zip</type>
+    </dependency>
+    <!-- Uncomment this if you get an error : java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Lorg/slf4j/helpers/FormattingTuple;
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>1.7.2</version>
+    </dependency>
+    -->
+
+   </dependencies>
+   <build>
+      <resources>
+         <resource>
+            <directory>src/main/resources</directory>
+            <filtering>true</filtering>
+         </resource>
+      </resources>
+      <plugins>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-resources-plugin</artifactId>
+            <executions>
+               <execution>
+                  <id>filter</id>
+                  <phase>generate-resources</phase>
+                  <goals>
+                     <goal>resources</goal>
+                  </goals>
+               </execution>
+            </executions>
+         </plugin>
+         <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>build-helper-maven-plugin</artifactId>
+            <executions>
+               <execution>
+                  <id>attach-artifacts</id>
+                  <phase>package</phase>
+                  <goals>
+                     <goal>attach-artifact</goal>
+                  </goals>
+                  <configuration>
+                     <artifacts>
+                        <artifact>
+                           <file>${project.build.directory}/classes/${features.file}</file>
+                           <type>xml</type>
+                           <classifier>features</classifier>
+                        </artifact>
+                     </artifacts>
+                  </configuration>
+               </execution>
+            </executions>
+         </plugin>
+         <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <version>${surefire.version}</version>
+            <configuration>
+              <systemPropertyVariables>
+                <karaf.distro.groupId>org.opendaylight.controller</karaf.distro.groupId>
+                <karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId>
+                <karaf.distro.version>${karaf.empty.version}</karaf.distro.version>
+              </systemPropertyVariables>
+              <dependenciesToScan>
+               <dependency>org.opendaylight.yangtools:features-test</dependency>
+              </dependenciesToScan>
+            </configuration>
+          </plugin>
+      </plugins>
+   </build>
+   <scm>
+      <connection>scm:git:ssh://git.opendaylight.org:29418/ttp.git</connection>
+      <developerConnection>scm:git:ssh://git.opendaylight.org:29418/ttp.git</developerConnection>
+      <tag>HEAD</tag>
+      <url>https://git.opendaylight.org/gerrit/gitweb?p=ttp.git;a=summary</url>
+   </scm>
+</project>
diff --git a/features/src/main/resources/features.xml b/features/src/main/resources/features.xml
new file mode 100644 (file)
index 0000000..9fa3fae
--- /dev/null
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014 Brocade Communications Systems, Inc. and others.  All rights reserved.
+
+ This program and the accompanying materials are made available under the
+ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<features name="odl-ttp-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
+
+    <!-- Karaf Features repositories that TTP depends on -->
+    <repository>mvn:org.opendaylight.yangtools/features-yangtools/${yangtools.version}/xml/features</repository>
+    <repository>mvn:org.opendaylight.openflowjava/features-openflowjava/${openflowjava.version}/xml/features</repository>
+
+    <!-- TTP "all" feature -->
+    <feature name='odl-ttp-all' version='${project.version}' description='OpenDaylight :: ttp :: All'>
+        <feature version='${project.version}'>odl-ttp-model</feature>
+    </feature>
+
+    <!-- TTP Model feature -->
+    <feature name='odl-ttp-model' version='${project.version}' description='OpenDaylight :: ttp :: Model'>
+        <feature version='${yangtools.version}'>odl-yangtools-binding</feature>
+        <feature version='${yangtools.version}'>odl-yangtools-models</feature>
+        <feature version='${openflowjava.version}'>odl-openflowjava-protocol</feature>
+        <bundle>mvn:org.opendaylight.ttp/ttp-model/${project.version}</bundle>
+    </feature>
+
+    <!--
+        Done TODO: Define your features.  It is useful to list then in order of dependency.  So if A depends on B, list A first.
+        When naming your features please be mindful of the guidelines:
+            https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines
+        Particularly:
+            a) Prefixing names with 'odl-': https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Feature_Naming
+            b) Descriptions: https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Description
+            c) Avoid start-levels: https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Avoid_start-levels
+
+        It's also nice to list inside a feature, first the features it needs, then the bundles it needs, then the configfiles.
+        Examples:
+
+        * Basic MD-SAL Provider
+        <feature name='odl-ttp-provider' version='${project.version}' description='OpenDaylight :: ttp :: Provider '>
+            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <feature version='${project.version}'>odl-ttp-model</feature>
+            <bundle>mvn:org.opendaylight.ttp/ttp-provider/${project.version}</bundle>
+            ... whatever other bundles you need
+        </feature>
+
+        * Basic MD-SAL Model feature
+        <feature name='odl-ttp-model' version='${project.version}' description='OpenDaylight :: ttp :: Model'>
+            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-binding</feature>
+            <feature version='0.6.2-SNAPSHOT'>odl-yangtools-models</feature>
+            <bundle>mvn:org.opendaylight.ttp/ttp-model/${project.version}</bundle>
+            ... whatever other bundles you need
+        </feature>
+
+        * Config Subsystem example - the config file is your config subsystem configuration
+        <feature name='odl-ttp-provider' version='${project.version}' description='OpenDaylight :: ttp :: Provider'>
+            <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+            <bundle>mvn:org.opendaylight.ttp/ttp-provider/${project.version}</bundle>
+            <configfile finalname="etc/opendaylight/karaf/80-ttp.xml">mvn:org.opendaylight.ttp/ttp-config/${project.version}/xml/config</configfile>
+            ... whatever other bundles you need
+        </feature>
+
+        * Basic MD-SAL Provider that uses openflowplugin-flow-services (which brings along odl-mdsal-broker)
+        <feature name='odl-ttp-provider' version='${project.version}' description='OpenDaylight :: ttp :: Provider'>
+            <feature version='0.0.3-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
+            <bundle>mvn:org.opendaylight.ttp/ttp-provider/${project.version}</bundle>
+            ... whatever other bundles you need
+        </feature>
+
+    -->
+</features>
diff --git a/pom.xml b/pom.xml
index 4acbd4fc1ed98d1ab023da63b1e2a62fa0c00594..076ac202b9e2b89e7a81e8f058741dac6e304332 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,7 @@
   <modules>
     <module>parser</module>
     <module>ttp-model</module>
+    <module>features</module>
   </modules>
 
   <properties>
@@ -25,6 +26,7 @@
     <jmxGeneratorPath>src/main/yang-gen-config</jmxGeneratorPath>
     <salGeneratorPath>src/main/yang-gen-sal</salGeneratorPath>
     <yangtools.version>0.6.2-SNAPSHOT</yangtools.version>
+    <openflowjava.version>0.5-SNAPSHOT</openflowjava.version>
     <controller.version>1.1-SNAPSHOT</controller.version>
     <ietf-yang-types.version>2010.09.24.4-SNAPSHOT</ietf-yang-types.version>
     <ietf-inet-types.version>2010.09.24.4-SNAPSHOT</ietf-inet-types.version>
index 93e95ffda059637914f9d5501fe1a9af18da9229..fc6f87909eea9b6bd5ff61f394df6dbdaa09f6bd 100644 (file)
       <dependency>
         <groupId>org.opendaylight.openflowjava</groupId>
         <artifactId>openflow-protocol-api</artifactId>
-        <version>0.5-SNAPSHOT</version>
+        <version>${openflowjava.version}</version>
       </dependency>
       <dependency>
         <groupId>org.opendaylight.yangtools</groupId>