2 * Copyright IBM Corporation, 2015. 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.neutron.transcriber;
11 import java.util.ArrayList;
12 import java.util.HashSet;
13 import java.util.List;
14 import java.util.Map.Entry;
16 import java.util.concurrent.ConcurrentHashMap;
17 import java.util.concurrent.ConcurrentMap;
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;
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>();
36 NeutronVPNIKEPolicyInterface(ProviderContext providerContext) {
37 super(providerContext);
40 // IfNBVPNIKEPolicyCRUD methods
43 public boolean neutronVPNIKEPolicyExists(String uuid) {
44 return meteringLabelRuleDB.containsKey(uuid);
48 public NeutronVPNIKEPolicy getNeutronVPNIKEPolicy(String uuid) {
49 if (!neutronVPNIKEPolicyExists(uuid)) {
52 return meteringLabelRuleDB.get(uuid);
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);
62 LOGGER.debug("Exiting getAllVPNIKEPolicies, Found {} OpenStackVPNIKEPolicies", allVPNIKEPolicies.size());
63 List<NeutronVPNIKEPolicy> ans = new ArrayList<NeutronVPNIKEPolicy>();
64 ans.addAll(allVPNIKEPolicies);
69 public boolean addNeutronVPNIKEPolicy(NeutronVPNIKEPolicy input) {
70 if (neutronVPNIKEPolicyExists(input.getID())) {
73 meteringLabelRuleDB.putIfAbsent(input.getID(), input);
75 //TODO: add code to find INeutronVPNIKEPolicyAware services and call newtorkCreated on them
80 public boolean removeNeutronVPNIKEPolicy(String uuid) {
81 if (!neutronVPNIKEPolicyExists(uuid)) {
84 meteringLabelRuleDB.remove(uuid);
86 //TODO: add code to find INeutronVPNIKEPolicyAware services and call newtorkDeleted on them
91 public boolean updateNeutronVPNIKEPolicy(String uuid, NeutronVPNIKEPolicy delta) {
92 if (!neutronVPNIKEPolicyExists(uuid)) {
95 NeutronVPNIKEPolicy target = meteringLabelRuleDB.get(uuid);
96 boolean rc = overwrite(target, delta);
98 updateMd(meteringLabelRuleDB.get(uuid));
104 public boolean neutronVPNIKEPolicyInUse(String netUUID) {
105 if (!neutronVPNIKEPolicyExists(netUUID)) {
113 protected IkePolicy toMd(NeutronVPNIKEPolicy ikePolicy) {
114 IkePolicyBuilder ikePolicyBuilder = new IkePolicyBuilder();
115 if (ikePolicy.getName() != null) {
116 ikePolicyBuilder.setName(ikePolicy.getName());
118 if (ikePolicy.getTenantID() != null) {
119 ikePolicyBuilder.setTenantId(toUuid(ikePolicy.getTenantID()));
121 if (ikePolicy.getDescription() != null) {
122 ikePolicyBuilder.setDescr(ikePolicy.getDescription());
124 if (ikePolicy.getAuthAlgorithm() != null) {
125 ikePolicyBuilder.setAuthAlgorithm(ikePolicy.getAuthAlgorithm());
127 if (ikePolicy.getEncryptionAlgorithm() != null) {
128 ikePolicyBuilder.setEncryptionAlgorithm(ikePolicy.getEncryptionAlgorithm());
130 if (ikePolicy.getPhase1NegotiationMode() != null) {
131 ikePolicyBuilder.setPhaseNegotiationMode(ikePolicy.getPhase1NegotiationMode());
133 if (ikePolicy.getPerfectForwardSecrecy() != null) {
134 ikePolicyBuilder.setPfs(ikePolicy.getPerfectForwardSecrecy());
136 if (ikePolicy.getIkeVersion() != null) {
137 ikePolicyBuilder.setIkeVersion(ikePolicy.getIkeVersion());
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());
146 if (ikePolicy.getID() != null) {
147 ikePolicyBuilder.setUuid(toUuid(ikePolicy.getID()));
149 LOGGER.warn("Attempting to write neutron vpnIKEPolicy without UUID");
151 return ikePolicyBuilder.build();
156 protected InstanceIdentifier<IkePolicy> createInstanceIdentifier(IkePolicy ikePolicy) {
157 return InstanceIdentifier.create(IkePolicies.class).child(IkePolicy.class, ikePolicy.getKey());
162 protected IkePolicy toMd(String uuid) {
163 IkePolicyBuilder ikePolicyBuilder = new IkePolicyBuilder();
164 ikePolicyBuilder.setUuid(toUuid(uuid));
165 return ikePolicyBuilder.build();