Renamed interface
net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService
to
net.onrc.onos.ofcontroller.topology.ITopologyNetService
NOTE: There is already Floodlight interface ITopologyService, hence
here we use the name ITopologyNetService.
In the future, Floodlight ITopologyService should be removed, and
ITopologyNetService renamed to ITopologyService.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
index cf91c4b..9b6ac53 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
@@ -34,7 +34,6 @@
import net.floodlightcontroller.util.MACAddress;
import net.onrc.onos.ofcontroller.bgproute.RibUpdate.Operation;
import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoLinkService;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.onrc.onos.ofcontroller.core.internal.TopoLinkServiceImpl;
import net.onrc.onos.ofcontroller.linkdiscovery.ILinkDiscovery;
import net.onrc.onos.ofcontroller.linkdiscovery.ILinkDiscovery.LDUpdate;
@@ -42,6 +41,7 @@
import net.onrc.onos.ofcontroller.proxyarp.IArpRequester;
import net.onrc.onos.ofcontroller.proxyarp.IProxyArpService;
import net.onrc.onos.ofcontroller.proxyarp.ProxyArpManager;
+import net.onrc.onos.ofcontroller.topology.ITopologyNetService;
import net.onrc.onos.ofcontroller.topology.TopologyManager;
import net.onrc.onos.ofcontroller.util.DataPath;
import net.onrc.onos.ofcontroller.util.Dpid;
@@ -83,7 +83,7 @@
protected IFloodlightProviderService floodlightProvider;
protected ITopologyService topology;
- protected ITopoRouteService topoRouteService;
+ protected ITopologyNetService topologyNetService;
protected ILinkDiscoveryService linkDiscoveryService;
protected IRestApiService restApi;
@@ -142,7 +142,7 @@
private FlowCache flowCache;
- protected volatile Map<Long, ?> topoRouteTopology = null;
+ protected volatile Map<Long, ?> shortestPathTopo = null;
protected class TopologyChangeDetector implements Runnable {
@Override
@@ -272,7 +272,7 @@
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
topologyChangeDetectorTask = new SingletonTask(executor, new TopologyChangeDetector());
- topoRouteService = new TopologyManager("");
+ topologyNetService = new TopologyManager("");
pathsWaitingOnArp = new HashMap<InetAddress, Path>();
prefixesWaitingOnArp = Multimaps.synchronizedSetMultimap(
@@ -498,14 +498,14 @@
//Add a flow to rewrite mac for this prefix to all other border switches
for (Interface srcInterface : srcInterfaces.values()) {
DataPath shortestPath;
- if (topoRouteTopology == null) {
- shortestPath = topoRouteService.getShortestPath(
+ if (shortestPathTopo == null) {
+ shortestPath = topologyNetService.getShortestPath(
srcInterface.getSwitchPort(),
egressInterface.getSwitchPort());
}
else {
- shortestPath = topoRouteService.getTopoShortestPath(
- topoRouteTopology, srcInterface.getSwitchPort(),
+ shortestPath = topologyNetService.getTopoShortestPath(
+ shortestPathTopo, srcInterface.getSwitchPort(),
egressInterface.getSwitchPort());
}
@@ -697,12 +697,12 @@
}
DataPath shortestPath;
- if (topoRouteTopology == null) {
- shortestPath = topoRouteService.getShortestPath(
+ if (shortestPathTopo == null) {
+ shortestPath = topologyNetService.getShortestPath(
srcInterface.getSwitchPort(), dstInterface.getSwitchPort());
}
else {
- shortestPath = topoRouteService.getTopoShortestPath(topoRouteTopology,
+ shortestPath = topologyNetService.getTopoShortestPath(shortestPathTopo,
srcInterface.getSwitchPort(), dstInterface.getSwitchPort());
}
@@ -771,7 +771,7 @@
for (BgpPeer bgpPeer : bgpPeers.values()){
Interface peerInterface = interfaces.get(bgpPeer.getInterfaceName());
- DataPath path = topoRouteService.getShortestPath(
+ DataPath path = topologyNetService.getShortestPath(
peerInterface.getSwitchPort(), bgpdAttachmentPoint);
if (path == null){
@@ -1046,7 +1046,7 @@
private void beginRouting(){
log.debug("Topology is now ready, beginning routing function");
- topoRouteTopology = topoRouteService.prepareShortestPathTopo();
+ shortestPathTopo = topologyNetService.prepareShortestPathTopo();
setupArpFlows();
setupDefaultDropFlows();
@@ -1086,7 +1086,7 @@
continue;
}
- DataPath shortestPath = topoRouteService.getShortestPath(
+ DataPath shortestPath = topologyNetService.getShortestPath(
srcInterface.getSwitchPort(), dstInterface.getSwitchPort());
if (shortestPath == null){
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyService.java b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyService.java
index 954515b..31303d8 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyService.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/INetMapTopologyService.java
@@ -1,16 +1,12 @@
package net.onrc.onos.ofcontroller.core;
import java.util.List;
-import java.util.Map;
-import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.routing.Link;
import net.floodlightcontroller.topology.NodePortTuple;
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IDeviceObject;
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.onrc.onos.ofcontroller.util.DataPath;
-import net.onrc.onos.ofcontroller.util.SwitchPort;
public interface INetMapTopologyService extends INetMapService {
@@ -34,87 +30,7 @@
Iterable<IDeviceObject> getDevicesOnSwitch(String dpid);
Iterable<IDeviceObject> getDevicesOnSwitch(String dpid, short port_num);
}
-
- public interface ITopoRouteService extends IFloodlightService {
- /**
- * Get the shortest path from a source to a destination.
- *
- * @param src the source in the shortest path computation.
- * @param dest the destination in the shortest path computation.
- * @return the data path with the computed shortest path if
- * found, otherwise null.
- */
- DataPath getShortestPath(SwitchPort src, SwitchPort dest);
- /**
- * Fetch the Switch and Ports info from the Titan Graph
- * and return it for fast access during the shortest path
- * computation.
- *
- * After fetching the state, method @ref getTopoShortestPath()
- * can be used for fast shortest path computation.
- *
- * Note: There is certain cost to fetch the state, hence it should
- * be used only when there is a large number of shortest path
- * computations that need to be done on the same topology.
- * Typically, a single call to @ref prepareShortestPathTopo()
- * should be followed by a large number of calls to
- * method @ref getTopoShortestPath().
- * After the last @ref getTopoShortestPath() call,
- * method @ref dropShortestPathTopo() should be used to release
- * the internal state that is not needed anymore:
- *
- * Map<Long, ?> shortestPathTopo;
- * shortestPathTopo = prepareShortestPathTopo();
- * for (int i = 0; i < 10000; i++) {
- * dataPath = getTopoShortestPath(shortestPathTopo, ...);
- * ...
- * }
- * dropShortestPathTopo(shortestPathTopo);
- *
- * @return the Shortest Path info handler stored in a map.
- */
- Map<Long, ?> prepareShortestPathTopo();
-
- /**
- * Release the state that was populated by
- * method @ref prepareShortestPathTopo().
- *
- * See the documentation for method @ref prepareShortestPathTopo()
- * for additional information and usage.
- *
- * @param shortestPathTopo the Shortest Path info handler to release.
- */
- void dropShortestPathTopo(Map<Long, ?> shortestPathTopo);
-
- /**
- * Get the shortest path from a source to a destination by
- * using the pre-populated local topology state prepared
- * by method @ref prepareShortestPathTopo().
- *
- * See the documentation for method @ref prepareShortestPathTopo()
- * for additional information and usage.
- *
- * @param shortestPathTopo the Shortest Path info handler
- * to use.
- * @param src the source in the shortest path computation.
- * @param dest the destination in the shortest path computation.
- * @return the data path with the computed shortest path if
- * found, otherwise null.
- */
- DataPath getTopoShortestPath(Map<Long, ?> shortestPathTopo,
- SwitchPort src, SwitchPort dest);
-
- /**
- * Test whether a route exists from a source to a destination.
- *
- * @param src the source node for the test.
- * @param dest the destination node for the test.
- * @return true if a route exists, otherwise false.
- */
- Boolean routeExists(SwitchPort src, SwitchPort dest);
- }
-
public interface ITopoFlowService {
Boolean flowExists(NodePortTuple src, NodePortTuple dest);
List<NodePortTuple> getShortestFlowPath(NodePortTuple src, NodePortTuple dest);
diff --git a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
index 8058af9..8df28ca 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/flowmanager/FlowManager.java
@@ -33,8 +33,8 @@
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IFlowPath;
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.IPortObject;
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.onrc.onos.ofcontroller.flowmanager.web.FlowWebRoutable;
+import net.onrc.onos.ofcontroller.topology.ITopologyNetService;
import net.onrc.onos.ofcontroller.topology.TopologyManager;
import net.onrc.onos.ofcontroller.util.CallerId;
import net.onrc.onos.ofcontroller.util.DataPath;
@@ -73,7 +73,7 @@
protected IRestApiService restApi;
protected volatile IFloodlightProviderService floodlightProvider;
- protected volatile ITopoRouteService topoRouteService;
+ protected volatile ITopologyNetService topologyNetService;
protected FloodlightModuleContext context;
protected OFMessageDamper messageDamper;
@@ -294,7 +294,7 @@
// Flow Paths this controller is responsible for.
//
Map<Long, ?> shortestPathTopo =
- topoRouteService.prepareShortestPathTopo();
+ topologyNetService.prepareShortestPathTopo();
Iterable<IFlowPath> allFlowPaths = op.getAllFlowPaths();
for (IFlowPath flowPathObj : allFlowPaths) {
counterAllFlowPaths++;
@@ -372,9 +372,9 @@
// to avoid closing the transaction.
//
DataPath dataPath =
- topoRouteService.getTopoShortestPath(shortestPathTopo,
- srcSwitchPort,
- dstSwitchPort);
+ topologyNetService.getTopoShortestPath(shortestPathTopo,
+ srcSwitchPort,
+ dstSwitchPort);
if (dataPath == null) {
// We need the DataPath to compare the paths
dataPath = new DataPath();
@@ -399,7 +399,7 @@
op.removeFlowPath(flowPathObj);
}
- topoRouteService.dropShortestPathTopo(shortestPathTopo);
+ topologyNetService.dropShortestPathTopo(shortestPathTopo);
op.commit();
@@ -433,7 +433,7 @@
@Override
public void init(String conf) {
op = new GraphDBOperation(conf);
- topoRouteService = new TopologyManager(conf);
+ topologyNetService = new TopologyManager(conf);
}
/**
diff --git a/src/main/java/net/onrc/onos/ofcontroller/topology/ITopologyNetService.java b/src/main/java/net/onrc/onos/ofcontroller/topology/ITopologyNetService.java
new file mode 100644
index 0000000..bd0ca38
--- /dev/null
+++ b/src/main/java/net/onrc/onos/ofcontroller/topology/ITopologyNetService.java
@@ -0,0 +1,90 @@
+package net.onrc.onos.ofcontroller.topology;
+
+import java.util.Map;
+
+import net.floodlightcontroller.core.module.IFloodlightService;
+import net.onrc.onos.ofcontroller.util.DataPath;
+import net.onrc.onos.ofcontroller.util.SwitchPort;
+
+/**
+ * Interface for providing Topology Network Service to other modules.
+ */
+public interface ITopologyNetService extends IFloodlightService {
+ /**
+ * Get the shortest path from a source to a destination.
+ *
+ * @param src the source in the shortest path computation.
+ * @param dest the destination in the shortest path computation.
+ * @return the data path with the computed shortest path if
+ * found, otherwise null.
+ */
+ DataPath getShortestPath(SwitchPort src, SwitchPort dest);
+
+ /**
+ * Fetch the Switch and Ports info from the Titan Graph
+ * and return it for fast access during the shortest path
+ * computation.
+ *
+ * After fetching the state, method @ref getTopoShortestPath()
+ * can be used for fast shortest path computation.
+ *
+ * Note: There is certain cost to fetch the state, hence it should
+ * be used only when there is a large number of shortest path
+ * computations that need to be done on the same topology.
+ * Typically, a single call to @ref prepareShortestPathTopo()
+ * should be followed by a large number of calls to
+ * method @ref getTopoShortestPath().
+ * After the last @ref getTopoShortestPath() call,
+ * method @ref dropShortestPathTopo() should be used to release
+ * the internal state that is not needed anymore:
+ *
+ * Map<Long, ?> shortestPathTopo;
+ * shortestPathTopo = prepareShortestPathTopo();
+ * for (int i = 0; i < 10000; i++) {
+ * dataPath = getTopoShortestPath(shortestPathTopo, ...);
+ * ...
+ * }
+ * dropShortestPathTopo(shortestPathTopo);
+ *
+ * @return the Shortest Path info handler stored in a map.
+ */
+ Map<Long, ?> prepareShortestPathTopo();
+
+ /**
+ * Release the state that was populated by
+ * method @ref prepareShortestPathTopo().
+ *
+ * See the documentation for method @ref prepareShortestPathTopo()
+ * for additional information and usage.
+ *
+ * @param shortestPathTopo the Shortest Path info handler to release.
+ */
+ void dropShortestPathTopo(Map<Long, ?> shortestPathTopo);
+
+ /**
+ * Get the shortest path from a source to a destination by
+ * using the pre-populated local topology state prepared
+ * by method @ref prepareShortestPathTopo().
+ *
+ * See the documentation for method @ref prepareShortestPathTopo()
+ * for additional information and usage.
+ *
+ * @param shortestPathTopo the Shortest Path info handler
+ * to use.
+ * @param src the source in the shortest path computation.
+ * @param dest the destination in the shortest path computation.
+ * @return the data path with the computed shortest path if
+ * found, otherwise null.
+ */
+ DataPath getTopoShortestPath(Map<Long, ?> shortestPathTopo,
+ SwitchPort src, SwitchPort dest);
+
+ /**
+ * Test whether a route exists from a source to a destination.
+ *
+ * @param src the source node for the test.
+ * @param dest the destination node for the test.
+ * @return true if a route exists, otherwise false.
+ */
+ Boolean routeExists(SwitchPort src, SwitchPort dest);
+}
diff --git a/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java b/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
index c0a5e57..545128d 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/topology/TopologyManager.java
@@ -11,7 +11,6 @@
import net.onrc.onos.graph.GraphDBOperation;
import net.onrc.onos.ofcontroller.core.INetMapTopologyObjects.ISwitchObject;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.onrc.onos.ofcontroller.core.ISwitchStorage.SwitchState;
import net.onrc.onos.ofcontroller.util.DataPath;
import net.onrc.onos.ofcontroller.util.Dpid;
@@ -87,9 +86,9 @@
};
/**
- * A class for implementing Topology Route Service.
+ * A class for implementing Topology Network Service.
*/
-public class TopologyManager implements ITopoRouteService {
+public class TopologyManager implements ITopologyNetService {
/** The logger. */
private static Logger log = LoggerFactory.getLogger(TopologyManager.class);
diff --git a/src/main/java/net/onrc/onos/ofcontroller/topology/web/RouteResource.java b/src/main/java/net/onrc/onos/ofcontroller/topology/web/RouteResource.java
index c596547..a730719 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/topology/web/RouteResource.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/topology/web/RouteResource.java
@@ -1,6 +1,6 @@
package net.onrc.onos.ofcontroller.topology.web;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
+import net.onrc.onos.ofcontroller.topology.ITopologyNetService;
import net.onrc.onos.ofcontroller.topology.TopologyManager;
import net.onrc.onos.ofcontroller.util.DataPath;
import net.onrc.onos.ofcontroller.util.Dpid;
@@ -18,9 +18,9 @@
@Get("json")
public DataPath retrieve() {
- ITopoRouteService topoRouteService = new TopologyManager("");
- if (topoRouteService == null) {
- log.debug("Topology Route Service not found");
+ ITopologyNetService topologyNetService = new TopologyManager("");
+ if (topologyNetService == null) {
+ log.debug("Topology Net Service not found");
return null;
}
@@ -37,8 +37,8 @@
Port dstPort = new Port(Short.parseShort(dstPortStr));
DataPath result =
- topoRouteService.getShortestPath(new SwitchPort(srcDpid, srcPort),
- new SwitchPort(dstDpid, dstPort));
+ topologyNetService.getShortestPath(new SwitchPort(srcDpid, srcPort),
+ new SwitchPort(dstDpid, dstPort));
if (result != null) {
return result;
} else {
diff --git a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
index 80a5a35..21788af 100644
--- a/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
+++ b/src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
@@ -70,9 +70,9 @@
import net.floodlightcontroller.test.FloodlightTestCase;
import net.floodlightcontroller.threadpool.IThreadPoolService;
import net.onrc.onos.ofcontroller.core.IOFSwitchPortListener;
-import net.onrc.onos.ofcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.onrc.onos.ofcontroller.flowmanager.FlowManager;
import net.onrc.onos.ofcontroller.flowmanager.IFlowService;
+import net.onrc.onos.ofcontroller.topology.ITopologyNetService;
import net.onrc.onos.ofcontroller.topology.TopologyManager;
import net.onrc.onos.registry.controller.IControllerRegistryService;
import net.onrc.onos.registry.controller.StandaloneRegistry;
@@ -139,7 +139,7 @@
// Following added by ONOS
// TODO replace with mock if further testing is needed.
fmc.addService(IFlowService.class, new FlowManager() );
- fmc.addService(ITopoRouteService.class, new TopologyManager() );
+ fmc.addService(ITopologyNetService.class, new TopologyManager() );
StandaloneRegistry sr = new StandaloneRegistry();
fmc.addService(IControllerRegistryService.class, sr );