Code cleanup: use collection interfaces in declarations
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronVPNIKEPolicyInterface.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.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
15 import java.util.Set;
16 import java.util.concurrent.ConcurrentHashMap;
17 import java.util.concurrent.ConcurrentMap;
18
19 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
20 import org.opendaylight.neutron.spi.INeutronVPNIKEPolicyCRUD;
21 import org.opendaylight.neutron.spi.NeutronVPNIKEPolicy;
22 import org.opendaylight.neutron.spi.NeutronVPNLifetime;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.ikepolicy.attrs.LifetimeBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.IkePolicies;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.ike.policies.IkePolicy;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.ike.policies.IkePolicyBuilder;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import org.slf4j.Logger;
29 import org.slf4j.LoggerFactory;
30
31 public class NeutronVPNIKEPolicyInterface extends AbstractNeutronInterface<IkePolicy, NeutronVPNIKEPolicy> implements INeutronVPNIKEPolicyCRUD {
32     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
33     private ConcurrentMap<String, NeutronVPNIKEPolicy> meteringLabelRuleDB = new ConcurrentHashMap<String, NeutronVPNIKEPolicy>();
34
35
36     NeutronVPNIKEPolicyInterface(ProviderContext providerContext) {
37         super(providerContext);
38     }
39
40     // IfNBVPNIKEPolicyCRUD methods
41
42     @Override
43     public boolean neutronVPNIKEPolicyExists(String uuid) {
44         return meteringLabelRuleDB.containsKey(uuid);
45     }
46
47     @Override
48     public NeutronVPNIKEPolicy getNeutronVPNIKEPolicy(String uuid) {
49         if (!neutronVPNIKEPolicyExists(uuid)) {
50             return null;
51         }
52         return meteringLabelRuleDB.get(uuid);
53     }
54
55     @Override
56     public List<NeutronVPNIKEPolicy> getAllNeutronVPNIKEPolicies() {
57         Set<NeutronVPNIKEPolicy> allVPNIKEPolicies = new HashSet<NeutronVPNIKEPolicy>();
58         for (Entry<String, NeutronVPNIKEPolicy> entry : meteringLabelRuleDB.entrySet()) {
59             NeutronVPNIKEPolicy meteringLabelRule = entry.getValue();
60             allVPNIKEPolicies.add(meteringLabelRule);
61         }
62         LOGGER.debug("Exiting getAllVPNIKEPolicies, Found {} OpenStackVPNIKEPolicies", allVPNIKEPolicies.size());
63         List<NeutronVPNIKEPolicy> ans = new ArrayList<NeutronVPNIKEPolicy>();
64         ans.addAll(allVPNIKEPolicies);
65         return ans;
66     }
67
68     @Override
69     public boolean addNeutronVPNIKEPolicy(NeutronVPNIKEPolicy input) {
70         if (neutronVPNIKEPolicyExists(input.getID())) {
71             return false;
72         }
73         meteringLabelRuleDB.putIfAbsent(input.getID(), input);
74         addMd(input);
75       //TODO: add code to find INeutronVPNIKEPolicyAware services and call newtorkCreated on them
76         return true;
77     }
78
79     @Override
80     public boolean removeNeutronVPNIKEPolicy(String uuid) {
81         if (!neutronVPNIKEPolicyExists(uuid)) {
82             return false;
83         }
84         meteringLabelRuleDB.remove(uuid);
85         removeMd(toMd(uuid));
86       //TODO: add code to find INeutronVPNIKEPolicyAware services and call newtorkDeleted on them
87         return true;
88     }
89
90     @Override
91     public boolean updateNeutronVPNIKEPolicy(String uuid, NeutronVPNIKEPolicy delta) {
92         if (!neutronVPNIKEPolicyExists(uuid)) {
93             return false;
94         }
95         NeutronVPNIKEPolicy target = meteringLabelRuleDB.get(uuid);
96         boolean rc = overwrite(target, delta);
97         if (rc) {
98             updateMd(meteringLabelRuleDB.get(uuid));
99         }
100         return rc;
101     }
102
103     @Override
104     public boolean neutronVPNIKEPolicyInUse(String netUUID) {
105         if (!neutronVPNIKEPolicyExists(netUUID)) {
106             return true;
107         }
108         return false;
109     }
110
111
112     @Override
113     protected IkePolicy toMd(NeutronVPNIKEPolicy ikePolicy) {
114         IkePolicyBuilder ikePolicyBuilder = new IkePolicyBuilder();
115         if (ikePolicy.getName() != null) {
116             ikePolicyBuilder.setName(ikePolicy.getName());
117         }
118         if (ikePolicy.getTenantID() != null) {
119             ikePolicyBuilder.setTenantId(toUuid(ikePolicy.getTenantID()));
120         }
121         if (ikePolicy.getDescription() != null) {
122             ikePolicyBuilder.setDescr(ikePolicy.getDescription());
123         }
124         if (ikePolicy.getAuthAlgorithm() != null) {
125             ikePolicyBuilder.setAuthAlgorithm(ikePolicy.getAuthAlgorithm());
126         }
127         if (ikePolicy.getEncryptionAlgorithm() != null) {
128             ikePolicyBuilder.setEncryptionAlgorithm(ikePolicy.getEncryptionAlgorithm());
129         }
130         if (ikePolicy.getPhase1NegotiationMode() != null) {
131             ikePolicyBuilder.setPhaseNegotiationMode(ikePolicy.getPhase1NegotiationMode());
132         }
133         if (ikePolicy.getPerfectForwardSecrecy() != null) {
134             ikePolicyBuilder.setPfs(ikePolicy.getPerfectForwardSecrecy());
135         }
136         if (ikePolicy.getIkeVersion() != null) {
137             ikePolicyBuilder.setIkeVersion(ikePolicy.getIkeVersion());
138         }
139         if (ikePolicy.getLifetime() !=null) {
140             NeutronVPNLifetime vpnLifetime = ikePolicy.getLifetime();
141             LifetimeBuilder lifetimeBuilder = new LifetimeBuilder();
142             lifetimeBuilder.setUnits(vpnLifetime.getUnits());
143             lifetimeBuilder.setValue(vpnLifetime.getValue());
144             ikePolicyBuilder.setLifetime(lifetimeBuilder.build());
145         }
146         if (ikePolicy.getID() != null) {
147             ikePolicyBuilder.setUuid(toUuid(ikePolicy.getID()));
148         } else {
149             LOGGER.warn("Attempting to write neutron vpnIKEPolicy without UUID");
150         }
151         return ikePolicyBuilder.build();
152     }
153
154
155     @Override
156     protected InstanceIdentifier<IkePolicy> createInstanceIdentifier(IkePolicy ikePolicy) {
157         return InstanceIdentifier.create(IkePolicies.class).child(IkePolicy.class, ikePolicy.getKey());
158     }
159
160
161     @Override
162     protected IkePolicy toMd(String uuid) {
163         IkePolicyBuilder ikePolicyBuilder = new IkePolicyBuilder();
164         ikePolicyBuilder.setUuid(toUuid(uuid));
165         return ikePolicyBuilder.build();
166     }
167 }