6e2a5a46fe8dcce47133c9cff85464cec76a5f29
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronVPNIPSECSiteConnectionsInterface.java
1 /*
2  * Copyright (c) 2015 Tata Consultancy Services and others.  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.List;
13
14 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
15 import org.opendaylight.neutron.spi.INeutronVPNIPSECSiteConnectionsCRUD;
16 import org.opendaylight.neutron.spi.NeutronVPNDeadPeerDetection;
17 import org.opendaylight.neutron.spi.NeutronVPNIPSECSiteConnection;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecconnection.attributes.DpdBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecconnections.attributes.IpsecSiteConnections;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecconnections.attributes.ipsec.site.connections.Ipsecsiteconnection;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecconnections.attributes.ipsec.site.connections.IpsecsiteconnectionBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
23 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
24 import org.osgi.framework.BundleContext;
25 import org.osgi.framework.ServiceRegistration;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29 public class NeutronVPNIPSECSiteConnectionsInterface extends AbstractNeutronInterface<Ipsecsiteconnection, IpsecSiteConnections, NeutronVPNIPSECSiteConnection> implements INeutronVPNIPSECSiteConnectionsCRUD {
30     private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
31
32     NeutronVPNIPSECSiteConnectionsInterface(ProviderContext providerContext) {
33         super(providerContext);
34     }
35
36     // INeutronVPNIPSECSiteConnectionsCRUD methods
37     @Override
38     protected List<Ipsecsiteconnection> getDataObjectList(IpsecSiteConnections connections) {
39         return connections.getIpsecsiteconnection();
40     }
41
42     @Override
43     public boolean inUse(String policyID) {
44         return !exists(policyID);
45     }
46
47     protected NeutronVPNIPSECSiteConnection fromMd(Ipsecsiteconnection ipsecSiteConnection) {
48         final NeutronVPNIPSECSiteConnection answer = new NeutronVPNIPSECSiteConnection();
49         if (ipsecSiteConnection.getName() != null) {
50             answer.setName(ipsecSiteConnection.getName());
51         }
52         if (ipsecSiteConnection.getTenantId() != null) {
53             answer.setTenantID(ipsecSiteConnection.getTenantId());
54         }
55         answer.setStatus(ipsecSiteConnection.getStatus());
56         if (ipsecSiteConnection.isAdminStateUp() != null) {
57             answer.setAdminStateUp(ipsecSiteConnection.isAdminStateUp());
58         }
59         if (ipsecSiteConnection.getPeerAddress() != null) {
60             answer.setPeerAddress(ipsecSiteConnection.getPeerAddress());
61         }
62         if (ipsecSiteConnection.getPeerCidrs() != null) {
63             final List<String> peerCidrs = new ArrayList<String>();
64             for( final String peerCidr : ipsecSiteConnection.getPeerCidrs()) {
65                 peerCidrs.add(peerCidr);
66             }
67             answer.setPeerCidrs(peerCidrs);
68         }
69         if (ipsecSiteConnection.getPeerId() != null) {
70             answer.setPeerID(ipsecSiteConnection.getPeerId());
71         }
72         if (ipsecSiteConnection.getRouteMode() != null) {
73             answer.setRouteMode(ipsecSiteConnection.getRouteMode());
74         }
75         if (ipsecSiteConnection.getMtu() != null) {
76             answer.setMtu((ipsecSiteConnection.getMtu()).intValue());
77         }
78         if (ipsecSiteConnection.getAuthMode() != null) {
79             answer.setAuthMode(ipsecSiteConnection.getAuthMode());
80         }
81         if (ipsecSiteConnection.getPsk() != null) {
82             answer.setPreSharedKey(ipsecSiteConnection.getPsk());
83         }
84         if (ipsecSiteConnection.getInitiator() != null) {
85             answer.setInitiator(ipsecSiteConnection.getInitiator());
86         }
87         if (ipsecSiteConnection.getIkepolicyId() != null) {
88             answer.setIkePolicyID(ipsecSiteConnection.getIkepolicyId().getValue());
89         }
90         if (ipsecSiteConnection.getIpsecpolicyId() != null) {
91             answer.setIpsecPolicyID(ipsecSiteConnection.getIpsecpolicyId().getValue());
92         }
93         if (ipsecSiteConnection.getVpnserviceId() != null) {
94             answer.setVpnServiceID(ipsecSiteConnection.getVpnserviceId().getValue());
95         }
96         if (ipsecSiteConnection.getDpd() != null) {
97             final NeutronVPNDeadPeerDetection deadPeerDetection = new NeutronVPNDeadPeerDetection();
98             deadPeerDetection.setAction(ipsecSiteConnection.getDpd().getAction());
99             deadPeerDetection.setInterval(ipsecSiteConnection.getDpd().getInterval());
100             deadPeerDetection.setTimeout(ipsecSiteConnection.getDpd().getTimeout());
101             answer.setDeadPeerDetection(deadPeerDetection);
102         }
103         if (ipsecSiteConnection.getUuid() != null) {
104             answer.setID(ipsecSiteConnection.getUuid().getValue());
105         }
106         return answer;
107     }
108
109     @Override
110     protected Ipsecsiteconnection toMd(NeutronVPNIPSECSiteConnection ipsecSiteConnection) {
111         final IpsecsiteconnectionBuilder ipsecSiteConnectionBuilder = new IpsecsiteconnectionBuilder();
112         if (ipsecSiteConnection.getName() != null) {
113             ipsecSiteConnectionBuilder.setName(ipsecSiteConnection.getName());
114         }
115         if (ipsecSiteConnection.getTenantID() != null) {
116             ipsecSiteConnectionBuilder.setTenantId(toUuid(ipsecSiteConnection.getTenantID()));
117         }
118         ipsecSiteConnectionBuilder.setStatus(ipsecSiteConnection.getStatus());
119         if (ipsecSiteConnection.getAdminStateUp() != null) {
120             ipsecSiteConnectionBuilder.setAdminStateUp(ipsecSiteConnection.getAdminStateUp());
121         }
122         if (ipsecSiteConnection.getPeerAddress() != null) {
123             ipsecSiteConnectionBuilder.setPeerAddress(ipsecSiteConnection.getPeerAddress());
124         }
125         if (ipsecSiteConnection.getPeerCidrs() != null) {
126             final List<String> peerCidrs = new ArrayList<String>();
127             for( final String peerCidr : ipsecSiteConnection.getPeerCidrs()) {
128                 peerCidrs.add(peerCidr);
129             }
130             ipsecSiteConnectionBuilder.setPeerCidrs(peerCidrs);
131         }
132         if (ipsecSiteConnection.getPeerID() != null) {
133             ipsecSiteConnectionBuilder.setPeerId(ipsecSiteConnection.getPeerID());
134         }
135         if (ipsecSiteConnection.getRouteMode() != null) {
136             ipsecSiteConnectionBuilder.setRouteMode(ipsecSiteConnection.getRouteMode());
137         }
138         if (ipsecSiteConnection.getMtu() != null) {
139             ipsecSiteConnectionBuilder.setMtu((ipsecSiteConnection.getMtu()).shortValue());
140         }
141         if (ipsecSiteConnection.getAuthMode() != null) {
142             ipsecSiteConnectionBuilder.setAuthMode(ipsecSiteConnection.getAuthMode());
143         }
144         if (ipsecSiteConnection.getPreSharedKey() != null) {
145             ipsecSiteConnectionBuilder.setPsk(ipsecSiteConnection.getPreSharedKey());
146         }
147         if (ipsecSiteConnection.getInitiator() != null) {
148             ipsecSiteConnectionBuilder.setInitiator(ipsecSiteConnection.getInitiator());
149         }
150         if (ipsecSiteConnection.getIkePolicyID() != null) {
151             ipsecSiteConnectionBuilder.setIkepolicyId(toUuid(ipsecSiteConnection.getIkePolicyID()));
152         }
153         if (ipsecSiteConnection.getIpsecPolicyID() != null) {
154             ipsecSiteConnectionBuilder.setIpsecpolicyId(toUuid(ipsecSiteConnection.getIpsecPolicyID()));
155         }
156         if (ipsecSiteConnection.getVpnServiceID() != null) {
157             ipsecSiteConnectionBuilder.setVpnserviceId(toUuid(ipsecSiteConnection.getVpnServiceID()));
158         }
159         if (ipsecSiteConnection.getDeadPeerDetection() != null) {
160             final NeutronVPNDeadPeerDetection deadPeerDetection = ipsecSiteConnection.getDeadPeerDetection();
161             final DpdBuilder dpdBuilder = new DpdBuilder();
162             dpdBuilder.setAction(deadPeerDetection.getAction());
163             dpdBuilder.setInterval(deadPeerDetection.getInterval());
164             dpdBuilder.setTimeout(deadPeerDetection.getTimeout());
165             ipsecSiteConnectionBuilder.setDpd(dpdBuilder.build());
166         }
167         if (ipsecSiteConnection.getID() != null) {
168             ipsecSiteConnectionBuilder.setUuid(toUuid(ipsecSiteConnection.getID()));
169         } else {
170             LOGGER.warn("Attempting to write neutron vpnIPSECSiteConnection without UUID");
171         }
172         return ipsecSiteConnectionBuilder.build();
173     }
174
175     @Override
176     protected InstanceIdentifier<IpsecSiteConnections> createInstanceIdentifier() {
177         return InstanceIdentifier.create(Neutron.class)
178                  .child(IpsecSiteConnections.class);
179     }
180
181     @Override
182     protected InstanceIdentifier<Ipsecsiteconnection> createInstanceIdentifier(Ipsecsiteconnection ipsecSiteConnection) {
183         return InstanceIdentifier.create(Neutron.class)
184                  .child(IpsecSiteConnections.class)
185                  .child(Ipsecsiteconnection.class, ipsecSiteConnection.getKey());
186     }
187
188     @Override
189     protected Ipsecsiteconnection toMd(String uuid) {
190         final IpsecsiteconnectionBuilder ipsecSiteConnectionBuilder = new IpsecsiteconnectionBuilder();
191         ipsecSiteConnectionBuilder.setUuid(toUuid(uuid));
192         return ipsecSiteConnectionBuilder.build();
193     }
194
195     public static void registerNewInterface(BundleContext context,
196                                             ProviderContext providerContext,
197                                             List<ServiceRegistration<?>> registrations) {
198         final NeutronVPNIPSECSiteConnectionsInterface neutronVPNIPSECSiteConnectionsInterface = new NeutronVPNIPSECSiteConnectionsInterface(providerContext);
199         final ServiceRegistration<INeutronVPNIPSECSiteConnectionsCRUD> neutronVPNIPSECSiteConnectionsInterfaceRegistration = context.registerService(INeutronVPNIPSECSiteConnectionsCRUD.class, neutronVPNIPSECSiteConnectionsInterface, null);
200         if (neutronVPNIPSECSiteConnectionsInterfaceRegistration != null) {
201             registrations.add(neutronVPNIPSECSiteConnectionsInterfaceRegistration);
202         }
203     }
204 }