blob: 5dbdb3e9109810c017478864a8673f1d7d01e43c [file] [log] [blame]
/**
* Copyright 2013, Big Switch Networks, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
**/
package net.floodlightcontroller.core;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import net.floodlightcontroller.core.internal.Controller;
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.debugcounter.IDebugCounterService;
import net.floodlightcontroller.debugevent.IDebugEventService;
import net.floodlightcontroller.restserver.IRestApiService;
import net.floodlightcontroller.threadpool.IThreadPoolService;
import net.onrc.onos.core.configmanager.INetworkConfigService;
import net.onrc.onos.core.linkdiscovery.ILinkDiscoveryService;
import net.onrc.onos.core.registry.IControllerRegistryService;
public class FloodlightProvider implements IFloodlightModule {
Controller controller;
@Override
public Collection<Class<? extends IFloodlightService>> getModuleServices() {
Collection<Class<? extends IFloodlightService>> services =
new ArrayList<Class<? extends IFloodlightService>>(1);
services.add(IFloodlightProviderService.class);
return services;
}
@Override
public Map<Class<? extends IFloodlightService>,
IFloodlightService> getServiceImpls() {
controller = new Controller();
Map<Class<? extends IFloodlightService>,
IFloodlightService> m =
new HashMap<Class<? extends IFloodlightService>,
IFloodlightService>();
m.put(IFloodlightProviderService.class, controller);
return m;
}
@Override
public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
Collection<Class<? extends IFloodlightService>> dependencies =
new ArrayList<Class<? extends IFloodlightService>>(4);
dependencies.add(IRestApiService.class);
dependencies.add(IDebugCounterService.class);
dependencies.add(IDebugEventService.class);
dependencies.add(IThreadPoolService.class);
return dependencies;
}
@Override
public void init(FloodlightModuleContext context) throws FloodlightModuleException {
controller.setDebugCounter(
context.getServiceImpl(IDebugCounterService.class));
controller.setDebugEvent(
context.getServiceImpl(IDebugEventService.class));
controller.setRestApiService(
context.getServiceImpl(IRestApiService.class));
controller.setThreadPoolService(
context.getServiceImpl(IThreadPoolService.class));
// Following added by ONOS
controller.setMastershipService(
context.getServiceImpl(IControllerRegistryService.class));
controller.setLinkDiscoveryService(
context.getServiceImpl(ILinkDiscoveryService.class));
controller.setNetworkConfigService(
context.getServiceImpl(INetworkConfigService.class));
controller.init(context.getConfigParams(this));
}
@Override
public void startUp(FloodlightModuleContext context)
throws FloodlightModuleException {
controller.startupComponents();
}
}