ONOS-1930 : Tunnel and policy failover with multi-instances
- Prevents tunnel delete from removing groups used for default flows
- Removes SegmentRoutingManager reference from Tunnel and Policy class
- Adds some error checks such as duplicates tunnel IDs or duplicate polices
Change-Id: I0e7d5e2eff0aea6dad13137a872fee58e083b11c
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java
index 4a25438..7226fd8 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultGroupHandler.java
@@ -181,8 +181,8 @@
.contains(newLink.dst().deviceId())))
.collect(Collectors.toSet());
log.trace("linkUp: nsNextObjStore contents for device {}:",
- deviceId,
- nsSet);
+ deviceId,
+ nsSet);
for (NeighborSet ns : nsSet) {
// Create the new bucket to be updated
TrafficTreatment.Builder tBuilder =
@@ -317,6 +317,22 @@
return nextId.intValue();
}
+ /**
+ * Checks if the next objective ID (group) for the neighbor set exists or not.
+ *
+ * @param ns neighbor set to check
+ * @return true if it exists, false otherwise
+ */
+ public boolean hasNextObjectiveId(NeighborSet ns) {
+ Integer nextId = nsNextObjStore.
+ get(new NeighborSetNextObjectiveStoreKey(deviceId, ns));
+ if (nextId == null) {
+ return false;
+ }
+
+ return true;
+ }
+
// Empty implementation
protected void newNeighbor(Link newLink) {
}
@@ -489,6 +505,7 @@
break;
}
}
+ return true;
}
return false;