Added command 'show tunnel details', replaced node with policyIds
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
index add898f..44411cd 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
@@ -5,6 +5,7 @@
import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.util.MACAddress;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.PolicyInfo;
import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelInfo;
import net.onrc.onos.core.util.IPv4Net;
@@ -77,4 +78,9 @@
* dpid is not found
*/
public int getTunnelGroupId(String tunnelId, String dpid);
+ /**
+ * return list of all the policies currently there in Segment Router
+ * @return Collection<PolicyInfo>
+ */
+ public Collection<PolicyInfo> getPoclicyTable();
}
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
index 3ed4bdf..8a9ec48 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
@@ -1052,6 +1052,10 @@
public Collection<TunnelInfo> getTunnelTable() {
return this.tunnelTable.values();
}
+
+ public Collection<PolicyInfo> getPoclicyTable() {
+ return this.policyTable.values();
+ }
/**
* Return router DPIDs for the tunnel
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
index 4c6457a..105983b 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
@@ -9,12 +9,14 @@
private String tunnelId;
private List<List<String>> labelStack;
private List<String> dpidGroup;
+ private String policies;
- public SegmentRouterTunnelInfo (String tId,
- List<List<String>> tunnelRoutes, List<String> dpidsWithGroup){
+ public SegmentRouterTunnelInfo (String tId,List<List<String>> tunnelRoutes,
+ List<String> dpidsWithGroup,String policiesId){
this.tunnelId = tId;
this.labelStack = tunnelRoutes;
this.dpidGroup = dpidsWithGroup;
+ this.policies = policiesId;
}
public String getTunnelId (){
return this.tunnelId;
@@ -25,4 +27,7 @@
public List<String> getDpidGroup (){
return this.dpidGroup;
}
+ public String getPolicies (){
+ return this.policies;
+ }
}
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
index d391082..32d9cc6 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelResource.java
@@ -2,12 +2,14 @@
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.onrc.onos.apps.segmentrouting.ISegmentRoutingService;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.PolicyInfo;
import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelInfo;
import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelRouteInfo;
@@ -80,18 +82,31 @@
List<SegmentRouterTunnelInfo> infoList = new ArrayList<SegmentRouterTunnelInfo>();
while(ttI.hasNext()){
TunnelInfo tunnelInfo = ttI.next();
+ String tunnelId = tunnelInfo.getTunnelId();
+ Collection<PolicyInfo> policies = segmentRoutingService.getPoclicyTable();
+ Iterator<PolicyInfo> piI = policies.iterator();
+ String policiesId = "";
+ while(piI.hasNext()){
+ PolicyInfo policy = piI.next();
+ if(policy.getTunnelId().equals(tunnelId)){
+ policiesId += (policy.getPolicyId()+",");
+ }
+ }
+ if (policiesId.endsWith(",")){
+ policiesId = (String) policiesId.subSequence(0, policiesId.length()-1);
+ }
Iterator<TunnelRouteInfo>trI = tunnelInfo.getRoutes().iterator();
List<List<String>> labelStack = new ArrayList<List<String>>();
List<String> dpidGroup = new ArrayList<String>();
while(trI.hasNext()){
TunnelRouteInfo label = trI.next();
labelStack.add(label.getRoute());
- Integer gId = segmentRoutingService.getTunnelGroupId(tunnelInfo.getTunnelId(),
+ Integer gId = segmentRoutingService.getTunnelGroupId(tunnelId,
label.getSrcSwDpid());
dpidGroup.add(label.getSrcSwDpid() + "/"+ gId);
}
- SegmentRouterTunnelInfo info = new SegmentRouterTunnelInfo(tunnelInfo.getTunnelId(),
- labelStack, dpidGroup);
+ SegmentRouterTunnelInfo info = new SegmentRouterTunnelInfo(tunnelId,
+ labelStack, dpidGroup, policiesId);
infoList.add(info);
}
log.debug("getTunnel with params");