Added backend for 'show tunnel' and some minnor fixes
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
new file mode 100644
index 0000000..785dde7
--- /dev/null
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelInfo.java
@@ -0,0 +1,32 @@
+package net.onrc.onos.apps.segmentrouting.web;
+
+import java.util.List;
+
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelRouteInfo;
+import net.onrc.onos.core.util.Dpid;
+
+/**
+ * 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){
+ this.tunnelId = tId;
+ this.nodes = dpids;
+ this.labelStack = tunnelRoutes;
+ }
+ public String getTunnelId (){
+ return this.tunnelId;
+ }
+ public List<Dpid> getnodes (){
+ return this.nodes;
+ }
+ public List<List<String>> getLabelStack (){
+ return this.labelStack;
+ }
+}
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 7bcdfa6..71cfc05 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
@@ -15,6 +15,16 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
+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;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelInfo;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelRouteInfo;
/**
* Base class for return router statistics
*
@@ -57,9 +67,30 @@
}
@Get("json")
- public String getTunnel() {
- String reply = "success";
+ public Object getTunnel() {
+ System.out.println("Got into getTunnel");
+ ISegmentRoutingService segmentRoutingService =
+ (ISegmentRoutingService) getContext().getAttributes().
+ get(ISegmentRoutingService.class.getCanonicalName());
+ Iterator<TunnelInfo> ttI = segmentRoutingService.getTunnelTable().iterator();
+ List<SegmentRouterTunnelInfo> infoList = new ArrayList<SegmentRouterTunnelInfo>();
+ while(ttI.hasNext()){
+ TunnelInfo tunnelInfo = ttI.next();
+ Iterator<TunnelRouteInfo>trI = tunnelInfo.getRoutes().iterator();
+ List<List<String>> labelStack = new ArrayList<List<String>>();
+ while(trI.hasNext()){
+ TunnelRouteInfo label = trI.next();
+ labelStack.add(label.getRoute());
+ }
+ SegmentRouterTunnelInfo info = new SegmentRouterTunnelInfo(tunnelInfo.getTunnelId(),
+ tunnelInfo.getDpids(), labelStack );
+ infoList.add(info);
+ //TODO Add Group/DPID
+
+ }
log.debug("getTunnel with params");
- return reply;
+ Map <String,List<SegmentRouterTunnelInfo>>result = new HashMap<String,List<SegmentRouterTunnelInfo>>();
+ result.put("tunnels", infoList);
+ return infoList;
}
}
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
index 119df92..e19df8d 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
@@ -1,6 +1,9 @@
package net.onrc.onos.apps.segmentrouting.web;
+import java.util.Iterator;
+
import net.floodlightcontroller.restserver.RestletRoutable;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager;
import org.restlet.Context;
import org.restlet.Restlet;