[Falcon] More flexible component choice for routing apps
Change-Id: I0b01f633332fa7f099d4b3ffe58d86141f3a040b
diff --git a/apps/bgprouter/src/main/java/org/onosproject/bgprouter/BgpRouter.java b/apps/bgprouter/src/main/java/org/onosproject/bgprouter/BgpRouter.java
index 8acf9a7..d4998fe 100644
--- a/apps/bgprouter/src/main/java/org/onosproject/bgprouter/BgpRouter.java
+++ b/apps/bgprouter/src/main/java/org/onosproject/bgprouter/BgpRouter.java
@@ -22,6 +22,7 @@
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
+import org.onosproject.incubator.component.ComponentService;
import org.onosproject.incubator.net.intf.InterfaceService;
import org.onosproject.net.DeviceId;
import org.onosproject.net.config.NetworkConfigService;
@@ -36,6 +37,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Optional;
/**
@@ -72,6 +75,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected DeviceService deviceService;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected ComponentService componentService;
+
private ApplicationId appId;
// Device id of control-plane switch (OVS) connected to BGP Speaker - should be
@@ -85,10 +91,19 @@
private DeviceListener deviceListener;
private IcmpHandler icmpHandler;
+ private static List<String> components = new ArrayList<>();
+ static {
+ components.add("org.onosproject.routing.bgp.BgpSessionManager");
+ components.add("org.onosproject.routing.impl.Router");
+ components.add("org.onosproject.routing.impl.SingleSwitchFibInstaller");
+ }
+
@Activate
protected void activate() {
appId = coreService.registerApplication(BGP_ROUTER_APP);
+ components.forEach(name -> componentService.activate(appId, name));
+
ApplicationId routerAppId = coreService.getAppId(RoutingService.ROUTER_APP_ID);
BgpConfig bgpConfig =
networkConfigService.getConfig(routerAppId, RoutingService.CONFIG_CLASS);
@@ -123,6 +138,8 @@
@Deactivate
protected void deactivate() {
+ components.forEach(name -> componentService.deactivate(appId, name));
+
connectivityManager.stop();
icmpHandler.stop();
deviceService.removeListener(deviceListener);