Changing from list of dpids to labels and accordingly show tunnel output
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 e2efa42..9a887ae 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/ISegmentRoutingService.java
@@ -6,7 +6,6 @@
import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.util.MACAddress;
import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelInfo;
-import net.onrc.onos.core.util.Dpid;
import net.onrc.onos.core.util.IPv4Net;
/**
@@ -19,11 +18,11 @@
* Create a tunnel for policy routing.
*
* @param tunnelId ID for the tunnel
- * @param Ids Node IDs for the tunnel
+ * @param labelIds Node label IDs for the tunnel
*
* @return "true/false" depending tunnel creation status
*/
- public boolean createTunnel(String tunnelId, List<Dpid> Ids);
+ public boolean createTunnel(String tunnelId, List<Integer> labelIds);
/**
* Remove a Segment Routing tunnel given a tunnel Id.
@@ -36,7 +35,7 @@
/**
* Create a policy for policy based segment routing
- *
+ *
* @param pid Unique Policy Identifier
* @param srcIP Source IP address in CIDR format
* @param dstIP Destination IP address in CIDR format
@@ -65,6 +64,6 @@
* info about tunnels
* @return Collection<TunnelInfo>
*/
-
+
public Collection<TunnelInfo> getTunnelTable();
}
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 537a894..c29fc65 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/SegmentRoutingManager.java
@@ -5,6 +5,7 @@
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -967,19 +968,20 @@
public class TunnelInfo {
private String tunnelId;
- private List<Dpid> dpids;
+ private List<Integer> labelIds;
private List<TunnelRouteInfo> routes;
- public TunnelInfo(String tid, List<Dpid> dpids, List<TunnelRouteInfo> routes) {
+ public TunnelInfo(String tid, List<Integer> labelIds, List<TunnelRouteInfo> routes) {
this.tunnelId = tid;
- this.dpids = dpids;
+ this.labelIds = labelIds;
this.routes = routes;
}
public String getTunnelId(){
return this.tunnelId;
}
- public List<Dpid> getDpids(){
- return this.dpids;
+
+ public List<Integer> getLabelids() {
+ return this.labelIds;
}
public List<TunnelRouteInfo> getRoutes(){
return this.routes;
@@ -1041,9 +1043,9 @@
* @param tid tunnel ID
* @return List of DPID
*/
- public List<Dpid> getTunnelInfo(String tid) {
+ public List<Integer> getTunnelInfo(String tid) {
TunnelInfo tunnelInfo = tunnelTable.get(tid);
- return tunnelInfo.dpids;
+ return tunnelInfo.labelIds;
}
@@ -1076,16 +1078,16 @@
* @param tunnelId Node IDs for the tunnel
* @param Ids tunnel ID
*/
- public boolean createTunnel(String tunnelId, List<Dpid> dpids) {
+ public boolean createTunnel(String tunnelId, List<Integer> labelIds) {
- if (dpids.isEmpty() || dpids.size() < 2) {
+ if (labelIds.isEmpty() || labelIds.size() < 2) {
log.debug("Wrong tunnel information");
return false;
}
List<String> Ids = new ArrayList<String>();
- for (Dpid dpid: dpids) {
- Ids.add(getMplsLabel(dpid.toString()));
+ for (Integer label : labelIds) {
+ Ids.add(label.toString());
}
List<TunnelRouteInfo> stitchingRule = getStitchingRule(Ids);
@@ -1115,7 +1117,7 @@
}
//tunnelGroupMap.put(tunnelId, switchGroupPair);
- TunnelInfo tunnelInfo = new TunnelInfo(tunnelId, dpids, stitchingRule);
+ TunnelInfo tunnelInfo = new TunnelInfo(tunnelId, labelIds, stitchingRule);
tunnelTable.put(tunnelId, tunnelInfo);
return true;
@@ -1685,14 +1687,14 @@
private void runTest() {
if (testMode == POLICY_ADD1) {
- String[] routeArray = {"101", "105", "110"};
- List<Dpid> routeList = new ArrayList<Dpid>();
+ Integer[] routeArray = {101, 105, 110};
+ /*List<Dpid> routeList = new ArrayList<Dpid>();
for (int i = 0; i < routeArray.length; i++) {
Dpid dpid = getSwitchFromNodeId(routeArray[i]).getDpid();
routeList.add(dpid);
- }
+ }*/
- if (createTunnel("1", routeList)) {
+ if (createTunnel("1", Arrays.asList(routeArray))) {
IPv4Net srcIp = new IPv4Net("10.0.1.1/24");
IPv4Net dstIp = new IPv4Net("10.1.2.1/24");
@@ -1709,15 +1711,9 @@
}
}
else if (testMode == POLICY_ADD2) {
- String[] routeArray = {"101", "102", "103", "104", "105", "108",
- "110"};
- List<Dpid> routeList = new ArrayList<Dpid>();
- for (int i = 0; i < routeArray.length; i++) {
- Dpid dpid = getSwitchFromNodeId(routeArray[i]).getDpid();
- routeList.add(dpid);
- }
+ Integer[] routeArray = {101, 102, 103, 104, 105, 108, 110};
- if (createTunnel("2", routeList)) {
+ if (createTunnel("2", Arrays.asList(routeArray))) {
IPv4Net srcIp = new IPv4Net("10.0.1.1/24");
IPv4Net dstIp = new IPv4Net("10.1.2.1/24");
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 785dde7..cd6f9be 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
@@ -2,30 +2,28 @@
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<Dpid> nodes;
private List<List<String>> labelStack;
-
- public SegmentRouterTunnelInfo (String tId, List<Dpid> dpids,
+
+ public SegmentRouterTunnelInfo(String tId, /*List<Dpid> dpids,*/
List<List<String>> tunnelRoutes){
this.tunnelId = tId;
- this.nodes = dpids;
+ // this.nodes = dpids;
this.labelStack = tunnelRoutes;
}
public String getTunnelId (){
return this.tunnelId;
}
- public List<Dpid> getnodes (){
+
+ /*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/SegmentRouterTunnelRESTParams.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelRESTParams.java
index 4248b24..6eedfb1 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelRESTParams.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRouterTunnelRESTParams.java
@@ -4,11 +4,11 @@
public class SegmentRouterTunnelRESTParams {
private String tunnel_id;
- private List<String> tunnel_path;
+ private List<Integer> label_path;
public SegmentRouterTunnelRESTParams() {
this.tunnel_id = null;
- this.tunnel_path = null;
+ this.label_path = null;
}
public void setTunnel_id(String tunnel_id) {
@@ -19,11 +19,11 @@
return this.tunnel_id;
}
- public void setTunnel_path(List<String> tunnel_path) {
- this.tunnel_path = tunnel_path;
+ public void setLabel_path(List<Integer> label_path) {
+ this.label_path = label_path;
}
- public List<String> getTunnel_path() {
- return this.tunnel_path;
+ public List<Integer> getLabel_path() {
+ return this.label_path;
}
}
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 3c19a21..bf3a084 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,10 +2,14 @@
import java.io.IOException;
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.core.util.Dpid;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelInfo;
+import net.onrc.onos.apps.segmentrouting.SegmentRoutingManager.TunnelRouteInfo;
import org.codehaus.jackson.map.ObjectMapper;
import org.restlet.resource.Delete;
@@ -14,17 +18,6 @@
import org.restlet.resource.ServerResource;
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
*
@@ -49,14 +42,10 @@
log.error("Exception occurred parsing inbound JSON", ex);
return "fail";
}
- log.debug("createTunnel with tunnelId {} tunnelPath{}",
- createParams.getTunnel_id(), createParams.getTunnel_path());
- List<Dpid> tunnelDpids = new ArrayList<Dpid>();
- for (String dpid : createParams.getTunnel_path()) {
- tunnelDpids.add(new Dpid(dpid));
- }
+ log.debug("createTunnel with tunnelId {} Label Path{}",
+ createParams.getTunnel_id(), createParams.getLabel_path());
boolean result = segmentRoutingService.createTunnel(createParams.getTunnel_id(),
- tunnelDpids);
+ createParams.getLabel_path());
return (result == true) ? "success" : "fail";
}
@@ -99,10 +88,10 @@
labelStack.add(label.getRoute());
}
SegmentRouterTunnelInfo info = new SegmentRouterTunnelInfo(tunnelInfo.getTunnelId(),
- tunnelInfo.getDpids(), labelStack );
+ /*tunnelInfo.getDpids(),*/labelStack);
infoList.add(info);
//TODO Add Group/DPID
-
+
}
log.debug("getTunnel with params");
Map <String,List<SegmentRouterTunnelInfo>>result = new HashMap<String,List<SegmentRouterTunnelInfo>>();