/*
- * Copyright Tata Consultancy Services, 2015. All rights reserved.
+ * Copyright (c) 2015 Tata Consultancy Services and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
+
package org.opendaylight.neutron.transcriber;
-import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
import org.opendaylight.neutron.spi.INeutronVPNIPSECSiteConnectionsCRUD;
import org.opendaylight.neutron.spi.NeutronVPNDeadPeerDetection;
import org.opendaylight.neutron.spi.NeutronVPNIPSECSiteConnection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.ipsecconnection.attrs.DpdBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.IpsecSiteConnections;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.ipsec.site.connections.IpsecSiteConnection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.vpnaas.attributes.ipsec.site.connections.IpsecSiteConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecconnection.attributes.DpdBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecconnections.attributes.IpsecSiteConnections;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecconnections.attributes.ipsec.site.connections.Ipsecsiteconnection;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev150712.ipsecconnections.attributes.ipsec.site.connections.IpsecsiteconnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150712.Neutron;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public class NeutronVPNIPSECSiteConnectionsInterface extends AbstractNeutronInterface<IpsecSiteConnection, NeutronVPNIPSECSiteConnection> implements INeutronVPNIPSECSiteConnectionsCRUD {
- private static final Logger logger = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
- private ConcurrentMap<String, NeutronVPNIPSECSiteConnection> neutronVPNIPSECSiteConnectionDB = new ConcurrentHashMap<String, NeutronVPNIPSECSiteConnection>();
-
+public class NeutronVPNIPSECSiteConnectionsInterface extends AbstractNeutronInterface<Ipsecsiteconnection, IpsecSiteConnections, NeutronVPNIPSECSiteConnection> implements INeutronVPNIPSECSiteConnectionsCRUD {
+ private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
NeutronVPNIPSECSiteConnectionsInterface(ProviderContext providerContext) {
super(providerContext);
}
- // this method uses reflection to update an object from it's delta.
-
- private boolean overwrite(Object target, Object delta) {
- Method[] methods = target.getClass().getMethods();
-
- for (Method toMethod : methods) {
- if (toMethod.getDeclaringClass().equals(target.getClass()) && toMethod.getName().startsWith("set")) {
-
- String toName = toMethod.getName();
- String fromName = toName.replace("set", "get");
+ // INeutronVPNIPSECSiteConnectionsCRUD methods
- try {
- Method fromMethod = delta.getClass().getMethod(fromName);
- Object value = fromMethod.invoke(delta, (Object[]) null);
- if (value != null) {
- toMethod.invoke(target, value);
- }
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- }
- }
- return true;
+ @Override
+ public boolean neutronVPNIPSECSiteConnectionsExists(String uuid) {
+ return exists(uuid);
}
- // INeutronVPNIPSECSiteConnectionsCRUD methods
-
@Override
- public boolean neutronVPNIPSECSiteConnectionsExists(String policyID) {
- return neutronVPNIPSECSiteConnectionDB.containsKey(policyID);
+ public NeutronVPNIPSECSiteConnection getNeutronVPNIPSECSiteConnections(String uuid) {
+ return get(uuid);
}
@Override
- public NeutronVPNIPSECSiteConnection getNeutronVPNIPSECSiteConnections(String policyID) {
- if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
- return null;
- }
- return neutronVPNIPSECSiteConnectionDB.get(policyID);
+ protected List<Ipsecsiteconnection> getDataObjectList(IpsecSiteConnections connections) {
+ return connections.getIpsecsiteconnection();
}
@Override
public List<NeutronVPNIPSECSiteConnection> getAllNeutronVPNIPSECSiteConnections() {
- Set<NeutronVPNIPSECSiteConnection> allNeutronVPNIPSECSiteConnections = new HashSet<NeutronVPNIPSECSiteConnection>();
- for (Entry<String, NeutronVPNIPSECSiteConnection> entry : neutronVPNIPSECSiteConnectionDB.entrySet()) {
- NeutronVPNIPSECSiteConnection meteringLabelRule = entry.getValue();
- allNeutronVPNIPSECSiteConnections.add(meteringLabelRule);
- }
- logger.debug("Exiting getAllNeutronVPNIPSECSiteConnections, Found {} OpenStackVPNIPSECSiteConnections", allNeutronVPNIPSECSiteConnections.size());
- List<NeutronVPNIPSECSiteConnection> ans = new ArrayList<NeutronVPNIPSECSiteConnection>();
- ans.addAll(allNeutronVPNIPSECSiteConnections);
- return ans;
+ return getAll();
}
@Override
public boolean addNeutronVPNIPSECSiteConnections(NeutronVPNIPSECSiteConnection input) {
- if (neutronVPNIPSECSiteConnectionsExists(input.getID())) {
- return false;
- }
- neutronVPNIPSECSiteConnectionDB.putIfAbsent(input.getID(), input);
- addMd(input);
- return true;
+ return add(input);
}
@Override
public boolean removeNeutronVPNIPSECSiteConnections(String policyID) {
- if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
- return false;
- }
- neutronVPNIPSECSiteConnectionDB.remove(policyID);
- removeMd(toMd(policyID));
- return true;
+ return remove(policyID);
}
@Override
public boolean updateNeutronVPNIPSECSiteConnections(String policyID, NeutronVPNIPSECSiteConnection delta) {
- if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
- return false;
- }
- NeutronVPNIPSECSiteConnection target = neutronVPNIPSECSiteConnectionDB.get(policyID);
- boolean rc = overwrite(target, delta);
- if (rc) {
- updateMd(neutronVPNIPSECSiteConnectionDB.get(policyID));
- }
- return rc;
+ return update(policyID, delta);
}
@Override
public boolean neutronVPNIPSECSiteConnectionsInUse(String policyID) {
- if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
- return true;
+ return !exists(policyID);
+ }
+
+ protected NeutronVPNIPSECSiteConnection fromMd(Ipsecsiteconnection ipsecSiteConnection) {
+ NeutronVPNIPSECSiteConnection answer = new NeutronVPNIPSECSiteConnection();
+ if (ipsecSiteConnection.getName() != null) {
+ answer.setName(ipsecSiteConnection.getName());
+ }
+ if (ipsecSiteConnection.getTenantId() != null) {
+ answer.setTenantID(ipsecSiteConnection.getTenantId());
}
- return false;
+ answer.setStatus(ipsecSiteConnection.getStatus());
+ if (ipsecSiteConnection.isAdminStateUp() != null) {
+ answer.setAdminStateUp(ipsecSiteConnection.isAdminStateUp());
+ }
+ if (ipsecSiteConnection.getDescr() != null) {
+ answer.setDescription(ipsecSiteConnection.getDescr());
+ }
+ if (ipsecSiteConnection.getPeerAddress() != null) {
+ answer.setPeerAddress(ipsecSiteConnection.getPeerAddress());
+ }
+ if (ipsecSiteConnection.getPeerCidrs() != null) {
+ List<String> peerCidrs = new ArrayList<String>();
+ for( String peerCidr : ipsecSiteConnection.getPeerCidrs()) {
+ peerCidrs.add(peerCidr);
+ }
+ answer.setPeerCidrs(peerCidrs);
+ }
+ if (ipsecSiteConnection.getPeerId() != null) {
+ answer.setPeerID(ipsecSiteConnection.getPeerId());
+ }
+ if (ipsecSiteConnection.getRouteMode() != null) {
+ answer.setRouteMode(ipsecSiteConnection.getRouteMode());
+ }
+ if (ipsecSiteConnection.getMtu() != null) {
+ answer.setMtu((ipsecSiteConnection.getMtu()).intValue());
+ }
+ if (ipsecSiteConnection.getAuthMode() != null) {
+ answer.setAuthMode(ipsecSiteConnection.getAuthMode());
+ }
+ if (ipsecSiteConnection.getPsk() != null) {
+ answer.setPreSharedKey(ipsecSiteConnection.getPsk());
+ }
+ if (ipsecSiteConnection.getInitiator() != null) {
+ answer.setInitiator(ipsecSiteConnection.getInitiator());
+ }
+ if (ipsecSiteConnection.getIkepolicyId() != null) {
+ answer.setIkePolicyID(ipsecSiteConnection.getIkepolicyId().getValue());
+ }
+ if (ipsecSiteConnection.getIpsecpolicyId() != null) {
+ answer.setIpsecPolicyID(ipsecSiteConnection.getIpsecpolicyId().getValue());
+ }
+ if (ipsecSiteConnection.getVpnserviceId() != null) {
+ answer.setVpnServiceID(ipsecSiteConnection.getVpnserviceId().getValue());
+ }
+ if (ipsecSiteConnection.getDpd() != null) {
+ NeutronVPNDeadPeerDetection deadPeerDetection = new NeutronVPNDeadPeerDetection();
+ deadPeerDetection.setAction(ipsecSiteConnection.getDpd().getAction());
+ deadPeerDetection.setInterval(ipsecSiteConnection.getDpd().getInterval());
+ deadPeerDetection.setTimeout(ipsecSiteConnection.getDpd().getTimeout());
+ answer.setDeadPeerDetection(deadPeerDetection);
+ }
+ if (ipsecSiteConnection.getUuid() != null) {
+ answer.setID(ipsecSiteConnection.getUuid().getValue());
+ }
+ return answer;
}
@Override
- protected IpsecSiteConnection toMd(NeutronVPNIPSECSiteConnection ipsecSiteConnection) {
- IpsecSiteConnectionBuilder ipsecSiteConnectionBuilder = new IpsecSiteConnectionBuilder();
+ protected Ipsecsiteconnection toMd(NeutronVPNIPSECSiteConnection ipsecSiteConnection) {
+ IpsecsiteconnectionBuilder ipsecSiteConnectionBuilder = new IpsecsiteconnectionBuilder();
if (ipsecSiteConnection.getName() != null) {
ipsecSiteConnectionBuilder.setName(ipsecSiteConnection.getName());
}
if (ipsecSiteConnection.getID() != null) {
ipsecSiteConnectionBuilder.setUuid(toUuid(ipsecSiteConnection.getID()));
} else {
- logger.warn("Attempting to write neutron vpnIPSECSiteConnection without UUID");
+ LOGGER.warn("Attempting to write neutron vpnIPSECSiteConnection without UUID");
}
return ipsecSiteConnectionBuilder.build();
}
@Override
- protected InstanceIdentifier<IpsecSiteConnection> createInstanceIdentifier(IpsecSiteConnection ipsecSiteConnection) {
- return InstanceIdentifier.create(IpsecSiteConnections.class).child(IpsecSiteConnection.class, ipsecSiteConnection.getKey());
+ protected InstanceIdentifier<IpsecSiteConnections> createInstanceIdentifier() {
+ return InstanceIdentifier.create(Neutron.class)
+ .child(IpsecSiteConnections.class);
}
@Override
- protected IpsecSiteConnection toMd(String uuid) {
- IpsecSiteConnectionBuilder ipsecSiteConnectionBuilder = new IpsecSiteConnectionBuilder();
+ protected InstanceIdentifier<Ipsecsiteconnection> createInstanceIdentifier(Ipsecsiteconnection ipsecSiteConnection) {
+ return InstanceIdentifier.create(Neutron.class)
+ .child(IpsecSiteConnections.class)
+ .child(Ipsecsiteconnection.class, ipsecSiteConnection.getKey());
+ }
+
+ @Override
+ protected Ipsecsiteconnection toMd(String uuid) {
+ IpsecsiteconnectionBuilder ipsecSiteConnectionBuilder = new IpsecsiteconnectionBuilder();
ipsecSiteConnectionBuilder.setUuid(toUuid(uuid));
return ipsecSiteConnectionBuilder.build();
}
-}
\ No newline at end of file
+
+ public static void registerNewInterface(BundleContext context,
+ ProviderContext providerContext,
+ List<ServiceRegistration<?>> registrations) {
+ NeutronVPNIPSECSiteConnectionsInterface neutronVPNIPSECSiteConnectionsInterface = new NeutronVPNIPSECSiteConnectionsInterface(providerContext);
+ ServiceRegistration<INeutronVPNIPSECSiteConnectionsCRUD> neutronVPNIPSECSiteConnectionsInterfaceRegistration = context.registerService(INeutronVPNIPSECSiteConnectionsCRUD.class, neutronVPNIPSECSiteConnectionsInterface, null);
+ if (neutronVPNIPSECSiteConnectionsInterfaceRegistration != null) {
+ registrations.add(neutronVPNIPSECSiteConnectionsInterfaceRegistration);
+ }
+ }
+}