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