<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<groupId>org.opendaylight.controller</groupId>
<?xml version="1.0" encoding="UTF-8"?>
<!--
-Copyright (c) 2015 Cisco Systems 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 INTERNAL
--->
-<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">
- <parent>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-mdsal-benchmark</artifactId>
- <version>1.4.0-SNAPSHOT</version>
- <name>${project.artifactId}</name>
- <modelVersion>4.0.0</modelVersion>
+ Copyright © 2016, 2017 Red Hat, Inc. and others.
- <properties>
- <controller.mdsal.version>1.6.0-SNAPSHOT</controller.mdsal.version>
- <mdsal.version>2.3.0-SNAPSHOT</mdsal.version>
- <mdsal.model.version>0.11.0-SNAPSHOT</mdsal.model.version>
- <yangtools.version>1.2.0-SNAPSHOT</yangtools.version>
- </properties>
+ 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>
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>feature-repo-parent</artifactId>
+ <version>2.0.0</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>features-mdsal-benchmark</artifactId>
+ <version>1.4.0-SNAPSHOT</version>
+ <packaging>feature</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-benchmark-api</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-dsbenchmark</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-benchmark</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-ntfbenchmark</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ </dependencies>
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>features-yangtools</artifactId>
- <classifier>features</classifier>
- <version>${yangtools.version}</version>
- <type>xml</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>features-mdsal</artifactId>
- <version>${mdsal.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal.model</groupId>
- <artifactId>features-mdsal-model</artifactId>
- <version>${mdsal.model.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-mdsal</artifactId>
- <classifier>features</classifier>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>dsbenchmark</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>ntfbenchmark</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>rpcbenchmark</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>benchmark-api</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright (c) 2015 Cisco Systems
-
-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-dsbenchmark-${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">
- <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.mdsal.model/features-mdsal-model/{{VERSION}}/xml/features</repository>
-
- <feature name='odl-benchmark-api' version='${project.version}' description='OpenDaylight :: dsbenchmark :: api '>
- <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
- <bundle>mvn:org.opendaylight.controller/benchmark-api/{{VERSION}}</bundle>
- </feature>
- <feature name='odl-dsbenchmark' version='${project.version}' description='OpenDaylight :: dsbenchmark :: '>
- <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
- <feature version='${project.version}'>odl-benchmark-api</feature>
- <bundle>mvn:org.opendaylight.controller/dsbenchmark/{{VERSION}}</bundle>
- </feature>
- <feature name='odl-ntfbenchmark' version='${project.version}' description='OpenDaylight :: ntfbenchmark :: '>
- <feature version='${controller.mdsal.version}'>odl-mdsal-broker</feature>
- <feature version='${project.version}'>odl-benchmark-api</feature>
- <bundle>mvn:org.opendaylight.controller/ntfbenchmark/{{VERSION}}</bundle>
- </feature>
- <feature name='odl-mdsal-benchmark' version='${project.version}' description='OpenDaylight :: dsbenchmark :: '>
- <feature version='${project.version}'>odl-dsbenchmark</feature>
- <feature version='${project.version}'>odl-ntfbenchmark</feature>
- <bundle>mvn:org.opendaylight.controller/rpcbenchmark/{{VERSION}}</bundle>
- </feature>
-</features>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright © 2016, 2017 Red Hat, Inc. and others.
-
- 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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>feature-repo-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features4-mdsal-benchmark</artifactId>
- <version>1.4.0-SNAPSHOT</version>
- <packaging>feature</packaging>
-
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-benchmark-api</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-dsbenchmark</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-benchmark</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-ntfbenchmark</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- </dependencies>
-
-</project>
\ No newline at end of file
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<groupId>org.opendaylight.controller</groupId>
<modules>
<module>features-mdsal-benchmark</module>
- <module>features4-mdsal-benchmark</module>
<module>odl-benchmark-api</module>
<module>odl-dsbenchmark</module>
<module>odl-mdsal-benchmark</module>
<?xml version="1.0" encoding="UTF-8"?>
-<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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
+<!--
+ Copyright © 2016, 2017 Red Hat, Inc. and others.
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config-netty</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- <packaging>jar</packaging>
+ 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>
- <properties>
- <config.version>0.7.0-SNAPSHOT</config.version>
- <config.configfile.directory>etc/opendaylight/karaf</config.configfile.directory>
- <config.netty.configfile>00-netty.xml</config.netty.configfile>
- </properties>
+ <parent>
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>feature-repo-parent</artifactId>
+ <version>2.0.0</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>features-config-netty</artifactId>
+ <version>0.7.0-SNAPSHOT</version>
+ <packaging>feature</packaging>
- <dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-artifacts</artifactId>
- <version>${config.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-netty</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
</dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config-persister</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>netty-event-executor-config</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>netty-threadgroup-config</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>netty-timer-config</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>threadpool-config-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>threadpool-config-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-netty-config</artifactId>
- <version>${config.version}</version>
- <type>xml</type>
- <classifier>config</classifier>
- </dependency>
- </dependencies>
-
- <scm>
- <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
- <tag>HEAD</tag>
- <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
- </scm>
</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-
-<features name="odl-config-persister-${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">
- <repository>mvn:org.opendaylight.controller/features-config-persister/${config.version}/xml/features</repository>
- <feature name='odl-config-netty' version='${project.version}' description="OpenDaylight :: Config-Netty">
- <feature version='${project.version}'>odl-config-netty-config-api</feature>
- <bundle>mvn:org.opendaylight.controller/netty-event-executor-config/${project.version}</bundle>
- <bundle>mvn:org.opendaylight.controller/netty-threadgroup-config/${project.version}</bundle>
- <bundle>mvn:org.opendaylight.controller/netty-timer-config/${project.version}</bundle>
- <bundle>mvn:org.opendaylight.controller/threadpool-config-api/${project.version}</bundle>
- <bundle>mvn:org.opendaylight.controller/threadpool-config-impl/${project.version}</bundle>
- <feature version='${project.version}'>odl-config-startup</feature>
- <configfile finalname="${config.configfile.directory}/${config.netty.configfile}">mvn:org.opendaylight.controller/config-netty-config/${config.version}/xml/config</configfile>
- </feature>
-</features>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright © 2016, 2017 Red Hat, Inc. and others.
-
- 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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>feature-repo-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features4-config-netty</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- <packaging>feature</packaging>
-
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-netty</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- </dependencies>
-
-</project>
\ No newline at end of file
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modules>
<module>features-config-netty</module>
- <module>features4-config-netty</module>
<module>odl-config-netty</module>
</modules>
<?xml version="1.0" encoding="UTF-8"?>
-<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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
+<!--
+ Copyright © 2016, 2017 Red Hat, Inc. and others.
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config-persister</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- <packaging>jar</packaging>
+ 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>
- <properties>
- <mdsal.version>2.3.0-SNAPSHOT</mdsal.version>
- <config.version>0.7.0-SNAPSHOT</config.version>
- <features.file>features.xml</features.file>
- </properties>
+ <parent>
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>feature-repo-parent</artifactId>
+ <version>2.0.0</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>features-config-persister</artifactId>
+ <version>0.7.0-SNAPSHOT</version>
+ <packaging>feature</packaging>
- <dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-artifacts</artifactId>
- <version>${mdsal.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-artifacts</artifactId>
- <version>${config.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-manager-facade-xml</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-persister</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-persister-all</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-startup</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
</dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>features-mdsal</artifactId>
- <version>${mdsal.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-persister-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-manager-facade-xml</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-util</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-persister-file-xml-adapter</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-persister-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-persister-feature-adapter</artifactId>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.eclipse.persistence</groupId>
- <artifactId>org.eclipse.persistence.core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.eclipse.persistence</groupId>
- <artifactId>org.eclipse.persistence.moxy</artifactId>
- </dependency>
-
- </dependencies>
- <scm>
- <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
- <tag>HEAD</tag>
- <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
- </scm>
</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-
-<features name="odl-config-persister-${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">
- <repository>mvn:org.opendaylight.mdsal/features-mdsal/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.controller/features-config/{{VERSION}}/xml/features</repository>
- <feature name='odl-config-persister-all' version='${project.version}' description="OpenDaylight :: Config Persister:: All">
- <feature version='${project.version}'>odl-config-persister</feature>
- <feature version='${project.version}'>odl-config-startup</feature>
- </feature>
- <feature name='odl-config-persister' version='${project.version}' description="OpenDaylight :: Config Persister ">
- <feature version='${project.version}'>odl-config-api</feature>
- <feature version='${project.version}'>odl-config-core</feature>
- <feature version='${project.version}'>odl-config-manager</feature>
- <feature version='${mdsal.version}'>odl-mdsal-binding-runtime</feature>
- <bundle>mvn:org.opendaylight.controller/yang-jmx-generator/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/config-persister-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/config-util/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/config-manager-facade-xml/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/config-persister-file-xml-adapter/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/config-persister-impl/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/config-persister-feature-adapter/{{VERSION}}</bundle>
-
- <bundle>mvn:commons-io/commons-io/{{VERSION}}</bundle>
- <bundle>mvn:org.apache.commons/commons-lang3/{{VERSION}}</bundle>
- <bundle>wrap:mvn:javax.validation/validation-api/{{VERSION}}</bundle>
- <bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.core/{{VERSION}}</bundle>
- <bundle>mvn:org.eclipse.persistence/org.eclipse.persistence.moxy/{{VERSION}}</bundle>
- </feature>
- <feature name='odl-config-startup' version='${project.version}' description="OpenDaylight :: Config Persister:: Config Startup">
- <feature version='${project.version}'>odl-config-persister</feature>
- </feature>
- <feature name='odl-config-manager-facade-xml' version='${project.version}' description="Opendaylight :: Config Persister:: Mapping for Config Subsystem">
- <feature version='${project.version}'>odl-config-core</feature>
- <bundle>mvn:org.opendaylight.controller/config-manager-facade-xml/{{VERSION}}</bundle>
- </feature>
-</features>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright © 2016, 2017 Red Hat, Inc. and others.
-
- 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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>feature-repo-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features4-config-persister</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- <packaging>feature</packaging>
-
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-manager-facade-xml</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-persister</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-persister-all</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-startup</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- </dependencies>
-
-</project>
\ No newline at end of file
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
- <artifactId>config-persister-feature4-adapter</artifactId>
+ <artifactId>config-persister-feature-adapter</artifactId>
</dependency>
- <!-- For some reason config-persister-feature4-adapter needs this -->
+ <!-- For some reason config-persister-feature-adapter needs this -->
<dependency>
<groupId>org.apache.karaf</groupId>
<artifactId>org.apache.karaf.util</artifactId>
- <version>${karaf4.version}</version>
+ <version>${karaf.version}</version>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modules>
<module>features-config-persister</module>
- <module>features4-config-persister</module>
<module>odl-config-manager-facade-xml</module>
<module>odl-config-persister</module>
<module>odl-config-persister-all</module>
<?xml version="1.0" encoding="UTF-8"?>
-<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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
+<!--
+ Copyright © 2016, 2017 Red Hat, Inc. and others.
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- <packaging>jar</packaging>
+ 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>
- <properties>
- <yangtools.version>1.2.0-SNAPSHOT</yangtools.version>
- <mdsal.version>2.3.0-SNAPSHOT</mdsal.version>
- <config.version>0.7.0-SNAPSHOT</config.version>
- <odlparent.version>1.9.0</odlparent.version>
- <features.file>features.xml</features.file>
- <config.configfile.directory>etc/opendaylight/karaf</config.configfile.directory>
- </properties>
+ <parent>
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>feature-repo-parent</artifactId>
+ <version>2.0.0</version>
+ <relativePath/>
+ </parent>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>features-config</artifactId>
+ <version>0.7.0-SNAPSHOT</version>
+ <packaging>feature</packaging>
- <dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odlparent-artifacts</artifactId>
- <version>1.9.0</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yangtools-artifacts</artifactId>
- <version>${yangtools.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-artifacts</artifactId>
- <version>${mdsal.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-artifacts</artifactId>
- <version>${config.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-all</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-api</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-core</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-manager</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-config-netty-config-api</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
</dependencies>
- </dependencyManagement>
-
-
- <dependencies>
-
- <!-- Required features repositories -->
- <dependency>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-odlparent</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>features-yangtools</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>features-mdsal</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
-
- <!-- Config artifacts -->
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>netty-config-api</artifactId>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty-transport</artifactId>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty-common</artifactId>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty-codec</artifactId>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty-handler</artifactId>
- </dependency>
- <dependency>
- <groupId>io.netty</groupId>
- <artifactId>netty-buffer</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-util</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>yang-jmx-generator</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>shutdown-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>shutdown-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </dependency>
- <dependency>
- <groupId>org.javassist</groupId>
- <artifactId>javassist</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-manager</artifactId>
- </dependency>
- </dependencies>
- <scm>
- <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
- <tag>HEAD</tag>
- <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
- </scm>
</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-
-<features name="odl-config-${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">
-
- <repository>mvn:org.opendaylight.mdsal/features-mdsal/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.odlparent/features-odlparent/{{VERSION}}/xml/features</repository>
-
- <feature name='odl-config-all' version='${project.version}' description="OpenDaylight :: Config :: All">
- <feature version='${project.version}'>odl-config-api</feature>
- <feature version='${project.version}'>odl-config-netty-config-api</feature>
- <feature version='${project.version}'>odl-config-core</feature>
- <feature version='${project.version}'>odl-config-manager</feature>
- </feature>
-
- <feature name='odl-config-api' version='${project.version}' description="OpenDaylight :: Config :: API">
- <feature version='${mdsal.version}'>odl-mdsal-binding-base</feature>
- <bundle>mvn:org.opendaylight.controller/config-api/{{VERSION}}</bundle>
- </feature>
-
- <feature name='odl-config-netty-config-api' version='${project.version}' description="OpenDaylight :: Config :: Netty Config API">
- <feature version='${project.version}'>odl-config-api</feature>
- <feature version="${odlparent.version}">odl-netty-4</feature>
- <bundle>mvn:org.opendaylight.controller/netty-config-api/{{VERSION}}</bundle>
- </feature>
-
- <feature name='odl-config-core' version='${project.version}' description="OpenDaylight :: Config :: Core">
- <feature version='${yangtools.version}'>odl-yangtools-common</feature>
- <!-- FIXME: Bug 4202: Switch to MD-SAL provided odl-mdsal-binding-runtime -->
- <feature version='${mdsal.version}'>odl-mdsal-binding-runtime</feature>
- <feature version='${project.version}'>odl-config-api</feature>
- <bundle>mvn:org.opendaylight.controller/config-util/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/yang-jmx-generator/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/shutdown-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/shutdown-impl/{{VERSION}}</bundle>
- </feature>
- <feature name='odl-config-manager' version='${project.version}' description="OpenDaylight :: Config :: Manager">
- <feature version='${project.version}'>odl-config-core</feature>
- <bundle start-level="35">mvn:org.opendaylight.controller/config-manager/{{VERSION}}</bundle>
- </feature>
-</features>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright © 2016, 2017 Red Hat, Inc. and others.
-
- 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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>feature-repo-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features4-config</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- <packaging>feature</packaging>
-
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-all</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-api</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-core</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-manager</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-config-netty-config-api</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- </dependencies>
-
-</project>
\ No newline at end of file
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
</dependency>
<dependency>
<groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl4-netty-4</artifactId>
- <version>1.9.0</version>
+ <artifactId>odl-netty-4</artifactId>
+ <version>2.0.0</version>
<type>xml</type>
<classifier>features</classifier>
</dependency>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modules>
<module>features-config</module>
- <module>features4-config</module>
<module>odl-config-all</module>
<module>odl-config-api</module>
<module>odl-config-core</module>
<?xml version="1.0" encoding="UTF-8"?>
<!--
+ Copyright © 2016, 2017 Red Hat, Inc. and others.
+
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">
+ -->
+<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>
<groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-parent</artifactId>
- <version>1.9.0</version>
+ <artifactId>feature-repo-parent</artifactId>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<groupId>org.opendaylight.controller</groupId>
<artifactId>features-extras</artifactId>
<version>1.9.0-SNAPSHOT</version>
- <packaging>jar</packaging>
- <properties>
- <odl-jolokia-osgi.version>0.6.0-SNAPSHOT</odl-jolokia-osgi.version>
- </properties>
+ <packaging>feature</packaging>
<dependencies>
<dependency>
- <groupId>org.jolokia</groupId>
- <artifactId>jolokia-osgi</artifactId>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-extras-all</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>odl-jolokia-osgi</artifactId>
- <version>${odl-jolokia-osgi.version}</version>
- <type>cfg</type>
- <classifier>configuration</classifier>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-jolokia</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
</dependency>
</dependencies>
- <scm>
- <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
- <tag>HEAD</tag>
- <url>https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=summary</url>
- </scm>
</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
- 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
--->
-
-<!--
-
- This feature file is intended to contain only third party features that cannot be accommodated in any
- other feature file. This is a good place to add features like jolokia which no other feature depends on
- but which provides a utility.
--->
-<features name="odl-extras-${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">
- <feature name='odl-extras-all' version='${project.version}' description='OpenDaylight :: Extras :: All'>
- <feature version="${project.version}">odl-jolokia</feature>
- </feature>
- <feature name="odl-jolokia" version="${project.version}" description="Jolokia JMX/HTTP bridge">
- <configfile finalname="/etc/org.jolokia.osgi.cfg">mvn:org.opendaylight.controller/odl-jolokia-osgi/{{VERSION}}/cfg/configuration</configfile>
- <feature>http</feature>
- <bundle>mvn:org.jolokia/jolokia-osgi/{{VERSION}}</bundle>
- </feature>
-</features>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright © 2016, 2017 Red Hat, Inc. and others.
-
- 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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>feature-repo-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features4-extras</artifactId>
- <version>1.9.0-SNAPSHOT</version>
- <packaging>feature</packaging>
-
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-extras-all</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-jolokia</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- </dependencies>
-
-</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modules>
<module>features-extras</module>
- <module>features4-extras</module>
<module>odl-extras-all</module>
<module>odl-jolokia</module>
</modules>
<?xml version="1.0" encoding="UTF-8"?>
-<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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-mdsal</artifactId>
- <version>1.6.0-SNAPSHOT</version>
-
- <packaging>jar</packaging>
+<!--
+ Copyright © 2016, 2017 Red Hat, Inc. and others.
+
+ 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>
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>feature-repo-parent</artifactId>
+ <version>2.0.0</version>
+ <relativePath/>
+ </parent>
- <properties>
- <blueprint.version>0.7.0-SNAPSHOT</blueprint.version>
- <yangtools.version>1.2.0-SNAPSHOT</yangtools.version>
- <mdsal.version>2.3.0-SNAPSHOT</mdsal.version>
- <mdsal.model.version>0.11.0-SNAPSHOT</mdsal.model.version>
- <odlparent.version>1.9.0</odlparent.version>
- <controller.mdsal.version>1.6.0-SNAPSHOT</controller.mdsal.version>
- <config.version>0.7.0-SNAPSHOT</config.version>
- <commons.opendaylight.version>1.9.0-SNAPSHOT</commons.opendaylight.version>
- <akka.features.version>1.9.0</akka.features.version>
- <features.file>features.xml</features.file>
- <config.configfile.directory>etc/opendaylight/karaf</config.configfile.directory>
- <config.clustering.configfile>05-clustering.xml</config.clustering.configfile>
- <config.clustered-entity-ownership.configfile>06-clustered-entity-ownership.xml</config.clustered-entity-ownership.configfile>
- <config.netty.configfile>00-netty.xml</config.netty.configfile>
- <config.mdsal.configfile>01-md-sal.xml</config.mdsal.configfile>
- </properties>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>features-mdsal</artifactId>
+ <version>1.6.0-SNAPSHOT</version>
+ <packaging>feature</packaging>
- <dependencyManagement>
<dependencies>
- <dependency>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odlparent-artifacts</artifactId>
- <version>1.9.0</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>yangtools-artifacts</artifactId>
- <version>${yangtools.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-artifacts</artifactId>
- <version>${mdsal.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-artifacts</artifactId>
- <version>${config.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>mdsal-artifacts</artifactId>
- <version>${controller.mdsal.version}</version>
- <scope>import</scope>
- <type>pom</type>
- </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-clustering-test-app</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-all</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-broker</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-broker-local</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-clustering</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-clustering-commons</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-common</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-distributed-datastore</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-mdsal-remoterpc-connector</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-message-bus-collector</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>odl-toaster</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
</dependencies>
- </dependencyManagement>
-
- <dependencies>
-
- <dependency>
- <groupId>net.java.dev.stax-utils</groupId>
- <artifactId>stax-utils</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>blueprint</artifactId>
- <version>${blueprint.version}</version>
- </dependency>
-
- <!-- Required features repositories -->
- <dependency>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-odlparent</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.yangtools</groupId>
- <artifactId>features-yangtools</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>features-mdsal</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.mdsal.model</groupId>
- <artifactId>features-mdsal-model</artifactId>
- <classifier>features</classifier>
- <version>${mdsal.model.version}</version>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-akka</artifactId>
- <version>${akka.features.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config-persister</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config-netty</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
-
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>md-sal-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>config</classifier>
- </dependency>
-
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-akka-raft</artifactId>
- <version>${controller.mdsal.version}</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-common-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-common-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-common-util</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-core-spi</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-broker-impl</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-binding-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-binding-config</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-binding-broker-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-binding-util</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-connector-api</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-clustering-commons</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-clustering-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>moduleshardconf</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-clustering-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>moduleconf</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-clustering-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>akkaconf</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-clustering-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>factoryakkaconf</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-clustering-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>config</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-clustering-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>entityownershipconfig</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-clustering-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>cfg</type>
- <classifier>datastore</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-cluster-admin-api</artifactId>
- <version>${controller.mdsal.version}</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-cluster-admin-impl</artifactId>
- <version>${controller.mdsal.version}</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-distributed-datastore</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-dom-broker-config</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-schema-service</artifactId>
- </dependency>
-
- <!-- message-bus -->
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>messagebus-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>messagebus-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>messagebus-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>config</classifier>
- </dependency>
-
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-inmemory-datastore</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>sal-remoterpc-connector</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.opendaylight.controller.model</groupId>
- <artifactId>model-inventory</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.opendaylight.controller.samples</groupId>
- <artifactId>clustering-it-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>testmoduleconf</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller.samples</groupId>
- <artifactId>clustering-it-config</artifactId>
- <version>${controller.mdsal.version}</version>
- <type>xml</type>
- <classifier>testmoduleshardconf</classifier>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller.samples</groupId>
- <artifactId>clustering-it-model</artifactId>
- <version>${controller.mdsal.version}</version>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller.samples</groupId>
- <artifactId>clustering-it-provider</artifactId>
- <version>${controller.mdsal.version}</version>
- </dependency>
-
-
- <!-- toaster -->
- <dependency>
- <groupId>org.opendaylight.controller.samples</groupId>
- <artifactId>sample-toaster</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller.samples</groupId>
- <artifactId>sample-toaster-consumer</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller.samples</groupId>
- <artifactId>sample-toaster-provider</artifactId>
- </dependency>
-
- </dependencies>
-
- <scm>
- <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
- <tag>HEAD</tag>
- <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
- </scm>
</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-
-<features name="odl-mdsal-${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">
-
- <repository>mvn:org.opendaylight.odlparent/features-odlparent/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.yangtools/features-yangtools/{{VERSION}}/xml/features</repository>
-
- <repository>mvn:org.opendaylight.mdsal/features-mdsal/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/{{VERSION}}/xml/features</repository>
-
- <repository>mvn:org.opendaylight.controller/features-config/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.controller/features-config-persister/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.controller/features-config-netty/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.odlparent/features-akka/{{VERSION}}/xml/features</repository>
- <feature name='odl-mdsal-all' version='${project.version}' description="OpenDaylight :: MDSAL :: All">
- <feature version='${project.version}'>odl-mdsal-broker</feature>
- <feature version='${project.version}'>odl-mdsal-broker-local</feature>
- <feature version='${project.version}'>odl-toaster</feature>
- </feature>
- <feature name='odl-mdsal-common' version='${project.version}' description="OpenDaylight :: Config :: All">
- <feature version='${yangtools.version}'>odl-yangtools-yang-data</feature>
- <feature version='${config.version}'>odl-config-api</feature>
- <feature version='${mdsal.version}'>odl-mdsal-binding-runtime</feature>
- <bundle>wrap:mvn:net.java.dev.stax-utils/stax-utils/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-common-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-common-impl/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-common-util/{{VERSION}}</bundle>
- </feature>
-
- <feature name='odl-mdsal-broker-local' version='${project.version}' description="OpenDaylight :: MDSAL :: Broker">
- <feature version='${yangtools.version}'>odl-yangtools-common</feature>
- <feature version='${mdsal.version}'>odl-mdsal-binding-dom-adapter</feature>
- <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
- <feature version='${project.version}'>odl-mdsal-common</feature>
- <feature version='${config.version}'>odl-config-startup</feature>
- <feature version='${config.version}'>odl-config-netty</feature>
- <feature version="${odlparent.version}">odl-lmax-3</feature>
- <!-- FIXME: Bug 4202: Add MD-SAL provided odl-mdsal-binding-adapter -->
- <!-- FIXME: Bug 4202: Add MD-SAL provided odl-mdsal-dom-broker -->
- <feature version='${mdsal.version}'>odl-mdsal-dom</feature>
- <feature version='${mdsal.version}'>odl-mdsal-eos-dom</feature>
- <feature version='${mdsal.version}'>odl-mdsal-eos-binding</feature>
- <feature version='${mdsal.version}'>odl-mdsal-singleton-dom</feature>
- <bundle>mvn:org.opendaylight.controller/sal-core-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-core-spi/{{VERSION}}</bundle>
- <bundle start-level="70">mvn:org.opendaylight.controller/sal-schema-service/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-broker-impl/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-binding-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-binding-broker-impl/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-binding-util/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-connector-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-dom-config/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-binding-config/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-inmemory-datastore/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-dom-broker-config/{{VERSION}}</bundle>
- <bundle start-level="40">mvn:org.opendaylight.controller/blueprint/{{VERSION}}</bundle>
- <configfile finalname="${config.configfile.directory}/${config.mdsal.configfile}" override="true">mvn:org.opendaylight.controller/md-sal-config/{{VERSION}}/xml/config</configfile>
- </feature>
- <feature name='odl-toaster' version='${project.version}' description="OpenDaylight :: Toaster">
- <feature version='${yangtools.version}'>odl-yangtools-common</feature>
- <feature version='${mdsal.version}'>odl-mdsal-binding-runtime</feature>
- <feature version='${project.version}'>odl-mdsal-broker</feature>
- <bundle>mvn:org.opendaylight.controller.samples/sample-toaster/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller.samples/sample-toaster-consumer/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller.samples/sample-toaster-provider/{{VERSION}}</bundle>
- </feature>
- <feature name ='odl-mdsal-clustering-commons' version='${project.version}'>
- <feature version='${project.version}'>odl-mdsal-broker-local</feature>
- <feature version="${odlparent.version}">odl-akka-system-2.4</feature>
- <feature version="${odlparent.version}">odl-akka-persistence-2.4</feature>
- <feature version="${odlparent.version}">odl-akka-clustering-2.4</feature>
- <bundle>mvn:org.opendaylight.controller/sal-clustering-commons/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-akka-raft/{{VERSION}}</bundle>
- <bundle>mvn:io.dropwizard.metrics/metrics-core/{{VERSION}}</bundle>
- </feature>
- <feature name ='odl-mdsal-distributed-datastore' version='${project.version}'>
- <feature version='${project.version}'>odl-mdsal-broker-local</feature>
- <feature version='${project.version}'>odl-mdsal-clustering-commons</feature>
- <bundle>mvn:org.opendaylight.controller/cds-access-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/cds-access-client/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/cds-dom-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-distributed-datastore/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-cluster-admin-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/sal-cluster-admin-impl/{{VERSION}}</bundle>
- </feature>
- <feature name ='odl-mdsal-remoterpc-connector' version='${project.version}'>
- <feature version='${project.version}'>odl-mdsal-broker-local</feature>
- <feature version='${project.version}'>odl-mdsal-clustering-commons</feature>
- <feature version="${odlparent.version}">odl-akka-leveldb-0.7</feature>
- <bundle>mvn:org.opendaylight.controller/sal-remoterpc-connector/{{VERSION}}</bundle>
- </feature>
- <feature name ='odl-mdsal-broker' version='${project.version}'>
- <feature version='${project.version}'>odl-mdsal-remoterpc-connector</feature>
- <feature version='${project.version}'>odl-mdsal-distributed-datastore</feature>
- <configfile finalname="${config.configfile.directory}/${config.clustering.configfile}" override="true" >mvn:org.opendaylight.controller/sal-clustering-config/{{VERSION}}/xml/config</configfile>
- <configfile finalname="${config.configfile.directory}/${config.clustered-entity-ownership.configfile}">mvn:org.opendaylight.controller/sal-clustering-config/{{VERSION}}/xml/entityownershipconfig</configfile>
- <configfile finalname="configuration/initial/akka.conf">mvn:org.opendaylight.controller/sal-clustering-config/{{VERSION}}/xml/akkaconf</configfile>
- <configfile finalname="configuration/factory/akka.conf" override="true">mvn:org.opendaylight.controller/sal-clustering-config/{{VERSION}}/xml/factoryakkaconf</configfile>
- <configfile finalname="configuration/initial/module-shards.conf">mvn:org.opendaylight.controller/sal-clustering-config/{{VERSION}}/xml/moduleshardconf</configfile>
- <configfile finalname="configuration/initial/modules.conf">mvn:org.opendaylight.controller/sal-clustering-config/{{VERSION}}/xml/moduleconf</configfile>
- <configfile finalname="etc/org.opendaylight.controller.cluster.datastore.cfg">mvn:org.opendaylight.controller/sal-clustering-config/{{VERSION}}/cfg/datastore</configfile>
- </feature>
- <feature name ='odl-mdsal-clustering' version='${project.version}'>
- <feature version='${project.version}'>odl-mdsal-broker</feature>
- </feature>
- <feature name='odl-clustering-test-app' version='${project.version}'>
- <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
- <feature version='${project.version}'>odl-mdsal-broker</feature>
- <bundle>mvn:org.opendaylight.controller.samples/clustering-it-model/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller.samples/clustering-it-provider/{{VERSION}}</bundle>
- </feature>
-
- <feature name='odl-message-bus-collector' version='${project.version}'>
- <!-- FIXME: Bug 4202: Switch to MD-SAL provided odl-mdsal-binding-base -->
- <bundle>mvn:org.opendaylight.controller.model/model-inventory/{{VERSION}}</bundle>
- <feature version='${project.version}'>odl-mdsal-broker</feature>
- <bundle>mvn:org.opendaylight.controller/messagebus-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/messagebus-spi/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/messagebus-util/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/messagebus-impl/{{VERSION}}</bundle>
- <configfile finalname="${config.configfile.directory}/05-message-bus.xml">mvn:org.opendaylight.controller/messagebus-config/{{VERSION}}/xml/config</configfile>
- </feature>
-</features>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright © 2016, 2017 Red Hat, Inc. and others.
-
- 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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>feature-repo-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features4-mdsal</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- <packaging>feature</packaging>
-
- <dependencies>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-clustering-test-app</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-all</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-broker</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-broker-local</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-clustering</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-clustering-commons</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-common</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-distributed-datastore</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-mdsal-remoterpc-connector</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-message-bus-collector</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>odl-toaster</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- </dependencies>
-</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-artifacts</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependency>
<dependency>
<groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl4-lmax-3</artifactId>
+ <artifactId>odl-lmax-3</artifactId>
<type>xml</type>
<classifier>features</classifier>
</dependency>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-artifacts</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependency>
<dependency>
<groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl4-akka-system-2.4</artifactId>
+ <artifactId>odl-akka-system-2.4</artifactId>
<type>xml</type>
<classifier>features</classifier>
</dependency>
<dependency>
<groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl4-akka-persistence-2.4</artifactId>
+ <artifactId>odl-akka-persistence-2.4</artifactId>
<type>xml</type>
<classifier>features</classifier>
</dependency>
<dependency>
<groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl4-akka-clustering-2.4</artifactId>
+ <artifactId>odl-akka-clustering-2.4</artifactId>
<type>xml</type>
<classifier>features</classifier>
</dependency>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
</dependency>
<dependency>
<groupId>org.opendaylight.odlparent</groupId>
- <artifactId>odl4-akka-leveldb-0.7</artifactId>
- <version>1.9.0</version>
+ <artifactId>odl-akka-leveldb-0.7</artifactId>
+ <version>2.0.0</version>
<type>xml</type>
<classifier>features</classifier>
</dependency>
<version>${project.version}</version>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modules>
<module>features-mdsal</module>
- <module>features4-mdsal</module>
<module>odl-clustering-test-app</module>
<module>odl-mdsal-all</module>
<module>odl-mdsal-broker</module>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<?xml version="1.0" encoding="UTF-8"?>
-<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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
+<!--
+ Copyright © 2016, 2017 Red Hat, Inc. and others.
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-protocol-framework</artifactId>
- <version>0.10.0-SNAPSHOT</version>
- <packaging>jar</packaging>
+ 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>
- <properties>
- <config.version>0.7.0-SNAPSHOT</config.version>
- </properties>
+ <parent>
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>feature-repo-parent</artifactId>
+ <version>2.0.0</version>
+ <relativePath/>
+ </parent>
+
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>features-protocol-framework</artifactId>
+ <version>0.10.0-SNAPSHOT</version>
+ <packaging>feature</packaging>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>odl-protocol-framework</artifactId>
+ <version>0.10.0-SNAPSHOT</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+ </dependencies>
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config</artifactId>
- <classifier>features</classifier>
- <version>${config.version}</version>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-config-netty</artifactId>
- <version>${config.version}</version>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>protocol-framework</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
- <scm>
- <connection>scm:git:http://git.opendaylight.org/gerrit/controller.git</connection>
- <developerConnection>scm:git:ssh://git.opendaylight.org:29418/controller.git</developerConnection>
- <tag>HEAD</tag>
- <url>https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL</url>
- </scm>
</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-
-<features name="odl-protocol-framework-${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">
- <repository>mvn:org.opendaylight.controller/features-config/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.controller/features-config-netty/{{VERSION}}/xml/features</repository>
- <feature name='odl-protocol-framework' version='${project.version}' description="OpenDaylight :: Protocol Framework">
- <feature version='${config.version}'>odl-config-api</feature>
- <feature version='${config.version}'>odl-config-netty-config-api</feature>
- <bundle>mvn:org.opendaylight.controller/protocol-framework/{{VERSION}}</bundle>
- </feature>
-</features>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright © 2016, 2017 Red Hat, Inc. and others.
-
- 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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>feature-repo-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features4-protocol-framework</artifactId>
- <version>0.10.0-SNAPSHOT</version>
- <packaging>feature</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>odl-protocol-framework</artifactId>
- <version>0.10.0-SNAPSHOT</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- </dependencies>
-
-</project>
\ No newline at end of file
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modules>
<module>features-protocol-framework</module>
- <module>features4-protocol-framework</module>
<module>odl-protocol-framework</module>
</modules>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright (c) 2014 Cisco 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">
- <parent>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>karaf-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>karaf-parent</artifactId>
- <version>1.9.0-SNAPSHOT</version>
- <name>${project.artifactId}</name>
- <packaging>pom</packaging>
-
-</project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
- <artifactId>karaf-parent</artifactId>
- <version>1.9.0</version>
+ <artifactId>karaf4-parent</artifactId>
+ <version>2.0.0</version>
<relativePath/>
</parent>
+
<groupId>org.opendaylight.controller</groupId>
<artifactId>distribution.opendaylight-karaf</artifactId>
<version>1.9.0-SNAPSHOT</version>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
+
<groupId>org.opendaylight.controller</groupId>
<artifactId>karaf-aggregator</artifactId>
<version>1.5.0-SNAPSHOT</version>
<packaging>pom</packaging>
+
<modules>
- <module>karaf-parent</module>
- <module>opendaylight-karaf</module>
+ <!-- FIXME: re-enable this once we are on 2.0.0
+ <module>opendaylight-karaf</module-->
</modules>
</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>features-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>karaf-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
</parent>
<groupId>${groupId}</groupId>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<groupId>org.opendaylight.controller</groupId>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<artifactId>config-persister-feature-adapter</artifactId>
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>config-persister-feature4-adapter</artifactId>
- <version>${project.version}</version>
- </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>config-persister-file-adapter</artifactId>
<packaging>bundle</packaging>
<properties>
- <opendaylight.karaf.version>1.9.0</opendaylight.karaf.version>
+ <opendaylight.karaf.version>2.0.0</opendaylight.karaf.version>
</properties>
<dependencyManagement>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLStreamException;
import org.apache.karaf.features.BundleInfo;
+import org.apache.karaf.features.Capability;
import org.apache.karaf.features.Conditional;
import org.apache.karaf.features.ConfigFileInfo;
import org.apache.karaf.features.ConfigInfo;
import org.apache.karaf.features.Dependency;
import org.apache.karaf.features.Feature;
+import org.apache.karaf.features.Library;
+import org.apache.karaf.features.Requirement;
+import org.apache.karaf.features.Scoping;
import org.opendaylight.controller.config.persist.storage.file.xml.model.ConfigSnapshot;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
return feature.getName();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getId()
- */
@Override
public String getId() {
return feature.getId();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getName()
- */
@Override
public String getName() {
return feature.getName();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getDescription()
- */
@Override
public String getDescription() {
return feature.getDescription();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getDetails()
- */
@Override
public String getDetails() {
return feature.getDetails();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getVersion()
- */
@Override
public String getVersion() {
return feature.getVersion();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#hasVersion()
- */
@Override
public boolean hasVersion() {
return feature.hasVersion();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getResolver()
- */
@Override
public String getResolver() {
return feature.getResolver();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getInstall()
- */
@Override
public String getInstall() {
return feature.getInstall();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getDependencies()
- */
@Override
public List<Dependency> getDependencies() {
return feature.getDependencies();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getBundles()
- */
@Override
public List<BundleInfo> getBundles() {
return feature.getBundles();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getConfigurations()
- */
@Override
public List<ConfigInfo> getConfigurations() {
return feature.getConfigurations();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getConfigurationFiles()
- */
@Override
public List<ConfigFileInfo> getConfigurationFiles() {
return feature.getConfigurationFiles();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getConditional()
- */
@Override
public List<? extends Conditional> getConditional() {
return feature.getConditional();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getStartLevel()
- */
@Override
public int getStartLevel() {
return feature.getStartLevel();
}
- /**
- * @return
- * @see org.apache.karaf.features.Feature#getRegion()
- */
@Override
- public String getRegion() {
- return feature.getRegion();
+ public List<? extends Capability> getCapabilities() {
+ return feature.getCapabilities();
+ }
+
+ @Override
+ public List<? extends Library> getLibraries() {
+ return feature.getLibraries();
+ }
+
+ @Override
+ public String getNamespace() {
+ return feature.getNamespace();
+ }
+
+ @Override
+ public String getRepositoryUrl() {
+ return feature.getRepositoryUrl();
+ }
+
+ @Override
+ public List<? extends Requirement> getRequirements() {
+ return feature.getRequirements();
+ }
+
+ @Override
+ public List<String> getResourceRepositories() {
+ return feature.getResourceRepositories();
+ }
+
+ @Override
+ public Scoping getScoping() {
+ return feature.getScoping();
+ }
+
+ @Override
+ public boolean isHidden() {
+ return feature.isHidden();
}
}
import com.google.common.collect.LinkedHashMultimap;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.ConcurrentModificationException;
+import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.TimeUnit;
import org.apache.karaf.features.Feature;
import org.apache.karaf.features.FeaturesService;
import org.opendaylight.controller.config.persist.api.ConfigPusher;
-import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
import org.opendaylight.controller.config.persist.storage.file.xml.XmlFileStorageAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* Simple class to push configs to the config subsystem from Feature's configfiles
*/
public class FeatureConfigPusher {
-
private static final Logger LOG = LoggerFactory.getLogger(FeatureConfigPusher.class);
+ private static final int MAX_RETRIES = 100;
+ private static final int RETRY_PAUSE_MILLIS = 1;
- private static final int MAX_RETRIES = 10;
- private static final int RETRY_PAUSE_MILLIS = 100;
-
- private final FeaturesService featuresService;
- private final ConfigPusher pusher;
+ private FeaturesService featuresService = null;
+ private ConfigPusher pusher = null;
/*
* A LinkedHashSet (to preserve order and insure uniqueness) of the pushedConfigs
* chains. Also, preserves the *original* Feature chain for which we pushed the config.
* (which is handy for logging).
*/
- Set<FeatureConfigSnapshotHolder> pushedConfigs = new LinkedHashSet<>();
+ private final Set<FeatureConfigSnapshotHolder> pushedConfigs = new LinkedHashSet<>();
/*
* LinkedHashMultimap to track which configs we pushed for each Feature installation
* For future use
*/
- LinkedHashMultimap<Feature,FeatureConfigSnapshotHolder> feature2configs = LinkedHashMultimap.create();
+ private final LinkedHashMultimap<Feature,FeatureConfigSnapshotHolder> feature2configs = LinkedHashMultimap.create();
/*
* @param p - ConfigPusher to push ConfigSnapshotHolders
*/
- public FeatureConfigPusher(final ConfigPusher pusher, final FeaturesService featuresService) {
- this.pusher = pusher;
- this.featuresService = featuresService;
+ public FeatureConfigPusher(final ConfigPusher p, final FeaturesService f) {
+ pusher = p;
+ featuresService = f;
}
/*
* Push config files from Features to config subsystem
* If a Feature is not in the returned LinkedHashMultimap then we couldn't push its configs
* (Ususally because it was not yet installed)
*/
- public LinkedHashMultimap<Feature, FeatureConfigSnapshotHolder> pushConfigs(final List<Feature> features) throws Exception {
+ public LinkedHashMultimap<Feature, FeatureConfigSnapshotHolder> pushConfigs(final List<Feature> features)
+ throws Exception {
LinkedHashMultimap<Feature, FeatureConfigSnapshotHolder> pushedFeatures = LinkedHashMultimap.create();
for (Feature feature : features) {
-
-
Set<FeatureConfigSnapshotHolder> configSnapShots = pushConfig(feature);
if (!configSnapShots.isEmpty()) {
pushedFeatures.putAll(feature, configSnapShots);
}
private Set<FeatureConfigSnapshotHolder> pushConfig(final Feature feature) throws Exception {
- Set<FeatureConfigSnapshotHolder> configs = new LinkedHashSet<>();
- if(isInstalled(feature)) {
- // FIXME Workaround for BUG-2836, features service returns null for feature: standard-condition-webconsole_0_0_0, 3.0.1
- if(featuresService.getFeature(feature.getName(), feature.getVersion()) == null) {
- LOG.debug("Feature: {}, {} is missing from features service. Skipping", feature.getName(), feature.getVersion());
- } else {
- ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(feature, featuresService);
- configs = wrappedFeature.getFeatureConfigSnapshotHolders();
- if (!configs.isEmpty()) {
- configs = pushConfig(configs, feature);
- feature2configs.putAll(feature, configs);
- }
- }
+ // Ignore feature conditions — these encode conditions on other features and shouldn't be processed here
+ if (feature.getName().contains("-condition-")) {
+ LOG.debug("Ignoring conditional feature {}", feature);
+ return Collections.emptySet();
+ }
+ // pax-exam's Karaf container generates a wrapper feature holding the test dependencies. Ignore it.
+ if ("test-dependencies".equals(feature.getName())) {
+ LOG.debug("Ignoring pax-exam wrapper feature {}", feature);
+ return Collections.emptySet();
+ }
+
+ if (!isInstalled(feature)) {
+ return Collections.emptySet();
+ }
+ // FIXME Workaround for BUG-2836, features service returns null for feature:
+ // standard-condition-webconsole_0_0_0, 3.0.1
+ if (featuresService.getFeature(feature.getName(), feature.getVersion()) == null) {
+ LOG.debug("Feature: {}, {} is missing from features service. Skipping", feature.getName(),
+ feature.getVersion());
+ return Collections.emptySet();
+ }
+
+ ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(feature, featuresService);
+ Set<FeatureConfigSnapshotHolder> configs = wrappedFeature.getFeatureConfigSnapshotHolders();
+ if (!configs.isEmpty()) {
+ configs = pushConfig(configs, feature);
+ feature2configs.putAll(feature, configs);
}
return configs;
}
- private boolean isInstalled(final Feature feature) {
- Exception lastException = null;
+ private boolean isInstalled(final Feature feature) throws InterruptedException {
for (int retries = 0; retries < MAX_RETRIES; retries++) {
try {
List<Feature> installedFeatures = Arrays.asList(featuresService.listInstalledFeatures());
if (installedFeatures.contains(feature)) {
return true;
- } else {
- LOG.warn("Karaf featuresService.listInstalledFeatures() has not yet finished installing feature (retry {}) {} {}", retries, feature.getName(), feature.getVersion());
}
- // TODO This catch of ConcurrentModificationException may be able to simply be removed after
- // we're fully on Karaf 4 only, as a comment in BUG-6787 indicates that (in Karaf 4) :
- // "the 'installed' Map of FeaturesServiceImpl .. appears to be correctly synchronized/thread-safe".
- // (Or, if it's still NOK, then it could be fixed properly upstream in Karaf once we're on recent.)
- } catch (final ConcurrentModificationException e) {
- // BUG-6787 experience shows that a LOG.warn (or info) here is very confusing to end-users;
- // as we have a retry loop anyway, there is no point informing (and confusing) users of this
- // intermediate state of, so ... NOOP, do not log here.
- lastException = e;
- }
- try {
- Thread.sleep(RETRY_PAUSE_MILLIS);
- } catch (final InterruptedException e1) {
- throw new IllegalStateException(e1);
+
+ LOG.info("Karaf Feature Service has not yet finished installing feature {}/{} (retry {})",
+ feature.getName(), feature.getVersion(), retries);
+ } catch (final Exception e) {
+ LOG.warn("Karaf featuresService.listInstalledFeatures() has thrown an exception, retry {}", retries, e);
}
+
+ TimeUnit.MILLISECONDS.sleep(RETRY_PAUSE_MILLIS);
}
- LOG.error("Giving up (after {} retries) on Karaf featuresService.listInstalledFeatures() "
- + "which has not yet finished installing feature {} {} (stack trace is last exception caught)",
- MAX_RETRIES, feature.getName(), feature.getVersion(), lastException);
+ LOG.error("Giving up (after {} retries) on Karaf featuresService.listInstalledFeatures() which has not yet finished installing feature {} {}",
+ MAX_RETRIES, feature.getName(), feature.getVersion());
return false;
}
- private Set<FeatureConfigSnapshotHolder> pushConfig(final Set<FeatureConfigSnapshotHolder> configs, final Feature feature)
- throws InterruptedException {
+ private Set<FeatureConfigSnapshotHolder> pushConfig(final Set<FeatureConfigSnapshotHolder> configs,
+ final Feature feature) throws InterruptedException {
Set<FeatureConfigSnapshotHolder> configsToPush = new LinkedHashSet<>(configs);
configsToPush.removeAll(pushedConfigs);
if (!configsToPush.isEmpty()) {
LOG.warn("Ignoring default configuration {} for feature {}, the configuration is present in {}",
configsToPush, feature.getId(), currentCfgPusher.get());
} else {
- pusher.pushConfigs(new ArrayList<ConfigSnapshotHolder>(configsToPush));
+ pusher.pushConfigs(new ArrayList<>(configsToPush));
}
pushedConfigs.addAll(configsToPush);
import com.google.common.base.Optional;
import com.google.common.collect.Sets;
+
import java.util.Set;
+
import org.apache.karaf.features.Feature;
import org.apache.karaf.features.FeaturesListener;
import org.apache.karaf.features.FeaturesService;
import org.osgi.framework.ServiceReference;
import org.osgi.framework.ServiceRegistration;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class FeatureServiceCustomizer implements ServiceTrackerCustomizer<FeaturesService, FeaturesService>, AutoCloseable {
+ private static final Logger LOG = LoggerFactory.getLogger(FeatureServiceCustomizer.class);
private ConfigPusher configPusher = null;
private ServiceRegistration<?> registration;
final FeaturesService featureService = bc.getService(reference);
final Optional<XmlFileStorageAdapter> currentPersister = XmlFileStorageAdapter.getInstance();
- if(XmlFileStorageAdapter.getInstance().isPresent()) {
+ if (XmlFileStorageAdapter.getInstance().isPresent()) {
final Set<String> installedFeatureIds = Sets.newHashSet();
- for (final Feature installedFeature : featureService.listInstalledFeatures()) {
- installedFeatureIds.add(installedFeature.getId());
+ try {
+ for (final Feature installedFeature : featureService.listInstalledFeatures()) {
+ installedFeatureIds.add(installedFeature.getId());
+ }
+ } catch (final Exception e) {
+ LOG.error("Error listing installed features", e);
}
currentPersister.get().setFeaturesService(() -> installedFeatureIds);
@Override
public void modifiedService(final ServiceReference<FeaturesService> reference,
- final FeaturesService service) {
+ final FeaturesService service) {
// we don't care if the properties change
}
@Override
public void removedService(final ServiceReference<FeaturesService> reference,
- final FeaturesService service) {
+ final FeaturesService service) {
close();
}
@Override
public void close() {
- if(registration != null) {
+ if (registration != null) {
registration.unregister();
registration = null;
}
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<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>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-subsystem</artifactId>
- <version>0.7.0-SNAPSHOT</version>
- <relativePath>..</relativePath>
- </parent>
-
- <artifactId>config-persister-feature4-adapter</artifactId>
- <packaging>bundle</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.apache.karaf.features</groupId>
- <artifactId>org.apache.karaf.features.core</artifactId>
- <version>${karaf4.version}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-persister-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-persister-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>config-persister-directory-xml-adapter</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.utils</artifactId>
- <version>1.6.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
- <Bundle-Version>${project.version}</Bundle-Version>
- <Bundle-Activator>org.opendaylight.controller.configpusherfeature.ConfigPusherFeatureActivator</Bundle-Activator>
- <Private-Package>
- org.apache.karaf.features.internal.model,
- org.apache.felix.utils.version,
- org.opendaylight.controller.configpusherfeature.internal
- </Private-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
-</project>
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature;
-
-import org.opendaylight.controller.config.persist.api.ConfigPusher;
-import org.opendaylight.controller.configpusherfeature.internal.ConfigPusherCustomizer;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class ConfigPusherFeatureActivator implements BundleActivator {
-
- BundleContext bc = null;
- ConfigPusherCustomizer cpc = null;
- ServiceTracker<ConfigPusher,ConfigPusher> cpst = null;
-
- public void start(final BundleContext context) throws Exception {
- bc = context;
- cpc = new ConfigPusherCustomizer();
- cpst = new ServiceTracker<>(bc, ConfigPusher.class.getName(), cpc);
- cpst.open();
- }
-
- public void stop(final BundleContext context) throws Exception {
- if(cpst != null) {
- cpst.close();
- cpst = null;
- }
- if(cpc != null) {
- cpc.close();
- cpc = null;
- }
- bc = null;
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature.internal;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.io.Files;
-import java.io.File;
-import java.io.FileInputStream;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import javax.xml.bind.JAXBException;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.stream.XMLStreamException;
-import org.apache.karaf.features.BundleInfo;
-import org.apache.karaf.features.Capability;
-import org.apache.karaf.features.Conditional;
-import org.apache.karaf.features.ConfigFileInfo;
-import org.apache.karaf.features.ConfigInfo;
-import org.apache.karaf.features.Dependency;
-import org.apache.karaf.features.Feature;
-import org.apache.karaf.features.Library;
-import org.apache.karaf.features.Requirement;
-import org.apache.karaf.features.Scoping;
-import org.opendaylight.controller.config.persist.storage.file.xml.model.ConfigSnapshot;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Element;
-
-/*
- * Wrap a Feature for the purposes of extracting the FeatureConfigSnapshotHolders from
- * its underlying ConfigFileInfo's
- *
- * Delegates the the contained feature and provides additional methods.
- */
-public class AbstractFeatureWrapper implements Feature {
- private static final Logger LOG = LoggerFactory.getLogger(AbstractFeatureWrapper.class);
-
- protected static final String CONFIG_FILE_SUFFIX = "xml";
-
- protected Feature feature = null;
-
- protected AbstractFeatureWrapper() {
- // prevent instantiation without Feature
- }
-
- /*
- * @param f Feature to wrap
- */
- public AbstractFeatureWrapper(final Feature f) {
- Preconditions.checkNotNull(f,"FeatureWrapper requires non-null Feature in constructor");
- this.feature = f;
- }
-
- /*
- * Get FeatureConfigSnapshotHolders appropriate to feed to the config subsystem
- * from the underlying Feature Config files
- */
- public Set<FeatureConfigSnapshotHolder> getFeatureConfigSnapshotHolders() throws Exception {
- final Set<FeatureConfigSnapshotHolder> snapShotHolders = new LinkedHashSet<>();
- for(final ConfigFileInfo c: getConfigurationFiles()) {
- // Skip non config snapshot XML files
- if(isConfigSnapshot(c.getFinalname())) {
- final Optional<FeatureConfigSnapshotHolder> featureConfigSnapshotHolder = getFeatureConfigSnapshotHolder(c);
- if(featureConfigSnapshotHolder.isPresent()) {
- snapShotHolders.add(featureConfigSnapshotHolder.get());
- }
- }
- }
- return snapShotHolders;
- }
-
- protected Optional<FeatureConfigSnapshotHolder> getFeatureConfigSnapshotHolder(final ConfigFileInfo c) {
- try {
- return Optional.of(new FeatureConfigSnapshotHolder(c, this));
- } catch (final JAXBException e) {
- LOG.warn("Unable to parse configuration snapshot. Config from '{}' will be IGNORED. " +
- "Note that subsequent config files may fail due to this problem. " +
- "Xml markup in this file needs to be fixed, for detailed information see enclosed exception.",
- c.getFinalname(), e);
- } catch (final XMLStreamException e) {
- // Files that cannot be loaded are ignored as non config subsystem files e.g. jetty.xml
- LOG.debug("Unable to read configuration file '{}'. Not a configuration snapshot",
- c.getFinalname(), e);
- }
- return Optional.absent();
- }
-
- private static boolean isConfigSnapshot(final String fileName) {
- if(!Files.getFileExtension(fileName).equals(CONFIG_FILE_SUFFIX)) {
- return false;
- }
-
- if(fileName.endsWith("jetty.xml")) {
- // Special case - ignore the jetty.xml file as it contains a DTD and causes a "Connection refused"
- // error when it tries to go out to the network to retrieve it. We don't want it trying to go out
- // to the network nor do we want an error logged trying to parse it.
- return false;
- }
-
- File file = new File(System.getProperty("karaf.home"), fileName);
- try(FileInputStream fis = new FileInputStream(file)) {
- DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
- builderFactory.setNamespaceAware(true);
- builderFactory.setCoalescing(true);
- builderFactory.setIgnoringElementContentWhitespace(true);
- builderFactory.setIgnoringComments(true);
-
- Element root = builderFactory.newDocumentBuilder().parse(fis).getDocumentElement();
- return ConfigSnapshot.SNAPSHOT_ROOT_ELEMENT_NAME.equals(root.getLocalName());
- } catch (final Exception e) {
- LOG.error("Could not parse XML file {}", file, e);
- return false;
- }
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (feature == null ? 0 : feature.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final AbstractFeatureWrapper other = (AbstractFeatureWrapper) obj;
- if (feature == null) {
- if (other.feature != null) {
- return false;
- }
- } else if (!feature.equals(other.feature)) {
- return false;
- }
- return true;
- }
-
- @Override
- public String toString() {
- return feature.getName();
- }
-
- @Override
- public String getId() {
- return feature.getId();
- }
-
- @Override
- public String getName() {
- return feature.getName();
- }
-
- @Override
- public String getDescription() {
- return feature.getDescription();
- }
-
- @Override
- public String getDetails() {
- return feature.getDetails();
- }
-
- @Override
- public String getVersion() {
- return feature.getVersion();
- }
-
- @Override
- public boolean hasVersion() {
- return feature.hasVersion();
- }
-
- @Override
- public String getResolver() {
- return feature.getResolver();
- }
-
- @Override
- public String getInstall() {
- return feature.getInstall();
- }
-
- @Override
- public List<Dependency> getDependencies() {
- return feature.getDependencies();
- }
-
- @Override
- public List<BundleInfo> getBundles() {
- return feature.getBundles();
- }
-
- @Override
- public List<ConfigInfo> getConfigurations() {
- return feature.getConfigurations();
- }
-
- @Override
- public List<ConfigFileInfo> getConfigurationFiles() {
- return feature.getConfigurationFiles();
- }
-
- @Override
- public List<? extends Conditional> getConditional() {
- return feature.getConditional();
- }
-
- @Override
- public int getStartLevel() {
- return feature.getStartLevel();
- }
-
- @Override
- public List<? extends Capability> getCapabilities() {
- return feature.getCapabilities();
- }
-
- @Override
- public List<? extends Library> getLibraries() {
- return feature.getLibraries();
- }
-
- @Override
- public String getNamespace() {
- return feature.getNamespace();
- }
-
- @Override
- public String getRepositoryUrl() {
- return feature.getRepositoryUrl();
- }
-
- @Override
- public List<? extends Requirement> getRequirements() {
- return feature.getRequirements();
- }
-
- @Override
- public List<String> getResourceRepositories() {
- return feature.getResourceRepositories();
- }
-
- @Override
- public Scoping getScoping() {
- return feature.getScoping();
- }
-
- @Override
- public boolean isHidden() {
- return feature.isHidden();
- }
-
-}
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature.internal;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import org.apache.felix.utils.version.VersionRange;
-import org.apache.felix.utils.version.VersionTable;
-import org.apache.karaf.features.Dependency;
-import org.apache.karaf.features.Feature;
-import org.apache.karaf.features.FeaturesService;
-import org.osgi.framework.Version;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/*
- * Wrap a Feature for the purposes of extracting the FeatureConfigSnapshotHolders from
- * its underlying ConfigFileInfo's and those of its children recursively
- *
- * Delegates the the contained feature and provides additional methods.
- */
-public class ChildAwareFeatureWrapper extends AbstractFeatureWrapper implements Feature {
- private static final Logger LOG = LoggerFactory.getLogger(ChildAwareFeatureWrapper.class);
- private FeaturesService featuresService= null;
-
- protected ChildAwareFeatureWrapper(final Feature f) {
- // Don't use without a feature service
- }
-
- /*
- * @param f Feature to wrap
- * @param s FeaturesService to look up dependencies
- */
- ChildAwareFeatureWrapper(final Feature f, final FeaturesService s) throws Exception {
- super(s.getFeature(f.getName(), f.getVersion()));
- Preconditions.checkNotNull(s, "FeatureWrapper requires non-null FeatureService in constructor");
- this.featuresService = s;
- }
-
- protected FeaturesService getFeaturesService() {
- return featuresService;
- }
-
- /*
- * Get FeatureConfigSnapshotHolders appropriate to feed to the config subsystem
- * from the underlying Feature Config files and those of its children recursively
- */
- public Set<? extends ChildAwareFeatureWrapper> getChildFeatures() throws Exception {
- List<Dependency> dependencies = feature.getDependencies();
- Set<ChildAwareFeatureWrapper> childFeatures = new LinkedHashSet<>();
- if(dependencies != null) {
- for(Dependency dependency: dependencies) {
- Feature fi = extractFeatureFromDependency(dependency);
- if (fi != null) {
- if (featuresService.getFeature(fi.getName(), fi.getVersion()) == null) {
- LOG.warn("Feature: {}, {} is missing from features service. Skipping", fi.getName(), fi.getVersion());
- } else {
- ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(fi, featuresService);
- childFeatures.add(wrappedFeature);
- }
- }
- }
- }
- return childFeatures;
- }
-
- @Override
- public Set<FeatureConfigSnapshotHolder> getFeatureConfigSnapshotHolders() throws Exception {
- Set<FeatureConfigSnapshotHolder> snapShotHolders = new LinkedHashSet<>();
- for(ChildAwareFeatureWrapper c: getChildFeatures()) {
- for(FeatureConfigSnapshotHolder h: c.getFeatureConfigSnapshotHolders()) {
- final Optional<FeatureConfigSnapshotHolder> featureConfigSnapshotHolder = getFeatureConfigSnapshotHolder(h.getFileInfo());
- if(featureConfigSnapshotHolder.isPresent()) {
- snapShotHolders.add(featureConfigSnapshotHolder.get());
- }
- }
- }
- snapShotHolders.addAll(super.getFeatureConfigSnapshotHolders());
- return snapShotHolders;
- }
-
- protected Feature extractFeatureFromDependency(final Dependency dependency) throws Exception {
- Feature[] features = featuresService.listFeatures();
- VersionRange range = org.apache.karaf.features.internal.model.Feature.DEFAULT_VERSION.equals(dependency.getVersion())
- ? VersionRange.ANY_VERSION : new VersionRange(dependency.getVersion(), true, true);
- Feature fi = null;
- for(Feature f: features) {
- if (f.getName().equals(dependency.getName())) {
- Version v = VersionTable.getVersion(f.getVersion());
- if (range.contains(v) &&
- (fi == null || VersionTable.getVersion(fi.getVersion()).compareTo(v) < 0)) {
- fi = f;
- break;
- }
- }
- }
- return fi;
- }
-
-}
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature.internal;
-
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.LinkedBlockingQueue;
-import org.apache.karaf.features.FeatureEvent;
-import org.apache.karaf.features.FeaturesListener;
-import org.apache.karaf.features.FeaturesService;
-import org.apache.karaf.features.RepositoryEvent;
-import org.opendaylight.controller.config.persist.api.ConfigPusher;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ConfigFeaturesListener implements FeaturesListener, AutoCloseable {
- private static final Logger LOG = LoggerFactory.getLogger(ConfigFeaturesListener.class);
- private static final int QUEUE_SIZE = 1000;
- private BlockingQueue<FeatureEvent> queue = new LinkedBlockingQueue<>(QUEUE_SIZE);
- Thread pushingThread = null;
-
- public ConfigFeaturesListener(final ConfigPusher p, final FeaturesService f) {
- pushingThread = new Thread(new ConfigPushingRunnable(p, f, queue), "ConfigFeatureListener - ConfigPusher");
- pushingThread.start();
- }
-
- @Override
- public void featureEvent(final FeatureEvent event) {
- queue.offer(event);
- }
-
- @Override
- public void repositoryEvent(final RepositoryEvent event) {
- LOG.debug("Repository: {} {}", event.getType(), event.getRepository());
- }
-
- @Override
- public void close() {
- if(pushingThread != null) {
- pushingThread.interrupt();
- pushingThread = null;
- }
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature.internal;
-
-import org.apache.karaf.features.FeaturesService;
-import org.opendaylight.controller.config.persist.api.ConfigPusher;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ConfigPusherCustomizer implements ServiceTrackerCustomizer<ConfigPusher, ConfigPusher>, AutoCloseable {
- private static final Logger LOG = LoggerFactory.getLogger(ConfigPusherCustomizer.class);
- private ConfigFeaturesListener configFeaturesListener = null;
- private FeatureServiceCustomizer featureServiceCustomizer = null;
- private ServiceTracker<FeaturesService,FeaturesService> fsst = null;
-
- @Override
- public ConfigPusher addingService(final ServiceReference<ConfigPusher> configPusherServiceReference) {
- LOG.trace("Got ConfigPusherCustomizer.addingService {}", configPusherServiceReference);
- BundleContext bc = configPusherServiceReference.getBundle().getBundleContext();
- ConfigPusher cpService = bc.getService(configPusherServiceReference);
- featureServiceCustomizer = new FeatureServiceCustomizer(cpService);
- fsst = new ServiceTracker<>(bc, FeaturesService.class.getName(), featureServiceCustomizer);
- fsst.open();
- return cpService;
- }
-
- @Override
- public void modifiedService(final ServiceReference<ConfigPusher> configPusherServiceReference, final ConfigPusher configPusher) {
- // we don't care if the properties change
- }
-
- @Override
- public void removedService(final ServiceReference<ConfigPusher> configPusherServiceReference, final ConfigPusher configPusher) {
- this.close();
- }
-
- @Override
- public void close() {
- if(fsst != null) {
- fsst.close();
- fsst = null;
- }
- if(configFeaturesListener != null) {
- configFeaturesListener.close();
- configFeaturesListener = null;
- }
- if(featureServiceCustomizer != null) {
- featureServiceCustomizer.close();
- featureServiceCustomizer = null;
- }
- }
-}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature.internal;
-
-import com.google.common.collect.LinkedHashMultimap;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.TimeUnit;
-import org.apache.karaf.features.Feature;
-import org.apache.karaf.features.FeatureEvent;
-import org.apache.karaf.features.FeatureEvent.EventType;
-import org.apache.karaf.features.FeaturesService;
-import org.opendaylight.controller.config.persist.api.ConfigPusher;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ConfigPushingRunnable implements Runnable {
- private static final Logger LOG = LoggerFactory.getLogger(ConfigPushingRunnable.class);
- private static final int POLL_TIME = 1;
- private BlockingQueue<FeatureEvent> queue;
- private FeatureConfigPusher configPusher;
- public ConfigPushingRunnable(final ConfigPusher p, final FeaturesService f, final BlockingQueue<FeatureEvent> q) {
- queue = q;
- configPusher = new FeatureConfigPusher(p, f);
- }
-
- @Override
- public void run() {
- List<Feature> toInstall = new ArrayList<>();
- FeatureEvent event = null;
- boolean interuppted = false;
- while(true) {
- try {
- if(!interuppted) {
- if(toInstall.isEmpty()) {
- event = queue.take();
- } else {
- event = queue.poll(POLL_TIME, TimeUnit.MILLISECONDS);
- }
- if(event != null && event.getFeature() !=null) {
- processFeatureEvent(event,toInstall);
- }
- } else if(toInstall.isEmpty()) {
- LOG.error("ConfigPushingRunnable - exiting");
- return;
- }
- } catch (final InterruptedException e) {
- LOG.error("ConfigPushingRunnable - interupted");
- interuppted = true;
- } catch (final Exception e) {
- LOG.error("Exception while processing features {} event {}", toInstall, event, e);
- }
- }
- }
-
- protected void processFeatureEvent(final FeatureEvent event, final List<Feature> toInstall) throws Exception {
- if(event.getType() == EventType.FeatureInstalled) {
- toInstall.add(event.getFeature());
- LinkedHashMultimap<Feature,FeatureConfigSnapshotHolder> result = configPusher.pushConfigs(toInstall);
- toInstall.removeAll(result.keySet());
- } else if(event.getType() == EventType.FeatureUninstalled) {
- toInstall.remove(event.getFeature());
- }
- }
-
- protected void logPushResult(final LinkedHashMultimap<Feature,FeatureConfigSnapshotHolder> results) {
- for(Feature f:results.keySet()) {
- LOG.info("Pushed configs for feature {} {}",f,results.get(f));
- }
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature.internal;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.LinkedHashMultimap;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import org.apache.karaf.features.Feature;
-import org.apache.karaf.features.FeaturesService;
-import org.opendaylight.controller.config.persist.api.ConfigPusher;
-import org.opendaylight.controller.config.persist.storage.file.xml.XmlFileStorageAdapter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/*
- * Simple class to push configs to the config subsystem from Feature's configfiles
- */
-public class FeatureConfigPusher {
- private static final Logger LOG = LoggerFactory.getLogger(FeatureConfigPusher.class);
- private static final int MAX_RETRIES = 100;
- private static final int RETRY_PAUSE_MILLIS = 1;
-
- private FeaturesService featuresService = null;
- private ConfigPusher pusher = null;
-
- /*
- * A LinkedHashSet (to preserve order and insure uniqueness) of the pushedConfigs
- * This is used to prevent pushing duplicate configs if a Feature is in multiple dependency
- * chains. Also, preserves the *original* Feature chain for which we pushed the config.
- * (which is handy for logging).
- */
- private final Set<FeatureConfigSnapshotHolder> pushedConfigs = new LinkedHashSet<>();
-
- /*
- * LinkedHashMultimap to track which configs we pushed for each Feature installation
- * For future use
- */
- private final LinkedHashMultimap<Feature,FeatureConfigSnapshotHolder> feature2configs = LinkedHashMultimap.create();
-
- /*
- * @param p - ConfigPusher to push ConfigSnapshotHolders
- */
- public FeatureConfigPusher(final ConfigPusher p, final FeaturesService f) {
- pusher = p;
- featuresService = f;
- }
- /*
- * Push config files from Features to config subsystem
- * @param features - list of Features to extract config files from recursively and push
- * to the config subsystem
- *
- * @return A LinkedHashMultimap of Features to the FeatureConfigSnapshotHolder actually pushed
- * If a Feature is not in the returned LinkedHashMultimap then we couldn't push its configs
- * (Ususally because it was not yet installed)
- */
- public LinkedHashMultimap<Feature, FeatureConfigSnapshotHolder> pushConfigs(final List<Feature> features)
- throws Exception {
- LinkedHashMultimap<Feature, FeatureConfigSnapshotHolder> pushedFeatures = LinkedHashMultimap.create();
- for (Feature feature : features) {
- Set<FeatureConfigSnapshotHolder> configSnapShots = pushConfig(feature);
- if (!configSnapShots.isEmpty()) {
- pushedFeatures.putAll(feature, configSnapShots);
- }
- }
- return pushedFeatures;
- }
-
- private Set<FeatureConfigSnapshotHolder> pushConfig(final Feature feature) throws Exception {
- // Ignore feature conditions — these encode conditions on other features and shouldn't be processed here
- if (feature.getName().contains("-condition-")) {
- LOG.debug("Ignoring conditional feature {}", feature);
- return Collections.emptySet();
- }
- // pax-exam's Karaf container generates a wrapper feature holding the test dependencies. Ignore it.
- if ("test-dependencies".equals(feature.getName())) {
- LOG.debug("Ignoring pax-exam wrapper feature {}", feature);
- return Collections.emptySet();
- }
-
- if (!isInstalled(feature)) {
- return Collections.emptySet();
- }
- // FIXME Workaround for BUG-2836, features service returns null for feature:
- // standard-condition-webconsole_0_0_0, 3.0.1
- if (featuresService.getFeature(feature.getName(), feature.getVersion()) == null) {
- LOG.debug("Feature: {}, {} is missing from features service. Skipping", feature.getName(),
- feature.getVersion());
- return Collections.emptySet();
- }
-
- ChildAwareFeatureWrapper wrappedFeature = new ChildAwareFeatureWrapper(feature, featuresService);
- Set<FeatureConfigSnapshotHolder> configs = wrappedFeature.getFeatureConfigSnapshotHolders();
- if (!configs.isEmpty()) {
- configs = pushConfig(configs, feature);
- feature2configs.putAll(feature, configs);
- }
- return configs;
- }
-
- private boolean isInstalled(final Feature feature) throws InterruptedException {
- for (int retries = 0; retries < MAX_RETRIES; retries++) {
- try {
- List<Feature> installedFeatures = Arrays.asList(featuresService.listInstalledFeatures());
- if (installedFeatures.contains(feature)) {
- return true;
- }
-
- LOG.info("Karaf Feature Service has not yet finished installing feature {}/{} (retry {})",
- feature.getName(), feature.getVersion(), retries);
- } catch (final Exception e) {
- LOG.warn("Karaf featuresService.listInstalledFeatures() has thrown an exception, retry {}", retries, e);
- }
-
- TimeUnit.MILLISECONDS.sleep(RETRY_PAUSE_MILLIS);
- }
- LOG.error("Giving up (after {} retries) on Karaf featuresService.listInstalledFeatures() which has not yet finished installing feature {} {}",
- MAX_RETRIES, feature.getName(), feature.getVersion());
- return false;
- }
-
- private Set<FeatureConfigSnapshotHolder> pushConfig(final Set<FeatureConfigSnapshotHolder> configs,
- final Feature feature) throws InterruptedException {
- Set<FeatureConfigSnapshotHolder> configsToPush = new LinkedHashSet<>(configs);
- configsToPush.removeAll(pushedConfigs);
- if (!configsToPush.isEmpty()) {
-
- // Ignore features that are present in persisted current config
- final Optional<XmlFileStorageAdapter> currentCfgPusher = XmlFileStorageAdapter.getInstance();
- if (currentCfgPusher.isPresent() &&
- currentCfgPusher.get().getPersistedFeatures().contains(feature.getId())) {
- LOG.warn("Ignoring default configuration {} for feature {}, the configuration is present in {}",
- configsToPush, feature.getId(), currentCfgPusher.get());
- } else {
- pusher.pushConfigs(new ArrayList<>(configsToPush));
- }
-
- pushedConfigs.addAll(configsToPush);
- }
- Set<FeatureConfigSnapshotHolder> configsPushed = new LinkedHashSet<>(pushedConfigs);
- configsPushed.retainAll(configs);
- return configsPushed;
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature.internal;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import java.io.File;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.SortedSet;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Unmarshaller;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.transform.stream.StreamSource;
-import org.apache.karaf.features.ConfigFileInfo;
-import org.apache.karaf.features.Feature;
-import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
-import org.opendaylight.controller.config.persist.storage.file.xml.model.ConfigSnapshot;
-
-/*
- * A ConfigSnapshotHolder that can track all the additional information
- * relavent to the fact we are getting these from a Feature.
- *
- * Includes tracking the 'featureChain' - an reverse ordered list of the dependency
- * graph of features that caused us to push this FeatureConfigSnapshotHolder.
- * So if A -> B -> C, then the feature chain would be C -> B -> A
- */
-public class FeatureConfigSnapshotHolder implements ConfigSnapshotHolder {
- private ConfigSnapshot unmarshalled = null;
- private ConfigFileInfo fileInfo = null;
- private List<Feature> featureChain = new ArrayList<>();
-
- /*
- * @param holder - FeatureConfigSnapshotHolder that we
- * @param feature - new
- */
- public FeatureConfigSnapshotHolder(final FeatureConfigSnapshotHolder holder, final Feature feature) throws JAXBException, XMLStreamException {
- this(holder.fileInfo,holder.getFeature());
- this.featureChain.add(feature);
- }
-
- /*
- * Create a FeatureConfigSnapshotHolder for a given ConfigFileInfo and record the associated
- * feature we are creating it from.
- * @param fileInfo - ConfigFileInfo to read into the ConfigSnapshot
- * @param feature - Feature the ConfigFileInfo was attached to
- */
- public FeatureConfigSnapshotHolder(final ConfigFileInfo fileInfo, final Feature feature) throws JAXBException, XMLStreamException {
- Preconditions.checkNotNull(fileInfo);
- Preconditions.checkNotNull(fileInfo.getFinalname());
- Preconditions.checkNotNull(feature);
- this.fileInfo = fileInfo;
- this.featureChain.add(feature);
- // TODO extract utility method for umarshalling config snapshots
- JAXBContext jaxbContext = JAXBContext.newInstance(ConfigSnapshot.class);
- Unmarshaller um = jaxbContext.createUnmarshaller();
- XMLInputFactory xif = XMLInputFactory.newFactory();
- xif.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
- xif.setProperty(XMLInputFactory.SUPPORT_DTD, false);
-
- XMLStreamReader xsr = xif.createXMLStreamReader(new StreamSource(new File(fileInfo.getFinalname())));
- unmarshalled = (ConfigSnapshot) um.unmarshal(xsr);
- }
- /*
- * (non-Javadoc)
- * @see java.lang.Object#hashCode()
- *
- * We really care most about the underlying ConfigShapshot, so compute hashcode on that
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((unmarshalled != null && unmarshalled.getConfigSnapshot() == null) ? 0 : unmarshalled.getConfigSnapshot().hashCode());
- return result;
- }
- /*
- * (non-Javadoc)
- * @see java.lang.Object#equals(java.lang.Object)
- * *
- * We really care most about the underlying ConfigShapshot, so compute equality on that
- */
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- FeatureConfigSnapshotHolder fcsh = (FeatureConfigSnapshotHolder)obj;
- if(this.unmarshalled.getConfigSnapshot().equals(fcsh.unmarshalled.getConfigSnapshot())) {
- return true;
- }
- return false;
- }
-
- @Override
- public String toString() {
- StringBuilder b = new StringBuilder();
- Path p = Paths.get(fileInfo.getFinalname());
- b.append(p.getFileName())
- .append("(")
- .append(getCauseFeature())
- .append(",")
- .append(getFeature())
- .append(")");
- return b.toString();
- }
-
- @Override
- public String getConfigSnapshot() {
- return unmarshalled.getConfigSnapshot();
- }
-
- @Override
- public SortedSet<String> getCapabilities() {
- return unmarshalled.getCapabilities();
- }
-
- public ConfigFileInfo getFileInfo() {
- return fileInfo;
- }
-
- /*
- * @returns The original feature to which the ConfigFileInfo was attached
- * Example:
- * A -> B -> C, ConfigFileInfo Foo is attached to C.
- * feature:install A
- * thus C is the 'Feature' Foo was attached.
- */
- public Feature getFeature() {
- return featureChain.get(0);
- }
-
- /*
- * @return The dependency chain of the features that caused the ConfigFileInfo to be pushed in reverse order.
- * Example:
- * A -> B -> C, ConfigFileInfo Foo is attached to C.
- * The returned list is
- * [C,B,A]
- */
- public ImmutableList<Feature> getFeatureChain() {
- return ImmutableList.copyOf(Lists.reverse(featureChain));
- }
-
- /*
- * @return The feature the installation of which was the root cause
- * of this pushing of the ConfigFileInfo.
- * Example:
- * A -> B -> C, ConfigFileInfo Foo is attached to C.
- * feature:install A
- * this A is the 'Cause' of the installation of Foo.
- */
- public Feature getCauseFeature() {
- return Iterables.getLast(featureChain);
- }
-}
+++ /dev/null
-/*
- * Copyright (c) 2014 Cisco 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
- */
-package org.opendaylight.controller.configpusherfeature.internal;
-
-import com.google.common.base.Optional;
-import com.google.common.collect.Sets;
-
-import java.util.Set;
-
-import org.apache.karaf.features.Feature;
-import org.apache.karaf.features.FeaturesListener;
-import org.apache.karaf.features.FeaturesService;
-import org.opendaylight.controller.config.persist.api.ConfigPusher;
-import org.opendaylight.controller.config.persist.storage.file.xml.XmlFileStorageAdapter;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class FeatureServiceCustomizer implements ServiceTrackerCustomizer<FeaturesService, FeaturesService>, AutoCloseable {
- private static final Logger LOG = LoggerFactory.getLogger(FeatureServiceCustomizer.class);
- private ConfigPusher configPusher = null;
- private ServiceRegistration<?> registration;
-
- FeatureServiceCustomizer(final ConfigPusher c) {
- configPusher = c;
- }
-
- @Override
- public FeaturesService addingService(final ServiceReference<FeaturesService> reference) {
- BundleContext bc = reference.getBundle().getBundleContext();
- final FeaturesService featureService = bc.getService(reference);
- final Optional<XmlFileStorageAdapter> currentPersister = XmlFileStorageAdapter.getInstance();
-
- if (XmlFileStorageAdapter.getInstance().isPresent()) {
- final Set<String> installedFeatureIds = Sets.newHashSet();
- try {
- for (final Feature installedFeature : featureService.listInstalledFeatures()) {
- installedFeatureIds.add(installedFeature.getId());
- }
- } catch (final Exception e) {
- LOG.error("Error listing installed features", e);
- }
-
- currentPersister.get().setFeaturesService(() -> installedFeatureIds);
- }
- ConfigFeaturesListener configFeaturesListener = new ConfigFeaturesListener(configPusher, featureService);
- registration = bc.registerService(FeaturesListener.class.getCanonicalName(), configFeaturesListener, null);
- return featureService;
- }
-
- @Override
- public void modifiedService(final ServiceReference<FeaturesService> reference,
- final FeaturesService service) {
- // we don't care if the properties change
- }
-
- @Override
- public void removedService(final ServiceReference<FeaturesService> reference,
- final FeaturesService service) {
- close();
- }
-
- @Override
- public void close() {
- if (registration != null) {
- registration.unregister();
- registration = null;
- }
- }
-}
<module>config-persister-api</module>
<module>config-persister-file-xml-adapter</module>
<module>config-persister-feature-adapter</module>
- <module>config-persister-feature4-adapter</module>
<module>config-manager-facade-xml</module>
<module>yang-jmx-generator</module>
<module>yang-jmx-generator-plugin</module>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<mdsal.version>1.6.0-SNAPSHOT</mdsal.version>
<karaf.distro.groupId>org.opendaylight.odlparent</karaf.distro.groupId>
<karaf.distro.artifactId>opendaylight-karaf-empty</karaf.distro.artifactId>
- <karaf.distro.version>1.9.0</karaf.distro.version>
+ <karaf.distro.version>2.0.0</karaf.distro.version>
<karaf.distro.type>zip</karaf.distro.type>
<karaf.keep.unpack>false</karaf.keep.unpack>
</properties>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright © 2016 Red Hat and others. All rights reserved.
+<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>
-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 INTERNAL
--->
-<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>
+ <groupId>org.opendaylight.odlparent</groupId>
+ <artifactId>feature-repo-parent</artifactId>
+ <version>2.0.0</version>
+ <relativePath/>
+ </parent>
- <parent>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>features-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>mdsal-trace-features</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- <name>${project.artifactId}</name>
-
- <dependencyManagement>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>features-mdsal-trace</artifactId>
+ <version>1.6.0-SNAPSHOT</version>
+ <name>OpenDaylight :: TracingBroker</name>
+ <packaging>feature</packaging>
<dependencies>
- <!-- project specific dependencies -->
- <dependency>
- <groupId>org.opendaylight.mdsal</groupId>
- <artifactId>mdsal-artifacts</artifactId>
- <version>2.3.0-SNAPSHOT</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>mdsal-artifacts</artifactId>
- <version>${project.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>odl-mdsal-trace</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
</dependencies>
- </dependencyManagement>
-
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features-mdsal</artifactId>
- <classifier>features</classifier>
- <type>xml</type>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>mdsal-trace-dom-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>mdsal-trace-binding-impl</artifactId>
- </dependency>
- <dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>mdsal-trace-api</artifactId>
- </dependency>
- </dependencies>
</project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright © 2016 Red Hat 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-mdsaltrace-${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">
- <repository>mvn:org.opendaylight.controller/features-mdsal/{{VERSION}}/xml/features</repository>
- <repository>mvn:org.opendaylight.yangtools/features-yangtools/{{VERSION}}/xml/features</repository>
-
- <feature name='odl-mdsal-trace' version='${project.version}' description='OpenDaylight :: TracingBroker'>
- <feature version='${project.version}'>odl-mdsal-broker</feature>
- <feature version='${project.version}'>odl-mdsal-broker-local</feature>
- <bundle>mvn:org.opendaylight.controller/mdsal-trace-api/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/mdsal-trace-dom-impl/{{VERSION}}</bundle>
- <bundle>mvn:org.opendaylight.controller/mdsal-trace-binding-impl/{{VERSION}}</bundle>
- <configfile finalname="etc/opendaylight/datastore/initial/config/mdsaltrace_config.xml">mvn:org.opendaylight.controller/mdsal-trace-api/{{VERSION}}/xml/config</configfile>
- </feature>
-</features>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<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>
- <groupId>org.opendaylight.odlparent</groupId>
- <artifactId>feature-repo-parent</artifactId>
- <version>1.9.0</version>
- <relativePath/>
- </parent>
-
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>features4-mdsal-trace</artifactId>
- <version>1.6.0-SNAPSHOT</version>
- <name>OpenDaylight :: TracingBroker</name>
- <packaging>feature</packaging>
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>odl-mdsal-trace</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
- </dependencies>
-</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>single-feature-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<modules>
<module>features-mdsal-trace</module>
<module>odl-mdsal-trace</module>
- <module>features4-mdsal-trace</module>
</modules>
</project>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
*/
package org.opendaylight.controller.md.sal.common.impl.service;
-import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
Futures.immediateFuture(RpcResultBuilder.success(TransactionStatus.COMMITED).build());
public static ListenableFuture<RpcResult<TransactionStatus>> convertToLegacyCommitFuture(final CheckedFuture<Void,TransactionCommitFailedException> from) {
- return Futures.transform(from, (AsyncFunction<Void, RpcResult<TransactionStatus>>) input -> SUCCESS_FUTURE);
+ return Futures.transformAsync(from, input -> SUCCESS_FUTURE);
}
}
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath />
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.List;
import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
import org.slf4j.Logger;
private final TransactionIdentifier transactionId;
private Logger log = LOG;
- DebugThreePhaseCommitCohort(TransactionIdentifier transactionId, AbstractThreePhaseCommitCohort<?> delegate,
- Throwable debugContext) {
+ DebugThreePhaseCommitCohort(final TransactionIdentifier transactionId,
+ final AbstractThreePhaseCommitCohort<?> delegate, final Throwable debugContext) {
this.delegate = Preconditions.checkNotNull(delegate);
this.debugContext = Preconditions.checkNotNull(debugContext);
this.transactionId = Preconditions.checkNotNull(transactionId);
}
- private <V> ListenableFuture<V> addFutureCallback(ListenableFuture<V> future) {
+ private <V> ListenableFuture<V> addFutureCallback(final ListenableFuture<V> future) {
Futures.addCallback(future, new FutureCallback<V>() {
@Override
- public void onSuccess(V result) {
+ public void onSuccess(final V result) {
// no-op
}
@Override
- public void onFailure(Throwable failure) {
+ public void onFailure(final Throwable failure) {
log.warn("Transaction {} failed with error \"{}\" - was allocated in the following context",
transactionId, failure, debugContext);
}
- });
+ }, MoreExecutors.directExecutor());
return future;
}
}
@VisibleForTesting
- void setLogger(Logger log) {
+ void setLogger(final Logger log) {
this.log = log;
}
}
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
import org.opendaylight.controller.cluster.datastore.messages.AbstractRead;
private final LocalTransactionReadySupport readySupport;
private Exception operationError;
- LocalTransactionContext(DOMStoreTransaction txDelegate, TransactionIdentifier identifier,
- LocalTransactionReadySupport readySupport) {
+ LocalTransactionContext(final DOMStoreTransaction txDelegate, final TransactionIdentifier identifier,
+ final LocalTransactionReadySupport readySupport) {
super(identifier);
this.txDelegate = Preconditions.checkNotNull(txDelegate);
this.readySupport = readySupport;
@Override
@SuppressWarnings("checkstyle:IllegalCatch")
- public void executeModification(AbstractModification modification) {
+ public void executeModification(final AbstractModification modification) {
incrementModificationCount();
if (operationError == null) {
try {
}
@Override
- public <T> void executeRead(AbstractRead<T> readCmd, final SettableFuture<T> proxyFuture) {
+ public <T> void executeRead(final AbstractRead<T> readCmd, final SettableFuture<T> proxyFuture) {
Futures.addCallback(readCmd.apply(getReadDelegate()), new FutureCallback<T>() {
@Override
public void onSuccess(final T result) {
public void onFailure(final Throwable failure) {
proxyFuture.setException(failure);
}
- });
+ }, MoreExecutors.directExecutor());
}
private LocalThreePhaseCommitCohort ready() {
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import java.util.ArrayList;
import java.util.Collection;
return executeRead(shardNameFromIdentifier(path), new DataExists(path, DataStoreVersions.CURRENT_VERSION));
}
- private <T> CheckedFuture<T, ReadFailedException> executeRead(String shardName, final AbstractRead<T> readCmd) {
+ private <T> CheckedFuture<T, ReadFailedException> executeRead(final String shardName,
+ final AbstractRead<T> readCmd) {
Preconditions.checkState(type != TransactionType.WRITE_ONLY,
"Reads from write-only transactions are not allowed");
TransactionContextWrapper contextWrapper = getContextWrapper(shardName);
contextWrapper.maybeExecuteTransactionOperation(new TransactionOperation() {
@Override
- public void invoke(TransactionContext transactionContext) {
+ public void invoke(final TransactionContext transactionContext) {
transactionContext.executeRead(readCmd, proxyFuture);
}
});
} catch (DataValidationFailedException e) {
throw new IllegalArgumentException("Failed to aggregate", e);
}
- });
+ }, MoreExecutors.directExecutor());
return MappingCheckedFuture.create(aggregateFuture, ReadFailedException.MAPPER);
}
TransactionContextWrapper contextWrapper = getContextWrapper(modification.getPath());
contextWrapper.maybeExecuteTransactionOperation(new TransactionOperation() {
@Override
- protected void invoke(TransactionContext transactionContext) {
+ protected void invoke(final TransactionContext transactionContext) {
transactionContext.executeModification(modification);
}
});
for (TransactionContextWrapper contextWrapper : txContextWrappers.values()) {
contextWrapper.maybeExecuteTransactionOperation(new TransactionOperation() {
@Override
- public void invoke(TransactionContext transactionContext) {
+ public void invoke(final TransactionContext transactionContext) {
transactionContext.closeTransaction();
}
});
final Promise promise = akka.dispatch.Futures.promise();
contextWrapper.maybeExecuteTransactionOperation(new TransactionOperation() {
@Override
- public void invoke(TransactionContext newTransactionContext) {
+ public void invoke(final TransactionContext newTransactionContext) {
promise.completeWith(getDirectCommitFuture(newTransactionContext, operationCallbackRef));
}
});
operationCallbackRef);
}
- private Future<?> getDirectCommitFuture(TransactionContext transactionContext,
- OperationCallback.Reference operationCallbackRef) {
+ private Future<?> getDirectCommitFuture(final TransactionContext transactionContext,
+ final OperationCallback.Reference operationCallbackRef) {
TransactionRateLimitingCallback rateLimitingCallback = new TransactionRateLimitingCallback(
txContextFactory.getActorContext());
operationCallbackRef.set(rateLimitingCallback);
import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import java.util.Collection;
import java.util.concurrent.ExecutionException;
import org.opendaylight.controller.cluster.access.concepts.MemberName;
final AsyncFunction<Boolean, Void> validateFunction = input -> cohort.preCommit();
final AsyncFunction<Void, Void> prepareFunction = input -> cohort.commit();
- final ListenableFuture<Void> prepareFuture = Futures.transform(cohort.canCommit(), validateFunction);
- return Futures.transform(prepareFuture, prepareFunction);
+ final ListenableFuture<Void> prepareFuture = Futures.transformAsync(cohort.canCommit(), validateFunction,
+ MoreExecutors.directExecutor());
+ return Futures.transformAsync(prepareFuture, prepareFunction, MoreExecutors.directExecutor());
}
boolean checkDefaultIsPresent() {
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import java.util.ArrayList;
import java.util.Collection;
final AsyncFunction<Void, Void> prepareFunction = input -> commit();
// transform validate into prepare
- final ListenableFuture<Void> prepareFuture = Futures.transform(validate(), validateFunction);
+ final ListenableFuture<Void> prepareFuture = Futures.transformAsync(validate(), validateFunction,
+ MoreExecutors.directExecutor());
// transform prepare into commit and return as submit result
- return Futures.transform(prepareFuture, prepareFunction);
+ return Futures.transformAsync(prepareFuture, prepareFunction, MoreExecutors.directExecutor());
}
@Override
public void onFailure(final Throwable throwable) {
ret.setException(throwable);
}
- });
+ }, MoreExecutors.directExecutor());
return ret;
}
public void onFailure(final Throwable throwable) {
ret.setException(throwable);
}
- });
+ }, MoreExecutors.directExecutor());
return ret;
}
public void onFailure(final Throwable throwable) {
ret.setException(throwable);
}
- });
+ }, MoreExecutors.directExecutor());
return ret;
}
package org.opendaylight.controller.cluster.databroker;
import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.MockitoAnnotations;
import org.opendaylight.controller.cluster.access.client.ClientActorContext;
import org.opendaylight.controller.cluster.databroker.actors.dds.ClientSnapshot;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@Test
public void testRead() throws Exception {
- final CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> result = object().read(
+ final ListenableFuture<Optional<NormalizedNode<?, ?>>> result = object().read(
YangInstanceIdentifier.EMPTY);
final Optional<NormalizedNode<?, ?>> resultData = result.get();
Assert.assertTrue(resultData.isPresent());
@Test
public void testExists() throws Exception {
- final CheckedFuture<Boolean, ReadFailedException> result = object().exists(YangInstanceIdentifier.EMPTY);
+ final ListenableFuture<Boolean> result = object().exists(YangInstanceIdentifier.EMPTY);
Assert.assertTrue(result.get());
}
}
\ No newline at end of file
doReturn(Futures.immediateFuture(null)).when(mockCohort2).preCommit();
doReturn(Futures.immediateFuture(null)).when(mockCohort2).commit();
- CheckedFuture<Void, TransactionCommitFailedException> future = coordinator.submit(
- transaction, Arrays.asList(mockCohort1, mockCohort2));
+ ListenableFuture<Void> future = coordinator.submit(transaction, Arrays.asList(mockCohort1, mockCohort2));
final CountDownLatch doneLatch = new CountDownLatch(1);
final AtomicReference<Throwable> caughtEx = new AtomicReference<>();
caughtEx.set(failure);
doneLatch.countDown();
}
- });
+ }, MoreExecutors.directExecutor());
asyncCanCommitContinue.countDown();
import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtils.getWithTimeout;
import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.ListenableFuture;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@Test
public void testExists() throws Exception {
- final CheckedFuture<Boolean, ReadFailedException> exists = getHandle().exists(PATH);
+ final ListenableFuture<Boolean> exists = getHandle().exists(PATH);
verify(getDataTreeSnapshot()).readNode(PATH);
Assert.assertFalse(getWithTimeout(exists));
}
@Test
public void testRead() throws Exception {
- final CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> exists = getHandle().read(PATH);
+ final ListenableFuture<Optional<NormalizedNode<?, ?>>> exists = getHandle().read(PATH);
verify(getDataTreeSnapshot()).readNode(PATH);
Assert.assertFalse(getWithTimeout(exists).isPresent());
}
cause = e.getCause();
}
- Throwables.propagateIfInstanceOf(cause, Exception.class);
+ Throwables.throwIfInstanceOf(cause, Exception.class);
Throwables.propagate(cause);
}
}
final Failure failure = expectMsgClass(duration("5 seconds"), akka.actor.Status.Failure.class);
if (failure != null) {
- Throwables.propagateIfInstanceOf(failure.cause(), Exception.class);
+ Throwables.throwIfInstanceOf(failure.cause(), Exception.class);
Throwables.propagate(failure.cause());
}
}
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.Uninterruptibles;
import java.util.Collection;
import java.util.List;
propagateReadFailedExceptionCause(transactionProxy.read(TestModel.TEST_PATH));
}
- private void testExceptionOnInitialCreateTransaction(Exception exToThrow, Invoker invoker) throws Exception {
+ private void testExceptionOnInitialCreateTransaction(final Exception exToThrow, final Invoker invoker)
+ throws Exception {
ActorRef actorRef = getSystem().actorOf(Props.create(DoNothingActor.class));
if (exToThrow instanceof PrimaryNotFoundException) {
propagateReadFailedExceptionCause(invoker.invoke(transactionProxy));
}
- private void testReadWithExceptionOnInitialCreateTransaction(Exception exToThrow) throws Exception {
+ private void testReadWithExceptionOnInitialCreateTransaction(final Exception exToThrow) throws Exception {
testExceptionOnInitialCreateTransaction(exToThrow, proxy -> proxy.read(TestModel.TEST_PATH));
}
com.google.common.util.concurrent.Futures.addCallback(transactionProxy.read(TestModel.TEST_PATH),
new FutureCallback<Optional<NormalizedNode<?, ?>>>() {
@Override
- public void onSuccess(Optional<NormalizedNode<?, ?>> result) {
+ public void onSuccess(final Optional<NormalizedNode<?, ?>> result) {
try {
transactionProxy.write(TestModel.TEST_PATH, nodeToWrite);
} catch (Exception e) {
}
@Override
- public void onFailure(Throwable failure) {
+ public void onFailure(final Throwable failure) {
caughtEx.set(failure);
readComplete.countDown();
}
- });
+ }, MoreExecutors.directExecutor());
createTxPromise.success(createTransactionReply(actorRef, DataStoreVersions.CURRENT_VERSION));
verifyCohortFutures((SingleCommitCohortProxy)ready, RuntimeException.class);
}
- private void testWriteOnlyTxWithFindPrimaryShardFailure(Exception toThrow) throws Exception {
+ private void testWriteOnlyTxWithFindPrimaryShardFailure(final Exception toThrow) throws Exception {
doReturn(Futures.failed(toThrow)).when(mockActorContext).findPrimaryShardAsync(anyString());
TransactionProxy transactionProxy = new TransactionProxy(mockComponentFactory, WRITE_ONLY);
void run(TransactionProxy transactionProxy);
}
- private PrimaryShardInfo newPrimaryShardInfo(ActorRef actorRef) {
+ private PrimaryShardInfo newPrimaryShardInfo(final ActorRef actorRef) {
return new PrimaryShardInfo(getSystem().actorSelection(actorRef.path()), DataStoreVersions.CURRENT_VERSION);
}
- private PrimaryShardInfo newPrimaryShardInfo(ActorRef actorRef, DataTree dataTree) {
+ private PrimaryShardInfo newPrimaryShardInfo(final ActorRef actorRef, final DataTree dataTree) {
return new PrimaryShardInfo(getSystem().actorSelection(actorRef.path()), DataStoreVersions.CURRENT_VERSION,
dataTree);
}
- private void throttleOperation(TransactionProxyOperation operation) {
+ private void throttleOperation(final TransactionProxyOperation operation) {
throttleOperation(operation, 1, true);
}
- private void throttleOperation(TransactionProxyOperation operation, int outstandingOpsLimit, boolean shardFound) {
+ private void throttleOperation(final TransactionProxyOperation operation, final int outstandingOpsLimit,
+ final boolean shardFound) {
throttleOperation(operation, outstandingOpsLimit, shardFound, TimeUnit.MILLISECONDS.toNanos(
mockActorContext.getDatastoreContext().getOperationTimeoutInMillis()));
}
- private void throttleOperation(TransactionProxyOperation operation, int outstandingOpsLimit, boolean shardFound,
- long expectedCompletionTime) {
+ private void throttleOperation(final TransactionProxyOperation operation, final int outstandingOpsLimit,
+ final boolean shardFound, final long expectedCompletionTime) {
ActorSystem actorSystem = getSystem();
ActorRef shardActorRef = actorSystem.actorOf(Props.create(DoNothingActor.class));
}
- private void completeOperation(TransactionProxyOperation operation) {
+ private void completeOperation(final TransactionProxyOperation operation) {
completeOperation(operation, true);
}
- private void completeOperation(TransactionProxyOperation operation, boolean shardFound) {
+ private void completeOperation(final TransactionProxyOperation operation, final boolean shardFound) {
ActorSystem actorSystem = getSystem();
ActorRef shardActorRef = actorSystem.actorOf(Props.create(DoNothingActor.class));
expected, end - start), end - start <= expected);
}
- private void completeOperationLocal(TransactionProxyOperation operation, DataTree dataTree) {
+ private void completeOperationLocal(final TransactionProxyOperation operation, final DataTree dataTree) {
ActorSystem actorSystem = getSystem();
ActorRef shardActorRef = actorSystem.actorOf(Props.create(DoNothingActor.class));
return dataTree;
}
- private static DataTree createDataTree(NormalizedNode<?, ?> readResponse) {
+ private static DataTree createDataTree(final NormalizedNode<?, ?> readResponse) {
DataTree dataTree = mock(DataTree.class);
DataTreeSnapshot dataTreeSnapshot = mock(DataTreeSnapshot.class);
DataTreeModification dataTreeModification = mock(DataTreeModification.class);
.getOperationTimeoutInMillis()) * 2);
}
- private void testModificationOperationBatching(TransactionType type) throws Exception {
+ private void testModificationOperationBatching(final TransactionType type) throws Exception {
int shardBatchedModificationCount = 3;
dataStoreContextBuilder.shardBatchedModificationCount(shardBatchedModificationCount);
}
- private void setUpReadData(String shardName, NormalizedNode<?, ?> expectedNode) {
+ private void setUpReadData(final String shardName, final NormalizedNode<?, ?> expectedNode) {
ActorSystem actorSystem = getSystem();
ActorRef shardActorRef = getSystem().actorOf(Props.create(DoNothingActor.class));
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
-import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.SettableFuture;
import java.util.Map;
import java.util.Queue;
@Override
public ListenableFuture<RpcResult<TransactionStatus>> commit() {
- return Futures.transform(submit(), (AsyncFunction<Void, RpcResult<TransactionStatus>>) input -> SUCCESS_FUTURE);
+ return Futures.transformAsync(submit(), input -> SUCCESS_FUTURE, MoreExecutors.directExecutor());
}
@Override
public void onFailure(final Throwable t) {
readResult.setException(t);
}
- });
+ }, MoreExecutors.directExecutor());
return Futures.makeChecked(readResult, ReadFailedException.MAPPER);
}
import static com.google.common.base.Preconditions.checkNotNull;
-import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@Override
public ListenableFuture<RpcResult<TransactionStatus>> commit() {
- return Futures.transform(submit(), (AsyncFunction<Void, RpcResult<TransactionStatus>>) input -> SUCCESS_FUTURE);
+ return Futures.transformAsync(submit(), input -> SUCCESS_FUTURE);
}
@Override
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
import akka.actor.Props;
import com.google.common.base.Preconditions;
import com.google.common.base.Throwables;
-import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor;
-import org.opendaylight.controller.md.sal.dom.api.DOMRpcException;
import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult;
import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
import org.opendaylight.controller.remote.rpc.messages.ExecuteRpc;
final ActorRef sender = getSender();
final ActorRef self = self();
- final CheckedFuture<DOMRpcResult, DOMRpcException> future;
+ final ListenableFuture<DOMRpcResult> future;
try {
future = rpcService.invokeRpc(schemaPath, msg.getInputNormalizedNode());
} catch (final RuntimeException e) {
msg.getRpc(), Throwables.getRootCause(failure));
sender.tell(new akka.actor.Status.Failure(failure), self);
}
- });
+ }, MoreExecutors.directExecutor());
}
}
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>bundle-parent</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
-import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.JdkFutureAdapters;
import com.google.common.util.concurrent.ListenableFuture;
// Then transform the RpcResults into 1.
- return Futures.transform(combinedFutures,
- (AsyncFunction<List<RpcResult<Void>>, RpcResult<Void>>) results -> {
- boolean atLeastOneSucceeded = false;
- Builder<RpcError> errorList = ImmutableList.builder();
- for (RpcResult<Void> result : results) {
- if (result.isSuccessful()) {
- atLeastOneSucceeded = true;
- }
-
- if (result.getErrors() != null) {
- errorList.addAll(result.getErrors());
- }
+ return Futures.transformAsync(combinedFutures, results -> {
+ boolean atLeastOneSucceeded = false;
+ Builder<RpcError> errorList = ImmutableList.builder();
+ for (RpcResult<Void> result : results) {
+ if (result.isSuccessful()) {
+ atLeastOneSucceeded = true;
}
- return Futures.immediateFuture(RpcResultBuilder.<Void>status(atLeastOneSucceeded)
- .withRpcErrors(errorList.build()).build());
- });
+ if (result.getErrors() != null) {
+ errorList.addAll(result.getErrors());
+ }
+ }
+
+ return Futures.immediateFuture(RpcResultBuilder.<Void>status(atLeastOneSucceeded)
+ .withRpcErrors(errorList.build()).build());
+ });
}
private ListenableFuture<RpcResult<Void>> makeEggs(EggsType eggsType) {
import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.AsyncFunction;
import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
ListenableFuture<Optional<Toaster>> readFuture = tx.read(OPERATIONAL, TOASTER_IID);
final ListenableFuture<Void> commitFuture =
- Futures.transform(readFuture, (AsyncFunction<Optional<Toaster>, Void>) toasterData -> {
+ Futures.transformAsync(readFuture, toasterData -> {
ToasterStatus toasterStatus = ToasterStatus.Up;
if (toasterData.isPresent()) {
toasterStatus = toasterData.get().getToasterStatus();
<parent>
<groupId>org.opendaylight.odlparent</groupId>
<artifactId>odlparent-lite</artifactId>
- <version>1.9.0</version>
+ <version>2.0.0</version>
<relativePath/>
</parent>
<groupId>org.opendaylight.controller</groupId>