CORD-1578 CORD-1708 Handle dual single homed router and single dual homed router
In addition
- Carry all alternatives in ROUTE_UPDATED and ROUTE_REMOVED event
- More unit tests
- More debug messages
- Fix routing table out-of-sync issue in MockRoutingService
- Fix populateRoute/revokeRoute mastership issue
Change-Id: I22d537625b570b09ecd4e22e6e14bb1ee27f8bcb
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 6be675a..79bd8d3 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -130,6 +130,7 @@
public class SegmentRoutingManager implements SegmentRoutingService {
private static Logger log = LoggerFactory.getLogger(SegmentRoutingManager.class);
+ private static final String NOT_MASTER = "Current instance is not the master of {}. Ignore.";
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
private ComponentConfigService compCfgService;
@@ -700,6 +701,20 @@
}
/**
+ * Determine if current instance is the master of given connect point.
+ *
+ * @param cp connect point
+ * @return true if current instance is the master of given connect point
+ */
+ boolean isMasterOf(ConnectPoint cp) {
+ boolean isMaster = mastershipService.isLocalMaster(cp.deviceId());
+ if (!isMaster) {
+ log.debug(NOT_MASTER, cp);
+ }
+ return isMaster;
+ }
+
+ /**
* Returns locations of given resolved route.
*
* @param resolvedRoute resolved route
@@ -1539,6 +1554,7 @@
break;
case HOST_MOVED:
hostHandler.processHostMovedEvent(event);
+ routeHandler.processHostMovedEvent(event);
break;
case HOST_REMOVED:
hostHandler.processHostRemovedEvent(event);
@@ -1587,6 +1603,9 @@
case ROUTE_REMOVED:
routeHandler.processRouteRemoved(event);
break;
+ case ALTERNATIVE_ROUTES_CHANGED:
+ routeHandler.processAlternativeRoutesChanged(event);
+ break;
default:
break;
}