General Sonar clean-up
[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
52         int result = canCreateNeutronFirewall(neutronFirewall);
53         if (result != HttpURLConnection.HTTP_CREATED) {
54             LOG.error("Neutron Firewall creation failed: {} ", result);
55         }
56     }
57
58     @Override
59     public int canUpdateNeutronFirewall(NeutronFirewall delta, NeutronFirewall original) {
60         return HttpURLConnection.HTTP_OK;
61     }
62
63     @Override
64     public void neutronFirewallUpdated(NeutronFirewall neutronFirewall) {
65         LOG.debug("NeutronFirewall updated from Neutron: {}", neutronFirewall);
66     }
67
68     @Override
69     public int canDeleteNeutronFirewall(NeutronFirewall neutronFirewall) {
70         return HttpURLConnection.HTTP_OK;
71     }
72
73     @Override
74     public void neutronFirewallDeleted(NeutronFirewall neutronFirewall) {
75         //TODO: Trigger flowmod removals
76         int result = canDeleteNeutronFirewall(neutronFirewall);
77         if  (result != HttpURLConnection.HTTP_OK) {
78             LOG.error(" delete Neutron Firewall validation failed for result - {} ", result);
79         }
80     }
81
82     /**
83      * Invoked when a Firewall Rule creation is requested
84      * to indicate if the specified Rule can be created.
85      *
86      * @param neutronFirewallRule  An instance of proposed new Neutron Firewall Rule object.
87      * @return HttpURLConnection A HTTP status code to the creation request.
88      */
89     @Override
90     public int canCreateNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
91         return HttpURLConnection.HTTP_CREATED;
92     }
93
94     @Override
95     public void neutronFirewallRuleCreated(NeutronFirewallRule neutronFirewallRule) {
96         LOG.debug("NeutronFirewallRule created by Neutron: {}", neutronFirewallRule);
97
98         int result = canCreateNeutronFirewallRule(neutronFirewallRule);
99         if (result != HttpURLConnection.HTTP_CREATED) {
100             LOG.error("Neutron Firewall Rule creation failed {} ", result);
101         }
102     }
103
104     @Override
105     public int canUpdateNeutronFirewallRule(NeutronFirewallRule delta, NeutronFirewallRule original) {
106         return HttpURLConnection.HTTP_OK;
107     }
108
109     @Override
110     public void neutronFirewallRuleUpdated(NeutronFirewallRule neutronFirewallRule) {
111         LOG.debug("Neutron Firewall Rule updated from Neutron: {}", neutronFirewallRule);
112     }
113
114     @Override
115     public int canDeleteNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
116         return HttpURLConnection.HTTP_OK;
117     }
118
119     @Override
120     public void neutronFirewallRuleDeleted(NeutronFirewallRule neutronFirewallRule) {
121         int result = canDeleteNeutronFirewallRule(neutronFirewallRule);
122         if  (result != HttpURLConnection.HTTP_OK) {
123             LOG.error(" delete Neutron Firewall Rule validation failed for result - {} ", result);
124         }
125     }
126
127     /**
128      * Invoked when a Firewall Policy creation is requested
129      * to indicate if the specified Rule can be created.
130      *
131      * @param neutronFirewallPolicy  An instance of proposed new Neutron Firewall Policy object.
132      * @return HttpURLConnection A HTTP status code to the creation request.
133      */
134     @Override
135     public int canCreateNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
136         return HttpURLConnection.HTTP_CREATED;
137     }
138
139     @Override
140     public void neutronFirewallPolicyCreated(NeutronFirewallPolicy neutronFirewallPolicy) {
141         LOG.debug("Neutron Firewall Policy created by Neutron: {}", neutronFirewallPolicy);
142
143         int result = canCreateNeutronFirewallPolicy(neutronFirewallPolicy);
144         if (result != HttpURLConnection.HTTP_CREATED) {
145             LOG.debug("Neutron Firewall Policy creation failed: {} ", result);
146         }
147     }
148
149     @Override
150     public int canUpdateNeutronFirewallPolicy(NeutronFirewallPolicy delta, NeutronFirewallPolicy original) {
151         return HttpURLConnection.HTTP_OK;
152     }
153
154     @Override
155     public void neutronFirewallPolicyUpdated(NeutronFirewallPolicy neutronFirewallPolicy) {
156         LOG.debug("Neutron Firewall Policy updated from Neutron: {}", neutronFirewallPolicy);
157     }
158
159     @Override
160     public int canDeleteNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
161         return HttpURLConnection.HTTP_OK;
162     }
163
164     @Override
165     public void neutronFirewallPolicyDeleted(NeutronFirewallPolicy neutronFirewallPolicy) {
166         int result = canDeleteNeutronFirewallPolicy(neutronFirewallPolicy);
167         if  (result != HttpURLConnection.HTTP_OK) {
168             LOG.error(" delete Neutron Firewall Policy validation failed for result - {} ", result);
169         }
170     }
171
172     /**
173      * Process the event.
174      *
175      * @param abstractEvent@see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
176      */
177     @Override
178     public void processEvent(AbstractEvent abstractEvent) {
179         if (!(abstractEvent instanceof NorthboundEvent)) {
180             LOG.error("Unable to process abstract event {}", abstractEvent);
181             return;
182         }
183         NorthboundEvent ev = (NorthboundEvent) abstractEvent;
184         switch (ev.getAction()) {
185             // TODO: add handling of events here, once callbacks do something
186             //       other than logging.
187             default:
188                 LOG.warn("Unable to process event action {}", ev.getAction());
189                 break;
190         }
191     }
192
193     @Override
194     public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {
195         eventDispatcher =
196                 (EventDispatcher) ServiceHelper.getGlobalInstance(EventDispatcher.class, this);
197         eventDispatcher.eventHandlerAdded(
198                 bundleContext.getServiceReference(INeutronFirewallAware.class.getName()), this);
199     }
200
201     @Override
202     public void setDependencies(Object impl) {}
203 }