Merge "Clean up logging"
[netvirt.git] / openstack / net-virt / src / main / java / org / opendaylight / ovsdb / openstack / netvirt / FWaasHandler.java
1 /*
2  * Copyright (C) 2013 Red Hat, Inc.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  *
8  */
9
10 package org.opendaylight.ovsdb.openstack.netvirt;
11
12 import java.net.HttpURLConnection;
13
14 import org.opendaylight.neutron.spi.INeutronFirewallAware;
15 import org.opendaylight.neutron.spi.INeutronFirewallPolicyAware;
16 import org.opendaylight.neutron.spi.INeutronFirewallRuleAware;
17 import org.opendaylight.neutron.spi.NeutronFirewall;
18 import org.opendaylight.neutron.spi.NeutronFirewallPolicy;
19 import org.opendaylight.neutron.spi.NeutronFirewallRule;
20 import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
21 import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
22 import org.osgi.framework.BundleContext;
23 import org.osgi.framework.ServiceReference;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 /**
28  * Handle requests for OpenStack Neutron v2.0 Port Firewall API calls.
29  */
30 public class FWaasHandler extends AbstractHandler
31         implements INeutronFirewallAware, INeutronFirewallRuleAware,
32         INeutronFirewallPolicyAware, ConfigInterface {
33
34     private static final Logger LOG = LoggerFactory.getLogger(FWaasHandler.class);
35
36     /**
37      * Invoked when a Firewall Rules creation is requested
38      * to indicate if the specified Rule can be created.
39      *
40      * @param neutronFirewall  An instance of proposed new Neutron Firewall object.
41      * @return HttpURLConnection A HTTP status code to the creation request.
42      */
43     @Override
44     public int canCreateNeutronFirewall(NeutronFirewall neutronFirewall) {
45         return HttpURLConnection.HTTP_CREATED;
46     }
47
48     @Override
49     public void neutronFirewallCreated(NeutronFirewall neutronFirewall) {
50         LOG.debug("Neutron Firewall created by Neutron: {}", neutronFirewall);
51         int result = HttpURLConnection.HTTP_BAD_REQUEST;
52
53         result = canCreateNeutronFirewall(neutronFirewall);
54         if (result != HttpURLConnection.HTTP_CREATED) {
55             LOG.error("Neutron Firewall creation failed: {} ", result);
56             return;
57         }
58     }
59
60     @Override
61     public int canUpdateNeutronFirewall(NeutronFirewall delta, NeutronFirewall original) {
62         return HttpURLConnection.HTTP_OK;
63     }
64
65     @Override
66     public void neutronFirewallUpdated(NeutronFirewall neutronFirewall) {
67         LOG.debug("NeutronFirewall updated from Neutron: {}", neutronFirewall);
68         return;
69     }
70
71     @Override
72     public int canDeleteNeutronFirewall(NeutronFirewall neutronFirewall) {
73         return HttpURLConnection.HTTP_OK;
74     }
75
76     @Override
77     public void neutronFirewallDeleted(NeutronFirewall neutronFirewall) {
78         //TODO: Trigger flowmod removals
79         int result = canDeleteNeutronFirewall(neutronFirewall);
80         if  (result != HttpURLConnection.HTTP_OK) {
81             LOG.error(" delete Neutron Firewall validation failed for result - {} ", result);
82             return;
83         }
84     }
85
86     /**
87      * Invoked when a Firewall Rule creation is requested
88      * to indicate if the specified Rule can be created.
89      *
90      * @param neutronFirewallRule  An instance of proposed new Neutron Firewall Rule object.
91      * @return HttpURLConnection A HTTP status code to the creation request.
92      */
93     @Override
94     public int canCreateNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
95         return HttpURLConnection.HTTP_CREATED;
96     }
97
98     @Override
99     public void neutronFirewallRuleCreated(NeutronFirewallRule neutronFirewallRule) {
100         LOG.debug("NeutronFirewallRule created by Neutron: {}", neutronFirewallRule);
101
102         int result = HttpURLConnection.HTTP_BAD_REQUEST;
103
104         result = canCreateNeutronFirewallRule(neutronFirewallRule);
105         if (result != HttpURLConnection.HTTP_CREATED) {
106             LOG.error("Neutron Firewall Rule creation failed {} ", result);
107             return;
108         }
109     }
110
111     @Override
112     public int canUpdateNeutronFirewallRule(NeutronFirewallRule delta, NeutronFirewallRule original) {
113         return HttpURLConnection.HTTP_OK;
114     }
115
116     @Override
117     public void neutronFirewallRuleUpdated(NeutronFirewallRule neutronFirewallRule) {
118         LOG.debug("Neutron Firewall Rule updated from Neutron: {}", neutronFirewallRule);
119         return;
120     }
121
122     @Override
123     public int canDeleteNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
124         return HttpURLConnection.HTTP_OK;
125     }
126
127     @Override
128     public void neutronFirewallRuleDeleted(NeutronFirewallRule neutronFirewallRule) {
129         int result = canDeleteNeutronFirewallRule(neutronFirewallRule);
130         if  (result != HttpURLConnection.HTTP_OK) {
131             LOG.error(" delete Neutron Firewall Rule validation failed for result - {} ", result);
132             return;
133         }
134     }
135
136     /**
137      * Invoked when a Firewall Policy creation is requested
138      * to indicate if the specified Rule can be created.
139      *
140      * @param neutronFirewallPolicy  An instance of proposed new Neutron Firewall Policy object.
141      * @return HttpURLConnection A HTTP status code to the creation request.
142      */
143     @Override
144     public int canCreateNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
145         return HttpURLConnection.HTTP_CREATED;
146     }
147
148     @Override
149     public void neutronFirewallPolicyCreated(NeutronFirewallPolicy neutronFirewallPolicy) {
150         LOG.debug("Neutron Firewall Policy created by Neutron: {}", neutronFirewallPolicy);
151
152         int result = HttpURLConnection.HTTP_BAD_REQUEST;
153
154         result = canCreateNeutronFirewallPolicy(neutronFirewallPolicy);
155         if (result != HttpURLConnection.HTTP_CREATED) {
156             LOG.debug("Neutron Firewall Policy creation failed: {} ", result);
157             return;
158         }
159     }
160
161     @Override
162     public int canUpdateNeutronFirewallPolicy(NeutronFirewallPolicy delta, NeutronFirewallPolicy original) {
163         return HttpURLConnection.HTTP_OK;
164     }
165
166     @Override
167     public void neutronFirewallPolicyUpdated(NeutronFirewallPolicy neutronFirewallPolicy) {
168         LOG.debug("Neutron Firewall Policy updated from Neutron: {}", neutronFirewallPolicy);
169         return;
170     }
171
172     @Override
173     public int canDeleteNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
174         return HttpURLConnection.HTTP_OK;
175     }
176
177     @Override
178     public void neutronFirewallPolicyDeleted(NeutronFirewallPolicy neutronFirewallPolicy) {
179         int result = canDeleteNeutronFirewallPolicy(neutronFirewallPolicy);
180         if  (result != HttpURLConnection.HTTP_OK) {
181             LOG.error(" delete Neutron Firewall Policy validation failed for result - {} ", result);
182             return;
183         }
184     }
185
186     /**
187      * Process the event.
188      *
189      * @param abstractEvent@see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
190      */
191     @Override
192     public void processEvent(AbstractEvent abstractEvent) {
193         if (!(abstractEvent instanceof NorthboundEvent)) {
194             LOG.error("Unable to process abstract event {}", abstractEvent);
195             return;
196         }
197         NorthboundEvent ev = (NorthboundEvent) abstractEvent;
198         switch (ev.getAction()) {
199             // TODO: add handling of events here, once callbacks do something
200             //       other than logging.
201             default:
202                 LOG.warn("Unable to process event action {}", ev.getAction());
203                 break;
204         }
205     }
206
207     @Override
208     public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {
209         eventDispatcher =
210                 (EventDispatcher) ServiceHelper.getGlobalInstance(EventDispatcher.class, this);
211         eventDispatcher.eventHandlerAdded(
212                 bundleContext.getServiceReference(INeutronFirewallAware.class.getName()), this);
213     }
214
215     @Override
216     public void setDependencies(Object impl) {}
217 }