Necessary TODO: Add repo entries for the repositories of features you refer to
in this feature file but do not define here.
Examples:
- <repository>mvn:org.opendaylight.yangtools/features-yangtools/0.6.2-SNAPSHOT/xml/features</repository>
- <repository>mvn:org.opendaylight.controller/features-mdsal/1.1-SNAPSHOT/xml/features</repository>
- <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/0.0.3-SNAPSHOT/xml/features</repository>
+ <repository>mvn:org.opendaylight.yangtools/features-yangtools/{{VERSION}}/xml/features</repository>
+ <repository>mvn:org.opendaylight.controller/features-mdsal/{{VERSION}}/xml/features</repository>
+ <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/{{VERSION}}/xml/features</repository>
-->
<feature name='odl-${repoName}-all' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: All'>
<!--
Necessary TODO:
- List all of the user consumable features you define in this feature file here.
+ List all of the features you define in this feature file here. This is meant to be used as index
+ of all available features, not necessarily a feature that a user would ever install directly.
+
Generally you would *not* list individual bundles here, but only features defined in *this* file.
It is useful to list them in the same order they occur in the file.
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
+ b) For user-facing features, it's often useful to have two additional features with the suffix -rest and -ui
+ * The "base" feature, e.g., odl-${repoName}-<feautre> provides just the base functionality
+ * The "rest" feature, e.g., odl-${repoName}-<feautre>-rest includes the odl-${repoName}-<feautre> feature as well
+ as odl-restconf and any other features/bundles needed to make REST/RESTCONF work for the base feature
+ * The "ui" feature, e.g., odl-${repoName}-<feautre>-ui includes the odl-${repoName}-<feautre>-rest feature as well
+ as the odl-dlux-core feature and any other features/bundles needed to make DLUX work for the base feature
+ * Note: Not all features should be user-facing. Only features which end-users of OpenDaylight, e.g., network
+ opeartors would want to be able to easily install/enable/disable should be considered user-facing.
+ The goal of user-facing features is to hit the 90/10 point where ~10% of the configuration options cover
+ ~90% of use cases. Developers and advanced users can dig in and customize the installed features and
+ bundles to their heart's content.
+ c) Descriptions: https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Description
+ d) 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-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider '>
- <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
+ <feature version='1.5.0-SNAPSHOT'>odl-mdsal-broker</feature>
<feature version='${symbol_dollar}{project.version}'>odl-${repoName}-model</feature>
- <bundle>mvn:${groupId}/${repoName}-provider/${symbol_dollar}{project.version}</bundle>
+ <bundle>mvn:${groupId}/${repoName}-provider/{{VERSION}}</bundle>
... whatever other bundles you need
</feature>
* Basic MD-SAL Model feature
<feature name='odl-${repoName}-model' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Model'>
- <feature version='0.6.2-SNAPSHOT'>odl-yangtools-binding</feature>
- <feature version='0.6.2-SNAPSHOT'>odl-yangtools-models</feature>
- <bundle>mvn:${groupId}/${repoName}-model/${symbol_dollar}{project.version}</bundle>
+ <feature version='0.10.0-SNAPSHOT'>odl-yangtools-binding</feature>
+ <feature version='0.10.0-SNAPSHOT'>odl-yangtools-models</feature>
+ <bundle>mvn:${groupId}/${repoName}-model/{{VERSION}}</bundle>
... whatever other bundles you need
</feature>
* Config Subsystem example - the config file is your config subsystem configuration
<feature name='odl-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider'>
- <feature version='1.1-SNAPSHOT'>odl-mdsal-broker</feature>
- <bundle>mvn:${groupId}/${repoName}-provider/${symbol_dollar}{project.version}</bundle>
- <configfile finalname="etc/opendaylight/karaf/80-${repoName}.xml">mvn:${groupId}/${repoName}-config/${symbol_dollar}{project.version}/xml/config</configfile>
+ <feature version='1.5.0-SNAPSHOT'>odl-mdsal-broker</feature>
+ <bundle>mvn:${groupId}/${repoName}-provider/{{VERSION}}</bundle>
+ <configfile finalname="etc/opendaylight/karaf/80-${repoName}.xml">mvn:${groupId}/${repoName}-config/{{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-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider'>
- <feature version='0.0.3-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
- <bundle>mvn:${groupId}/${repoName}-provider/${symbol_dollar}{project.version}</bundle>
+ <feature version='0.4.0-SNAPSHOT'>odl-openflowplugin-flow-services</feature>
+ <bundle>mvn:${groupId}/${repoName}-provider/{{VERSION}}</bundle>
... whatever other bundles you need
</feature>