CORD-77 Dynamic Access Agent Config
This commit depends on https://gerrit.opencord.org/#/c/56/
Change-Id: I6084621c36046ae8b6262cab52c49825d3e0d0d1
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
index 2b87fca..c115704 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -82,6 +82,9 @@
import org.onosproject.store.service.EventuallyConsistentMapBuilder;
import org.onosproject.store.service.StorageService;
import org.onosproject.store.service.WallClockTimestamp;
+import org.opencord.cordconfig.CordConfigEvent;
+import org.opencord.cordconfig.CordConfigListener;
+import org.opencord.cordconfig.CordConfigService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -147,6 +150,9 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected TopologyService topologyService;
+ @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+ protected CordConfigService cordConfigService;
+
protected ArpHandler arpHandler = null;
protected IcmpHandler icmpHandler = null;
protected IpHandler ipHandler = null;
@@ -163,11 +169,13 @@
private AppConfigHandler appCfgHandler = null;
protected XConnectHandler xConnectHandler = null;
private McastHandler mcastHandler = null;
- private HostHandler hostHandler = null;
+ protected HostHandler hostHandler = null;
+ private CordConfigHandler cordConfigHandler = null;
private InternalEventHandler eventHandler = new InternalEventHandler();
private final InternalHostListener hostListener = new InternalHostListener();
private final InternalConfigListener cfgListener = new InternalConfigListener(this);
private final InternalMcastListener mcastListener = new InternalMcastListener();
+ private final InternalCordConfigListener cordConfigListener = new InternalCordConfigListener();
private ScheduledExecutorService executorService = Executors
.newScheduledThreadPool(1);
@@ -324,6 +332,7 @@
xConnectHandler = new XConnectHandler(this);
mcastHandler = new McastHandler(this);
hostHandler = new HostHandler(this);
+ cordConfigHandler = new CordConfigHandler(this);
cfgService.addListener(cfgListener);
cfgService.registerConfigFactory(deviceConfigFactory);
@@ -335,6 +344,7 @@
linkService.addListener(linkListener);
deviceService.addListener(deviceListener);
multicastRouteService.addListener(mcastListener);
+ cordConfigService.addListener(cordConfigListener);
// Request ARP packet-in
TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
@@ -379,6 +389,7 @@
linkService.removeListener(linkListener);
deviceService.removeListener(deviceListener);
multicastRouteService.removeListener(mcastListener);
+ cordConfigService.removeListener(cordConfigListener);
processor = null;
linkListener = null;
@@ -394,7 +405,6 @@
log.info("Stopped");
}
-
@Override
public List<Tunnel> getTunnels() {
return tunnelHandler.getTunnels();
@@ -818,6 +828,7 @@
if (mastershipService.isLocalMaster(deviceId)) {
hostHandler.readInitialHosts(deviceId);
xConnectHandler.init(deviceId);
+ cordConfigHandler.init(deviceId);
DefaultGroupHandler groupHandler = groupHandlerMap.get(deviceId);
groupHandler.createGroupsFromSubnetConfig();
routingRulePopulator.populateSubnetBroadcastRule(deviceId);
@@ -1000,4 +1011,26 @@
}
}
}
+
+ private class InternalCordConfigListener implements CordConfigListener {
+ @Override
+ public void event(CordConfigEvent event) {
+ switch (event.type()) {
+ case ACCESS_AGENT_ADDED:
+ cordConfigHandler.processAccessAgentAddedEvent(event);
+ break;
+ case ACCESS_AGENT_UPDATED:
+ cordConfigHandler.processAccessAgentUpdatedEvent(event);
+ break;
+ case ACCESS_AGENT_REMOVED:
+ cordConfigHandler.processAccessAgentRemovedEvent(event);
+ break;
+ case ACCESS_DEVICE_ADDED:
+ case ACCESS_DEVICE_UPDATED:
+ case ACCESS_DEVICE_REMOVED:
+ default:
+ break;
+ }
+ }
+ }
}