2 * Copyright (c) 2013, 2015 Red Hat, Inc. and others. All rights reserved.
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
9 package org.opendaylight.ovsdb.openstack.netvirt;
11 import java.net.HttpURLConnection;
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;
27 * Handle requests for OpenStack Neutron v2.0 Port Firewall API calls.
29 public class FWaasHandler extends AbstractHandler
30 implements INeutronFirewallAware, INeutronFirewallRuleAware,
31 INeutronFirewallPolicyAware, ConfigInterface {
33 private static final Logger LOG = LoggerFactory.getLogger(FWaasHandler.class);
36 * Invoked when a Firewall Rules creation is requested
37 * to indicate if the specified Rule can be created.
39 * @param neutronFirewall An instance of proposed new Neutron Firewall object.
40 * @return HttpURLConnection A HTTP status code to the creation request.
43 public int canCreateNeutronFirewall(NeutronFirewall neutronFirewall) {
44 return HttpURLConnection.HTTP_CREATED;
48 public void neutronFirewallCreated(NeutronFirewall neutronFirewall) {
49 LOG.debug("Neutron Firewall created by Neutron: {}", neutronFirewall);
51 int result = canCreateNeutronFirewall(neutronFirewall);
52 if (result != HttpURLConnection.HTTP_CREATED) {
53 LOG.error("Neutron Firewall creation failed: {} ", result);
58 public int canUpdateNeutronFirewall(NeutronFirewall delta, NeutronFirewall original) {
59 return HttpURLConnection.HTTP_OK;
63 public void neutronFirewallUpdated(NeutronFirewall neutronFirewall) {
64 LOG.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 LOG.error(" delete Neutron Firewall validation failed for result - {} ", result);
82 * Invoked when a Firewall Rule creation is requested
83 * to indicate if the specified Rule can be created.
85 * @param neutronFirewallRule An instance of proposed new Neutron Firewall Rule object.
86 * @return HttpURLConnection A HTTP status code to the creation request.
89 public int canCreateNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
90 return HttpURLConnection.HTTP_CREATED;
94 public void neutronFirewallRuleCreated(NeutronFirewallRule neutronFirewallRule) {
95 LOG.debug("NeutronFirewallRule created by Neutron: {}", neutronFirewallRule);
97 int result = canCreateNeutronFirewallRule(neutronFirewallRule);
98 if (result != HttpURLConnection.HTTP_CREATED) {
99 LOG.error("Neutron Firewall Rule creation failed {} ", result);
104 public int canUpdateNeutronFirewallRule(NeutronFirewallRule delta, NeutronFirewallRule original) {
105 return HttpURLConnection.HTTP_OK;
109 public void neutronFirewallRuleUpdated(NeutronFirewallRule neutronFirewallRule) {
110 LOG.debug("Neutron Firewall Rule updated from Neutron: {}", neutronFirewallRule);
114 public int canDeleteNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
115 return HttpURLConnection.HTTP_OK;
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);
127 * Invoked when a Firewall Policy creation is requested
128 * to indicate if the specified Rule can be created.
130 * @param neutronFirewallPolicy An instance of proposed new Neutron Firewall Policy object.
131 * @return HttpURLConnection A HTTP status code to the creation request.
134 public int canCreateNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
135 return HttpURLConnection.HTTP_CREATED;
139 public void neutronFirewallPolicyCreated(NeutronFirewallPolicy neutronFirewallPolicy) {
140 LOG.debug("Neutron Firewall Policy created by Neutron: {}", neutronFirewallPolicy);
142 int result = canCreateNeutronFirewallPolicy(neutronFirewallPolicy);
143 if (result != HttpURLConnection.HTTP_CREATED) {
144 LOG.debug("Neutron Firewall Policy creation failed: {} ", result);
149 public int canUpdateNeutronFirewallPolicy(NeutronFirewallPolicy delta, NeutronFirewallPolicy original) {
150 return HttpURLConnection.HTTP_OK;
154 public void neutronFirewallPolicyUpdated(NeutronFirewallPolicy neutronFirewallPolicy) {
155 LOG.debug("Neutron Firewall Policy updated from Neutron: {}", neutronFirewallPolicy);
159 public int canDeleteNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
160 return HttpURLConnection.HTTP_OK;
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);
174 * @param abstractEvent@see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
177 public void processEvent(AbstractEvent abstractEvent) {
178 if (!(abstractEvent instanceof NorthboundEvent)) {
179 LOG.error("Unable to process abstract event {}", abstractEvent);
182 NorthboundEvent ev = (NorthboundEvent) abstractEvent;
183 switch (ev.getAction()) {
184 // TODO: add handling of events here, once callbacks do something
185 // other than logging.
187 LOG.warn("Unable to process event action {}", ev.getAction());
193 public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {
195 (EventDispatcher) ServiceHelper.getGlobalInstance(EventDispatcher.class, this);
196 eventDispatcher.eventHandlerAdded(
197 bundleContext.getServiceReference(INeutronFirewallAware.class.getName()), this);
201 public void setDependencies(Object impl) {}