blob: 97fa4b59361bbb3a23beeada4268fdd6e3b90ef6 [file] [log] [blame]
Jonathan Hart4b5bbb52014-02-06 10:09:31 -08001package net.onrc.onos.ofcontroller.networkgraph;
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.module.FloodlightModuleContext;
10import net.floodlightcontroller.core.module.FloodlightModuleException;
11import net.floodlightcontroller.core.module.IFloodlightModule;
12import net.floodlightcontroller.core.module.IFloodlightService;
Jonathan Hart47016712014-02-07 12:41:35 -080013import net.floodlightcontroller.restserver.IRestApiService;
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080014import net.onrc.onos.datagrid.IDatagridService;
Jonathan Hart47016712014-02-07 12:41:35 -080015import net.onrc.onos.ofcontroller.networkgraph.web.NetworkGraphWebRoutable;
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080016import net.onrc.onos.registry.controller.IControllerRegistryService;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080017
18public class NetworkGraphModule implements IFloodlightModule, INetworkGraphService {
19
20 // This is initialized as a module for now
21 // private RCNetworkGraphPublisher eventListener;
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080022
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080023 private NetworkGraphImpl networkGraph;
Jonathan Hart22eb9882014-02-11 15:52:59 -080024 //private NetworkGraphDatastore southboundNetworkGraph;
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080025 private IDatagridService datagridService;
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080026 private IControllerRegistryService registryService;
27
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080028
Jonathan Hart47016712014-02-07 12:41:35 -080029 private IRestApiService restApi;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080030
31 @Override
32 public Collection<Class<? extends IFloodlightService>> getModuleServices() {
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080033 List<Class<? extends IFloodlightService>> services =
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080034 new ArrayList<Class<? extends IFloodlightService>>();
35 services.add(INetworkGraphService.class);
36 return services;
37 }
38
39 @Override
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080040 public Map<Class<? extends IFloodlightService>, IFloodlightService>
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080041 getServiceImpls() {
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080042 Map<Class<? extends IFloodlightService>, IFloodlightService> impls =
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080043 new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
44 impls.put(INetworkGraphService.class, this);
45 return impls;
46 }
47
48 @Override
49 public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080050 List<Class<? extends IFloodlightService>> dependencies =
Jonathan Hart47016712014-02-07 12:41:35 -080051 new ArrayList<Class<? extends IFloodlightService>>();
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080052 dependencies.add(IDatagridService.class);
Jonathan Hart47016712014-02-07 12:41:35 -080053 dependencies.add(IRestApiService.class);
54 return dependencies;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080055 }
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080056
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080057 @Override
58 public void init(FloodlightModuleContext context)
59 throws FloodlightModuleException {
Jonathan Hart47016712014-02-07 12:41:35 -080060 restApi = context.getServiceImpl(IRestApiService.class);
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080061 datagridService = context.getServiceImpl(IDatagridService.class);
Yuta HIGUCHI170229f2014-02-17 15:47:54 -080062 registryService = context.getServiceImpl(IControllerRegistryService.class);
63
64 networkGraph = new NetworkGraphImpl(registryService);
Jonathan Hart22eb9882014-02-11 15:52:59 -080065 //southboundNetworkGraph = new NetworkGraphDatastore(networkGraph);
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080066 }
67
68 @Override
69 public void startUp(FloodlightModuleContext context) {
Jonathan Hart47016712014-02-07 12:41:35 -080070 restApi.addRestletRoutable(new NetworkGraphWebRoutable());
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080071 networkGraph.startup(datagridService);
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080072 }
73
74 @Override
75 public NetworkGraph getNetworkGraph() {
76 return networkGraph;
77 }
78
79 @Override
Jonathan Hart22eb9882014-02-11 15:52:59 -080080 public NetworkGraphDiscoveryInterface getNetworkGraphDiscoveryInterface() {
81 return networkGraph;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080082 }
83
84}