Fix logger constant name and remove unused logger constants
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronVPNIPSECPolicyInterface.java
1 /*
2  * Copyright IBM Corporation, 2015.  All rights reserved.
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 java.lang.reflect.Method;
12 import java.util.ArrayList;
13 import java.util.HashSet;
14 import java.util.List;
15 import java.util.Map.Entry;
16 import java.util.Set;
17 import java.util.concurrent.ConcurrentHashMap;
18 import java.util.concurrent.ConcurrentMap;
19
20 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
21 import org.opendaylight.neutron.spi.INeutronVPNIPSECPolicyCRUD;
22 import org.opendaylight.neutron.spi.NeutronVPNIPSECPolicy;
23 import org.opendaylight.neutron.spi.NeutronVPNLifetime;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.ipsecpolicy.attrs.LifetimeBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.IpsecPolicies;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.ipsec.policies.IpsecPolicy;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.ipsec.policies.IpsecPolicyBuilder;
28 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
29 import org.slf4j.Logger;
30 import org.slf4j.LoggerFactory;
31
32 public class NeutronVPNIPSECPolicyInterface extends AbstractNeutronInterface<IpsecPolicy, NeutronVPNIPSECPolicy> implements INeutronVPNIPSECPolicyCRUD {
33     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNIPSECPolicyInterface.class);
34     private ConcurrentMap<String, NeutronVPNIPSECPolicy> meteringLabelRuleDB = new ConcurrentHashMap<String, NeutronVPNIPSECPolicy>();
35
36
37     NeutronVPNIPSECPolicyInterface(ProviderContext providerContext) {
38         super(providerContext);
39     }
40
41
42     // this method uses reflection to update an object from it's delta.
43
44     private boolean overwrite(Object target, Object delta) {
45         Method[] methods = target.getClass().getMethods();
46
47         for(Method toMethod: methods){
48             if(toMethod.getDeclaringClass().equals(target.getClass())
49                     && toMethod.getName().startsWith("set")){
50
51                 String toName = toMethod.getName();
52                 String fromName = toName.replace("set", "get");
53
54                 try {
55                     Method fromMethod = delta.getClass().getMethod(fromName);
56                     Object value = fromMethod.invoke(delta, (Object[])null);
57                     if(value != null){
58                         toMethod.invoke(target, value);
59                     }
60                 } catch (Exception e) {
61                     LOGGER.error(e.getMessage());
62                     return false;
63                 }
64             }
65         }
66         return true;
67     }
68
69     // IfNBVPNIPSECPolicyCRUD methods
70
71     @Override
72     public boolean neutronVPNIPSECPolicyExists(String uuid) {
73         return meteringLabelRuleDB.containsKey(uuid);
74     }
75
76     @Override
77     public NeutronVPNIPSECPolicy getNeutronVPNIPSECPolicy(String uuid) {
78         if (!neutronVPNIPSECPolicyExists(uuid)) {
79             return null;
80         }
81         return meteringLabelRuleDB.get(uuid);
82     }
83
84     @Override
85     public List<NeutronVPNIPSECPolicy> getAllNeutronVPNIPSECPolicies() {
86         Set<NeutronVPNIPSECPolicy> allVPNIPSECPolicies = new HashSet<NeutronVPNIPSECPolicy>();
87         for (Entry<String, NeutronVPNIPSECPolicy> entry : meteringLabelRuleDB.entrySet()) {
88             NeutronVPNIPSECPolicy meteringLabelRule = entry.getValue();
89             allVPNIPSECPolicies.add(meteringLabelRule);
90         }
91         LOGGER.debug("Exiting getAllVPNIPSECPolicies, Found {} OpenStackVPNIPSECPolicies", allVPNIPSECPolicies.size());
92         List<NeutronVPNIPSECPolicy> ans = new ArrayList<NeutronVPNIPSECPolicy>();
93         ans.addAll(allVPNIPSECPolicies);
94         return ans;
95     }
96
97     @Override
98     public boolean addNeutronVPNIPSECPolicy(NeutronVPNIPSECPolicy input) {
99         if (neutronVPNIPSECPolicyExists(input.getID())) {
100             return false;
101         }
102         meteringLabelRuleDB.putIfAbsent(input.getID(), input);
103         addMd(input);
104       //TODO: add code to find INeutronVPNIPSECPolicyAware services and call newtorkCreated on them
105         return true;
106     }
107
108     @Override
109     public boolean removeNeutronVPNIPSECPolicy(String uuid) {
110         if (!neutronVPNIPSECPolicyExists(uuid)) {
111             return false;
112         }
113         meteringLabelRuleDB.remove(uuid);
114         removeMd(toMd(uuid));
115       //TODO: add code to find INeutronVPNIPSECPolicyAware services and call newtorkDeleted on them
116         return true;
117     }
118
119     @Override
120     public boolean updateNeutronVPNIPSECPolicy(String uuid, NeutronVPNIPSECPolicy delta) {
121         if (!neutronVPNIPSECPolicyExists(uuid)) {
122             return false;
123         }
124         NeutronVPNIPSECPolicy target = meteringLabelRuleDB.get(uuid);
125         boolean rc = overwrite(target, delta);
126         if (rc) {
127             updateMd(meteringLabelRuleDB.get(uuid));
128         }
129         return rc;
130     }
131
132     @Override
133     public boolean neutronVPNIPSECPolicyInUse(String netUUID) {
134         if (!neutronVPNIPSECPolicyExists(netUUID)) {
135             return true;
136         }
137         return false;
138     }
139
140
141     @Override
142     protected IpsecPolicy toMd(NeutronVPNIPSECPolicy ipsecPolicy) {
143         IpsecPolicyBuilder ipsecPolicyBuilder = new IpsecPolicyBuilder();
144         if (ipsecPolicy.getName() != null) {
145             ipsecPolicyBuilder.setName(ipsecPolicy.getName());
146         }
147         if (ipsecPolicy.getTenantID() != null) {
148             ipsecPolicyBuilder.setTenantId(toUuid(ipsecPolicy.getTenantID()));
149         }
150         if (ipsecPolicy.getDescription() != null) {
151             ipsecPolicyBuilder.setDescr(ipsecPolicy.getDescription());
152         }
153         if (ipsecPolicy.getAuthAlgorithm() != null) {
154             ipsecPolicyBuilder.setAuthAlgorithm(ipsecPolicy.getAuthAlgorithm());
155         }
156         if (ipsecPolicy.getEncryptionAlgorithm() != null) {
157             ipsecPolicyBuilder.setEncryptionAlgorithm(ipsecPolicy.getEncryptionAlgorithm());
158         }
159         if (ipsecPolicy.getTransformProtocol() != null) {
160             ipsecPolicyBuilder.setTransformProtocol(ipsecPolicy.getTransformProtocol());
161         }
162         if (ipsecPolicy.getEncapsulationMode() != null) {
163             ipsecPolicyBuilder.setEncapsulationMode(ipsecPolicy.getEncapsulationMode());
164         }
165         if (ipsecPolicy.getPerfectForwardSecrecy() != null) {
166             ipsecPolicyBuilder.setPfs(ipsecPolicy.getPerfectForwardSecrecy());
167         }
168         if (ipsecPolicy.getLifetime() !=null) {
169             NeutronVPNLifetime vpnLifetime = ipsecPolicy.getLifetime();
170             LifetimeBuilder lifetimeBuilder = new LifetimeBuilder();
171             lifetimeBuilder.setUnits(vpnLifetime.getUnits());
172             lifetimeBuilder.setValue(vpnLifetime.getValue());
173             ipsecPolicyBuilder.setLifetime(lifetimeBuilder.build());
174         }
175         if (ipsecPolicy.getID() != null) {
176             ipsecPolicyBuilder.setUuid(toUuid(ipsecPolicy.getID()));
177         } else {
178             LOGGER.warn("Attempting to write neutron vpnIPSECPolicy without UUID");
179         }
180         return ipsecPolicyBuilder.build();
181     }
182
183
184     @Override
185     protected InstanceIdentifier<IpsecPolicy> createInstanceIdentifier(IpsecPolicy ipsecPolicy) {
186         return InstanceIdentifier.create(IpsecPolicies.class).child(IpsecPolicy.class, ipsecPolicy.getKey());
187     }
188
189
190     @Override
191     protected IpsecPolicy toMd(String uuid) {
192         IpsecPolicyBuilder ipsecPolicyBuilder = new IpsecPolicyBuilder();
193         ipsecPolicyBuilder.setUuid(toUuid(uuid));
194         return ipsecPolicyBuilder.build();
195     }
196 }