neutron-secgroups.yang: update model for security group
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronFirewallInterface.java
1 /*
2  * Copyright (C) 2014 Red Hat, Inc.
3  *
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
7  */
8
9 package org.opendaylight.neutron.transcriber;
10
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;
18
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;
24 import java.util.Set;
25 import java.util.concurrent.ConcurrentHashMap;
26 import java.util.concurrent.ConcurrentMap;
27
28 /**
29  * Deprecated as all Neutron FWaaS is experimental and so doesn't meet
30  * the scope of neutron northbound
31  *
32  * @deprecated
33  */
34
35 public class NeutronFirewallInterface extends AbstractNeutronInterface implements INeutronFirewallCRUD {
36
37     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronFirewallInterface.class);
38
39     private ConcurrentMap<String, NeutronFirewall> firewallDB  = new ConcurrentHashMap<String, NeutronFirewall>();
40
41
42     NeutronFirewallInterface(ProviderContext providerContext) {
43         super(providerContext);
44     }
45
46     // this method uses reflection to update an object from it's delta.
47
48     private boolean overwrite(Object target, Object delta) {
49         Method[] methods = target.getClass().getMethods();
50
51         for (Method toMethod : methods) {
52             if (toMethod.getDeclaringClass().equals(target.getClass())
53                     && toMethod.getName().startsWith("set")) {
54
55                 String toName = toMethod.getName();
56                 String fromName = toName.replace("set", "get");
57
58                 try {
59                     Method fromMethod = delta.getClass().getMethod(fromName);
60                     Object value = fromMethod.invoke(delta, (Object[]) null);
61                     if (value != null) {
62                         toMethod.invoke(target, value);
63                     }
64                 } catch (Exception e) {
65                     LOGGER.error(e.getMessage());
66                     return false;
67                 }
68             }
69         }
70         return true;
71     }
72
73     @Override
74     public boolean neutronFirewallExists(String uuid) {
75         return firewallDB.containsKey(uuid);
76     }
77
78     @Override
79     public NeutronFirewall getNeutronFirewall(String uuid) {
80         if (!neutronFirewallExists(uuid)) {
81             LOGGER.debug("No Firewall Have Been Defined");
82             return null;
83         }
84         return firewallDB.get(uuid);
85     }
86
87     @Override
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);
93         }
94         LOGGER.debug("Exiting getFirewalls, Found {} OpenStackFirewall", allFirewalls.size());
95         List<NeutronFirewall> ans = new ArrayList<NeutronFirewall>();
96         ans.addAll(allFirewalls);
97         return ans;
98     }
99
100     @Override
101     public boolean addNeutronFirewall(NeutronFirewall input) {
102         if (neutronFirewallExists(input.getFirewallUUID())) {
103             return false;
104         }
105         firewallDB.putIfAbsent(input.getFirewallUUID(), input);
106         return true;
107     }
108
109     @Override
110     public boolean removeNeutronFirewall(String uuid) {
111         if (!neutronFirewallExists(uuid)) {
112             return false;
113         }
114         firewallDB.remove(uuid);
115         return true;
116     }
117
118     @Override
119     public boolean updateNeutronFirewall(String uuid, NeutronFirewall delta) {
120         if (!neutronFirewallExists(uuid)) {
121             return false;
122         }
123         NeutronFirewall target = firewallDB.get(uuid);
124         return overwrite(target, delta);
125     }
126
127     @Override
128     public boolean neutronFirewallInUse(String firewallUUID) {
129         return !neutronFirewallExists(firewallUUID);
130     }
131
132     @Override
133     protected InstanceIdentifier createInstanceIdentifier(DataObject item) {
134         // TODO Auto-generated method stub
135         return null;
136     }
137
138     @Override
139     protected DataObject toMd(Object neutronObject) {
140         // TODO Auto-generated method stub
141         return null;
142     }
143
144     @Override
145     protected DataObject toMd(String uuid) {
146         // TODO Auto-generated method stub
147         return null;
148     }
149
150
151 }