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