2 * Copyright (c) 2015 Tata Consultancy Services and others. 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.List;
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;
29 public class NeutronVPNIPSECSiteConnectionsInterface extends AbstractNeutronInterface<Ipsecsiteconnection, IpsecSiteConnections, NeutronVPNIPSECSiteConnection> implements INeutronVPNIPSECSiteConnectionsCRUD {
30 private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
32 NeutronVPNIPSECSiteConnectionsInterface(ProviderContext providerContext) {
33 super(providerContext);
36 // INeutronVPNIPSECSiteConnectionsCRUD methods
38 protected List<Ipsecsiteconnection> getDataObjectList(IpsecSiteConnections connections) {
39 return connections.getIpsecsiteconnection();
43 public boolean inUse(String policyID) {
44 return !exists(policyID);
47 protected NeutronVPNIPSECSiteConnection fromMd(Ipsecsiteconnection ipsecSiteConnection) {
48 final NeutronVPNIPSECSiteConnection answer = new NeutronVPNIPSECSiteConnection();
49 if (ipsecSiteConnection.getName() != null) {
50 answer.setName(ipsecSiteConnection.getName());
52 if (ipsecSiteConnection.getTenantId() != null) {
53 answer.setTenantID(ipsecSiteConnection.getTenantId());
55 answer.setStatus(ipsecSiteConnection.getStatus());
56 if (ipsecSiteConnection.isAdminStateUp() != null) {
57 answer.setAdminStateUp(ipsecSiteConnection.isAdminStateUp());
59 if (ipsecSiteConnection.getPeerAddress() != null) {
60 answer.setPeerAddress(ipsecSiteConnection.getPeerAddress());
62 if (ipsecSiteConnection.getPeerCidrs() != null) {
63 final List<String> peerCidrs = new ArrayList<String>();
64 for( final String peerCidr : ipsecSiteConnection.getPeerCidrs()) {
65 peerCidrs.add(peerCidr);
67 answer.setPeerCidrs(peerCidrs);
69 if (ipsecSiteConnection.getPeerId() != null) {
70 answer.setPeerID(ipsecSiteConnection.getPeerId());
72 if (ipsecSiteConnection.getRouteMode() != null) {
73 answer.setRouteMode(ipsecSiteConnection.getRouteMode());
75 if (ipsecSiteConnection.getMtu() != null) {
76 answer.setMtu((ipsecSiteConnection.getMtu()).intValue());
78 if (ipsecSiteConnection.getAuthMode() != null) {
79 answer.setAuthMode(ipsecSiteConnection.getAuthMode());
81 if (ipsecSiteConnection.getPsk() != null) {
82 answer.setPreSharedKey(ipsecSiteConnection.getPsk());
84 if (ipsecSiteConnection.getInitiator() != null) {
85 answer.setInitiator(ipsecSiteConnection.getInitiator());
87 if (ipsecSiteConnection.getIkepolicyId() != null) {
88 answer.setIkePolicyID(ipsecSiteConnection.getIkepolicyId().getValue());
90 if (ipsecSiteConnection.getIpsecpolicyId() != null) {
91 answer.setIpsecPolicyID(ipsecSiteConnection.getIpsecpolicyId().getValue());
93 if (ipsecSiteConnection.getVpnserviceId() != null) {
94 answer.setVpnServiceID(ipsecSiteConnection.getVpnserviceId().getValue());
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);
103 if (ipsecSiteConnection.getUuid() != null) {
104 answer.setID(ipsecSiteConnection.getUuid().getValue());
110 protected Ipsecsiteconnection toMd(NeutronVPNIPSECSiteConnection ipsecSiteConnection) {
111 final IpsecsiteconnectionBuilder ipsecSiteConnectionBuilder = new IpsecsiteconnectionBuilder();
112 if (ipsecSiteConnection.getName() != null) {
113 ipsecSiteConnectionBuilder.setName(ipsecSiteConnection.getName());
115 if (ipsecSiteConnection.getTenantID() != null) {
116 ipsecSiteConnectionBuilder.setTenantId(toUuid(ipsecSiteConnection.getTenantID()));
118 ipsecSiteConnectionBuilder.setStatus(ipsecSiteConnection.getStatus());
119 if (ipsecSiteConnection.getAdminStateUp() != null) {
120 ipsecSiteConnectionBuilder.setAdminStateUp(ipsecSiteConnection.getAdminStateUp());
122 if (ipsecSiteConnection.getPeerAddress() != null) {
123 ipsecSiteConnectionBuilder.setPeerAddress(ipsecSiteConnection.getPeerAddress());
125 if (ipsecSiteConnection.getPeerCidrs() != null) {
126 final List<String> peerCidrs = new ArrayList<String>();
127 for( final String peerCidr : ipsecSiteConnection.getPeerCidrs()) {
128 peerCidrs.add(peerCidr);
130 ipsecSiteConnectionBuilder.setPeerCidrs(peerCidrs);
132 if (ipsecSiteConnection.getPeerID() != null) {
133 ipsecSiteConnectionBuilder.setPeerId(ipsecSiteConnection.getPeerID());
135 if (ipsecSiteConnection.getRouteMode() != null) {
136 ipsecSiteConnectionBuilder.setRouteMode(ipsecSiteConnection.getRouteMode());
138 if (ipsecSiteConnection.getMtu() != null) {
139 ipsecSiteConnectionBuilder.setMtu((ipsecSiteConnection.getMtu()).shortValue());
141 if (ipsecSiteConnection.getAuthMode() != null) {
142 ipsecSiteConnectionBuilder.setAuthMode(ipsecSiteConnection.getAuthMode());
144 if (ipsecSiteConnection.getPreSharedKey() != null) {
145 ipsecSiteConnectionBuilder.setPsk(ipsecSiteConnection.getPreSharedKey());
147 if (ipsecSiteConnection.getInitiator() != null) {
148 ipsecSiteConnectionBuilder.setInitiator(ipsecSiteConnection.getInitiator());
150 if (ipsecSiteConnection.getIkePolicyID() != null) {
151 ipsecSiteConnectionBuilder.setIkepolicyId(toUuid(ipsecSiteConnection.getIkePolicyID()));
153 if (ipsecSiteConnection.getIpsecPolicyID() != null) {
154 ipsecSiteConnectionBuilder.setIpsecpolicyId(toUuid(ipsecSiteConnection.getIpsecPolicyID()));
156 if (ipsecSiteConnection.getVpnServiceID() != null) {
157 ipsecSiteConnectionBuilder.setVpnserviceId(toUuid(ipsecSiteConnection.getVpnServiceID()));
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());
167 if (ipsecSiteConnection.getID() != null) {
168 ipsecSiteConnectionBuilder.setUuid(toUuid(ipsecSiteConnection.getID()));
170 LOGGER.warn("Attempting to write neutron vpnIPSECSiteConnection without UUID");
172 return ipsecSiteConnectionBuilder.build();
176 protected InstanceIdentifier<IpsecSiteConnections> createInstanceIdentifier() {
177 return InstanceIdentifier.create(Neutron.class)
178 .child(IpsecSiteConnections.class);
182 protected InstanceIdentifier<Ipsecsiteconnection> createInstanceIdentifier(Ipsecsiteconnection ipsecSiteConnection) {
183 return InstanceIdentifier.create(Neutron.class)
184 .child(IpsecSiteConnections.class)
185 .child(Ipsecsiteconnection.class, ipsecSiteConnection.getKey());
189 protected Ipsecsiteconnection toMd(String uuid) {
190 final IpsecsiteconnectionBuilder ipsecSiteConnectionBuilder = new IpsecsiteconnectionBuilder();
191 ipsecSiteConnectionBuilder.setUuid(toUuid(uuid));
192 return ipsecSiteConnectionBuilder.build();
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);