Ovsdb plugin compatibility layer
[ovsdb.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 org.opendaylight.neutron.spi.INeutronFirewallAware;
13 import org.opendaylight.neutron.spi.INeutronFirewallPolicyAware;
14 import org.opendaylight.neutron.spi.INeutronFirewallRuleAware;
15 import org.opendaylight.neutron.spi.NeutronFirewall;
16 import org.opendaylight.neutron.spi.NeutronFirewallPolicy;
17 import org.opendaylight.neutron.spi.NeutronFirewallRule;
18 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory;
20
21 import java.net.HttpURLConnection;
22
23 /**
24  * Handle requests for OpenStack Neutron v2.0 Port Firewall API calls.
25  */
26 public class FWaasHandler extends AbstractHandler
27                           implements INeutronFirewallAware,
28                                      INeutronFirewallRuleAware,
29                                      INeutronFirewallPolicyAware {
30
31     static final Logger logger = LoggerFactory.getLogger(FWaasHandler.class);
32     /**
33      * Invoked when a Firewall Rules creation is requested
34      * to indicate if the specified Rule can be created.
35      *
36      * @param neutronFirewall  An instance of proposed new Neutron Firewall object.
37      * @return HttpURLConnection A HTTP status code to the creation request.
38      */
39     @Override
40     public int canCreateNeutronFirewall(NeutronFirewall neutronFirewall) {
41         return HttpURLConnection.HTTP_CREATED;
42     }
43
44     @Override
45     public void neutronFirewallCreated(NeutronFirewall neutronFirewall) {
46         logger.debug("Neutron Firewall created by Neutron: {}", neutronFirewall);
47         int result = HttpURLConnection.HTTP_BAD_REQUEST;
48
49         result = canCreateNeutronFirewall(neutronFirewall);
50         if (result != HttpURLConnection.HTTP_CREATED) {
51             logger.error("Neutron Firewall creation failed: {} ", result);
52             return;
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         logger.debug("NeutronFirewall updated from Neutron: {}", neutronFirewall);
64         return;
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             logger.error(" delete Neutron Firewall validation failed for result - {} ", result);
78             return;
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         logger.debug("NeutronFirewallRule created by Neutron: {}", neutronFirewallRule);
97
98         int result = HttpURLConnection.HTTP_BAD_REQUEST;
99
100         result = canCreateNeutronFirewallRule(neutronFirewallRule);
101         if (result != HttpURLConnection.HTTP_CREATED) {
102             logger.error("Neutron Firewall Rule creation failed {} ", result);
103             return;
104         }
105     }
106
107     @Override
108     public int canUpdateNeutronFirewallRule(NeutronFirewallRule delta, NeutronFirewallRule original) {
109         return HttpURLConnection.HTTP_OK;
110     }
111
112     @Override
113     public void neutronFirewallRuleUpdated(NeutronFirewallRule neutronFirewallRule) {
114         logger.debug("Neutron Firewall Rule updated from Neutron: {}", neutronFirewallRule);
115         return;
116     }
117
118     @Override
119     public int canDeleteNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
120         return HttpURLConnection.HTTP_OK;
121     }
122
123     @Override
124     public void neutronFirewallRuleDeleted(NeutronFirewallRule neutronFirewallRule) {
125         int result = canDeleteNeutronFirewallRule(neutronFirewallRule);
126         if  (result != HttpURLConnection.HTTP_OK) {
127             logger.error(" delete Neutron Firewall Rule validation failed for result - {} ", result);
128             return;
129         }
130     }
131
132     /**
133      * Invoked when a Firewall Policy creation is requested
134      * to indicate if the specified Rule can be created.
135      *
136      * @param neutronFirewallPolicy  An instance of proposed new Neutron Firewall Policy object.
137      * @return HttpURLConnection A HTTP status code to the creation request.
138      */
139     @Override
140     public int canCreateNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
141         return HttpURLConnection.HTTP_CREATED;
142     }
143
144     @Override
145     public void neutronFirewallPolicyCreated(NeutronFirewallPolicy neutronFirewallPolicy) {
146         logger.debug("Neutron Firewall Policy created by Neutron: {}", neutronFirewallPolicy);
147
148         int result = HttpURLConnection.HTTP_BAD_REQUEST;
149
150         result = canCreateNeutronFirewallPolicy(neutronFirewallPolicy);
151         if (result != HttpURLConnection.HTTP_CREATED) {
152             logger.debug("Neutron Firewall Policy creation failed: {} ", result);
153             return;
154         }
155     }
156
157     @Override
158     public int canUpdateNeutronFirewallPolicy(NeutronFirewallPolicy delta, NeutronFirewallPolicy original) {
159         return HttpURLConnection.HTTP_OK;
160     }
161
162     @Override
163     public void neutronFirewallPolicyUpdated(NeutronFirewallPolicy neutronFirewallPolicy) {
164         logger.debug("Neutron Firewall Policy updated from Neutron: {}", neutronFirewallPolicy);
165         return;
166     }
167
168     @Override
169     public int canDeleteNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
170         return HttpURLConnection.HTTP_OK;
171     }
172
173     @Override
174     public void neutronFirewallPolicyDeleted(NeutronFirewallPolicy neutronFirewallPolicy) {
175         int result = canDeleteNeutronFirewallPolicy(neutronFirewallPolicy);
176         if  (result != HttpURLConnection.HTTP_OK) {
177             logger.error(" delete Neutron Firewall Policy validation failed for result - {} ", result);
178             return;
179         }
180     }
181
182     /**
183      * Process the event.
184      *
185      * @param abstractEvent@see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
186      */
187     @Override
188     public void processEvent(AbstractEvent abstractEvent) {
189         if (!(abstractEvent instanceof NorthboundEvent)) {
190             logger.error("Unable to process abstract event " + abstractEvent);
191             return;
192         }
193         NorthboundEvent ev = (NorthboundEvent) abstractEvent;
194         switch (ev.getAction()) {
195             // TODO: add handling of events here, once callbacks do something
196             //       other than logging.
197             default:
198                 logger.warn("Unable to process event action " + ev.getAction());
199                 break;
200         }
201     }
202 }