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.ovsdb.openstack.netvirt.translator.NeutronFirewall;
14 import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallPolicy;
15 import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronFirewallRule;
16 import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallAware;
17 import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallPolicyAware;
18 import org.opendaylight.ovsdb.openstack.netvirt.translator.iaware.INeutronFirewallRuleAware;
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;
26 * Handle requests for OpenStack Neutron v2.0 Port Firewall API calls.
28 public class FWaasHandler extends AbstractHandler
29 implements INeutronFirewallAware, INeutronFirewallRuleAware,
30 INeutronFirewallPolicyAware, ConfigInterface {
32 private static final Logger LOG = LoggerFactory.getLogger(FWaasHandler.class);
35 * Invoked when a Firewall Rules creation is requested
36 * to indicate if the specified Rule can be created.
38 * @param neutronFirewall An instance of proposed new Neutron Firewall object.
39 * @return HttpURLConnection A HTTP status code to the creation request.
42 public int canCreateNeutronFirewall(NeutronFirewall neutronFirewall) {
43 return HttpURLConnection.HTTP_CREATED;
47 public void neutronFirewallCreated(NeutronFirewall neutronFirewall) {
48 LOG.debug("Neutron Firewall created by Neutron: {}", neutronFirewall);
50 int result = canCreateNeutronFirewall(neutronFirewall);
51 if (result != HttpURLConnection.HTTP_CREATED) {
52 LOG.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 LOG.debug("NeutronFirewall updated from Neutron: {}", neutronFirewall);
67 public int canDeleteNeutronFirewall(NeutronFirewall neutronFirewall) {
68 return HttpURLConnection.HTTP_OK;
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);
81 * Invoked when a Firewall Rule creation is requested
82 * to indicate if the specified Rule can be created.
84 * @param neutronFirewallRule An instance of proposed new Neutron Firewall Rule object.
85 * @return HttpURLConnection A HTTP status code to the creation request.
88 public int canCreateNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
89 return HttpURLConnection.HTTP_CREATED;
93 public void neutronFirewallRuleCreated(NeutronFirewallRule neutronFirewallRule) {
94 LOG.debug("NeutronFirewallRule created by Neutron: {}", neutronFirewallRule);
96 int result = canCreateNeutronFirewallRule(neutronFirewallRule);
97 if (result != HttpURLConnection.HTTP_CREATED) {
98 LOG.error("Neutron Firewall Rule creation failed {} ", result);
103 public int canUpdateNeutronFirewallRule(NeutronFirewallRule delta, NeutronFirewallRule original) {
104 return HttpURLConnection.HTTP_OK;
108 public void neutronFirewallRuleUpdated(NeutronFirewallRule neutronFirewallRule) {
109 LOG.debug("Neutron Firewall Rule updated from Neutron: {}", neutronFirewallRule);
113 public int canDeleteNeutronFirewallRule(NeutronFirewallRule neutronFirewallRule) {
114 return HttpURLConnection.HTTP_OK;
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);
126 * Invoked when a Firewall Policy creation is requested
127 * to indicate if the specified Rule can be created.
129 * @param neutronFirewallPolicy An instance of proposed new Neutron Firewall Policy object.
130 * @return HttpURLConnection A HTTP status code to the creation request.
133 public int canCreateNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
134 return HttpURLConnection.HTTP_CREATED;
138 public void neutronFirewallPolicyCreated(NeutronFirewallPolicy neutronFirewallPolicy) {
139 LOG.debug("Neutron Firewall Policy created by Neutron: {}", neutronFirewallPolicy);
141 int result = canCreateNeutronFirewallPolicy(neutronFirewallPolicy);
142 if (result != HttpURLConnection.HTTP_CREATED) {
143 LOG.debug("Neutron Firewall Policy creation failed: {} ", result);
148 public int canUpdateNeutronFirewallPolicy(NeutronFirewallPolicy delta, NeutronFirewallPolicy original) {
149 return HttpURLConnection.HTTP_OK;
153 public void neutronFirewallPolicyUpdated(NeutronFirewallPolicy neutronFirewallPolicy) {
154 LOG.debug("Neutron Firewall Policy updated from Neutron: {}", neutronFirewallPolicy);
158 public int canDeleteNeutronFirewallPolicy(NeutronFirewallPolicy neutronFirewallPolicy) {
159 return HttpURLConnection.HTTP_OK;
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);
173 * @param abstractEvent new FWaas Event@see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
176 public void processEvent(AbstractEvent abstractEvent) {
177 if (!(abstractEvent instanceof NorthboundEvent)) {
178 LOG.error("Unable to process abstract event {}", abstractEvent);
181 NorthboundEvent ev = (NorthboundEvent) abstractEvent;
182 switch (ev.getAction()) {
183 // TODO: add handling of events here, once callbacks do something
184 // other than logging.
186 LOG.warn("Unable to process event action {}", ev.getAction());
192 public void setDependencies(ServiceReference serviceReference) {
194 (EventDispatcher) ServiceHelper.getGlobalInstance(EventDispatcher.class, this);
195 eventDispatcher.eventHandlerAdded(serviceReference, this);
199 public void setDependencies(Object impl) {}