Merge "build failure of neutron"
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronVPNIPSECSiteConnectionsInterface.java
1 /*
2  * Copyright Tata Consultancy Services, 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 package org.opendaylight.neutron.transcriber;
9
10 import java.util.ArrayList;
11 import java.util.HashSet;
12 import java.util.List;
13 import java.util.Map.Entry;
14 import java.util.Set;
15 import java.util.concurrent.ConcurrentHashMap;
16 import java.util.concurrent.ConcurrentMap;
17
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;
29
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>();
33
34
35     NeutronVPNIPSECSiteConnectionsInterface(ProviderContext providerContext) {
36         super(providerContext);
37     }
38
39     // INeutronVPNIPSECSiteConnectionsCRUD methods
40
41     @Override
42     public boolean neutronVPNIPSECSiteConnectionsExists(String policyID) {
43         return neutronVPNIPSECSiteConnectionDB.containsKey(policyID);
44     }
45
46     @Override
47     public NeutronVPNIPSECSiteConnection getNeutronVPNIPSECSiteConnections(String policyID) {
48         if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
49             return null;
50         }
51         return neutronVPNIPSECSiteConnectionDB.get(policyID);
52     }
53
54     @Override
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);
60         }
61         LOGGER.debug("Exiting getAllNeutronVPNIPSECSiteConnections, Found {} OpenStackVPNIPSECSiteConnections", allNeutronVPNIPSECSiteConnections.size());
62         List<NeutronVPNIPSECSiteConnection> ans = new ArrayList<NeutronVPNIPSECSiteConnection>();
63         ans.addAll(allNeutronVPNIPSECSiteConnections);
64         return ans;
65     }
66
67     @Override
68     public boolean addNeutronVPNIPSECSiteConnections(NeutronVPNIPSECSiteConnection input) {
69         if (neutronVPNIPSECSiteConnectionsExists(input.getID())) {
70             return false;
71         }
72         neutronVPNIPSECSiteConnectionDB.putIfAbsent(input.getID(), input);
73         addMd(input);
74         return true;
75     }
76
77     @Override
78     public boolean removeNeutronVPNIPSECSiteConnections(String policyID) {
79         if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
80             return false;
81         }
82         neutronVPNIPSECSiteConnectionDB.remove(policyID);
83         removeMd(toMd(policyID));
84         return true;
85     }
86
87     @Override
88     public boolean updateNeutronVPNIPSECSiteConnections(String policyID, NeutronVPNIPSECSiteConnection delta) {
89         if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
90             return false;
91         }
92         NeutronVPNIPSECSiteConnection target = neutronVPNIPSECSiteConnectionDB.get(policyID);
93         boolean rc = overwrite(target, delta);
94         if (rc) {
95             updateMd(neutronVPNIPSECSiteConnectionDB.get(policyID));
96         }
97         return rc;
98     }
99
100     @Override
101     public boolean neutronVPNIPSECSiteConnectionsInUse(String policyID) {
102         if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
103             return true;
104         }
105         return false;
106     }
107
108     @Override
109     protected IpsecSiteConnection toMd(NeutronVPNIPSECSiteConnection ipsecSiteConnection) {
110         IpsecSiteConnectionBuilder ipsecSiteConnectionBuilder = new IpsecSiteConnectionBuilder();
111         if (ipsecSiteConnection.getName() != null) {
112             ipsecSiteConnectionBuilder.setName(ipsecSiteConnection.getName());
113         }
114         if (ipsecSiteConnection.getTenantID() != null) {
115             ipsecSiteConnectionBuilder.setTenantId(toUuid(ipsecSiteConnection.getTenantID()));
116         }
117         ipsecSiteConnectionBuilder.setStatus(ipsecSiteConnection.getStatus());
118         if (ipsecSiteConnection.getAdminStateUp() != null) {
119             ipsecSiteConnectionBuilder.setAdminStateUp(ipsecSiteConnection.getAdminStateUp());
120         }
121         if (ipsecSiteConnection.getDescription() != null) {
122             ipsecSiteConnectionBuilder.setDescr(ipsecSiteConnection.getDescription());
123         }
124         if (ipsecSiteConnection.getPeerAddress() != null) {
125             ipsecSiteConnectionBuilder.setPeerAddress(ipsecSiteConnection.getPeerAddress());
126         }
127         if (ipsecSiteConnection.getPeerCidrs() != null) {
128             List<String> peerCidrs = new ArrayList<String>();
129             for( String peerCidr : ipsecSiteConnection.getPeerCidrs()) {
130                 peerCidrs.add(peerCidr);
131             }
132             ipsecSiteConnectionBuilder.setPeerCidrs(peerCidrs);
133         }
134         if (ipsecSiteConnection.getPeerID() != null) {
135             ipsecSiteConnectionBuilder.setPeerId(ipsecSiteConnection.getPeerID());
136         }
137         if (ipsecSiteConnection.getRouteMode() != null) {
138             ipsecSiteConnectionBuilder.setRouteMode(ipsecSiteConnection.getRouteMode());
139         }
140         if (ipsecSiteConnection.getMtu() != null) {
141             ipsecSiteConnectionBuilder.setMtu((ipsecSiteConnection.getMtu()).shortValue());
142         }
143         if (ipsecSiteConnection.getAuthMode() != null) {
144             ipsecSiteConnectionBuilder.setAuthMode(ipsecSiteConnection.getAuthMode());
145         }
146         if (ipsecSiteConnection.getPreSharedKey() != null) {
147             ipsecSiteConnectionBuilder.setPsk(ipsecSiteConnection.getPreSharedKey());
148         }
149         if (ipsecSiteConnection.getInitiator() != null) {
150             ipsecSiteConnectionBuilder.setInitiator(ipsecSiteConnection.getInitiator());
151         }
152         if (ipsecSiteConnection.getIkePolicyID() != null) {
153             ipsecSiteConnectionBuilder.setIkepolicyId(toUuid(ipsecSiteConnection.getIkePolicyID()));
154         }
155         if (ipsecSiteConnection.getIpsecPolicyID() != null) {
156             ipsecSiteConnectionBuilder.setIpsecpolicyId(toUuid(ipsecSiteConnection.getIpsecPolicyID()));
157         }
158         if (ipsecSiteConnection.getVpnServiceID() != null) {
159             ipsecSiteConnectionBuilder.setVpnserviceId(toUuid(ipsecSiteConnection.getVpnServiceID()));
160         }
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());
168         }
169         if (ipsecSiteConnection.getID() != null) {
170             ipsecSiteConnectionBuilder.setUuid(toUuid(ipsecSiteConnection.getID()));
171         } else {
172             LOGGER.warn("Attempting to write neutron vpnIPSECSiteConnection without UUID");
173         }
174         return ipsecSiteConnectionBuilder.build();
175     }
176
177     @Override
178     protected InstanceIdentifier<IpsecSiteConnection> createInstanceIdentifier(IpsecSiteConnection ipsecSiteConnection) {
179         return InstanceIdentifier.create(IpsecSiteConnections.class).child(IpsecSiteConnection.class, ipsecSiteConnection.getKey());
180     }
181
182     @Override
183     protected IpsecSiteConnection toMd(String uuid) {
184         IpsecSiteConnectionBuilder ipsecSiteConnectionBuilder = new IpsecSiteConnectionBuilder();
185         ipsecSiteConnectionBuilder.setUuid(toUuid(uuid));
186         return ipsecSiteConnectionBuilder.build();
187     }
188 }