Hook up the Intent and Flow REST APIs to the modules/services.
This involved some slight changes to the way the intent service is registered
with the Floodlight module framework. Also FlowManagerModule is now registered
in the services file.
Change-Id: I6a97599e625c385a07996e03236fe94af4705650
diff --git a/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java b/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
index 83092eb..b1bb067 100644
--- a/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
+++ b/src/main/java/net/onrc/onos/core/flowmanager/FlowManagerModule.java
@@ -11,6 +11,7 @@
import net.floodlightcontroller.core.module.FloodlightModuleException;
import net.floodlightcontroller.core.module.IFloodlightModule;
import net.floodlightcontroller.core.module.IFloodlightService;
+import net.floodlightcontroller.restserver.IRestApiService;
import net.onrc.onos.api.flowmanager.ConflictDetectionPolicy;
import net.onrc.onos.api.flowmanager.Flow;
import net.onrc.onos.api.flowmanager.FlowBatchHandle;
@@ -20,6 +21,7 @@
import net.onrc.onos.api.flowmanager.FlowManagerFloodlightService;
import net.onrc.onos.api.flowmanager.FlowManagerListener;
import net.onrc.onos.core.datagrid.ISharedCollectionsService;
+import net.onrc.onos.core.flowmanager.web.FlowManagerWebRoutable;
import net.onrc.onos.core.matchaction.MatchActionFloodlightService;
import net.onrc.onos.core.matchaction.MatchActionService;
import net.onrc.onos.core.registry.IControllerRegistryService;
@@ -43,6 +45,7 @@
private FlowBatchMap flowBatchMap;
private FlowEventDispatcher flowEventDispatcher;
private FlowBatchOperationExecutor flowBatchOperationExecutor;
+ private IRestApiService restApi;
@Override
public Collection<Class<? extends IFloodlightService>> getModuleServices() {
@@ -65,7 +68,8 @@
return Arrays.asList(
MatchActionFloodlightService.class,
ISharedCollectionsService.class,
- IControllerRegistryService.class);
+ IControllerRegistryService.class,
+ IRestApiService.class);
}
@Override
@@ -73,6 +77,7 @@
matchActionService = context.getServiceImpl(MatchActionFloodlightService.class);
registryService = context.getServiceImpl(IControllerRegistryService.class);
sharedCollectionService = context.getServiceImpl(ISharedCollectionsService.class);
+ restApi = context.getServiceImpl(IRestApiService.class);
}
@Override
@@ -91,6 +96,8 @@
flowBatchOperationExecutor =
new FlowBatchOperationExecutor(matchActionService, flowMap, flowBatchMap);
flowBatchOperationExecutor.start();
+
+ restApi.addRestletRoutable(new FlowManagerWebRoutable());
}
/**
diff --git a/src/main/java/net/onrc/onos/core/flowmanager/web/FlowManagerWebRoutable.java b/src/main/java/net/onrc/onos/core/flowmanager/web/FlowManagerWebRoutable.java
index e41b023..781b851 100644
--- a/src/main/java/net/onrc/onos/core/flowmanager/web/FlowManagerWebRoutable.java
+++ b/src/main/java/net/onrc/onos/core/flowmanager/web/FlowManagerWebRoutable.java
@@ -13,7 +13,7 @@
@Override
public Restlet getRestlet(Context context) {
- Router router = new Router();
+ Router router = new Router(context);
router.attach("", FlowResource.class);
return router;
}
diff --git a/src/main/java/net/onrc/onos/core/flowmanager/web/FlowResource.java b/src/main/java/net/onrc/onos/core/flowmanager/web/FlowResource.java
index 4079687..b1381e0 100644
--- a/src/main/java/net/onrc/onos/core/flowmanager/web/FlowResource.java
+++ b/src/main/java/net/onrc/onos/core/flowmanager/web/FlowResource.java
@@ -6,7 +6,7 @@
import net.floodlightcontroller.restserver.CustomSerializerHelper;
import net.onrc.onos.api.flowmanager.Flow;
import net.onrc.onos.api.flowmanager.FlowId;
-import net.onrc.onos.api.flowmanager.FlowManagerService;
+import net.onrc.onos.api.flowmanager.FlowManagerFloodlightService;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonGenerator;
@@ -22,7 +22,7 @@
*/
public class FlowResource extends ServerResource {
- private final CustomSerializerHelper flowSerializers;
+ private CustomSerializerHelper flowSerializers;
/**
* Constructs a FlowResource.
@@ -49,13 +49,14 @@
*/
@Get("json")
public Representation retrieve() {
- FlowManagerService flowService =
- (FlowManagerService) getContext().getAttributes()
- .get(FlowManagerService.class.getCanonicalName());
+ FlowManagerFloodlightService flowService =
+ (FlowManagerFloodlightService) getContext().getAttributes()
+ .get(FlowManagerFloodlightService.class.getCanonicalName());
Collection<Flow> flows = flowService.getFlows();
return flowSerializers.applySerializers(
(JacksonRepresentation<?>) toRepresentation(flows, null));
}
+
}
diff --git a/src/main/java/net/onrc/onos/core/newintent/IntentFloodlightModule.java b/src/main/java/net/onrc/onos/core/newintent/IntentFloodlightModule.java
index cf0e5e5..3ac9882 100644
--- a/src/main/java/net/onrc/onos/core/newintent/IntentFloodlightModule.java
+++ b/src/main/java/net/onrc/onos/core/newintent/IntentFloodlightModule.java
@@ -1,9 +1,17 @@
package net.onrc.onos.core.newintent;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
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.restserver.IRestApiService;
import net.onrc.onos.api.flowmanager.FlowId;
import net.onrc.onos.api.flowmanager.FlowManagerFloodlightService;
import net.onrc.onos.api.flowmanager.FlowManagerService;
@@ -21,18 +29,12 @@
import net.onrc.onos.api.newintent.PathIntent;
import net.onrc.onos.api.newintent.PointToPointIntent;
import net.onrc.onos.core.datagrid.ISharedCollectionsService;
+import net.onrc.onos.core.newintent.web.IntentWebRoutable;
import net.onrc.onos.core.registry.IControllerRegistryService;
import net.onrc.onos.core.topology.ITopologyService;
import net.onrc.onos.core.util.IdBlockAllocator;
import net.onrc.onos.core.util.IdGenerator;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
/**
* A Floodlight module for Intent Service.
*/
@@ -49,7 +51,7 @@
@Override
public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
Map<Class<? extends IFloodlightService>, IFloodlightService> impls = new HashMap<>();
- impls.put(IFloodlightService.class, this);
+ impls.put(IntentFloodlightService.class, this);
return impls;
}
@@ -88,6 +90,9 @@
registerDefaultCompilers(intentIdGenerator, flowIdGenerator, topologyService);
registerDefaultInstallers(flowManagerService);
+
+ IRestApiService restApi = context.getServiceImpl(IRestApiService.class);
+ restApi.addRestletRoutable(new IntentWebRoutable());
}
private void registerDefaultCompilers(IdGenerator<IntentId> intentIdGenerator,
diff --git a/src/main/java/net/onrc/onos/core/newintent/web/IntentResource.java b/src/main/java/net/onrc/onos/core/newintent/web/IntentResource.java
index 4230298..b4cd133 100644
--- a/src/main/java/net/onrc/onos/core/newintent/web/IntentResource.java
+++ b/src/main/java/net/onrc/onos/core/newintent/web/IntentResource.java
@@ -5,8 +5,8 @@
import net.floodlightcontroller.restserver.CustomSerializerHelper;
import net.onrc.onos.api.newintent.Intent;
+import net.onrc.onos.api.newintent.IntentFloodlightService;
import net.onrc.onos.api.newintent.IntentId;
-import net.onrc.onos.api.newintent.IntentService;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonProcessingException;
@@ -50,9 +50,9 @@
*/
@Get("json")
public Representation retrieve() {
- IntentService intentService =
- (IntentService) getContext().getAttributes()
- .get(IntentService.class.getCanonicalName());
+ IntentFloodlightService intentService =
+ (IntentFloodlightService) getContext().getAttributes()
+ .get(IntentFloodlightService.class.getCanonicalName());
Set<Intent> intents = intentService.getIntents();