[Falcon] Componentize IntentSynchronizer and SdnIpFib.
Change-Id: Ic384ce00572ae1e4bbf94b4de814cea3499d3828
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 ace888d..d0a5c22 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java
@@ -15,136 +15,79 @@
*/
package org.onosproject.sdnip;
-import static org.slf4j.LoggerFactory.getLogger;
-
-import java.util.Objects;
-
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.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.Service;
import org.onosproject.app.ApplicationService;
-import org.onosproject.cluster.ClusterService;
-import org.onosproject.cluster.ControllerNode;
-import org.onosproject.cluster.LeadershipEvent;
-import org.onosproject.cluster.LeadershipEventListener;
-import org.onosproject.cluster.LeadershipService;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.incubator.net.intf.InterfaceService;
import org.onosproject.net.config.NetworkConfigService;
-import org.onosproject.net.host.HostService;
-import org.onosproject.net.intent.IntentService;
+import org.onosproject.routing.IntentSynchronizationAdminService;
import org.onosproject.routing.IntentSynchronizationService;
import org.onosproject.routing.RoutingService;
-import org.onosproject.routing.SdnIpService;
-import org.onosproject.routing.config.RoutingConfigurationService;
import org.slf4j.Logger;
+import static org.slf4j.LoggerFactory.getLogger;
+
/**
* Component for the SDN-IP peering application.
*/
@Component(immediate = true)
-@Service
-public class SdnIp implements SdnIpService {
+public class SdnIp {
- private static final String SDN_IP_APP = "org.onosproject.sdnip";
+ public static final String SDN_IP_APP = "org.onosproject.sdnip";
private final Logger log = getLogger(getClass());
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected CoreService coreService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected IntentService intentService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected ApplicationService applicationService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected HostService hostService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected ClusterService clusterService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected LeadershipService leadershipService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected RoutingService routingService;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
- protected RoutingConfigurationService config;
-
- @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected NetworkConfigService networkConfigService;
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected InterfaceService interfaceService;
- private IntentSynchronizer intentSynchronizer;
- private PeerConnectivityManager peerConnectivity;
- private SdnIpFib fib;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected IntentSynchronizationService intentSynchronizer;
- private LeadershipEventListener leadershipEventListener =
- new InnerLeadershipEventListener();
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected IntentSynchronizationAdminService intentSynchronizerAdmin;
+
+ private PeerConnectivityManager peerConnectivity;
+
private ApplicationId appId;
- private ControllerNode localControllerNode;
@Activate
protected void activate() {
- log.info("SDN-IP started");
-
appId = coreService.registerApplication(SDN_IP_APP);
- localControllerNode = clusterService.getLocalNode();
-
- intentSynchronizer = new IntentSynchronizer(appId, intentService);
- intentSynchronizer.start();
-
peerConnectivity = new PeerConnectivityManager(appId,
intentSynchronizer,
networkConfigService,
- coreService.getAppId(RoutingService.ROUTER_APP_ID),
+ coreService.registerApplication(RoutingService.ROUTER_APP_ID),
interfaceService);
peerConnectivity.start();
- fib = new SdnIpFib(appId, interfaceService, intentSynchronizer);
-
- routingService.addFibListener(fib);
- routingService.start();
-
- leadershipService.addListener(leadershipEventListener);
- leadershipService.runForLeadership(appId.name());
-
+ // TODO fix removing intents
applicationService.registerDeactivateHook(appId,
- intentSynchronizer::removeIntents);
+ intentSynchronizerAdmin::removeIntents);
+ log.info("SDN-IP started");
}
@Deactivate
protected void deactivate() {
- routingService.stop();
peerConnectivity.stop();
- intentSynchronizer.stop();
-
- leadershipService.withdraw(appId.name());
- leadershipService.removeListener(leadershipEventListener);
log.info("SDN-IP Stopped");
}
- @Override
- public void modifyPrimary(boolean isPrimary) {
- intentSynchronizer.leaderChanged(isPrimary);
- }
-
- @Override
- public IntentSynchronizationService getIntentSynchronizationService() {
- return intentSynchronizer;
- }
-
/**
* Converts DPIDs of the form xx:xx:xx:xx:xx:xx:xx to OpenFlow provider
* device URIs.
@@ -156,38 +99,5 @@
return "of:" + dpid.replace(":", "");
}
- /**
- * A listener for Leadership Events.
- */
- private class InnerLeadershipEventListener
- implements LeadershipEventListener {
- @Override
- public void event(LeadershipEvent event) {
- log.debug("Leadership Event: time = {} type = {} event = {}",
- event.time(), event.type(), event);
-
- if (!event.subject().topic().equals(appId.name())) {
- return; // Not our topic: ignore
- }
- if (!Objects.equals(event.subject().leader(), localControllerNode.id())) {
- return; // The event is not about this instance: ignore
- }
-
- switch (event.type()) {
- case LEADER_ELECTED:
- log.info("SDN-IP Leader Elected");
- intentSynchronizer.leaderChanged(true);
- break;
- case LEADER_BOOTED:
- log.info("SDN-IP Leader Lost Election");
- intentSynchronizer.leaderChanged(false);
- break;
- case LEADER_REELECTED:
- break;
- default:
- break;
- }
- }
- }
}