2 * Copyright Tata Consultancy Services, 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
8 package org.opendaylight.neutron.transcriber;
10 import java.util.ArrayList;
11 import java.util.HashSet;
12 import java.util.List;
13 import java.util.Map.Entry;
15 import java.util.concurrent.ConcurrentHashMap;
16 import java.util.concurrent.ConcurrentMap;
18 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
19 import org.opendaylight.neutron.spi.INeutronVPNIPSECSiteConnectionsCRUD;
20 import org.opendaylight.neutron.spi.NeutronVPNDeadPeerDetection;
21 import org.opendaylight.neutron.spi.NeutronVPNIPSECSiteConnection;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.ipsecconnection.attrs.DpdBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.IpsecSiteConnections;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.ipsec.site.connections.IpsecSiteConnection;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.ipsec.site.connections.IpsecSiteConnectionBuilder;
26 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
30 public class NeutronVPNIPSECSiteConnectionsInterface extends AbstractNeutronInterface<IpsecSiteConnection, NeutronVPNIPSECSiteConnection> implements INeutronVPNIPSECSiteConnectionsCRUD {
31 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
32 private ConcurrentMap<String, NeutronVPNIPSECSiteConnection> neutronVPNIPSECSiteConnectionDB = new ConcurrentHashMap<String, NeutronVPNIPSECSiteConnection>();
35 NeutronVPNIPSECSiteConnectionsInterface(ProviderContext providerContext) {
36 super(providerContext);
39 // INeutronVPNIPSECSiteConnectionsCRUD methods
42 public boolean neutronVPNIPSECSiteConnectionsExists(String policyID) {
43 return neutronVPNIPSECSiteConnectionDB.containsKey(policyID);
47 public NeutronVPNIPSECSiteConnection getNeutronVPNIPSECSiteConnections(String policyID) {
48 if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
51 return neutronVPNIPSECSiteConnectionDB.get(policyID);
55 public List<NeutronVPNIPSECSiteConnection> getAllNeutronVPNIPSECSiteConnections() {
56 Set<NeutronVPNIPSECSiteConnection> allNeutronVPNIPSECSiteConnections = new HashSet<NeutronVPNIPSECSiteConnection>();
57 for (Entry<String, NeutronVPNIPSECSiteConnection> entry : neutronVPNIPSECSiteConnectionDB.entrySet()) {
58 NeutronVPNIPSECSiteConnection meteringLabelRule = entry.getValue();
59 allNeutronVPNIPSECSiteConnections.add(meteringLabelRule);
61 LOGGER.debug("Exiting getAllNeutronVPNIPSECSiteConnections, Found {} OpenStackVPNIPSECSiteConnections", allNeutronVPNIPSECSiteConnections.size());
62 List<NeutronVPNIPSECSiteConnection> ans = new ArrayList<NeutronVPNIPSECSiteConnection>();
63 ans.addAll(allNeutronVPNIPSECSiteConnections);
68 public boolean addNeutronVPNIPSECSiteConnections(NeutronVPNIPSECSiteConnection input) {
69 if (neutronVPNIPSECSiteConnectionsExists(input.getID())) {
72 neutronVPNIPSECSiteConnectionDB.putIfAbsent(input.getID(), input);
78 public boolean removeNeutronVPNIPSECSiteConnections(String policyID) {
79 if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
82 neutronVPNIPSECSiteConnectionDB.remove(policyID);
83 removeMd(toMd(policyID));
88 public boolean updateNeutronVPNIPSECSiteConnections(String policyID, NeutronVPNIPSECSiteConnection delta) {
89 if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
92 NeutronVPNIPSECSiteConnection target = neutronVPNIPSECSiteConnectionDB.get(policyID);
93 boolean rc = overwrite(target, delta);
95 updateMd(neutronVPNIPSECSiteConnectionDB.get(policyID));
101 public boolean neutronVPNIPSECSiteConnectionsInUse(String policyID) {
102 if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
109 protected IpsecSiteConnection toMd(NeutronVPNIPSECSiteConnection ipsecSiteConnection) {
110 IpsecSiteConnectionBuilder ipsecSiteConnectionBuilder = new IpsecSiteConnectionBuilder();
111 if (ipsecSiteConnection.getName() != null) {
112 ipsecSiteConnectionBuilder.setName(ipsecSiteConnection.getName());
114 if (ipsecSiteConnection.getTenantID() != null) {
115 ipsecSiteConnectionBuilder.setTenantId(toUuid(ipsecSiteConnection.getTenantID()));
117 ipsecSiteConnectionBuilder.setStatus(ipsecSiteConnection.getStatus());
118 if (ipsecSiteConnection.getAdminStateUp() != null) {
119 ipsecSiteConnectionBuilder.setAdminStateUp(ipsecSiteConnection.getAdminStateUp());
121 if (ipsecSiteConnection.getDescription() != null) {
122 ipsecSiteConnectionBuilder.setDescr(ipsecSiteConnection.getDescription());
124 if (ipsecSiteConnection.getPeerAddress() != null) {
125 ipsecSiteConnectionBuilder.setPeerAddress(ipsecSiteConnection.getPeerAddress());
127 if (ipsecSiteConnection.getPeerCidrs() != null) {
128 List<String> peerCidrs = new ArrayList<String>();
129 for( String peerCidr : ipsecSiteConnection.getPeerCidrs()) {
130 peerCidrs.add(peerCidr);
132 ipsecSiteConnectionBuilder.setPeerCidrs(peerCidrs);
134 if (ipsecSiteConnection.getPeerID() != null) {
135 ipsecSiteConnectionBuilder.setPeerId(ipsecSiteConnection.getPeerID());
137 if (ipsecSiteConnection.getRouteMode() != null) {
138 ipsecSiteConnectionBuilder.setRouteMode(ipsecSiteConnection.getRouteMode());
140 if (ipsecSiteConnection.getMtu() != null) {
141 ipsecSiteConnectionBuilder.setMtu((ipsecSiteConnection.getMtu()).shortValue());
143 if (ipsecSiteConnection.getAuthMode() != null) {
144 ipsecSiteConnectionBuilder.setAuthMode(ipsecSiteConnection.getAuthMode());
146 if (ipsecSiteConnection.getPreSharedKey() != null) {
147 ipsecSiteConnectionBuilder.setPsk(ipsecSiteConnection.getPreSharedKey());
149 if (ipsecSiteConnection.getInitiator() != null) {
150 ipsecSiteConnectionBuilder.setInitiator(ipsecSiteConnection.getInitiator());
152 if (ipsecSiteConnection.getIkePolicyID() != null) {
153 ipsecSiteConnectionBuilder.setIkepolicyId(toUuid(ipsecSiteConnection.getIkePolicyID()));
155 if (ipsecSiteConnection.getIpsecPolicyID() != null) {
156 ipsecSiteConnectionBuilder.setIpsecpolicyId(toUuid(ipsecSiteConnection.getIpsecPolicyID()));
158 if (ipsecSiteConnection.getVpnServiceID() != null) {
159 ipsecSiteConnectionBuilder.setVpnserviceId(toUuid(ipsecSiteConnection.getVpnServiceID()));
161 if (ipsecSiteConnection.getDeadPeerDetection() != null) {
162 NeutronVPNDeadPeerDetection deadPeerDetection = ipsecSiteConnection.getDeadPeerDetection();
163 DpdBuilder dpdBuilder = new DpdBuilder();
164 dpdBuilder.setAction(deadPeerDetection.getAction());
165 dpdBuilder.setInterval(deadPeerDetection.getInterval());
166 dpdBuilder.setTimeout(deadPeerDetection.getTimeout());
167 ipsecSiteConnectionBuilder.setDpd(dpdBuilder.build());
169 if (ipsecSiteConnection.getID() != null) {
170 ipsecSiteConnectionBuilder.setUuid(toUuid(ipsecSiteConnection.getID()));
172 LOGGER.warn("Attempting to write neutron vpnIPSECSiteConnection without UUID");
174 return ipsecSiteConnectionBuilder.build();
178 protected InstanceIdentifier<IpsecSiteConnection> createInstanceIdentifier(IpsecSiteConnection ipsecSiteConnection) {
179 return InstanceIdentifier.create(IpsecSiteConnections.class).child(IpsecSiteConnection.class, ipsecSiteConnection.getKey());
183 protected IpsecSiteConnection toMd(String uuid) {
184 IpsecSiteConnectionBuilder ipsecSiteConnectionBuilder = new IpsecSiteConnectionBuilder();
185 ipsecSiteConnectionBuilder.setUuid(toUuid(uuid));
186 return ipsecSiteConnectionBuilder.build();