1 #set( $symbol_pound = '#' )
2 #set( $symbol_dollar = '$' )
3 #set( $symbol_escape = '\' )
4 <?xml version="1.0" encoding="UTF-8"?>
5 <!-- vi: set et smarttab sw=4 tabstop=4: -->
7 Necessary TODO: Put your copyright statement here
9 This program and the accompanying materials are made available under the
10 terms of the Eclipse Public License v1.0 which accompanies this distribution,
11 and is available at http://www.eclipse.org/legal/epl-v10.html
13 <features name="odl-${repoName}-${symbol_dollar}{project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
14 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
15 xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
17 Necessary TODO: Please read the features guidelines:
18 https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Feature_Best_Practices
21 Necessary TODO: Add repo entries for the repositories of features you refer to
22 in this feature file but do not define here.
24 <repository>mvn:org.opendaylight.yangtools/features-yangtools/{{VERSION}}/xml/features</repository>
25 <repository>mvn:org.opendaylight.controller/features-mdsal/{{VERSION}}/xml/features</repository>
26 <repository>mvn:org.opendaylight.openflowplugin/features-openflowplugin/{{VERSION}}/xml/features</repository>
28 <feature name='odl-${repoName}-all' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: All'>
31 List all of the features you define in this feature file here. This is meant to be used as index
32 of all available features, not necessarily a feature that a user would ever install directly.
34 Generally you would *not* list individual bundles here, but only features defined in *this* file.
35 It is useful to list them in the same order they occur in the file.
38 <feature version='${symbol_dollar}{project.version}'>odl-${repoName}-provider</feature>
39 <feature version='${symbol_dollar}{project.version}'>odl-${repoName}-model</feature>
43 Necessary TODO: Define your features. It is useful to list then in order of dependency. So if A depends on B, list A first.
44 When naming your features please be mindful of the guidelines:
45 https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines
47 a) Prefixing names with 'odl-': https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Feature_Naming
48 b) For user-facing features, it's often useful to have two additional features with the suffix -rest and -ui
49 * The "base" feature, e.g., odl-${repoName}-<feautre> provides just the base functionality
50 * The "rest" feature, e.g., odl-${repoName}-<feautre>-rest includes the odl-${repoName}-<feautre> feature as well
51 as odl-restconf and any other features/bundles needed to make REST/RESTCONF work for the base feature
52 * The "ui" feature, e.g., odl-${repoName}-<feautre>-ui includes the odl-${repoName}-<feautre>-rest feature as well
53 as the odl-dlux-core feature and any other features/bundles needed to make DLUX work for the base feature
54 * Note: Not all features should be user-facing. Only features which end-users of OpenDaylight, e.g., network
55 opeartors would want to be able to easily install/enable/disable should be considered user-facing.
56 The goal of user-facing features is to hit the 90/10 point where ~10% of the configuration options cover
57 ~90% of use cases. Developers and advanced users can dig in and customize the installed features and
58 bundles to their heart's content.
59 c) Descriptions: https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Description
60 d) Avoid start-levels: https://wiki.opendaylight.org/view/Runtime:Karaf_Features_Guidelines#Avoid_start-levels
62 It's also nice to list inside a feature, first the features it needs, then the bundles it needs, then the configfiles.
65 * Basic MD-SAL Provider
66 <feature name='odl-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider '>
67 <feature version='1.3.0-Beryllium'>odl-mdsal-broker</feature>
68 <feature version='${symbol_dollar}{project.version}'>odl-${repoName}-model</feature>
69 <bundle>mvn:${groupId}/${repoName}-provider/{{VERSION}}</bundle>
70 ... whatever other bundles you need
73 * Basic MD-SAL Model feature
74 <feature name='odl-${repoName}-model' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Model'>
75 <feature version='0.8.0-Beryllium'>odl-yangtools-binding</feature>
76 <feature version='0.8.0-Beryllium'>odl-yangtools-models</feature>
77 <bundle>mvn:${groupId}/${repoName}-model/{{VERSION}}</bundle>
78 ... whatever other bundles you need
81 * Config Subsystem example - the config file is your config subsystem configuration
82 <feature name='odl-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider'>
83 <feature version='1.3.0-Beryllium'>odl-mdsal-broker</feature>
84 <bundle>mvn:${groupId}/${repoName}-provider/{{VERSION}}</bundle>
85 <configfile finalname="etc/opendaylight/karaf/80-${repoName}.xml">mvn:${groupId}/${repoName}-config/{{VERSION}}/xml/config</configfile>
86 ... whatever other bundles you need
89 * Basic MD-SAL Provider that uses openflowplugin-flow-services (which brings along odl-mdsal-broker)
90 <feature name='odl-${repoName}-provider' version='${symbol_dollar}{project.version}' description='OpenDaylight :: ${repoName} :: Provider'>
91 <feature version='0.2.0-Beryllium'>odl-openflowplugin-flow-services</feature>
92 <bundle>mvn:${groupId}/${repoName}-provider/{{VERSION}}</bundle>
93 ... whatever other bundles you need
97 <!-- Optional TODO: Remove TODO Comments -->