31fd4d227d1281058e7a2e93ac74ffedcb440b85
[lispflowmapping.git] / mappingservice / neutron / src / main / java / org / opendaylight / lispflowmapping / neutron / LispNeutronService.java
1 package org.opendaylight.lispflowmapping.neutron;
2
3 import org.eclipse.osgi.framework.console.CommandProvider;
4 import org.opendaylight.lispflowmapping.interfaces.lisp.IFlowMapping;
5 import org.opendaylight.controller.networkconfig.neutron.INeutronNetworkAware;
6 import org.opendaylight.controller.networkconfig.neutron.NeutronNetwork;
7 import org.osgi.framework.BundleContext;
8 import org.osgi.framework.FrameworkUtil;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11
12 public class LispNeutronService implements ILispNeutronService, INeutronNetworkAware{
13         protected static final Logger logger = LoggerFactory.getLogger(LispNeutronService.class);
14     private IFlowMapping mappingService;
15         
16         
17     public IFlowMapping getMappingService(){
18         return this.mappingService;
19     }
20     
21     void setFlowMappingService(IFlowMapping mappingService) {
22         logger.debug("FlowMapping set in LispNeutron");
23         this.mappingService = mappingService;
24     }
25
26     void unsetFlowMappingService(IFlowMapping mappingService) {
27         logger.debug("LispDAO was unset in LISP Neutron");
28         this.mappingService = null;
29     }
30     
31     public void init() {
32         logger.debug("LISP Neutron Service is initialized!");
33     }
34
35     public void start() {
36         logger.info("LISP Neutron Service is up!");
37
38         // OSGI console
39         registerWithOSGIConsole();
40     }
41
42     private void registerWithOSGIConsole() {
43         BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
44         bundleContext.registerService(CommandProvider.class.getName(), this, null);
45     }
46
47     public void stop() {
48         logger.info("LISP Neutron Service is down!");
49     }
50
51     public void destroy() {
52         logger.debug("LISP Neutron Service is destroyed!");
53         mappingService = null;
54     }
55
56     // callbacks for INeutronNetworkAware. Based on OpenDove project
57
58     public int canCreateNetwork(NeutronNetwork network) {
59         logger.info("hello world!");
60         logger.info("canCreateNetwork called!");
61         logger.info("Network name: "+network.getNetworkName());
62 //        if (network.getAdminStateUp() != null && !network.isAdminStateUp())
63 //            return 400;
64         return 200;
65     }
66     public void neutronNetworkCreated(NeutronNetwork input) {
67         logger.info("neutronNetworkCreated called!");
68         return;
69     }
70
71     public int canUpdateNetwork(NeutronNetwork delta, NeutronNetwork original) {
72         logger.info("canUpdateNetwork called!");
73         if (delta.getNetworkName() != null || delta.getAdminStateUp() != null ||
74                 delta.getShared() != null || delta.getRouterExternal() != null)
75             return 403;
76         return 200;
77     }
78
79     public void neutronNetworkUpdated(NeutronNetwork network) {
80         logger.info("neutronNetworkUpdated called!");
81         return;
82     }
83
84     public int canDeleteNetwork(NeutronNetwork network) {
85         logger.info("canDeleteNetwork called!");
86         return 200;
87     }
88
89     public void neutronNetworkDeleted(NeutronNetwork network) {
90         logger.info("neutronNetworkDeleted called!");
91         return;
92     }
93         
94 }