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 java.net.HttpURLConnection;
14 import org.opendaylight.neutron.spi.INeutronFirewallAware;
15 import org.opendaylight.neutron.spi.INeutronFirewallPolicyAware;
16 import org.opendaylight.neutron.spi.INeutronFirewallRuleAware;
17 import org.opendaylight.neutron.spi.NeutronFirewall;
18 import org.opendaylight.neutron.spi.NeutronFirewallPolicy;
19 import org.opendaylight.neutron.spi.NeutronFirewallRule;
20 import org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher;
21 import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
22 import org.osgi.framework.BundleContext;
23 import org.osgi.framework.ServiceReference;
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
28 * Handle requests for OpenStack Neutron v2.0 Port Firewall API calls.
30 public class FWaasHandler extends AbstractHandler
31 implements INeutronFirewallAware, INeutronFirewallRuleAware,
32 INeutronFirewallPolicyAware, ConfigInterface {
34 private static final Logger LOG = LoggerFactory.getLogger(FWaasHandler.class);
37 * Invoked when a Firewall Rules creation is requested
38 * to indicate if the specified Rule can be created.
40 * @param neutronFirewall An instance of proposed new Neutron Firewall object.
41 * @return HttpURLConnection A HTTP status code to the creation request.
44 public int canCreateNeutronFirewall(NeutronFirewall neutronFirewall) {
45 return HttpURLConnection.HTTP_CREATED;
49 public void neutronFirewallCreated(NeutronFirewall neutronFirewall) {
50 LOG.debug("Neutron Firewall created by Neutron: {}", neutronFirewall);
51 int result = HttpURLConnection.HTTP_BAD_REQUEST;
53 result = canCreateNeutronFirewall(neutronFirewall);
54 if (result != HttpURLConnection.HTTP_CREATED) {
55 LOG.error("Neutron Firewall creation failed: {} ", result);
61 public int canUpdateNeutronFirewall(NeutronFirewall delta, NeutronFirewall original) {
62 return HttpURLConnection.HTTP_OK;
66 public void neutronFirewallUpdated(NeutronFirewall neutronFirewall) {
67 LOG.debug("NeutronFirewall updated from Neutron: {}", neutronFirewall);
72 public int canDeleteNeutronFirewall(NeutronFirewall neutronFirewall) {
73 return HttpURLConnection.HTTP_OK;
77 public void neutronFirewallDeleted(NeutronFirewall neutronFirewall) {
78 //TODO: Trigger flowmod removals
79 int result = canDeleteNeutronFirewall(neutronFirewall);
80 if (result != HttpURLConnection.HTTP_OK) {
81 LOG.error(" delete Neutron Firewall validation failed for result - {} ", result);
87 * Invoked when a Firewall Rule creation is requested
88 * to indicate if the specified Rule can be created.
90 * @param neutronFirewallRule An instance of proposed new Neutron Firewall Rule object.
91 * @return HttpURLConnection A HTTP status code to the creation request.
94 public int canCreateNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
95 return HttpURLConnection.HTTP_CREATED;
99 public void neutronFirewallRuleCreated(NeutronFirewallRule neutronFirewallRule) {
100 LOG.debug("NeutronFirewallRule created by Neutron: {}", neutronFirewallRule);
102 int result = HttpURLConnection.HTTP_BAD_REQUEST;
104 result = canCreateNeutronFirewallRule(neutronFirewallRule);
105 if (result != HttpURLConnection.HTTP_CREATED) {
106 LOG.error("Neutron Firewall Rule creation failed {} ", result);
112 public int canUpdateNeutronFirewallRule(NeutronFirewallRule delta, NeutronFirewallRule original) {
113 return HttpURLConnection.HTTP_OK;
117 public void neutronFirewallRuleUpdated(NeutronFirewallRule neutronFirewallRule) {
118 LOG.debug("Neutron Firewall Rule updated from Neutron: {}", neutronFirewallRule);
123 public int canDeleteNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
124 return HttpURLConnection.HTTP_OK;
128 public void neutronFirewallRuleDeleted(NeutronFirewallRule neutronFirewallRule) {
129 int result = canDeleteNeutronFirewallRule(neutronFirewallRule);
130 if (result != HttpURLConnection.HTTP_OK) {
131 LOG.error(" delete Neutron Firewall Rule validation failed for result - {} ", result);
137 * Invoked when a Firewall Policy creation is requested
138 * to indicate if the specified Rule can be created.
140 * @param neutronFirewallPolicy An instance of proposed new Neutron Firewall Policy object.
141 * @return HttpURLConnection A HTTP status code to the creation request.
144 public int canCreateNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
145 return HttpURLConnection.HTTP_CREATED;
149 public void neutronFirewallPolicyCreated(NeutronFirewallPolicy neutronFirewallPolicy) {
150 LOG.debug("Neutron Firewall Policy created by Neutron: {}", neutronFirewallPolicy);
152 int result = HttpURLConnection.HTTP_BAD_REQUEST;
154 result = canCreateNeutronFirewallPolicy(neutronFirewallPolicy);
155 if (result != HttpURLConnection.HTTP_CREATED) {
156 LOG.debug("Neutron Firewall Policy creation failed: {} ", result);
162 public int canUpdateNeutronFirewallPolicy(NeutronFirewallPolicy delta, NeutronFirewallPolicy original) {
163 return HttpURLConnection.HTTP_OK;
167 public void neutronFirewallPolicyUpdated(NeutronFirewallPolicy neutronFirewallPolicy) {
168 LOG.debug("Neutron Firewall Policy updated from Neutron: {}", neutronFirewallPolicy);
173 public int canDeleteNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
174 return HttpURLConnection.HTTP_OK;
178 public void neutronFirewallPolicyDeleted(NeutronFirewallPolicy neutronFirewallPolicy) {
179 int result = canDeleteNeutronFirewallPolicy(neutronFirewallPolicy);
180 if (result != HttpURLConnection.HTTP_OK) {
181 LOG.error(" delete Neutron Firewall Policy validation failed for result - {} ", result);
189 * @param abstractEvent@see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
192 public void processEvent(AbstractEvent abstractEvent) {
193 if (!(abstractEvent instanceof NorthboundEvent)) {
194 LOG.error("Unable to process abstract event {}", abstractEvent);
197 NorthboundEvent ev = (NorthboundEvent) abstractEvent;
198 switch (ev.getAction()) {
199 // TODO: add handling of events here, once callbacks do something
200 // other than logging.
202 LOG.warn("Unable to process event action {}", ev.getAction());
208 public void setDependencies(BundleContext bundleContext, ServiceReference serviceReference) {
210 (EventDispatcher) ServiceHelper.getGlobalInstance(EventDispatcher.class, this);
211 eventDispatcher.eventHandlerAdded(
212 bundleContext.getServiceReference(INeutronFirewallAware.class.getName()), this);
216 public void setDependencies(Object impl) {}