blob: 3edf5c29667427d896720f82d8e408e3c02ab6b9 [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;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080016
17public class NetworkGraphModule implements IFloodlightModule, INetworkGraphService {
18
19 // This is initialized as a module for now
20 // private RCNetworkGraphPublisher eventListener;
21
22 private NetworkGraphImpl networkGraph;
Jonathan Hart22eb9882014-02-11 15:52:59 -080023 //private NetworkGraphDatastore southboundNetworkGraph;
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080024 private IDatagridService datagridService;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080025
Jonathan Hart47016712014-02-07 12:41:35 -080026 private IRestApiService restApi;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080027
28 @Override
29 public Collection<Class<? extends IFloodlightService>> getModuleServices() {
30 List<Class<? extends IFloodlightService>> services =
31 new ArrayList<Class<? extends IFloodlightService>>();
32 services.add(INetworkGraphService.class);
33 return services;
34 }
35
36 @Override
37 public Map<Class<? extends IFloodlightService>, IFloodlightService>
38 getServiceImpls() {
39 Map<Class<? extends IFloodlightService>, IFloodlightService> impls =
40 new HashMap<Class<? extends IFloodlightService>, IFloodlightService>();
41 impls.put(INetworkGraphService.class, this);
42 return impls;
43 }
44
45 @Override
46 public Collection<Class<? extends IFloodlightService>> getModuleDependencies() {
Jonathan Hart47016712014-02-07 12:41:35 -080047 List<Class<? extends IFloodlightService>> dependencies =
48 new ArrayList<Class<? extends IFloodlightService>>();
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080049 dependencies.add(IDatagridService.class);
Jonathan Hart47016712014-02-07 12:41:35 -080050 dependencies.add(IRestApiService.class);
51 return dependencies;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080052 }
53
54 @Override
55 public void init(FloodlightModuleContext context)
56 throws FloodlightModuleException {
Jonathan Hart47016712014-02-07 12:41:35 -080057 restApi = context.getServiceImpl(IRestApiService.class);
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080058 datagridService = context.getServiceImpl(IDatagridService.class);
Jonathan Hart47016712014-02-07 12:41:35 -080059
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080060 networkGraph = new NetworkGraphImpl();
Jonathan Hart22eb9882014-02-11 15:52:59 -080061 //southboundNetworkGraph = new NetworkGraphDatastore(networkGraph);
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080062 }
63
64 @Override
65 public void startUp(FloodlightModuleContext context) {
Jonathan Hart47016712014-02-07 12:41:35 -080066 restApi.addRestletRoutable(new NetworkGraphWebRoutable());
Pavlin Radoslavov721a2e02014-02-14 23:40:14 -080067 networkGraph.startup(datagridService);
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080068 }
69
70 @Override
71 public NetworkGraph getNetworkGraph() {
72 return networkGraph;
73 }
74
75 @Override
Jonathan Hart22eb9882014-02-11 15:52:59 -080076 public NetworkGraphDiscoveryInterface getNetworkGraphDiscoveryInterface() {
77 return networkGraph;
Jonathan Hart4b5bbb52014-02-06 10:09:31 -080078 }
79
80}