blob: 6b8b5144f75530c0b1b90e41084490ef58106731 [file] [log] [blame]
package net.onrc.onos.ofcontroller.core.module;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.floodlightcontroller.core.IFloodlightProviderService;
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.floodlightcontroller.topology.ITopologyService;
import net.onrc.onos.datagrid.IDatagridService;
import net.onrc.onos.ofcontroller.core.config.DefaultConfiguration;
import net.onrc.onos.ofcontroller.core.config.IConfigInfoService;
import net.onrc.onos.ofcontroller.flowmanager.IFlowService;
import net.onrc.onos.ofcontroller.forwarding.Forwarding;
import net.onrc.onos.ofcontroller.proxyarp.IProxyArpService;
import net.onrc.onos.ofcontroller.proxyarp.ProxyArpManager;
public class OnosModuleLoader implements IFloodlightModule {
private IFloodlightProviderService floodlightProvider;
private ITopologyService topology;
private IConfigInfoService config;
private IRestApiService restApi;
private IFlowService flowService;
private IDatagridService datagrid;
private ProxyArpManager arpManager;
private Forwarding forwarding;
public OnosModuleLoader() {
arpManager = new ProxyArpManager();
forwarding = new Forwarding();
}
@Override
public Collection<Class<? extends IFloodlightService>> getModuleServices() {
List<Class<? extends IFloodlightService>> services =
new ArrayList<Class<? extends IFloodlightService>>();
services.add(IProxyArpService.class);
return services;
}
@Override
public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
Map<Class<? extends IFloodlightService>, IFloodlightService> impls =
new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
impls.put(IProxyArpService.class, arpManager);
return impls;
}
@Override
public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
List<Class<? extends IFloodlightService>> dependencies =
new ArrayList<Class<? extends IFloodlightService>>();
dependencies.add(IFloodlightProviderService.class);
dependencies.add(ITopologyService.class);
dependencies.add(IRestApiService.class);
dependencies.add(IFlowService.class);
dependencies.add(IDatagridService.class);
return dependencies;
}
@Override
public void init(FloodlightModuleContext context)
throws FloodlightModuleException {
floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);
topology = context.getServiceImpl(ITopologyService.class);
restApi = context.getServiceImpl(IRestApiService.class);
flowService = context.getServiceImpl(IFlowService.class);
datagrid = context.getServiceImpl(IDatagridService.class);
//This could be null because it's not mandatory to have an
//IConfigInfoService loaded.
config = context.getServiceImpl(IConfigInfoService.class);
if (config == null) {
config = new DefaultConfiguration();
}
arpManager.init(floodlightProvider, topology, datagrid, config, restApi);
forwarding.init(floodlightProvider, flowService, datagrid);
}
@Override
public void startUp(FloodlightModuleContext context) {
arpManager.startUp();
forwarding.startUp();
}
}