2 * Copyright (C) 2013 Red Hat, Inc.
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
10 package org.opendaylight.ovsdb.openstack.netvirt;
12 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallAware;
13 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallPolicyAware;
14 import org.opendaylight.controller.networkconfig.neutron.INeutronFirewallRuleAware;
15 import org.opendaylight.controller.networkconfig.neutron.NeutronFirewall;
16 import org.opendaylight.controller.networkconfig.neutron.NeutronFirewallPolicy;
17 import org.opendaylight.controller.networkconfig.neutron.NeutronFirewallRule;
18 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory;
21 import java.net.HttpURLConnection;
24 * Handle requests for OpenStack Neutron v2.0 Port Firewall API calls.
26 public class FWaasHandler extends AbstractHandler
27 implements INeutronFirewallAware,
28 INeutronFirewallRuleAware,
29 INeutronFirewallPolicyAware {
31 static final Logger logger = LoggerFactory.getLogger(FWaasHandler.class);
33 * Invoked when a Firewall Rules creation is requested
34 * to indicate if the specified Rule can be created.
36 * @param neutronFirewall An instance of proposed new Neutron Firewall object.
37 * @return HttpURLConnection A HTTP status code to the creation request.
40 public int canCreateNeutronFirewall(NeutronFirewall neutronFirewall) {
41 return HttpURLConnection.HTTP_CREATED;
45 public void neutronFirewallCreated(NeutronFirewall neutronFirewall) {
46 logger.debug("Neutron Firewall created by Neutron: {}", neutronFirewall);
47 int result = HttpURLConnection.HTTP_BAD_REQUEST;
49 result = canCreateNeutronFirewall(neutronFirewall);
50 if (result != HttpURLConnection.HTTP_CREATED) {
51 logger.error("Neutron Firewall creation failed: {} ", result);
57 public int canUpdateNeutronFirewall(NeutronFirewall delta, NeutronFirewall original) {
58 return HttpURLConnection.HTTP_OK;
62 public void neutronFirewallUpdated(NeutronFirewall neutronFirewall) {
63 logger.debug("NeutronFirewall updated from Neutron: {}", neutronFirewall);
68 public int canDeleteNeutronFirewall(NeutronFirewall neutronFirewall) {
69 return HttpURLConnection.HTTP_OK;
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);
83 * Invoked when a Firewall Rule creation is requested
84 * to indicate if the specified Rule can be created.
86 * @param neutronFirewallRule An instance of proposed new Neutron Firewall Rule object.
87 * @return HttpURLConnection A HTTP status code to the creation request.
90 public int canCreateNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
91 return HttpURLConnection.HTTP_CREATED;
95 public void neutronFirewallRuleCreated(NeutronFirewallRule neutronFirewallRule) {
96 logger.debug("NeutronFirewallRule created by Neutron: {}", neutronFirewallRule);
98 int result = HttpURLConnection.HTTP_BAD_REQUEST;
100 result = canCreateNeutronFirewallRule(neutronFirewallRule);
101 if (result != HttpURLConnection.HTTP_CREATED) {
102 logger.error("Neutron Firewall Rule creation failed {} ", result);
108 public int canUpdateNeutronFirewallRule(NeutronFirewallRule delta, NeutronFirewallRule original) {
109 return HttpURLConnection.HTTP_OK;
113 public void neutronFirewallRuleUpdated(NeutronFirewallRule neutronFirewallRule) {
114 logger.debug("Neutron Firewall Rule updated from Neutron: {}", neutronFirewallRule);
119 public int canDeleteNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
120 return HttpURLConnection.HTTP_OK;
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);
133 * Invoked when a Firewall Policy creation is requested
134 * to indicate if the specified Rule can be created.
136 * @param neutronFirewallPolicy An instance of proposed new Neutron Firewall Policy object.
137 * @return HttpURLConnection A HTTP status code to the creation request.
140 public int canCreateNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
141 return HttpURLConnection.HTTP_CREATED;
145 public void neutronFirewallPolicyCreated(NeutronFirewallPolicy neutronFirewallPolicy) {
146 logger.debug("Neutron Firewall Policy created by Neutron: {}", neutronFirewallPolicy);
148 int result = HttpURLConnection.HTTP_BAD_REQUEST;
150 result = canCreateNeutronFirewallPolicy(neutronFirewallPolicy);
151 if (result != HttpURLConnection.HTTP_CREATED) {
152 logger.debug("Neutron Firewall Policy creation failed: {} ", result);
158 public int canUpdateNeutronFirewallPolicy(NeutronFirewallPolicy delta, NeutronFirewallPolicy original) {
159 return HttpURLConnection.HTTP_OK;
163 public void neutronFirewallPolicyUpdated(NeutronFirewallPolicy neutronFirewallPolicy) {
164 logger.debug("Neutron Firewall Policy updated from Neutron: {}", neutronFirewallPolicy);
169 public int canDeleteNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
170 return HttpURLConnection.HTTP_OK;
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);
185 * @param abstractEvent@see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
188 public void processEvent(AbstractEvent abstractEvent) {
189 if (!(abstractEvent instanceof NorthboundEvent)) {
190 logger.error("Unable to process abstract event " + abstractEvent);
193 NorthboundEvent ev = (NorthboundEvent) abstractEvent;
194 switch (ev.getAction()) {
195 // TODO: add handling of events here, once callbacks do something
196 // other than logging.
198 logger.warn("Unable to process event action " + ev.getAction());