summaryrefslogtreecommitdiffstats
path: root/infra
diff options
context:
space:
mode:
authorJan Srnicek <jsrnicek@cisco.com>2017-06-30 15:10:27 +0200
committerMarek Gradzki <mgradzki@cisco.com>2017-06-30 13:15:25 +0000
commita90863760d1ae1a92520ce29841aec600d25a83a (patch)
tree5bf9d20b61d2a14d6f44306ef021e754088d8abc /infra
parent62dd4d32fd270d3a6b7bb47c972bbcd5dc7b9f43 (diff)
HONEYCOMB-358 - Conditional module loading
Change-Id: Ic9b7182cc77bf2f73cf5edd3ee19f25f53711cda Signed-off-by: Jan Srnicek <jsrnicek@cisco.com>
Diffstat (limited to 'infra')
-rw-r--r--infra/bgp-distribution-test/asciidoc/Readme.adoc6
-rw-r--r--infra/bgp-distribution-test/pom.xml59
-rw-r--r--infra/bgp-distribution-test/src/test/java/io/fd/honeycomb/infra/bgp/distro/BgpDistributionTest.java (renamed from infra/bgp-distribution/src/test/java/io/fd/honeycomb/infra/bgp/distro/BgpDistributionTest.java)0
-rw-r--r--infra/bgp-distribution-test/src/test/resources/WEB-INF/web.xml (renamed from infra/bgp-distribution/src/test/resources/WEB-INF/web.xml)0
-rw-r--r--infra/bgp-distribution-test/src/test/resources/activation.json4
-rw-r--r--infra/bgp-distribution-test/src/test/resources/base-distro-test-modules/base-modules (renamed from infra/bgp-distribution/src/test/resources/base-distro-test-modules/base-modules)0
-rw-r--r--infra/bgp-distribution-test/src/test/resources/bgp-peers.json (renamed from infra/bgp-distribution/src/test/resources/bgp-peers.json)0
-rw-r--r--infra/bgp-distribution-test/src/test/resources/bgp.json (renamed from infra/bgp-distribution/src/test/resources/bgp.json)0
-rw-r--r--infra/bgp-distribution-test/src/test/resources/honeycomb-keystore (renamed from infra/bgp-distribution/src/test/resources/honeycomb-keystore)bin2392 -> 2392 bytes
-rw-r--r--infra/bgp-distribution-test/src/test/resources/honeycomb.json (renamed from infra/bgp-distribution/src/test/resources/honeycomb.json)0
-rw-r--r--infra/bgp-distribution-test/src/test/resources/logback.xml (renamed from infra/bgp-distribution/src/test/resources/logback.xml)0
-rw-r--r--infra/bgp-distribution/pom.xml19
-rw-r--r--infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json3
-rw-r--r--infra/bgp-distribution/src/test/resources/activation.json3
-rw-r--r--infra/minimal-distribution-test/asciidoc/Readme.adoc6
-rw-r--r--infra/minimal-distribution-test/pom.xml98
-rw-r--r--infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/BaseMinimalDistributionTest.java (renamed from infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/BaseMinimalDistributionTest.java)0
-rw-r--r--infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/Modules.java (renamed from infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/Modules.java)0
-rw-r--r--infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProviderTest.java (renamed from infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProviderTest.java)5
-rw-r--r--infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndexTest.java74
-rw-r--r--infra/minimal-distribution-test/src/test/resources/WEB-INF/web.xml (renamed from infra/minimal-distribution/src/test/resources/WEB-INF/web.xml)0
-rw-r--r--infra/minimal-distribution-test/src/test/resources/activation.json4
-rw-r--r--infra/minimal-distribution-test/src/test/resources/base-distro-test-modules/base-modules (renamed from infra/minimal-distribution/src/test/resources/base-distro-test-modules/base-modules)0
-rw-r--r--infra/minimal-distribution-test/src/test/resources/honeycomb-keystore (renamed from infra/minimal-distribution/src/test/resources/honeycomb-keystore)bin2392 -> 2392 bytes
-rw-r--r--infra/minimal-distribution-test/src/test/resources/honeycomb.json (renamed from infra/minimal-distribution/src/test/resources/honeycomb.json)0
-rw-r--r--infra/minimal-distribution-test/src/test/resources/logback.xml (renamed from infra/minimal-distribution/src/test/resources/logback.xml)0
-rw-r--r--infra/minimal-distribution-test/src/test/resources/modules/module-config-one.txt (renamed from infra/minimal-distribution/src/test/resources/modules/module-config-one.txt)0
-rw-r--r--infra/minimal-distribution-test/src/test/resources/modules/module-config-two.txt (renamed from infra/minimal-distribution/src/test/resources/modules/module-config-two.txt)0
-rw-r--r--infra/minimal-distribution-test/src/test/resources/static-yang-index/yang-index9
-rw-r--r--infra/minimal-distribution/pom.xml30
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/Main.java1
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActivationConfig.java8
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProvider.java2
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java11
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ResourceLoader.java135
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java57
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndex.java69
-rw-r--r--infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java97
-rw-r--r--infra/minimal-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json3
-rw-r--r--infra/minimal-distribution/src/test/resources/activation.json3
-rw-r--r--infra/pom.xml2
41 files changed, 591 insertions, 117 deletions
diff --git a/infra/bgp-distribution-test/asciidoc/Readme.adoc b/infra/bgp-distribution-test/asciidoc/Readme.adoc
new file mode 100644
index 000000000..25762d25f
--- /dev/null
+++ b/infra/bgp-distribution-test/asciidoc/Readme.adoc
@@ -0,0 +1,6 @@
+= bgp-distribution-test
+
+Distribution tests use generated files(yang-module-index)
+that are generated after the build phase that maven invoke unit test.
+Therefore these tests must be part or separate project that uses distribution
+as dependency that has these files allready generated. \ No newline at end of file
diff --git a/infra/bgp-distribution-test/pom.xml b/infra/bgp-distribution-test/pom.xml
new file mode 100644
index 000000000..34eeda39b
--- /dev/null
+++ b/infra/bgp-distribution-test/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (c) 2017 Cisco and/or its affiliates.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at:
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<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>
+ <artifactId>impl-parent</artifactId>
+ <groupId>io.fd.honeycomb.common</groupId>
+ <version>1.17.07-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>io.fd.honeycomb</groupId>
+ <artifactId>bgp-distribution-test</artifactId>
+ <version>1.17.07-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.fd.honeycomb</groupId>
+ <artifactId>bgp-distribution</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- test dependencies -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.mashape.unirest</groupId>
+ <artifactId>unirest-java</artifactId>
+ <version>1.4.9</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.jcraft</groupId>
+ <artifactId>jsch</artifactId>
+ <version>0.1.54</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/infra/bgp-distribution/src/test/java/io/fd/honeycomb/infra/bgp/distro/BgpDistributionTest.java b/infra/bgp-distribution-test/src/test/java/io/fd/honeycomb/infra/bgp/distro/BgpDistributionTest.java
index be927a64e..be927a64e 100644
--- a/infra/bgp-distribution/src/test/java/io/fd/honeycomb/infra/bgp/distro/BgpDistributionTest.java
+++ b/infra/bgp-distribution-test/src/test/java/io/fd/honeycomb/infra/bgp/distro/BgpDistributionTest.java
diff --git a/infra/bgp-distribution/src/test/resources/WEB-INF/web.xml b/infra/bgp-distribution-test/src/test/resources/WEB-INF/web.xml
index 6cf487170..6cf487170 100644
--- a/infra/bgp-distribution/src/test/resources/WEB-INF/web.xml
+++ b/infra/bgp-distribution-test/src/test/resources/WEB-INF/web.xml
diff --git a/infra/bgp-distribution-test/src/test/resources/activation.json b/infra/bgp-distribution-test/src/test/resources/activation.json
new file mode 100644
index 000000000..687b51277
--- /dev/null
+++ b/infra/bgp-distribution-test/src/test/resources/activation.json
@@ -0,0 +1,4 @@
+{
+ "modules-resource-path": "base-distro-test-modules",
+ "yang-modules-index-path": "honeycomb-minimal-resources/yang-mapping"
+} \ No newline at end of file
diff --git a/infra/bgp-distribution/src/test/resources/base-distro-test-modules/base-modules b/infra/bgp-distribution-test/src/test/resources/base-distro-test-modules/base-modules
index 18602a0ad..18602a0ad 100644
--- a/infra/bgp-distribution/src/test/resources/base-distro-test-modules/base-modules
+++ b/infra/bgp-distribution-test/src/test/resources/base-distro-test-modules/base-modules
diff --git a/infra/bgp-distribution/src/test/resources/bgp-peers.json b/infra/bgp-distribution-test/src/test/resources/bgp-peers.json
index 3a7e01060..3a7e01060 100644
--- a/infra/bgp-distribution/src/test/resources/bgp-peers.json
+++ b/infra/bgp-distribution-test/src/test/resources/bgp-peers.json
diff --git a/infra/bgp-distribution/src/test/resources/bgp.json b/infra/bgp-distribution-test/src/test/resources/bgp.json
index 494b6a965..494b6a965 100644
--- a/infra/bgp-distribution/src/test/resources/bgp.json
+++ b/infra/bgp-distribution-test/src/test/resources/bgp.json
diff --git a/infra/bgp-distribution/src/test/resources/honeycomb-keystore b/infra/bgp-distribution-test/src/test/resources/honeycomb-keystore
index 44093dc09..44093dc09 100644
--- a/infra/bgp-distribution/src/test/resources/honeycomb-keystore
+++ b/infra/bgp-distribution-test/src/test/resources/honeycomb-keystore
Binary files differ
diff --git a/infra/bgp-distribution/src/test/resources/honeycomb.json b/infra/bgp-distribution-test/src/test/resources/honeycomb.json
index a0b2a633c..a0b2a633c 100644
--- a/infra/bgp-distribution/src/test/resources/honeycomb.json
+++ b/infra/bgp-distribution-test/src/test/resources/honeycomb.json
diff --git a/infra/bgp-distribution/src/test/resources/logback.xml b/infra/bgp-distribution-test/src/test/resources/logback.xml
index 2ee89db4e..2ee89db4e 100644
--- a/infra/bgp-distribution/src/test/resources/logback.xml
+++ b/infra/bgp-distribution-test/src/test/resources/logback.xml
diff --git a/infra/bgp-distribution/pom.xml b/infra/bgp-distribution/pom.xml
index 62bc95752..545885933 100644
--- a/infra/bgp-distribution/pom.xml
+++ b/infra/bgp-distribution/pom.xml
@@ -105,24 +105,5 @@
<groupId>org.opendaylight.bgpcep</groupId>
<artifactId>bgp-l3vpn</artifactId>
</dependency>
-
- <!-- test dependencies -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.mashape.unirest</groupId>
- <artifactId>unirest-java</artifactId>
- <version>1.4.9</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.jcraft</groupId>
- <artifactId>jsch</artifactId>
- <version>0.1.54</version>
- <scope>test</scope>
- </dependency>
</dependencies>
</project> \ No newline at end of file
diff --git a/infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json b/infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json
index 7b6f44a20..8dd168702 100644
--- a/infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json
+++ b/infra/bgp-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json
@@ -1,3 +1,4 @@
{
- "modules-resource-path": "../modules/"
+ "modules-resource-path": "../modules/",
+ "yang-modules-index-path": "../yang-mapping/"
} \ No newline at end of file
diff --git a/infra/bgp-distribution/src/test/resources/activation.json b/infra/bgp-distribution/src/test/resources/activation.json
deleted file mode 100644
index 7e2015123..000000000
--- a/infra/bgp-distribution/src/test/resources/activation.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "modules-resource-path": "base-distro-test-modules"
-} \ No newline at end of file
diff --git a/infra/minimal-distribution-test/asciidoc/Readme.adoc b/infra/minimal-distribution-test/asciidoc/Readme.adoc
new file mode 100644
index 000000000..c5816f222
--- /dev/null
+++ b/infra/minimal-distribution-test/asciidoc/Readme.adoc
@@ -0,0 +1,6 @@
+= minimal-distribution-test
+
+Distribution tests use generated files(yang-module-index)
+that are generated after the build phase that maven invoke unit test.
+Therefore these tests must be part or separate project that uses distribution
+as dependency that has these files allready generated. \ No newline at end of file
diff --git a/infra/minimal-distribution-test/pom.xml b/infra/minimal-distribution-test/pom.xml
new file mode 100644
index 000000000..e9fdffad6
--- /dev/null
+++ b/infra/minimal-distribution-test/pom.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (c) 2017 Cisco and/or its affiliates.
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at:
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<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>
+ <artifactId>impl-parent</artifactId>
+ <groupId>io.fd.honeycomb.common</groupId>
+ <version>1.17.07-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>io.fd.honeycomb</groupId>
+ <artifactId>minimal-distribution-test</artifactId>
+ <version>1.17.07-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>io.fd.honeycomb</groupId>
+ <artifactId>minimal-distribution</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- Utilities -->
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.7.25</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- DI-->
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>net.jmob</groupId>
+ <artifactId>guice.conf</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject.extensions</groupId>
+ <artifactId>guice-multibindings</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.mashape.unirest</groupId>
+ <artifactId>unirest-java</artifactId>
+ <version>1.4.9</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.jcraft</groupId>
+ <artifactId>jsch</artifactId>
+ <version>0.1.54</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.hamcrest</groupId>
+ <artifactId>hamcrest-all</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/BaseMinimalDistributionTest.java b/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/BaseMinimalDistributionTest.java
index e39dba8a0..e39dba8a0 100644
--- a/infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/BaseMinimalDistributionTest.java
+++ b/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/BaseMinimalDistributionTest.java
diff --git a/infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/Modules.java b/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/Modules.java
index e30fb87ca..e30fb87ca 100644
--- a/infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/Modules.java
+++ b/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/Modules.java
diff --git a/infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProviderTest.java b/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProviderTest.java
index fd2c6c860..b411d043e 100644
--- a/infra/minimal-distribution/src/test/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProviderTest.java
+++ b/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProviderTest.java
@@ -28,6 +28,7 @@ import static org.hamcrest.core.Is.is;
import com.google.common.collect.ImmutableList;
import com.google.inject.Module;
+import io.fd.honeycomb.infra.distro.Modules;
import java.util.List;
import java.util.Set;
import org.junit.Test;
@@ -52,8 +53,8 @@ public class ActiveModuleProviderTest {
// last one does is not ancestor of Module, so it should be ignored/skipped
assertThat(activeModules, hasSize(2));
//hasItems or containsInAnyOrder does not have/is deprecated in variant with matcher
- assertThat(activeModules, hasItem(isA(io.fd.honeycomb.infra.distro.Modules.ChildModule2.class)));
- assertThat(activeModules, hasItem(isA(io.fd.honeycomb.infra.distro.Modules.ChildModule3.class)));
+ assertThat(activeModules, hasItem(isA(Modules.ChildModule2.class)));
+ assertThat(activeModules, hasItem(isA(Modules.ChildModule3.class)));
}
@Test(expected = IllegalStateException.class)
diff --git a/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndexTest.java b/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndexTest.java
new file mode 100644
index 000000000..de8d0df88
--- /dev/null
+++ b/infra/minimal-distribution-test/src/test/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndexTest.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.fd.honeycomb.infra.distro.schema;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collection;
+import org.junit.Test;
+
+public class YangModuleMappingIndexTest {
+
+ @Test
+ public void testIndex() {
+ final YangModuleMappingIndex index = new YangModuleMappingIndex("static-yang-index");
+ assertEquals(9, index.applicationModulesCount());
+ assertCfgModule(index);
+ }
+
+ private void assertCfgModule(YangModuleMappingIndex index) {
+ final Collection<String> yangModules =
+ index.getByModuleName("io.fd.honeycomb.infra.distro.cfgattrs.CfgAttrsModule");
+ assertNotNull(yangModules);
+ assertEquals(51, yangModules.size());
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider"));
+ assertTrue(yangModules.contains(
+ "org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider"));
+ // etc ...
+ }
+} \ No newline at end of file
diff --git a/infra/minimal-distribution/src/test/resources/WEB-INF/web.xml b/infra/minimal-distribution-test/src/test/resources/WEB-INF/web.xml
index 6cf487170..6cf487170 100644
--- a/infra/minimal-distribution/src/test/resources/WEB-INF/web.xml
+++ b/infra/minimal-distribution-test/src/test/resources/WEB-INF/web.xml
diff --git a/infra/minimal-distribution-test/src/test/resources/activation.json b/infra/minimal-distribution-test/src/test/resources/activation.json
new file mode 100644
index 000000000..687b51277
--- /dev/null
+++ b/infra/minimal-distribution-test/src/test/resources/activation.json
@@ -0,0 +1,4 @@
+{
+ "modules-resource-path": "base-distro-test-modules",
+ "yang-modules-index-path": "honeycomb-minimal-resources/yang-mapping"
+} \ No newline at end of file
diff --git a/infra/minimal-distribution/src/test/resources/base-distro-test-modules/base-modules b/infra/minimal-distribution-test/src/test/resources/base-distro-test-modules/base-modules
index 28b28446c..28b28446c 100644
--- a/infra/minimal-distribution/src/test/resources/base-distro-test-modules/base-modules
+++ b/infra/minimal-distribution-test/src/test/resources/base-distro-test-modules/base-modules
diff --git a/infra/minimal-distribution/src/test/resources/honeycomb-keystore b/infra/minimal-distribution-test/src/test/resources/honeycomb-keystore
index 44093dc09..44093dc09 100644
--- a/infra/minimal-distribution/src/test/resources/honeycomb-keystore
+++ b/infra/minimal-distribution-test/src/test/resources/honeycomb-keystore
Binary files differ
diff --git a/infra/minimal-distribution/src/test/resources/honeycomb.json b/infra/minimal-distribution-test/src/test/resources/honeycomb.json
index a0b2a633c..a0b2a633c 100644
--- a/infra/minimal-distribution/src/test/resources/honeycomb.json
+++ b/infra/minimal-distribution-test/src/test/resources/honeycomb.json
diff --git a/infra/minimal-distribution/src/test/resources/logback.xml b/infra/minimal-distribution-test/src/test/resources/logback.xml
index 2ee89db4e..2ee89db4e 100644
--- a/infra/minimal-distribution/src/test/resources/logback.xml
+++ b/infra/minimal-distribution-test/src/test/resources/logback.xml
diff --git a/infra/minimal-distribution/src/test/resources/modules/module-config-one.txt b/infra/minimal-distribution-test/src/test/resources/modules/module-config-one.txt
index 8d48a3c9d..8d48a3c9d 100644
--- a/infra/minimal-distribution/src/test/resources/modules/module-config-one.txt
+++ b/infra/minimal-distribution-test/src/test/resources/modules/module-config-one.txt
diff --git a/infra/minimal-distribution/src/test/resources/modules/module-config-two.txt b/infra/minimal-distribution-test/src/test/resources/modules/module-config-two.txt
index ef11829e9..ef11829e9 100644
--- a/infra/minimal-distribution/src/test/resources/modules/module-config-two.txt
+++ b/infra/minimal-distribution-test/src/test/resources/modules/module-config-two.txt
diff --git a/infra/minimal-distribution-test/src/test/resources/static-yang-index/yang-index b/infra/minimal-distribution-test/src/test/resources/static-yang-index/yang-index
new file mode 100644
index 000000000..f75c06359
--- /dev/null
+++ b/infra/minimal-distribution-test/src/test/resources/static-yang-index/yang-index
@@ -0,0 +1,9 @@
+GUICE_MODULE:io.fd.honeycomb.infra.distro.cfgattrs.CfgAttrsModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
+GUICE_MODULE:io.fd.honeycomb.infra.distro.data.context.ContextPipelineModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
+GUICE_MODULE:io.fd.honeycomb.infra.distro.netconf.NetconfModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
+GUICE_MODULE:io.fd.honeycomb.infra.distro.schema.SchemaModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
+GUICE_MODULE:io.fd.honeycomb.infra.distro.schema.YangBindingProviderModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
+GUICE_MODULE:io.fd.honeycomb.infra.distro.restconf.RestconfModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
+GUICE_MODULE:io.fd.honeycomb.infra.distro.netconf.NetconfReadersModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
+GUICE_MODULE:io.fd.honeycomb.infra.distro.initializer.InitializerPipelineModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
+GUICE_MODULE:io.fd.honeycomb.infra.distro.data.ConfigAndOperationalPipelineModule|YANG_MODULES:org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netty.rev131119.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.v1.codec.rev160714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.impl.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.binding.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.entity.ownership.service.rev150810.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.general.entity.rev150820.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.rpc.context.rev130617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.rev130405.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.inmemory.datastore.provider.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.protocol.framework.rev140313.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.threadpool.rev130409.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.dom.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.common.rev131028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.config.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.core.spi.operational.dom.store.rev140617.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.impl.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.legacy.entity.ownership.service.provider.rev160226.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.md.sal.config.spi.cluster.singleton.service.rev160718.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.north.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.ssh.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.rev150806.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.notification.rev150803.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.monitoring.rev150218.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.northbound.impl.rev150112.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.monitoring.rev170126.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.remote.rev140114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.instance.identifier.patch.module.rev151121.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.sal.restconf.service.rev150708.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.rest.connector.rev140724.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.subscribe.to.notification.rev161028.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.netconf.auth.rev150715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.notification.impl.rev150807.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.mdsal.mapper.rev150114.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.netconf.northbound.tcp.rev150423.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.core.general.entity.rev150930.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev130712.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.restconf.rev131019.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.$YangModelBindingProvider,org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.$YangModelBindingProvider
diff --git a/infra/minimal-distribution/pom.xml b/infra/minimal-distribution/pom.xml
index 637640723..6f520eaf6 100644
--- a/infra/minimal-distribution/pom.xml
+++ b/infra/minimal-distribution/pom.xml
@@ -41,6 +41,7 @@
io.fd.honeycomb.infra.distro.restconf.RestconfModule,
io.fd.honeycomb.infra.distro.cfgattrs.CfgAttrsModule
</distribution.modules>
+ <commons-io.version>2.5</commons-io.version>
</properties>
<dependencies>
@@ -164,33 +165,10 @@
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
-
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.mashape.unirest</groupId>
- <artifactId>unirest-java</artifactId>
- <version>1.4.9</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>com.jcraft</groupId>
- <artifactId>jsch</artifactId>
- <version>0.1.54</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.hamcrest</groupId>
- <artifactId>hamcrest-all</artifactId>
- <scope>test</scope>
- </dependency>
<dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-core</artifactId>
- <scope>test</scope>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>${commons-io.version}</version>
</dependency>
</dependencies>
</project>
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/Main.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/Main.java
index 265740bcc..582fcf687 100644
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/Main.java
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/Main.java
@@ -22,7 +22,6 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
import com.google.inject.ConfigurationException;
import com.google.inject.CreationException;
-import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.Module;
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActivationConfig.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActivationConfig.java
index 8777c32a2..a17f5d632 100644
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActivationConfig.java
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActivationConfig.java
@@ -27,7 +27,15 @@ public class ActivationConfig {
@InjectConfig("modules-resource-path")
private String modulesResourcePath;
+ @InjectConfig("yang-modules-index-path")
+ private String yangModulesIndexPath;
+
public String getModulesResourcePath() {
return Optional.ofNullable(modulesResourcePath).orElse("../modules/");
}
+
+ public String getYangModulesIndexPath() {
+ return Optional.ofNullable(yangModulesIndexPath).orElse("../yang-mapping/");
+ }
+
}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProvider.java
index 21d108082..d31024ce9 100644
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProvider.java
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/activation/ActiveModuleProvider.java
@@ -139,7 +139,7 @@ class ActiveModuleProvider implements Provider<ActiveModules> {
private static Class<? extends Module> moduleNameToClass(final String name,
final ClassLoader classLoader) {
try {
- LOG.info("Loading module class {}", name);
+ LOG.debug("Loading module class {}", name);
return (Class<? extends Module>) classLoader.loadClass(name);
} catch (ClassNotFoundException e) {
LOG.error("Unable to convert {} to class, make sure you've provided sources to classpath", name);
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java
index f82cdd0b1..e2d0fbfaa 100644
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ModuleInfoBackedCtxProvider.java
@@ -16,11 +16,11 @@
package io.fd.honeycomb.infra.distro.schema;
+import static io.fd.honeycomb.infra.distro.schema.YangModulesProvider.YangModules;
+
import com.google.common.base.MoreObjects;
import com.google.inject.Inject;
import io.fd.honeycomb.infra.distro.ProviderTrait;
-import java.util.HashSet;
-import java.util.Set;
import java.util.stream.Collectors;
import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext;
import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
@@ -30,13 +30,14 @@ import org.slf4j.LoggerFactory;
public final class ModuleInfoBackedCtxProvider extends ProviderTrait<ModuleInfoBackedContext> {
private static final Logger LOG = LoggerFactory.getLogger(ModuleInfoBackedCtxProvider.class);
- @Inject(optional = true)
- private Set<YangModelBindingProvider> moduleInfos = new HashSet<>();
+ // optional in sense that list of modules inside can be empty if none was found
+ @Inject
+ private YangModules moduleInfos;
@Override
protected ModuleInfoBackedContext create() {
ModuleInfoBackedContext create = ModuleInfoBackedContext.create();
- create.addModuleInfos(moduleInfos.stream()
+ create.addModuleInfos(moduleInfos.getYangBindings().stream()
.map(YangModelBindingProvider::getModuleInfo)
.collect(Collectors.toList()));
LOG.debug("ModuleInfoBackedContext created from {}", moduleInfos);
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ResourceLoader.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ResourceLoader.java
new file mode 100644
index 000000000..c851dab1b
--- /dev/null
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/ResourceLoader.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2017 Cisco and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.fd.honeycomb.infra.distro.schema;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static java.lang.String.format;
+
+import com.google.common.base.Charsets;
+import com.google.common.base.Strings;
+import com.google.common.io.Resources;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.stream.Collectors;
+import org.apache.commons.io.IOUtils;
+
+interface ResourceLoader {
+
+ default Set<String> loadResourceContentsOnPath(final String path) {
+ final URL folderUrl = getClass().getClassLoader().getResource(path);
+ checkNotNull(folderUrl, "Resources %s not found", path);
+
+ if (ResourceLoaderIml.urlToUri(folderUrl).getScheme().equals("jar")) {
+ return ResourceLoaderIml.readFromJar(path, folderUrl);
+ } else {
+ return ResourceLoaderIml.readFromFolder(folderUrl);
+ }
+
+ }
+
+ final class ResourceLoaderIml {
+
+ private static Set<String> readFromFolder(final URL folderUrl) {
+ final File folder = new File(folderUrl.getPath());
+ final File[] files = checkNotNull(folder.listFiles(), "No files present on path %s", folderUrl);
+ return Arrays.stream(files)
+ .map(ResourceLoaderIml::fileToUrl)
+ .map(ResourceLoaderIml::urlToContentString)
+ .flatMap(content -> Arrays.stream(content.split(System.lineSeparator())))
+ .filter(ResourceLoaderIml::filterNonEmpty)
+ .collect(Collectors.toSet());
+ }
+
+ private static Set<String> readFromJar(final String path, final URL url) {
+ final String uriString = urlToUri(url).toString();
+ final String fileReference = extractJarFilePath(uriString);
+ try (JarFile jar = new JarFile(new File(fileReference))) {
+ return Collections.list(jar.entries())
+ .stream()
+ .filter(jarEntry -> jarEntry.getName().contains(path))
+ .map(jarEntry -> getJarEntryStream(jar, jarEntry))
+ .map(ResourceLoaderIml::readJarEntryStream)
+ .flatMap(content -> Arrays.stream(content.split(System.lineSeparator())))
+ .filter(ResourceLoaderIml::filterNonEmpty)
+ .collect(Collectors.toSet());
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ private static String extractJarFilePath(final String uriString) {
+ return uriString.substring(0, uriString.indexOf("!")).replace("jar:file:", "");
+ }
+
+ private static boolean filterNonEmpty(final String line) {
+ return !Strings.isNullOrEmpty(line.trim());
+ }
+
+ private static String readJarEntryStream(final InputStream inputStream) {
+ try {
+ final String value = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+ IOUtils.closeQuietly(inputStream);
+ return value;
+ } catch (IOException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+
+ private static InputStream getJarEntryStream(final JarFile jar, final JarEntry jarEntry) {
+ try {
+ return jar.getInputStream(jarEntry);
+ } catch (IOException e) {
+ throw new IllegalStateException(format("Unable to get stream for entry %s | jar %s", jar, jarEntry));
+ }
+ }
+
+ private static URI urlToUri(final URL url) {
+ try {
+ return url.toURI();
+ } catch (URISyntaxException e) {
+ throw new IllegalStateException(format("Unable to convert URL %s to URI", url));
+ }
+ }
+
+ private static String urlToContentString(final URL url) {
+ try {
+ return Resources.toString(url, Charsets.UTF_8);
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Unable to read resource from: " + url, e);
+ }
+ }
+
+ private static URL fileToUrl(final File file) {
+ try {
+ return file.toURI().toURL();
+ } catch (MalformedURLException e) {
+ throw new IllegalStateException(e);
+ }
+ }
+ }
+}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
index 8e402808b..d705226bf 100644
--- a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangBindingProviderModule.java
@@ -16,68 +16,15 @@
package io.fd.honeycomb.infra.distro.schema;
-import com.google.common.base.Charsets;
-import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
-import com.google.common.io.Resources;
import com.google.inject.AbstractModule;
-import com.google.inject.Singleton;
-import com.google.inject.multibindings.Multibinder;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.List;
-import javax.annotation.Nonnull;
-import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/**
- * Load all YangModelBindingProvider classes from classpath.
- * <p/>
- * Relying on /META-INF/services/ metadata.
- */
public class YangBindingProviderModule extends AbstractModule {
private static final Logger LOG = LoggerFactory.getLogger(YangBindingProviderModule.class);
- private static final String YANG_BA_PROVIDER_PATH = "META-INF/services/" + YangModelBindingProvider.class.getName();
-
protected void configure() {
- final Multibinder<YangModelBindingProvider> binder =
- Multibinder.newSetBinder(binder(), YangModelBindingProvider.class);
- final List<URL> resources;
- try {
- resources = Collections.list(getClass().getClassLoader().getResources(YANG_BA_PROVIDER_PATH));
- } catch (IOException e) {
- throw new IllegalStateException("Unable to load binding providers from path: " + YANG_BA_PROVIDER_PATH, e);
- }
- LOG.debug("ModuleProviders found at {}", resources);
- resources.stream()
- .map(YangBindingProviderModule::urlToString)
- .flatMap(content -> Lists.newArrayList(content.split("\n")).stream())
- .filter(line -> !Strings.isNullOrEmpty(line.trim()))
- .distinct()
- .map(YangBindingProviderModule::loadClass)
- .forEach(providerClass -> {
- LOG.debug("ModuleProvider found for {}", providerClass);
- binder.addBinding().to((Class<? extends YangModelBindingProvider>) providerClass)
- .in(Singleton.class);
- });
- }
-
- private static Class<?> loadClass(@Nonnull final String className) {
- try {
- return Class.forName(className);
- } catch (ClassNotFoundException e) {
- throw new IllegalArgumentException("Unable to load class: " + className, e);
- }
- }
-
- private static String urlToString(@Nonnull final URL url) {
- try {
- return Resources.toString(url, Charsets.UTF_8);
- } catch (IOException e) {
- throw new IllegalArgumentException("Unable to read resource from: " + url, e);
- }
+ LOG.info("Configuring YangBindingProviderModule");
+ bind(YangModulesProvider.YangModules.class).toProvider(YangModulesProvider.class).asEagerSingleton();
}
}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndex.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndex.java
new file mode 100644
index 000000000..a483cfd9c
--- /dev/null
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModuleMappingIndex.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.fd.honeycomb.infra.distro.schema;
+
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.LinkedListMultimap;
+import com.google.common.collect.Multimap;
+import java.util.Arrays;
+import java.util.Set;
+import java.util.stream.Stream;
+import javax.annotation.Nonnull;
+
+/**
+ * Index from guice module to yang module providers
+ */
+class YangModuleMappingIndex implements ResourceLoader {
+
+ private static final String G_MODULE_TOKEN = "GUICE_MODULE:";
+ private static final String KEY_VALUE_SEPARATOR = "|";
+ private static final String Y_MODULE_TOKEN = "YANG_MODULES:";
+ private static final String Y_MODULE_SEPARATOR = ",";
+
+ /**
+ * key - module class name
+ * value - yang module provider
+ */
+ private final Multimap<String, String> index;
+
+ YangModuleMappingIndex(final String indexPath) {
+ this.index = LinkedListMultimap.create();
+ loadResourceContentsOnPath(indexPath)
+ .forEach(line -> {
+ final String moduleName = parseModuleName(line);
+ parseYangModules(line).forEach(yModuleProvider -> index.put(moduleName, yModuleProvider));
+ });
+ }
+
+ Set<String> getByModuleName(@Nonnull final String moduleName) {
+ return ImmutableSet.copyOf(index.get(moduleName));
+ }
+
+ int applicationModulesCount() {
+ return index.keySet().size();
+ }
+
+ private static String parseModuleName(final String rawLine) {
+ return rawLine.substring(rawLine.indexOf(G_MODULE_TOKEN) + G_MODULE_TOKEN.length(),
+ rawLine.indexOf(KEY_VALUE_SEPARATOR));
+ }
+
+ private static Stream<String> parseYangModules(final String rawLine) {
+ return Arrays.stream(rawLine.substring(rawLine.indexOf(Y_MODULE_TOKEN) + Y_MODULE_TOKEN.length())
+ .split(Y_MODULE_SEPARATOR));
+ }
+}
diff --git a/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java
new file mode 100644
index 000000000..f6d8ea0c1
--- /dev/null
+++ b/infra/minimal-distribution/src/main/java/io/fd/honeycomb/infra/distro/schema/YangModulesProvider.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2016 Cisco and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package io.fd.honeycomb.infra.distro.schema;
+
+
+import static java.lang.String.format;
+
+import com.google.common.base.Charsets;
+import com.google.common.io.Resources;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import io.fd.honeycomb.infra.distro.activation.ActivationConfig;
+import io.fd.honeycomb.infra.distro.activation.ActiveModules;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collection;
+import java.util.Set;
+import java.util.stream.Collectors;
+import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
+
+/**
+ * Loads active yang modules
+ * Relying on generate yang-module-index
+ */
+public class YangModulesProvider implements Provider<YangModulesProvider.YangModules> {
+
+ @Inject
+ private ActiveModules activeModules;
+
+ @Inject
+ private ActivationConfig config;
+
+ @Override
+ public YangModules get() {
+ // no need to bind this, pretty big map and its needed just here
+ final YangModuleMappingIndex index = new YangModuleMappingIndex(config.getYangModulesIndexPath());
+
+ return new YangModules(activeModules.getActiveModulesClasses().stream()
+ .map(Class::getName)
+ .map(index::getByModuleName)
+ .flatMap(Collection::stream)
+ .map(YangModulesProvider::loadClass)
+ .map(aClass -> (Class<? extends YangModelBindingProvider>) aClass)
+ .collect(Collectors.toSet()));
+ }
+
+ static class YangModules {
+ private final Set<Class<? extends YangModelBindingProvider>> yangBindings;
+
+ YangModules(final Set<Class<? extends YangModelBindingProvider>> yangBindings) {
+ this.yangBindings = yangBindings;
+ }
+
+ Set<YangModelBindingProvider> getYangBindings() {
+ return yangBindings.stream()
+ .map(providerClass -> {
+ try {
+ return providerClass.newInstance();
+ } catch (InstantiationException | IllegalAccessException e) {
+ throw new IllegalStateException(format("Unable to create instance of %s", providerClass),
+ e);
+ }
+ }).collect(Collectors.toSet());
+ }
+ }
+
+ private static Class<?> loadClass(@Nonnull final String className) {
+ try {
+ return Class.forName(className);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException("Unable to load class: " + className, e);
+ }
+ }
+
+ static String urlToString(@Nonnull final URL url) {
+ try {
+ return Resources.toString(url, Charsets.UTF_8);
+ } catch (IOException e) {
+ throw new IllegalArgumentException("Unable to read resource from: " + url, e);
+ }
+ }
+}
diff --git a/infra/minimal-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json b/infra/minimal-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json
index 7b6f44a20..8dd168702 100644
--- a/infra/minimal-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json
+++ b/infra/minimal-distribution/src/main/resources/honeycomb-minimal-resources/config/activation.json
@@ -1,3 +1,4 @@
{
- "modules-resource-path": "../modules/"
+ "modules-resource-path": "../modules/",
+ "yang-modules-index-path": "../yang-mapping/"
} \ No newline at end of file
diff --git a/infra/minimal-distribution/src/test/resources/activation.json b/infra/minimal-distribution/src/test/resources/activation.json
deleted file mode 100644
index 7e2015123..000000000
--- a/infra/minimal-distribution/src/test/resources/activation.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "modules-resource-path": "base-distro-test-modules"
-} \ No newline at end of file
diff --git a/infra/pom.xml b/infra/pom.xml
index cfe99a726..7ff1b8e9a 100644
--- a/infra/pom.xml
+++ b/infra/pom.xml
@@ -47,6 +47,8 @@
<module>it</module>
<module>test-utils</module>
<module>rpc</module>
+ <module>minimal-distribution-test</module>
+ <module>bgp-distribution-test</module>
</modules>
<!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->