Improvement in 'show tunnel' command
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 9a887ae..add898f 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
@@ -66,4 +66,15 @@
*/
public Collection<TunnelInfo> getTunnelTable();
+ /**
+ * Get the first group ID for the tunnel for specific source router
+ * If Segment Stitching was required to create the tunnel, there are
+ * mutiple source routers.
+ *
+ * @param tunnelId ID for the tunnel
+ * @param dpid source router DPID
+ * @return the first group ID of the tunnel and -1 if sw with specifed
+ * dpid is not found
+ */
+ public int getTunnelGroupId(String tunnelId, String dpid);
}
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 f8bfc11..3ed4bdf 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
@@ -215,7 +215,7 @@
});
testMode = POLICY_ADD1;
- //testTask.reschedule(20, TimeUnit.SECONDS);
+ testTask.reschedule(20, TimeUnit.SECONDS);
}
@Override
@@ -949,13 +949,6 @@
private String tunnelId;
private int type;
- public PolicyInfo(String pid, PacketMatch match, int priority, String tid) {
- this.policyId = pid;
- this.match = match;
- this.priority = priority;
- this.tunnelId = tid;
- }
-
public PolicyInfo(String pid, int type, PacketMatch match, int priority,
String tid) {
this.policyId = pid;
@@ -964,6 +957,29 @@
this.tunnelId = tid;
this.type = type;
}
+
+ public PolicyInfo(String pid, PacketMatch match, int priority,
+ String tid) {
+ this.policyId = pid;
+ this.match = match;
+ this.priority = priority;
+ this.tunnelId = tid;
+ }
+ public String getPolicyId(){
+ return this.policyId;
+ }
+ public PacketMatch getMatch(){
+ return this.match;
+ }
+ public int getPriority(){
+ return this.priority;
+ }
+ public String getTunnelId(){
+ return this.tunnelId;
+ }
+ public int getType(){
+ return this.type;
+ }
}
public class TunnelInfo {
@@ -1211,6 +1227,9 @@
routeInfo.setSrcDpid(srcSw.getDpid().toString());
String nodeId = route.get(1);
List<Dpid> fwdSwDpids = getForwardingSwitchForNodeId(srcSw, nodeId);
+ if (fwdSwDpids == null){
+ return null;
+ }
for (Dpid dpid: fwdSwDpids) {
if (getMplsLabel(dpid.toString()).toString().equals(nodeId)) {
List<Dpid> fwdSws = new ArrayList<Dpid>();
@@ -1718,8 +1737,8 @@
this.createPolicy("2", null, null, Ethernet.TYPE_IPV4, srcIp,
dstIp, IPv4.PROTOCOL_ICMP, (short)-1, (short)-1, 20000,
"2");
- testMode = POLICY_REMOVE2;
- testTask.reschedule(5, TimeUnit.SECONDS);
+ //testMode = POLICY_REMOVE2;
+ //testTask.reschedule(5, TimeUnit.SECONDS);
}
else {
log.debug("Retry it");
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 cd6f9be..4c6457a 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
@@ -1,30 +1,28 @@
package net.onrc.onos.apps.segmentrouting.web;
import java.util.List;
-
/**
* This class contains tunnel info of ONOS Segement Routing App
* Used for rest API
*/
public class SegmentRouterTunnelInfo {
private String tunnelId;
- // private List<Dpid> nodes;
private List<List<String>> labelStack;
-
- public SegmentRouterTunnelInfo(String tId, /*List<Dpid> dpids,*/
- List<List<String>> tunnelRoutes){
+ private List<String> dpidGroup;
+
+ public SegmentRouterTunnelInfo (String tId,
+ List<List<String>> tunnelRoutes, List<String> dpidsWithGroup){
this.tunnelId = tId;
- // this.nodes = dpids;
this.labelStack = tunnelRoutes;
+ this.dpidGroup = dpidsWithGroup;
}
public String getTunnelId (){
return this.tunnelId;
}
-
- /*public List<Dpid> getnodes (){
- return this.nodes;
- }*/
public List<List<String>> getLabelStack (){
return this.labelStack;
}
+ public List<String> getDpidGroup (){
+ return this.dpidGroup;
+ }
}
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 bf3a084..d391082 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
@@ -73,7 +73,6 @@
@Get("json")
public Object getTunnel() {
- System.out.println("Got into getTunnel");
ISegmentRoutingService segmentRoutingService =
(ISegmentRoutingService) getContext().getAttributes().
get(ISegmentRoutingService.class.getCanonicalName());
@@ -83,19 +82,19 @@
TunnelInfo tunnelInfo = ttI.next();
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(),
+ label.getSrcSwDpid());
+ dpidGroup.add(label.getSrcSwDpid() + "/"+ gId);
}
SegmentRouterTunnelInfo info = new SegmentRouterTunnelInfo(tunnelInfo.getTunnelId(),
- /*tunnelInfo.getDpids(),*/labelStack);
+ labelStack, dpidGroup);
infoList.add(info);
- //TODO Add Group/DPID
-
}
log.debug("getTunnel with params");
- Map <String,List<SegmentRouterTunnelInfo>>result = new HashMap<String,List<SegmentRouterTunnelInfo>>();
- result.put("tunnels", infoList);
return infoList;
}
}