blob: bd7cf49f96b64487e5c8793f8f1584e0b0c452f7 [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;
Jonathan Harta18e4792013-10-31 10:10:54 -070014import net.floodlightcontroller.devicemanager.IDeviceService;
Jonathan Harta8887642013-10-28 13:46:54 -070015import net.floodlightcontroller.restserver.IRestApiService;
16import net.floodlightcontroller.topology.ITopologyService;
Jonathan Hartebba1e12013-10-29 11:37:02 -070017import net.onrc.onos.ofcontroller.core.config.DefaultConfiguration;
18import net.onrc.onos.ofcontroller.core.config.IConfigInfoService;
Jonathan Harta8887642013-10-28 13:46:54 -070019import net.onrc.onos.ofcontroller.proxyarp.IProxyArpService;
20import net.onrc.onos.ofcontroller.proxyarp.ProxyArpManager;
21
Jonathan Hartebba1e12013-10-29 11:37:02 -070022public class OnosModuleLoader implements IFloodlightModule {
Jonathan Harta8887642013-10-28 13:46:54 -070023 private IFloodlightProviderService floodlightProvider;
24 private ITopologyService topology;
Jonathan Harta18e4792013-10-31 10:10:54 -070025 private IDeviceService deviceService;
Jonathan Harta8887642013-10-28 13:46:54 -070026 private IConfigInfoService config;
27 private IRestApiService restApi;
28
29 private ProxyArpManager arpManager;
30
Jonathan Hartebba1e12013-10-29 11:37:02 -070031 public OnosModuleLoader() {
Jonathan Harta8887642013-10-28 13:46:54 -070032 arpManager = new ProxyArpManager();
33 }
34
35 @Override
36 public Collection<Class<? extends IFloodlightService>> getModuleServices() {
37 List<Class<? extends IFloodlightService>> services =
38 new ArrayList<Class<? extends IFloodlightService>>();
39 services.add(IProxyArpService.class);
40 return services;
41 }
42
43 @Override
44 public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() {
45 Map<Class<? extends IFloodlightService>, IFloodlightService> impls =
46 new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
47 impls.put(IProxyArpService.class, arpManager);
48 return impls;
49 }
50
51 @Override
52 public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
53 List<Class<? extends IFloodlightService>> dependencies =
54 new ArrayList<Class<? extends IFloodlightService>>();
55 dependencies.add(IFloodlightProviderService.class);
56 dependencies.add(ITopologyService.class);
Jonathan Harta18e4792013-10-31 10:10:54 -070057 dependencies.add(IDeviceService.class);
Jonathan Harta8887642013-10-28 13:46:54 -070058 //dependencies.add(IConfigInfoService.class);
59 dependencies.add(IRestApiService.class);
60 return dependencies;
61 }
62
63 @Override
64 public void init(FloodlightModuleContext context)
65 throws FloodlightModuleException {
66 floodlightProvider = context.getServiceImpl(IFloodlightProviderService.class);
67 topology = context.getServiceImpl(ITopologyService.class);
Jonathan Harta18e4792013-10-31 10:10:54 -070068 deviceService = context.getServiceImpl(IDeviceService.class);
Jonathan Harta8887642013-10-28 13:46:54 -070069 restApi = context.getServiceImpl(IRestApiService.class);
70
71 //This could be null because it's not mandatory to have an
72 //IConfigInfoService loaded.
73 config = context.getServiceImpl(IConfigInfoService.class);
Jonathan Hartebba1e12013-10-29 11:37:02 -070074 if (config == null) {
75 config = new DefaultConfiguration();
76 }
Jonathan Harta8887642013-10-28 13:46:54 -070077
Jonathan Harta18e4792013-10-31 10:10:54 -070078 arpManager.init(floodlightProvider, topology, deviceService, config, restApi);
Jonathan Harta8887642013-10-28 13:46:54 -070079 }
80
81 @Override
82 public void startUp(FloodlightModuleContext context) {
83 arpManager.startUp();
84 }
85
86}