- Adds error handling for Segment routing CLI
- Removes SegmentRoutingManager reference from TunnelHandler and PolicyHandler
Change-Id: Iab6acdc489d41a63ebf6b37b65d0e82448a8b25a
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 f473cce..178723f 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -199,8 +199,10 @@
ipHandler = new IpHandler(this);
routingRulePopulator = new RoutingRulePopulator(this);
defaultRoutingHandler = new DefaultRoutingHandler(this);
- tunnelHandler = new TunnelHandler(this, tunnelStore);
- policyHandler = new PolicyHandler(this, policyStore);
+ tunnelHandler = new TunnelHandler(linkService, deviceConfiguration,
+ groupHandlerMap, tunnelStore);
+ policyHandler = new PolicyHandler(appId, deviceConfiguration,
+ flowObjectiveService, tunnelHandler, policyStore);
packetService.addProcessor(processor, PacketProcessor.ADVISOR_MAX + 2);
linkService.addListener(new InternalLinkListener());
@@ -240,33 +242,32 @@
}
@Override
- public void createTunnel(Tunnel tunnel) {
- tunnelHandler.createTunnel(tunnel);
+ public TunnelHandler.Result createTunnel(Tunnel tunnel) {
+ return tunnelHandler.createTunnel(tunnel);
}
@Override
- public void removeTunnel(Tunnel tunnel) {
+ public TunnelHandler.Result removeTunnel(Tunnel tunnel) {
for (Policy policy: policyHandler.getPolicies()) {
if (policy.type() == Policy.Type.TUNNEL_FLOW) {
TunnelPolicy tunnelPolicy = (TunnelPolicy) policy;
if (tunnelPolicy.tunnelId().equals(tunnel.id())) {
log.warn("Cannot remove the tunnel used by a policy");
- return;
+ return TunnelHandler.Result.TUNNEL_IN_USE;
}
}
}
- tunnelHandler.removeTunnel(tunnel);
+ return tunnelHandler.removeTunnel(tunnel);
}
@Override
- public void removePolicy(Policy policy) {
- policyHandler.removePolicy(policy);
-
+ public PolicyHandler.Result removePolicy(Policy policy) {
+ return policyHandler.removePolicy(policy);
}
@Override
- public void createPolicy(Policy policy) {
- policyHandler.createPolicy(policy);
+ public PolicyHandler.Result createPolicy(Policy policy) {
+ return policyHandler.createPolicy(policy);
}
@Override
@@ -319,35 +320,6 @@
}
}
- /**
- * Checks if the next objective ID (group) for the neighbor set exists or not in the device.
- *
- * @param deviceId Device ID to check
- * @param ns neighbor set to check
- * @return true if it exists, false otherwise
- */
- public boolean hasNextObjectiveId(DeviceId deviceId, NeighborSet ns) {
- if (groupHandlerMap.get(deviceId) != null) {
- log.trace("getNextObjectiveId query in device {}", deviceId);
- return groupHandlerMap
- .get(deviceId).hasNextObjectiveId(ns);
- } else {
- log.warn("getNextObjectiveId query in device {} not found", deviceId);
- return false;
- }
- }
-
- /**
- * Removes the next objective ID.
- *
- * @param deviceId Device ID
- * @param objectiveId next objective ID to remove
- * @return true, if succeeds, false otherwise
- */
- public boolean removeNextObjective(DeviceId deviceId, int objectiveId) {
- return groupHandlerMap.get(deviceId).removeGroup(objectiveId);
- }
-
private class InternalPacketProcessor implements PacketProcessor {
@Override