HONEYCOMB-377: remove enabled flag for bgp 38/7438/2
authorMarek Gradzki <mgradzki@cisco.com>
Thu, 6 Jul 2017 10:55:17 +0000 (12:55 +0200)
committerMarek Gradzki <mgradzki@cisco.com>
Thu, 6 Jul 2017 11:27:18 +0000 (13:27 +0200)
Use module configuration to enable/disabe BGP.
Also hides BgpExtensionModule module to the user
(until HONEYCOMB-363 is fixed).

Change-Id: I8294d080138a0bcf640420484b76c089aa332d93
Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
infra/bgp-distribution-test/src/test/resources/base-distro-test-modules/base-modules
infra/bgp-distribution-test/src/test/resources/bgp.json
infra/minimal-distribution/pom.xml
infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/BgpConfiguration.java
infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/BgpConfigurationModule.java
infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/BgpExtensionsModule.java
infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/BgpModule.java
infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/BgpReadersModule.java
infra/northbound/bgp/src/main/java/io/fd/honeycomb/infra/bgp/BgpWritersModule.java
infra/northbound/bgp/src/main/resources/honeycomb-minimal-resources/config/bgp.json

index c476fcc..b69e945 100644 (file)
@@ -1,5 +1,3 @@
-io.fd.honeycomb.infra.bgp.BgpConfigurationModule
-io.fd.honeycomb.infra.bgp.BgpExtensionsModule
 io.fd.honeycomb.infra.bgp.BgpModule
 io.fd.honeycomb.infra.bgp.BgpReadersModule
 io.fd.honeycomb.infra.bgp.BgpWritersModule
index 494b6a9..c352fb0 100644 (file)
@@ -1,5 +1,4 @@
   {
-  "bgp-enabled": "true",
   "bgp-binding-address": "127.0.0.1",
   "bgp-port": 1790,
   "bgp-as-number": 65000,
index 37c010f..4c8b72a 100644 (file)
@@ -42,7 +42,6 @@
             io.fd.honeycomb.infra.distro.restconf.RestconfModule,
             io.fd.honeycomb.infra.distro.cfgattrs.CfgAttrsModule,
             // io.fd.honeycomb.infra.bgp.BgpModule,
-            // io.fd.honeycomb.infra.bgp.BgpExtensionsModule,
             // io.fd.honeycomb.infra.bgp.BgpReadersModule,
             // io.fd.honeycomb.infra.bgp.BgpWritersModule
         </distribution.modules>
index 9182dd3..6cc245a 100644 (file)
@@ -31,16 +31,10 @@ import net.jmob.guice.conf.core.Syntax;
 @BindConfig(value = "bgp", syntax = Syntax.JSON)
 public class BgpConfiguration {
 
-    public boolean isBgpEnabled() {
-        return Boolean.valueOf(bgpEnabled);
-    }
-
     public boolean isBgpMultiplePathsEnabled() {
         return Boolean.valueOf(bgpMultiplePaths.get());
     }
 
-    @InjectConfig("bgp-enabled")
-    public String bgpEnabled;
     @InjectConfig("bgp-binding-address")
     public Optional<String> bgpBindingAddress;
     @InjectConfig("bgp-port")
@@ -56,7 +50,6 @@ public class BgpConfiguration {
     @Override
     public String toString() {
         return MoreObjects.toStringHelper(this)
-                .add("bgpEnabled", bgpEnabled)
                 .add("bgpBindingAddress", bgpBindingAddress)
                 .add("bgpPort", bgpPort)
                 .add("bgp-as-number", bgpAsNumber)
index a1c2e76..0efe7a1 100644 (file)
@@ -22,7 +22,7 @@ import net.jmob.guice.conf.core.ConfigurationModule;
 /**
  * Load the configuration from json into HoneycombConfiguration and make it available.
  */
-public class BgpConfigurationModule extends AbstractModule {
+final class BgpConfigurationModule extends AbstractModule {
 
     protected void configure() {
         install(ConfigurationModule.create());
index d744065..b096e3d 100644 (file)
@@ -16,9 +16,9 @@
 
 package io.fd.honeycomb.infra.bgp;
 
+import com.google.inject.AbstractModule;
 import com.google.inject.Singleton;
 import com.google.inject.multibindings.Multibinder;
-import io.fd.honeycomb.northbound.NorthboundAbstractModule;
 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext;
 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
@@ -28,20 +28,13 @@ import org.slf4j.LoggerFactory;
 
 /**
  * Registers BGP extensions provided by ODL implementation.
- * TODO add support for flowspec (requires some special initialization)
+ * TODO(HONEYCOMB-363): create module per BGP extension
+ * TODO(HONEYCOMB-378): add support for flowspec (requires some special initialization)
  */
-public final class BgpExtensionsModule extends NorthboundAbstractModule<BgpConfiguration> {
+final class BgpExtensionsModule extends AbstractModule {
     private static final Logger LOG = LoggerFactory.getLogger(BgpExtensionsModule.class);
 
-    public BgpExtensionsModule() {
-        super(new BgpConfigurationModule(), BgpConfiguration.class);
-    }
-
     protected void configure() {
-        if (!getConfiguration().isBgpEnabled()) {
-            LOG.debug("BGP disabled. Skipping initialization");
-            return;
-        }
         LOG.debug("Initializing BgpExtensionsModule");
         // This should be part of BgpModule, but that one is Private and Multibinders + private BASE_MODULES
         // do not work together, that's why there's a dedicated module here
index 32c4440..dd6449d 100644 (file)
@@ -19,12 +19,12 @@ package io.fd.honeycomb.infra.bgp;
 import static io.fd.honeycomb.infra.distro.data.InmemoryDOMDataBrokerProvider.CONFIG;
 import static io.fd.honeycomb.infra.distro.data.InmemoryDOMDataBrokerProvider.OPERATIONAL;
 
+import com.google.inject.PrivateModule;
 import com.google.inject.Singleton;
 import com.google.inject.name.Names;
 import io.fd.honeycomb.infra.distro.data.BindingDataBrokerProvider;
 import io.fd.honeycomb.infra.distro.data.DataStoreProvider;
 import io.fd.honeycomb.infra.distro.data.InmemoryDOMDataBrokerProvider;
-import io.fd.honeycomb.northbound.NorthboundPrivateModule;
 import io.fd.honeycomb.translate.bgp.RibWriter;
 import io.netty.channel.EventLoopGroup;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -41,22 +41,13 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.BgpNe
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public final class BgpModule extends NorthboundPrivateModule<BgpConfiguration> {
+public final class BgpModule extends PrivateModule {
     private static final Logger LOG = LoggerFactory.getLogger(BgpModule.class);
 
     static final String HONEYCOMB_BGP = "honeycomb-bgp";
 
-    public BgpModule() {
-        super(new BgpConfigurationModule(), BgpConfiguration.class);
-    }
-
     protected void configure() {
-        if (!getConfiguration().isBgpEnabled()) {
-            LOG.debug("BGP disabled. Skipping initialization");
-            return;
-        }
         LOG.debug("Initializing BgpModule");
-        install(getConfigurationModule());
         // Create BGPDispatcher BGPDispatcher for creating BGP clients
         bind(EventLoopGroup.class).toProvider(BgpNettyThreadGroupProvider.class).in(Singleton.class);
         bind(BGPDispatcher.class).toProvider(BGPDispatcherImplProvider.class).in(Singleton.class);
@@ -77,6 +68,10 @@ public final class BgpModule extends NorthboundPrivateModule<BgpConfiguration> {
         // (initialize eagerly to configure RouteWriters)
         bind(RibWriter.class).toProvider(LocRibWriterProvider.class).asEagerSingleton();
         expose(RibWriter.class);
+
+        // install other BGP modules (hidden from HC user):
+        install(new BgpConfigurationModule());
+        install(new BgpExtensionsModule());
     }
 
     private void configureRIB() {
index 9f81961..1dc1359 100644 (file)
 
 package io.fd.honeycomb.infra.bgp;
 
+import com.google.inject.AbstractModule;
 import com.google.inject.Singleton;
 import com.google.inject.multibindings.Multibinder;
-import io.fd.honeycomb.northbound.NorthboundAbstractModule;
 import io.fd.honeycomb.translate.read.ReaderFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class BgpReadersModule extends NorthboundAbstractModule<BgpConfiguration> {
+public final class BgpReadersModule extends AbstractModule {
     private static final Logger LOG = LoggerFactory.getLogger(BgpReadersModule.class);
 
-    public BgpReadersModule() {
-        super(new BgpConfigurationModule(), BgpConfiguration.class);
-    }
-
     protected void configure() {
-        if (!getConfiguration().isBgpEnabled()) {
-            LOG.debug("BGP disabled. Skipping initialization");
-            return;
-        }
         LOG.debug("Initializing BgpReadersModule");
         // This should be part of BgpModule, but that one is Private and Multibinders + private BASE_MODULES
         // do not work together, that's why there's a dedicated module here
index 690a7fe..b167029 100644 (file)
 
 package io.fd.honeycomb.infra.bgp;
 
+import com.google.inject.AbstractModule;
 import com.google.inject.Singleton;
 import com.google.inject.multibindings.Multibinder;
-import io.fd.honeycomb.northbound.NorthboundAbstractModule;
 import io.fd.honeycomb.translate.write.WriterFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class BgpWritersModule extends NorthboundAbstractModule<BgpConfiguration> {
+public final class BgpWritersModule extends AbstractModule {
     private static final Logger LOG = LoggerFactory.getLogger(BgpWritersModule.class);
 
-    public BgpWritersModule() {
-        super(new BgpConfigurationModule(), BgpConfiguration.class);
-    }
-
     protected void configure() {
-        if (!getConfiguration().isBgpEnabled()) {
-            LOG.debug("BGP disabled. Skipping initialization");
-            return;
-        }
         LOG.debug("Initializing BgpReadersModule");
         // This should be part of BgpModule, but that one is Private and Multibinders + private BASE_MODULES
         // do not work together, that's why there's a dedicated module here