Skip to content
Snippets Groups Projects
Commit 44b327ee authored by abat's avatar abat
Browse files

Merge into master from pull request #37:

    Improved Module Loader REST interface (https://github.com/floodlight/floodlight/pull/37)
parents fde48873 bfdc501a
No related branches found
No related tags found
No related merge requests found
...@@ -3,7 +3,6 @@ package net.floodlightcontroller.core.module; ...@@ -3,7 +3,6 @@ package net.floodlightcontroller.core.module;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
...@@ -18,7 +17,11 @@ public class ModuleLoaderResource extends ServerResource { ...@@ -18,7 +17,11 @@ public class ModuleLoaderResource extends ServerResource {
LoggerFactory.getLogger(ModuleLoaderResource.class); LoggerFactory.getLogger(ModuleLoaderResource.class);
@Get("json") @Get("json")
public Map<String, Object> retrieve() { public Map<String, Object> retrieve() {
return retrieveInternal(false);
}
public Map<String, Object> retrieveInternal(boolean loadedOnly) {
Map<String, Object> model = new HashMap<String, Object>(); Map<String, Object> model = new HashMap<String, Object>();
Set<String> loadedModules = new HashSet<String>(); Set<String> loadedModules = new HashSet<String>();
...@@ -42,13 +45,26 @@ public class ModuleLoaderResource extends ServerResource { ...@@ -42,13 +45,26 @@ public class ModuleLoaderResource extends ServerResource {
module.getModuleDependencies(); module.getModuleDependencies();
if ( deps == null) if ( deps == null)
deps = new HashSet<Class<? extends IFloodlightService>>(); deps = new HashSet<Class<? extends IFloodlightService>>();
moduleInfo.put("depends", deps); Map<String,Object> depsMap = new HashMap<String, Object> ();
for (Class<? extends IFloodlightService> service : deps) {
Object serviceImpl = getContext().getAttributes().get(service.getCanonicalName());
if (serviceImpl != null)
depsMap.put(service.getCanonicalName(), serviceImpl.getClass().getCanonicalName());
else
depsMap.put(service.getCanonicalName(), "<unresolved>");
}
moduleInfo.put("depends", depsMap);
Collection<Class<? extends IFloodlightService>> provides = Collection<Class<? extends IFloodlightService>> provides =
module.getModuleServices(); module.getModuleServices();
if ( provides == null) if ( provides == null)
provides = new HashSet<Class<? extends IFloodlightService>>(); provides = new HashSet<Class<? extends IFloodlightService>>();
moduleInfo.put("provides", provides); Map<String,Object> providesMap = new HashMap<String,Object>();
for (Class<? extends IFloodlightService> service : provides) {
providesMap.put(service.getCanonicalName(), module.getServiceImpls().get(service).getClass().getCanonicalName());
}
moduleInfo.put("provides", providesMap);
moduleInfo.put("loaded", false); // not loaded, by default moduleInfo.put("loaded", false); // not loaded, by default
...@@ -66,8 +82,8 @@ public class ModuleLoaderResource extends ServerResource { ...@@ -66,8 +82,8 @@ public class ModuleLoaderResource extends ServerResource {
} }
} }
if ((Boolean)moduleInfo.get("loaded")|| !loadedOnly )
model.put(moduleName, moduleInfo); model.put(moduleName, moduleInfo);
} }
return model; return model;
} }
......
...@@ -37,7 +37,8 @@ public class CoreWebRoutable implements RestletRoutable { ...@@ -37,7 +37,8 @@ public class CoreWebRoutable implements RestletRoutable {
@Override @Override
public Restlet getRestlet(Context context) { public Restlet getRestlet(Context context) {
Router router = new Router(context); Router router = new Router(context);
router.attach("/module/list/json", ModuleLoaderResource.class); router.attach("/module/all/json", ModuleLoaderResource.class);
router.attach("/module/loaded/json", LoadedModuleLoaderResource.class);
router.attach("/switch/all/{statType}/json", AllSwitchStatisticsResource.class); router.attach("/switch/all/{statType}/json", AllSwitchStatisticsResource.class);
router.attach("/switch/{switchId}/{statType}/json", SwitchStatisticsResource.class); router.attach("/switch/{switchId}/{statType}/json", SwitchStatisticsResource.class);
router.attach("/controller/switches/json", ControllerSwitchesResource.class); router.attach("/controller/switches/json", ControllerSwitchesResource.class);
......
package net.floodlightcontroller.core.web;
import java.util.Map;
import org.restlet.resource.Get;
import net.floodlightcontroller.core.module.ModuleLoaderResource;
public class LoadedModuleLoaderResource extends ModuleLoaderResource {
@Get("json")
public Map<String, Object> retrieve() {
return retrieveInternal(true);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment