Implement rerouting feature in PathCalcRuntimeModule
Change-Id: Ie37ebd1fa6910e999d457481d7082adb0d1d9a3a
diff --git a/src/main/java/net/onrc/onos/intent/PathIntent.java b/src/main/java/net/onrc/onos/intent/PathIntent.java
index 4ef4cf0..a5454fa 100644
--- a/src/main/java/net/onrc/onos/intent/PathIntent.java
+++ b/src/main/java/net/onrc/onos/intent/PathIntent.java
@@ -1,16 +1,19 @@
package net.onrc.onos.intent;
+import java.util.LinkedList;
+import java.util.List;
+
import net.onrc.onos.ofcontroller.networkgraph.Link;
+import net.onrc.onos.ofcontroller.networkgraph.LinkEvent;
import net.onrc.onos.ofcontroller.networkgraph.NetworkGraph;
import net.onrc.onos.ofcontroller.networkgraph.Path;
import net.onrc.onos.ofcontroller.networkgraph.Port;
-import net.onrc.onos.ofcontroller.networkgraph.Switch;
/**
* @author Toshio Koide (t-koide@onlab.us)
*/
public class PathIntent extends Intent {
- protected long pathData[];
+ protected List<LinkEvent> path;
protected double bandwidth;
protected Intent parentIntent;
@@ -31,13 +34,13 @@
*/
public PathIntent(String id, Path path, double bandwidth, Intent parentIntent) {
super(id);
- pathData = new long[path.size() * 4];
- for (int i=0; i<path.size(); i++) {
- Link link = path.get(i);
- this.pathData[i*4] = link.getSourceSwitch().getDpid();
- this.pathData[i*4+1] = link.getSourcePort().getNumber();
- this.pathData[i*4+2] = link.getDestinationSwitch().getDpid();
- this.pathData[i*4+3] = link.getDestinationPort().getNumber();
+ this.path = new LinkedList<LinkEvent>();
+ for (Link link: path) {
+ this.path.add(new LinkEvent(
+ link.getSourceSwitch().getDpid(),
+ link.getSourcePort().getNumber(),
+ link.getDestinationSwitch().getDpid(),
+ link.getDestinationPort().getNumber()));
}
this.bandwidth = bandwidth;
this.parentIntent = parentIntent;
@@ -47,8 +50,8 @@
return bandwidth;
}
- public long[] getPathData() {
- return pathData;
+ public List<LinkEvent> getPathByLinkEvent() {
+ return path;
}
/**
@@ -57,19 +60,13 @@
* @return path object. If there is no path in the specified graph, returns null.
*/
public Path getPath(NetworkGraph graph) {
- Path path = new Path();
- Switch srcSwitch;
- Port srcPort;
- Link link;
- for (int i=0; i<pathData.length; i+=4) {
- if ((srcSwitch = graph.getSwitch(pathData[i])) == null) return null;
- if ((srcPort = srcSwitch.getPort(pathData[i+1])) == null) return null;
- if ((link = srcPort.getOutgoingLink()) == null) return null;
- if (link.getDestinationSwitch().getDpid() != pathData[i+2]) return null;
- if (link.getDestinationPort().getNumber() != pathData[i+3]) return null;
- path.add(link);
+ Path pathObj = new Path();
+ for (LinkEvent linkEvent: path) {
+ Link link = linkEvent.getLink(graph);
+ if (link == null) return null;
+ pathObj.add(link);
}
- return path;
+ return pathObj;
}
public Intent getParentIntent() {