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.attributes.DpdBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.ipsecconnections.attributes.IpsecSiteConnections;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.ipsecconnections.attributes.ipsec.site.connections.Ipsecsiteconnection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.vpnaas.rev141002.ipsecconnections.attributes.ipsec.site.connections.IpsecsiteconnectionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.neutron.rev150325.Neutron;
+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 {
+public class NeutronVPNIPSECSiteConnectionsInterface extends AbstractNeutronInterface<Ipsecsiteconnection, IpsecSiteConnections, NeutronVPNIPSECSiteConnection> implements INeutronVPNIPSECSiteConnectionsCRUD {
private static final Logger LOGGER = LoggerFactory.getLogger(NeutronVPNIKEPolicyInterface.class);
- private ConcurrentMap<String, NeutronVPNIPSECSiteConnection> neutronVPNIPSECSiteConnectionDB = new ConcurrentHashMap<String, NeutronVPNIPSECSiteConnection>();
-
NeutronVPNIPSECSiteConnectionsInterface(ProviderContext providerContext) {
super(providerContext);
// INeutronVPNIPSECSiteConnectionsCRUD methods
@Override
- public boolean neutronVPNIPSECSiteConnectionsExists(String policyID) {
- return neutronVPNIPSECSiteConnectionDB.containsKey(policyID);
+ public boolean neutronVPNIPSECSiteConnectionsExists(String uuid) {
+ return exists(uuid);
}
@Override
- public NeutronVPNIPSECSiteConnection getNeutronVPNIPSECSiteConnections(String policyID) {
- if (!neutronVPNIPSECSiteConnectionsExists(policyID)) {
- return null;
- }
- return neutronVPNIPSECSiteConnectionDB.get(policyID);
+ public NeutronVPNIPSECSiteConnection getNeutronVPNIPSECSiteConnections(String uuid) {
+ return get(uuid);
+ }
+
+ @Override
+ 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());
+ }
+ 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());
}
- return false;
+ 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
return ipsecSiteConnectionBuilder.build();
}
+ @Override
+ protected InstanceIdentifier<IpsecSiteConnections> createInstanceIdentifier() {
+ return InstanceIdentifier.create(Neutron.class)
+ .child(IpsecSiteConnections.class);
+ }
+
@Override
protected InstanceIdentifier<Ipsecsiteconnection> createInstanceIdentifier(Ipsecsiteconnection ipsecSiteConnection) {
return InstanceIdentifier.create(Neutron.class)