Add TopoRouteService to the list of modules to be loaded on startup.
diff --git a/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
index ec5e7e3..5c847b7 100644
--- a/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
+++ b/src/main/java/net/floodlightcontroller/core/FloodlightProvider.java
@@ -10,6 +10,7 @@
import net.floodlightcontroller.core.module.FloodlightModuleException;
import net.floodlightcontroller.core.module.IFloodlightModule;
import net.floodlightcontroller.core.module.IFloodlightService;
+import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.counter.ICounterStoreService;
import net.floodlightcontroller.flowcache.IFlowService;
import net.floodlightcontroller.mastership.IMastershipService;
@@ -53,6 +54,7 @@
dependencies.add(IThreadPoolService.class);
dependencies.add(IMastershipService.class);
dependencies.add(IFlowService.class);
+ dependencies.add(ITopoRouteService.class);
return dependencies;
}
@@ -70,6 +72,7 @@
context.getServiceImpl(IThreadPoolService.class));
controller.setMastershipService(context.getServiceImpl(IMastershipService.class));
controller.setFlowService(context.getServiceImpl(IFlowService.class));
+ controller.setTopoRouteService(context.getServiceImpl(ITopoRouteService.class));
controller.init(context.getConfigParams(this));
}
diff --git a/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java b/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java
index 937c551..a3eb830 100644
--- a/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java
+++ b/src/main/java/net/floodlightcontroller/core/INetMapTopologyService.java
@@ -2,6 +2,7 @@
import java.util.List;
+import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.core.INetMapTopologyObjects.IDeviceObject;
import net.floodlightcontroller.core.INetMapTopologyObjects.IPortObject;
import net.floodlightcontroller.core.INetMapTopologyObjects.ISwitchObject;
@@ -29,7 +30,7 @@
Iterable<IDeviceObject> getDevicesOnSwitch(String dpid, short port_num);
}
- public interface ITopoRouteService {
+ public interface ITopoRouteService extends IFloodlightService {
List<NodePortTuple> getShortestPath(NodePortTuple src, NodePortTuple dest);
Boolean routeExists(NodePortTuple src, NodePortTuple dest);
}
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index 74e5fcf..cbcd9a0 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -58,6 +58,7 @@
import net.floodlightcontroller.core.IOFSwitch;
import net.floodlightcontroller.core.IOFSwitchFilter;
import net.floodlightcontroller.core.IOFSwitchListener;
+import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.core.ISwitchStorage.SwitchState;
import net.floodlightcontroller.core.annotations.LogMessageDoc;
import net.floodlightcontroller.core.annotations.LogMessageDocs;
@@ -192,6 +193,7 @@
protected IThreadPoolService threadPool;
protected IMastershipService masterHelper;
protected IFlowService flowService;
+ protected ITopoRouteService topoRouteService;
// Configuration options
protected int openFlowPort = 6633;
@@ -401,6 +403,10 @@
public void setFlowService(IFlowService serviceImpl) {
this.flowService = serviceImpl;
}
+
+ public void setTopoRouteService(ITopoRouteService serviceImpl) {
+ this.topoRouteService = serviceImpl;
+ }
@Override
public Role getRole() {
diff --git a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java b/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
index d9f19ba..12ed505 100644
--- a/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
+++ b/src/main/java/net/floodlightcontroller/flowcache/FlowManager.java
@@ -26,7 +26,7 @@
/** The logger. */
private static Logger logger =
- LoggerFactory.getLogger(FlowReconcileManager.class);
+ LoggerFactory.getLogger(FlowManager.class);
@Override
public Collection<Class<? extends IFloodlightService>> getModuleServices() {
diff --git a/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java b/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java
index 2c50d29..ba3c2ef 100644
--- a/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java
+++ b/src/main/java/net/floodlightcontroller/routing/TopoRouteService.java
@@ -1,10 +1,17 @@
package net.floodlightcontroller.routing;
import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import net.floodlightcontroller.core.internal.SwitchStorageImpl;
+import net.floodlightcontroller.core.module.FloodlightModuleContext;
+import net.floodlightcontroller.core.module.FloodlightModuleException;
+import net.floodlightcontroller.core.module.IFloodlightModule;
+import net.floodlightcontroller.core.module.IFloodlightService;
import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.topology.NodePortTuple;
@@ -18,7 +25,54 @@
import javax.script.ScriptException;
import com.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
-public class TopoRouteService implements ITopoRouteService {
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class TopoRouteService implements IFloodlightModule, ITopoRouteService {
+
+ /** The logger. */
+ private static Logger logger =
+ LoggerFactory.getLogger(TopoRouteService.class);
+
+ @Override
+ public Collection<Class<? extends IFloodlightService>> getModuleServices() {
+ Collection<Class<? extends IFloodlightService>> l =
+ new ArrayList<Class<? extends IFloodlightService>>();
+ l.add(ITopoRouteService.class);
+ return l;
+ }
+
+ @Override
+ public Map<Class<? extends IFloodlightService>, IFloodlightService>
+ getServiceImpls() {
+ Map<Class<? extends IFloodlightService>,
+ IFloodlightService> m =
+ new HashMap<Class<? extends IFloodlightService>,
+ IFloodlightService>();
+ m.put(ITopoRouteService.class, this);
+ return m;
+ }
+
+ @Override
+ public Collection<Class<? extends IFloodlightService>>
+ getModuleDependencies() {
+ Collection<Class<? extends IFloodlightService>> l =
+ new ArrayList<Class<? extends IFloodlightService>>();
+ // TODO: Add the appropriate dependencies
+ // l.add(IRestApiService.class);
+ return l;
+ }
+
+ @Override
+ public void init(FloodlightModuleContext context)
+ throws FloodlightModuleException {
+ // TODO: Add the appropriate initialization
+ }
+
+ @Override
+ public void startUp(FloodlightModuleContext context) {
+ // TODO: Add the approprate setup
+ }
ThreadLocal<SwitchStorageImpl> store = new ThreadLocal<SwitchStorageImpl>() {
@Override
diff --git a/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
index fd9d201..3fa7510 100644
--- a/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
+++ b/src/main/java/net/floodlightcontroller/topology/web/RouteResource.java
@@ -2,11 +2,10 @@
import java.util.List;
+import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import net.floodlightcontroller.routing.IRoutingService;
import net.floodlightcontroller.routing.Route;
-import net.floodlightcontroller.routing.TopoRouteService;
import net.floodlightcontroller.topology.NodePortTuple;
-import net.floodlightcontroller.core.INetMapTopologyService.ITopoRouteService;
import org.openflow.util.HexString;
import org.restlet.resource.Get;
@@ -20,14 +19,11 @@
@Get("json")
public List<NodePortTuple> retrieve() {
- /*
- IRoutingService routing =
- (IRoutingService)getContext().getAttributes().
- get(IRoutingService.class.getCanonicalName());
- */
- ITopoRouteService onos_routing = new TopoRouteService();
- if (onos_routing == null) {
- log.debug("ONOS Route Service not found");
+ ITopoRouteService topoRouteService =
+ (ITopoRouteService)getContext().getAttributes().
+ get(ITopoRouteService.class.getCanonicalName());
+ if (topoRouteService == null) {
+ log.debug("Topology Route Service not found");
return null;
}
@@ -43,16 +39,9 @@
long longDstDpid = HexString.toLong(dstDpid);
short shortDstPort = Short.parseShort(dstPort);
- /*
- Route result = routing.getRoute(longSrcDpid, shortSrcPort, longDstDpid, shortDstPort);
-
- if (result!=null) {
- return routing.getRoute(longSrcDpid, shortSrcPort, longDstDpid, shortDstPort).getPath();
- }
- */
List<NodePortTuple> result =
- onos_routing.getShortestPath(new NodePortTuple(longSrcDpid, shortSrcPort),
- new NodePortTuple(longDstDpid, shortDstPort));
+ topoRouteService.getShortestPath(new NodePortTuple(longSrcDpid, shortSrcPort),
+ new NodePortTuple(longDstDpid, shortDstPort));
if ((result != null) && (result.size() > 0)) {
return result;
} else {
diff --git a/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule b/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
index 70ca11d..16deca0 100644
--- a/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
+++ b/src/main/resources/META-INF/services/net.floodlightcontroller.core.module.IFloodlightModule
@@ -25,3 +25,4 @@
net.floodlightcontroller.firewall.Firewall
net.floodlightcontroller.mastership.MastershipManager
net.floodlightcontroller.flowcache.FlowManager
+net.floodlightcontroller.routing.TopoRouteService