diff --git a/apps/routing-api/src/main/java/org/onosproject/routingapi/BgpService.java b/apps/routing-api/src/main/java/org/onosproject/routingapi/BgpService.java index c7e58d4bb6..3901b2292a 100644 --- a/apps/routing-api/src/main/java/org/onosproject/routingapi/BgpService.java +++ b/apps/routing-api/src/main/java/org/onosproject/routingapi/BgpService.java @@ -24,9 +24,8 @@ public interface BgpService { * Starts the BGP service. * * @param routeListener listener to send route updates to - * @param bgpPort port number to listen on */ - void start(RouteListener routeListener, int bgpPort); + void start(RouteListener routeListener); /** * Stops the BGP service. diff --git a/apps/routing/pom.xml b/apps/routing/pom.xml index 8656ebb285..055d0b8b6b 100644 --- a/apps/routing/pom.xml +++ b/apps/routing/pom.xml @@ -54,6 +54,11 @@ guava + + org.osgi + org.osgi.compendium + + org.apache.karaf.shell org.apache.karaf.shell.console diff --git a/apps/routing/src/main/java/org/onosproject/routing/Router.java b/apps/routing/src/main/java/org/onosproject/routing/Router.java index 494c190755..1db8e0bcbc 100644 --- a/apps/routing/src/main/java/org/onosproject/routing/Router.java +++ b/apps/routing/src/main/java/org/onosproject/routing/Router.java @@ -124,7 +124,7 @@ public class Router implements RoutingService { this.fibComponent = checkNotNull(listener); this.hostService.addListener(hostListener); - bgpService.start(new InternalRouteListener(), 2000); + bgpService.start(new InternalRouteListener()); bgpUpdatesExecutor.execute(new Runnable() { @Override diff --git a/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpSessionManager.java b/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpSessionManager.java index cfd0081739..5a16313519 100644 --- a/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpSessionManager.java +++ b/apps/routing/src/main/java/org/onosproject/routing/bgp/BgpSessionManager.java @@ -15,7 +15,11 @@ */ package org.onosproject.routing.bgp; +import org.osgi.service.component.ComponentContext; +import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; +import org.apache.felix.scr.annotations.Deactivate; +import org.apache.felix.scr.annotations.Modified; import org.apache.felix.scr.annotations.Service; import org.jboss.netty.bootstrap.ServerBootstrap; import org.jboss.netty.channel.Channel; @@ -40,6 +44,7 @@ import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.Collection; +import java.util.Dictionary; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -72,6 +77,47 @@ public class BgpSessionManager implements BgpInfoService, BgpService { private RouteListener routeListener; + private static final int DEFAULT_BGP_PORT = 2000; + private int bgpPort; + + @Activate + protected void activate(ComponentContext context) { + readComponentConfiguration(context); + log.info("BgpSessionManager started"); + } + + @Deactivate + protected void deactivate() { + log.info("BgpSessionManager stopped"); + } + + /** + * Extracts properties from the component configuration context. + * + * @param context the component context + */ + private void readComponentConfiguration(ComponentContext context) { + Dictionary properties = context.getProperties(); + try { + String strPort = (String) properties.get("bgpPort"); + if (strPort != null) { + bgpPort = Integer.parseInt(strPort); + } else { + bgpPort = DEFAULT_BGP_PORT; + } + } catch (Exception e) { + bgpPort = DEFAULT_BGP_PORT; + } + log.debug("BGP port is set to {}", bgpPort); + } + + @Modified + public void modified(ComponentContext context) { + // Blank @Modified method to catch modifications to the context. + // If no @Modified method exists, it seems @Activate is called again + // when the context is modified. + } + /** * Checks whether the BGP Session Manager is shutdown. * @@ -245,7 +291,7 @@ public class BgpSessionManager implements BgpInfoService, BgpService { } @Override - public void start(RouteListener routeListener, int listenPortNumber) { + public void start(RouteListener routeListener) { log.debug("BGP Session Manager start."); isShutdown = false; @@ -271,7 +317,7 @@ public class BgpSessionManager implements BgpInfoService, BgpService { } }; InetSocketAddress listenAddress = - new InetSocketAddress(listenPortNumber); + new InetSocketAddress(bgpPort); serverBootstrap = new ServerBootstrap(channelFactory); // serverBootstrap.setOptions("reuseAddr", true); diff --git a/apps/routing/src/test/java/org/onosproject/routing/RouterAsyncArpTest.java b/apps/routing/src/test/java/org/onosproject/routing/RouterAsyncArpTest.java index d9a5ce9bbe..54a21ee5d8 100644 --- a/apps/routing/src/test/java/org/onosproject/routing/RouterAsyncArpTest.java +++ b/apps/routing/src/test/java/org/onosproject/routing/RouterAsyncArpTest.java @@ -78,7 +78,7 @@ public class RouterAsyncArpTest { hostService = createMock(HostService.class); BgpService bgpService = createMock(BgpService.class); - bgpService.start(anyObject(RouteListener.class), anyInt()); + bgpService.start(anyObject(RouteListener.class)); bgpService.stop(); replay(bgpService); diff --git a/apps/routing/src/test/java/org/onosproject/routing/RouterTest.java b/apps/routing/src/test/java/org/onosproject/routing/RouterTest.java index 176c159d26..26ed60a008 100644 --- a/apps/routing/src/test/java/org/onosproject/routing/RouterTest.java +++ b/apps/routing/src/test/java/org/onosproject/routing/RouterTest.java @@ -84,7 +84,7 @@ public class RouterTest { setUpHostService(); BgpService bgpService = createMock(BgpService.class); - bgpService.start(anyObject(RouteListener.class), anyInt()); + bgpService.start(anyObject(RouteListener.class)); bgpService.stop(); replay(bgpService); diff --git a/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpSessionManagerTest.java b/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpSessionManagerTest.java index c73eafff38..c9c52b18ae 100644 --- a/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpSessionManagerTest.java +++ b/apps/routing/src/test/java/org/onosproject/routing/bgp/BgpSessionManagerTest.java @@ -35,16 +35,21 @@ import org.onlab.packet.Ip4Address; import org.onlab.packet.Ip4Prefix; import org.onosproject.routingapi.RouteListener; import org.onosproject.routingapi.RouteUpdate; +import org.osgi.service.component.ComponentContext; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.ArrayList; import java.util.Collection; +import java.util.Dictionary; import java.util.LinkedList; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +import static org.easymock.EasyMock.createMock; +import static org.easymock.EasyMock.expect; +import static org.easymock.EasyMock.replay; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; @@ -252,7 +257,14 @@ public class BgpSessionManagerTest { // bgpSessionManager = new BgpSessionManager(); // NOTE: We use port 0 to bind on any available port - bgpSessionManager.start(dummyRouteListener, 0); + ComponentContext componentContext = createMock(ComponentContext.class); + Dictionary dictionary = createMock(Dictionary.class); + expect(dictionary.get("bgpPort")).andReturn("0"); + replay(dictionary); + expect(componentContext.getProperties()).andReturn(dictionary); + replay(componentContext); + bgpSessionManager.activate(componentContext); + bgpSessionManager.start(dummyRouteListener); // Get the port number the BGP Session Manager is listening on Channel serverChannel = TestUtils.getField(bgpSessionManager, diff --git a/apps/sdnip/pom.xml b/apps/sdnip/pom.xml index 925bc582e2..48a486e5d4 100644 --- a/apps/sdnip/pom.xml +++ b/apps/sdnip/pom.xml @@ -54,11 +54,6 @@ 4.0 - - org.osgi - org.osgi.compendium - - org.onosproject onlab-misc diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java index b375852e6d..2f24e15c49 100644 --- a/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java +++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java @@ -18,7 +18,6 @@ package org.onosproject.sdnip; import org.apache.felix.scr.annotations.Activate; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Deactivate; -import org.apache.felix.scr.annotations.Modified; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.apache.felix.scr.annotations.Service; @@ -34,11 +33,8 @@ import org.onosproject.net.host.HostService; import org.onosproject.net.intent.IntentService; import org.onosproject.routingapi.RoutingService; import org.onosproject.sdnip.config.SdnIpConfigurationReader; -import org.osgi.service.component.ComponentContext; import org.slf4j.Logger; -import java.util.Dictionary; - import static org.slf4j.LoggerFactory.getLogger; /** @@ -77,9 +73,6 @@ public class SdnIp implements SdnIpService { @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) protected NetworkConfigService networkConfigService; - private static final int DEFAULT_BGP_PORT = 2000; - private int bgpPort; - private IntentSynchronizer intentSynchronizer; private SdnIpConfigurationReader config; private PeerConnectivityManager peerConnectivity; @@ -90,9 +83,8 @@ public class SdnIp implements SdnIpService { private ControllerNode localControllerNode; @Activate - protected void activate(ComponentContext context) { + protected void activate() { log.info("SDN-IP started"); - readComponentConfiguration(context); appId = coreService.registerApplication(SDN_IP_APP); config = new SdnIpConfigurationReader(); @@ -117,9 +109,6 @@ public class SdnIp implements SdnIpService { leadershipService.addListener(leadershipEventListener); leadershipService.runForLeadership(appId.name()); - - log.info("Starting BGP with port {}", bgpPort); - // TODO feed port information through to the BgpService } @Deactivate @@ -134,33 +123,6 @@ public class SdnIp implements SdnIpService { log.info("SDN-IP Stopped"); } - /** - * Extracts properties from the component configuration context. - * - * @param context the component context - */ - private void readComponentConfiguration(ComponentContext context) { - Dictionary properties = context.getProperties(); - try { - String strPort = (String) properties.get("bgpPort"); - if (strPort != null) { - bgpPort = Integer.parseInt(strPort); - } else { - bgpPort = DEFAULT_BGP_PORT; - } - } catch (Exception e) { - bgpPort = DEFAULT_BGP_PORT; - } - log.debug("BGP port is set to {}", bgpPort); - } - - @Modified - public void modified(ComponentContext context) { - // Blank @Modified method to catch modifications to the context. - // If no @Modified method exists, it seems @Activate is called again - // when the context is modified. - } - @Override public void modifyPrimary(boolean isPrimary) { intentSynchronizer.leaderChanged(isPrimary);