blob: 6b8b5144f75530c0b1b90e41084490ef58106731 [file] [log] [blame]
Jonathan Harta8887642013-10-28 13:46:54 -07001package net.onrc.onos.ofcontroller.core.module;
2
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.HashMap;
6import java.util.List;
7import java.util.Map;
8
9import net.floodlightcontroller.core.IFloodlightProviderService;
10import net.floodlightcontroller.core.module.FloodlightModuleContext;
11import net.floodlightcontroller.core.module.FloodlightModuleException;
12import net.floodlightcontroller.core.module.IFloodlightModule;
13import net.floodlightcontroller.core.module.IFloodlightService;
14import net.floodlightcontroller.restserver.IRestApiService;
15import net.floodlightcontroller.topology.ITopologyService;
Jonathan Hart18ad55c2013-11-11 22:49:55 -080016import net.onrc.onos.datagrid.IDatagridService;
Jonathan Hartebba1e12013-10-29 11:37:02 -070017import net.onrc.onos.ofcontroller.core.config.DefaultConfiguration;
18import net.onrc.onos.ofcontroller.core.config.IConfigInfoService;
Jonathan Hart1caaa932013-11-04 15:28:28 -080019import net.onrc.onos.ofcontroller.flowmanager.IFlowService;
20import net.onrc.onos.ofcontroller.forwarding.Forwarding;
Jonathan Harta8887642013-10-28 13:46:54 -070021import net.onrc.onos.ofcontroller.proxyarp.IProxyArpService;
22import net.onrc.onos.ofcontroller.proxyarp.ProxyArpManager;
23
Jonathan Hartebba1e12013-10-29 11:37:02 -070024public class OnosModuleLoader implements IFloodlightModule {
Jonathan Harta8887642013-10-28 13:46:54 -070025 private IFloodlightProviderService floodlightProvider;
26 private ITopologyService topology;
27 private IConfigInfoService config;
28 private IRestApiService restApi;
Jonathan Hart1caaa932013-11-04 15:28:28 -080029 private IFlowService flowService;
Jonathan Hart18ad55c2013-11-11 22:49:55 -080030 private IDatagridService datagrid;
Jonathan Harta8887642013-10-28 13:46:54 -070031
32 private ProxyArpManager arpManager;
Jonathan Hart1caaa932013-11-04 15:28:28 -080033 private Forwarding forwarding;
Jonathan Harta8887642013-10-28 13:46:54 -070034
Jonathan Hartebba1e12013-10-29 11:37:02 -070035 public OnosModuleLoader() {
Jonathan Harta8887642013-10-28 13:46:54 -070036 arpManager = new ProxyArpManager();
Jonathan Hart1caaa932013-11-04 15:28:28 -080037 forwarding = new Forwarding();
Jonathan Harta8887642013-10-28 13:46:54 -070038 }
39
40 @Override
41 public Collection<Class<? extends IFloodlightService>> getModuleServices() {
42 List<Class<? extends IFloodlightService>> services =
43 new ArrayList<Class<? extends IFloodlightService>>();
44 services.add(IProxyArpService.class);
45 return services;
46 }
47
48 @Override
49 public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
50 Map<Class<? extends IFloodlightService>, IFloodlightService> impls =
51 new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
52 impls.put(IProxyArpService.class, arpManager);
53 return impls;
54 }
55
56 @Override
57 public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
58 List<Class<? extends IFloodlightService>> dependencies =
59 new ArrayList<Class<? extends IFloodlightService>>();
60 dependencies.add(IFloodlightProviderService.class);
61 dependencies.add(ITopologyService.class);
Jonathan Harta8887642013-10-28 13:46:54 -070062 dependencies.add(IRestApiService.class);
Jonathan Hart1caaa932013-11-04 15:28:28 -080063 dependencies.add(IFlowService.class);
Jonathan Hart18ad55c2013-11-11 22:49:55 -080064 dependencies.add(IDatagridService.class);
Jonathan Harta8887642013-10-28 13:46:54 -070065 return dependencies;
66 }
67
68 @Override
69 public void init(FloodlightModuleContext context)
70 throws FloodlightModuleException {
71 floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);
72 topology = context.getServiceImpl(ITopologyService.class);
73 restApi = context.getServiceImpl(IRestApiService.class);
Jonathan Hart1caaa932013-11-04 15:28:28 -080074 flowService = context.getServiceImpl(IFlowService.class);
Jonathan Hart18ad55c2013-11-11 22:49:55 -080075 datagrid = context.getServiceImpl(IDatagridService.class);
Jonathan Harta8887642013-10-28 13:46:54 -070076
77 //This could be null because it's not mandatory to have an
78 //IConfigInfoService loaded.
79 config = context.getServiceImpl(IConfigInfoService.class);
Jonathan Hartebba1e12013-10-29 11:37:02 -070080 if (config == null) {
81 config = new DefaultConfiguration();
82 }
Jonathan Harta8887642013-10-28 13:46:54 -070083
Jonathan Hart18ad55c2013-11-11 22:49:55 -080084 arpManager.init(floodlightProvider, topology, datagrid, config, restApi);
Jonathan Hartdc3ad702013-11-14 11:34:59 -080085 forwarding.init(floodlightProvider, flowService, datagrid);
Jonathan Harta8887642013-10-28 13:46:54 -070086 }
87
88 @Override
89 public void startUp(FloodlightModuleContext context) {
90 arpManager.startUp();
Jonathan Hart1caaa932013-11-04 15:28:28 -080091 forwarding.startUp();
Jonathan Harta8887642013-10-28 13:46:54 -070092 }
93
94}