2 * Copyright (C) 2014 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
9 package org.opendaylight.neutron.transcriber;
11 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
12 import org.opendaylight.neutron.spi.INeutronFirewallCRUD;
13 import org.opendaylight.neutron.spi.NeutronFirewall;
14 import org.opendaylight.yangtools.yang.binding.DataObject;
15 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
16 import org.slf4j.Logger;
17 import org.slf4j.LoggerFactory;
19 import java.lang.reflect.Method;
20 import java.util.ArrayList;
21 import java.util.HashSet;
22 import java.util.List;
23 import java.util.Map.Entry;
25 import java.util.concurrent.ConcurrentHashMap;
26 import java.util.concurrent.ConcurrentMap;
29 * Deprecated as all Neutron FWaaS is experimental and so doesn't meet
30 * the scope of neutron northbound
35 public class NeutronFirewallInterface extends AbstractNeutronInterface implements INeutronFirewallCRUD {
37 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronFirewallInterface.class);
39 private ConcurrentMap<String, NeutronFirewall> firewallDB = new ConcurrentHashMap<String, NeutronFirewall>();
42 NeutronFirewallInterface(ProviderContext providerContext) {
43 super(providerContext);
46 // this method uses reflection to update an object from it's delta.
48 private boolean overwrite(Object target, Object delta) {
49 Method[] methods = target.getClass().getMethods();
51 for (Method toMethod : methods) {
52 if (toMethod.getDeclaringClass().equals(target.getClass())
53 && toMethod.getName().startsWith("set")) {
55 String toName = toMethod.getName();
56 String fromName = toName.replace("set", "get");
59 Method fromMethod = delta.getClass().getMethod(fromName);
60 Object value = fromMethod.invoke(delta, (Object[]) null);
62 toMethod.invoke(target, value);
64 } catch (Exception e) {
65 LOGGER.error(e.getMessage());
74 public boolean neutronFirewallExists(String uuid) {
75 return firewallDB.containsKey(uuid);
79 public NeutronFirewall getNeutronFirewall(String uuid) {
80 if (!neutronFirewallExists(uuid)) {
81 LOGGER.debug("No Firewall Have Been Defined");
84 return firewallDB.get(uuid);
88 public List<NeutronFirewall> getAllNeutronFirewalls() {
89 Set<NeutronFirewall> allFirewalls = new HashSet<NeutronFirewall>();
90 for (Entry<String, NeutronFirewall> entry : firewallDB.entrySet()) {
91 NeutronFirewall firewall = entry.getValue();
92 allFirewalls.add(firewall);
94 LOGGER.debug("Exiting getFirewalls, Found {} OpenStackFirewall", allFirewalls.size());
95 List<NeutronFirewall> ans = new ArrayList<NeutronFirewall>();
96 ans.addAll(allFirewalls);
101 public boolean addNeutronFirewall(NeutronFirewall input) {
102 if (neutronFirewallExists(input.getFirewallUUID())) {
105 firewallDB.putIfAbsent(input.getFirewallUUID(), input);
110 public boolean removeNeutronFirewall(String uuid) {
111 if (!neutronFirewallExists(uuid)) {
114 firewallDB.remove(uuid);
119 public boolean updateNeutronFirewall(String uuid, NeutronFirewall delta) {
120 if (!neutronFirewallExists(uuid)) {
123 NeutronFirewall target = firewallDB.get(uuid);
124 return overwrite(target, delta);
128 public boolean neutronFirewallInUse(String firewallUUID) {
129 return !neutronFirewallExists(firewallUUID);
133 protected InstanceIdentifier createInstanceIdentifier(DataObject item) {
134 // TODO Auto-generated method stub
139 protected DataObject toMd(Object neutronObject) {
140 // TODO Auto-generated method stub
145 protected DataObject toMd(String uuid) {
146 // TODO Auto-generated method stub