X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=natservice%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Fnatservice%2Finternal%2FNaptManager.java;h=b90d8e70033f6acc8c7dfd966b012434377aac37;hb=2f0569ed75ef8a1fb60f992d19c8bbdf92ff45bf;hp=07605ca385c28f7c16e0332d85220ba17deadf61;hpb=fffad3ab6e2bd0c6179ce5391a5d716746645aa1;p=netvirt.git diff --git a/natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NaptManager.java b/natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NaptManager.java index 07605ca385..b90d8e7003 100644 --- a/natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NaptManager.java +++ b/natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NaptManager.java @@ -11,13 +11,13 @@ */ package org.opendaylight.netvirt.natservice.internal; -import com.google.common.base.Optional; import com.google.common.util.concurrent.UncheckedExecutionException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.locks.ReentrantLock; @@ -27,11 +27,11 @@ import org.apache.commons.net.util.SubnetUtils; import org.apache.commons.net.util.SubnetUtils.SubnetInfo; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.mdsalutil.MDSALUtil; import org.opendaylight.genius.utils.JvmGlobalLocks; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.CreateIdPoolOutput; @@ -184,8 +184,14 @@ public class NaptManager { InstanceIdentifier id = InstanceIdentifier.builder(ExternalIpsCounter.class) .child(ExternalCounters.class, new ExternalCountersKey(segmentId)) .child(ExternalIpCounter.class, new ExternalIpCounterKey(externalIp)).build(); - Optional externalIpCounter = - MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, id); + Optional externalIpCounter = Optional.empty(); + try { + externalIpCounter = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.OPERATIONAL, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("updateCounter: Exception while reading ExternalIpCounter DS for the segmentId {} externalIp {} ", + segmentId, externalIp, e); + } if (externalIpCounter.isPresent()) { counter = externalIpCounter.get().getCounter().toJava(); if (isAdd) { @@ -435,7 +441,7 @@ public class NaptManager { public static List getIpMapList(DataBroker broker, Uint32 routerId) { InstanceIdentifier id = getIpMapList(routerId); return SingleTransactionDataBroker.syncReadOptionalAndTreatReadFailedExceptionAsAbsentOptional(broker, - LogicalDatastoreType.OPERATIONAL, id).toJavaUtil().map(IpMapping::getIpMap).orElse( + LogicalDatastoreType.OPERATIONAL, id).map(IpMapping::getIpMap).orElse( Collections.emptyList()); } @@ -466,8 +472,14 @@ public class NaptManager { .child(IntextIpProtocolType.class, new IntextIpProtocolTypeKey(protocolType)) .child(IpPortMap.class, new IpPortMapKey(internalIpPort)); InstanceIdentifier id = idBuilder.build(); - Optional ipPortMapType = - MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, id); + Optional ipPortMapType = Optional.empty(); + try { + ipPortMapType = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.CONFIGURATION, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("checkIpPortMap: Exception while reading IpMap DS for the segmentId {} " + + "internalIpPort {} protocol {}", segmentId, internalIpPort, protocol, e); + } if (ipPortMapType.isPresent()) { LOG.debug("checkIpPortMap : {}", ipPortMapType.get()); SessionAddress externalIpPort = new SessionAddress(ipPortMapType.get().getIpPortExternal().getIpAddress(), @@ -490,7 +502,14 @@ public class NaptManager { InstanceIdentifierBuilder idBuilder = InstanceIdentifier.builder(IntextIpMap.class).child(IpMapping.class, new IpMappingKey(segmentId)); InstanceIdentifier id = idBuilder.build(); - Optional ipMapping = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, id); + Optional ipMapping = Optional.empty(); + try { + ipMapping = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.OPERATIONAL, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("checkIpMap: Exception while reading IpMapping DS for the segmentId {} internalIp {}", + segmentId, internalIp, e); + } if (ipMapping.isPresent()) { for (IpMap ipMap : ipMapping.get().nonnullIpMap()) { if (Objects.equals(ipMap.getInternalIp(), internalIp)) { @@ -580,7 +599,14 @@ public class NaptManager { InstanceIdentifier id = idBuilder.build(); // Get externalIp and decrement the counter String externalIp = null; - Optional ipMap = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, id); + Optional ipMap = Optional.empty(); + try { + ipMap = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.OPERATIONAL, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("removeFromIpMapDS: Exception while reading IpMap DS for the segmentId {} " + + "internalIp {}", segmentId, internalIp, e); + } if (ipMap.isPresent()) { externalIp = ipMap.get().getExternalIp(); LOG.debug("removeFromIpMapDS : externalIP is {}", externalIp); @@ -615,7 +641,15 @@ public class NaptManager { .child(IpMap.class, new IpMapKey(internalIp)); InstanceIdentifier id = idBuilder.build(); - Optional ipMap = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, id); + Optional ipMap; + try { + ipMap = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.OPERATIONAL, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("getExternalIpAllocatedForSubnet: Exception while reading IpMap DS for the segmentId {} " + + "internalIp {}", segmentId, internalIp, e); + return null; + } if (ipMap.isPresent()) { return ipMap.get().getExternalIp(); } @@ -627,7 +661,14 @@ public class NaptManager { .child(IpMapping.class, new IpMappingKey(segmentId)); InstanceIdentifier id = idBuilder.build(); // Get all externalIps and decrement their counters before deleting the ipmap - Optional ipMapping = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, id); + Optional ipMapping = Optional.empty(); + try { + ipMapping = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.OPERATIONAL, id); + } catch (ExecutionException | InterruptedException e) { + LOG.error("removeIpMappingForRouterID: Exception while reading IpMapping DS for the segmentId {} ", + segmentId, e); + } if (ipMapping.isPresent()) { for (IpMap ipMap : ipMapping.get().nonnullIpMap()) { String externalIp = ipMap.getExternalIp(); @@ -645,8 +686,14 @@ public class NaptManager { void removeIpPortMappingForRouterID(Uint32 segmentId) { InstanceIdentifier idBuilder = InstanceIdentifier.builder(IntextIpPortMap.class) .child(IpPortMapping.class, new IpPortMappingKey(segmentId)).build(); - Optional ipPortMapping = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, - idBuilder); + Optional ipPortMapping = Optional.empty(); + try { + ipPortMapping = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.CONFIGURATION, idBuilder); + } catch (ExecutionException | InterruptedException e) { + LOG.error("removeIpPortMappingForRouterID: Exception while reading IpPortMapping DS for the segmentId {} ", + segmentId, e); + } if (ipPortMapping.isPresent()) { // remove from IntExtIpPortmap DS LOG.debug("removeIpPortMappingForRouterID : Removing IntExtIpPort map for router {} from datastore", @@ -658,7 +705,14 @@ public class NaptManager { void removeIntIpPortMappingForRouterID(Uint32 segmentId) { InstanceIdentifier intIp = InstanceIdentifier.builder(SnatintIpPortMap.class) .child(IntipPortMap.class, new IntipPortMapKey(segmentId)).build(); - Optional intIpPortMap = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, intIp); + Optional intIpPortMap = Optional.empty(); + try { + intIpPortMap = SingleTransactionDataBroker.syncReadOptional(dataBroker, + LogicalDatastoreType.CONFIGURATION, intIp); + } catch (ExecutionException | InterruptedException e) { + LOG.error("removeIntIpPortMappingForRouterID: Exception while reading IntipPortMap DS for the " + + "segmentId {} ", segmentId, e); + } if (intIpPortMap.isPresent()) { // remove from SnatIntIpPortmap DS LOG.debug("removeIntIpPortMappingForRouterID : Removing SnatIntIpPort from datastore : {}", intIp);