natservice: drop nullToEmpty and reqNonNullOrElse 19/79919/4
authorStephen Kitt <skitt@redhat.com>
Fri, 25 Jan 2019 08:53:23 +0000 (09:53 +0100)
committerSam Hague <shague@redhat.com>
Mon, 28 Jan 2019 15:21:00 +0000 (15:21 +0000)
Change-Id: Ie2cce99b07dd4ad5ed5b25450838ae6e9d89bdb0
Signed-off-by: Stephen Kitt <skitt@redhat.com>
15 files changed:
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/cli/DisplayNaptSwithcesCli.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/AbstractSnatService.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/ConntrackBasedSnatService.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/EvpnDnatFlowProgrammer.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/ExternalNetworksChangeListener.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/ExternalRoutersListener.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NAPTSwitchSelector.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NaptManager.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatInterfaceStateChangeListener.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatSouthboundEventHandlers.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatTunnelInterfaceStateListener.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatUtil.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatVpnMapsChangeListener.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/UpgradeStateListener.java
natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/rpcservice/NatRpcServiceImpl.java

index c7c4af00c07f075f8e78590dfcc47881d7eb9b9d..53734cbef04f314b8ebbd08fefdb677b7072c349 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.netvirt.natservice.cli;
 import com.google.common.base.Optional;
 import java.io.PrintStream;
 import java.math.BigInteger;
-import java.util.Collections;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.apache.karaf.shell.commands.Command;
@@ -49,8 +48,7 @@ public class DisplayNaptSwithcesCli extends OsgiCommandSupport {
         ps.printf(String.format(" %-36s  %-20s  %-20s %n", "Router Id ", "Datapath Node Id", "Managment Ip Address"));
         ps.printf("-------------------------------------------------------------------------------------------%n");
         if (npatSwitches.isPresent()) {
-            for (RouterToNaptSwitch routerToNaptSwitch : NatUtil.requireNonNullElse(
-                    npatSwitches.get().getRouterToNaptSwitch(), Collections.<RouterToNaptSwitch>emptyList())) {
+            for (RouterToNaptSwitch routerToNaptSwitch : npatSwitches.get().nonnullRouterToNaptSwitch()) {
                 ps.printf(String.format(" %-36s  %-20s  %-20s %n", routerToNaptSwitch.getRouterName(),
                      routerToNaptSwitch.getPrimarySwitchId(), getDpnLocalIp(routerToNaptSwitch.getPrimarySwitchId())));
             }
index a1f840655c302fc163649cb841663f5e762129d1..ed0b368c97f949f2c86ce2155a7fc004e1968121 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.netvirt.natservice.internal;
 
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
 
 import java.math.BigInteger;
 import java.time.Duration;
@@ -290,8 +289,7 @@ public abstract class AbstractSnatService implements SnatServiceListener {
         addDefaultFibRouteForSNAT(confTx, dpnId, routerId);
         int elanId = NatUtil.getElanInstanceByName(routers.getNetworkId().getValue(), getDataBroker())
                 .getElanTag().intValue();
-        for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps externalIp : routers.nonnullExternalIps()) {
             if (!NWUtil.isIpv4Address(externalIp.getIpAddress())) {
                 // In this class we handle only IPv4 use-cases.
                 continue;
@@ -309,8 +307,7 @@ public abstract class AbstractSnatService implements SnatServiceListener {
         String routerName = routers.getRouterName();
         Long routerId = NatUtil.getVpnId(dataBroker, routerName);
         removeDefaultFibRouteForSNAT(confTx, dpnId, routerId);
-        for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps externalIp : routers.nonnullExternalIps()) {
             if (!NWUtil.isIpv4Address(externalIp.getIpAddress())) {
                 // In this class we handle only IPv4 use-cases.
                 continue;
@@ -326,8 +323,7 @@ public abstract class AbstractSnatService implements SnatServiceListener {
         String routerName = routers.getRouterName();
         Long routerId = NatUtil.getVpnId(dataBroker, routerName);
         String externalGwMac = routers.getExtGwMacAddress();
-        for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps externalIp : routers.nonnullExternalIps()) {
             if (!NWUtil.isIpv4Address(externalIp.getIpAddress())) {
                 // In this class we handle only IPv4 use-cases.
                 continue;
@@ -344,8 +340,7 @@ public abstract class AbstractSnatService implements SnatServiceListener {
             Routers routers, BigInteger dpnId) throws ExecutionException, InterruptedException {
         String routerName = routers.getRouterName();
         Long routerId = NatUtil.getVpnId(confTx, routerName);
-        for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps externalIp : routers.nonnullExternalIps()) {
             if (!NWUtil.isIpv4Address(externalIp.getIpAddress())) {
                 // In this class we handle only IPv4 use-cases.
                 continue;
@@ -628,8 +623,7 @@ public abstract class AbstractSnatService implements SnatServiceListener {
     protected void removeMipAdjacencies(Routers routers) {
         LOG.info("removeMipAdjacencies for router {}", routers.getRouterName());
         String externalSubNetId  = null;
-        for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps externalIp : routers.nonnullExternalIps()) {
             if (!NWUtil.isIpv4Address(externalIp.getIpAddress())) {
                 // In this class we handle only IPv4 use-cases.
                 continue;
@@ -648,13 +642,11 @@ public abstract class AbstractSnatService implements SnatServiceListener {
             VpnInterfaces vpnInterfaces = SingleTransactionDataBroker.syncRead(dataBroker,
                     LogicalDatastoreType.CONFIGURATION, vpnInterfacesId);
             List<VpnInterface> updatedVpnInterface = new ArrayList<>();
-            for (VpnInterface vpnInterface : requireNonNullElse(vpnInterfaces.getVpnInterface(),
-                    Collections.<VpnInterface>emptyList())) {
+            for (VpnInterface vpnInterface : vpnInterfaces.nonnullVpnInterface()) {
                 List<Adjacency> updatedAdjacencies = new ArrayList<>();
                 Adjacencies adjacencies = vpnInterface.augmentation(Adjacencies.class);
                 if (null != adjacencies) {
-                    for (Adjacency adjacency : requireNonNullElse(adjacencies.getAdjacency(),
-                            Collections.<Adjacency>emptyList())) {
+                    for (Adjacency adjacency : adjacencies.nonnullAdjacency()) {
                         if (!adjacency.getSubnetId().getValue().equals(externalSubNetId)) {
                             updatedAdjacencies.add(adjacency);
                         }
@@ -688,15 +680,13 @@ public abstract class AbstractSnatService implements SnatServiceListener {
         }
         LearntVpnVipToPortDataBuilder learntVpnVipToPortDataBuilder = new LearntVpnVipToPortDataBuilder();
         List<LearntVpnVipToPort> learntVpnVipToPortList = new ArrayList<>();
-        for (LearntVpnVipToPort learntVpnVipToPort : requireNonNullElse(learntVpnVipToPortData.getLearntVpnVipToPort(),
-                Collections.<LearntVpnVipToPort>emptyList())) {
+        for (LearntVpnVipToPort learntVpnVipToPort : learntVpnVipToPortData.nonnullLearntVpnVipToPort()) {
             if (!networkId.equals(learntVpnVipToPort.getVpnName())) {
                 LOG.info("The learned port belongs to Vpn {} hence not removing", learntVpnVipToPort.getVpnName());
                 learntVpnVipToPortList.add(learntVpnVipToPort);
             } else {
                 String externalSubNetId = null;
-                for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                        Collections.<ExternalIps>emptyList())) {
+                for (ExternalIps externalIp : routers.nonnullExternalIps()) {
                     if (!NWUtil.isIpv4Address(externalIp.getIpAddress())) {
                         // In this class we handle only IPv4 use-cases.
                         continue;
index c1df57718614459efc9a8639d1614ff9df97ac85..792b7f17fd3ea516330d41c9fadc894d0be47046 100644 (file)
@@ -7,12 +7,9 @@
  */
 package org.opendaylight.netvirt.natservice.internal;
 
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
-
 import com.google.common.base.Optional;
 import java.math.BigInteger;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import org.apache.commons.lang3.tuple.ImmutablePair;
@@ -98,8 +95,7 @@ public abstract class ConntrackBasedSnatService extends AbstractSnatService {
 
         String extGwMacAddress = NatUtil.getExtGwMacAddFromRouterName(confTx, routerName);
         addOutboundTblTrackEntry(confTx, dpnId, routerId, extGwMacAddress);
-        for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps externalIp : routers.nonnullExternalIps()) {
             if (!NWUtil.isIpv4Address(externalIp.getIpAddress())) {
                 // In this class we handle only IPv4 use-cases.
                 continue;
@@ -142,8 +138,7 @@ public abstract class ConntrackBasedSnatService extends AbstractSnatService {
         removeSnatMissEntryForPrimrySwch(confTx, dpnId, routerId);
 
         removeOutboundTblTrackEntry(confTx, dpnId, routerId);
-        for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps externalIp : routers.nonnullExternalIps()) {
             if (!NWUtil.isIpv4Address(externalIp.getIpAddress())) {
                 // In this class we handle only IPv4 use-cases.
                 continue;
index 56701ac75dca8d7db1df96dc73a5d511c7a7cfae..fff75627529d99576395c3798abcc04ec98d285d 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.netvirt.natservice.internal;
 import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS;
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
 import static org.opendaylight.genius.infra.Datastore.OPERATIONAL;
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.FutureCallback;
@@ -227,8 +226,7 @@ public class EvpnDnatFlowProgrammer {
                         LogicalDatastoreType.CONFIGURATION, vpnIfIdentifier);
         if (optionalVpnInterface.isPresent()) {
             ListenableFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL, tx -> {
-                for (VpnInstanceNames vpnInstance : requireNonNullElse(optionalVpnInterface.get().getVpnInstanceNames(),
-                        Collections.<VpnInstanceNames>emptyList())) {
+                for (VpnInstanceNames vpnInstance : optionalVpnInterface.get().nonnullVpnInstanceNames()) {
                     if (!vpnName.equals(vpnInstance.getVpnName())) {
                         continue;
                     }
@@ -347,8 +345,7 @@ public class EvpnDnatFlowProgrammer {
                         LogicalDatastoreType.CONFIGURATION, vpnIfIdentifier);
         if (optionalVpnInterface.isPresent()) {
             ListenableFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL, tx -> {
-                for (VpnInstanceNames vpnInstance : requireNonNullElse(optionalVpnInterface.get().getVpnInstanceNames(),
-                        Collections.<VpnInstanceNames>emptyList())) {
+                for (VpnInstanceNames vpnInstance : optionalVpnInterface.get().nonnullVpnInstanceNames()) {
                     if (!vpnName.equals(vpnInstance.getVpnName())) {
                         continue;
                     }
index 71f1aeb460768d2915cb48a8dace9df1fff0450c..487d1c991dd3be942bceb1165f59590061319356 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.netvirt.natservice.internal;
 
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
 
 import com.google.common.base.Optional;
 import java.math.BigInteger;
@@ -135,160 +134,169 @@ public class ExternalNetworksChangeListener
     }
 
     private void removeSnatEntries(Networks original, Uuid networkUuid) {
-        for (Uuid routerUuid : requireNonNullElse(original.getRouterIds(), Collections.<Uuid>emptyList())) {
-            long routerId = NatUtil.getVpnId(dataBroker, routerUuid.getValue());
-            if (routerId == NatConstants.INVALID_ID) {
-                LOG.error("removeSnatEntries : Invalid routerId returned for routerName {}", routerUuid.getValue());
-                return;
-            }
-            Collection<String> externalIps = NatUtil.getExternalIpsForRouter(dataBroker,routerId);
-            if (natMode == NatMode.Controller) {
-                coordinator.enqueueJob(NatConstants.NAT_DJC_PREFIX + routerUuid.getValue(),
-                    () -> Collections.singletonList(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION,
-                        tx -> externalRouterListener.handleDisableSnatInternetVpn(routerUuid.getValue(), routerId,
-                            networkUuid, externalIps, original.getVpnid().getValue(), tx))),
-                    NatConstants.NAT_DJC_MAX_RETRIES);
+        if (original.getRouterIds() != null) {
+            for (Uuid routerUuid : original.getRouterIds()) {
+                long routerId = NatUtil.getVpnId(dataBroker, routerUuid.getValue());
+                if (routerId == NatConstants.INVALID_ID) {
+                    LOG.error("removeSnatEntries : Invalid routerId returned for routerName {}", routerUuid.getValue());
+                    return;
+                }
+                Collection<String> externalIps = NatUtil.getExternalIpsForRouter(dataBroker,routerId);
+                if (natMode == NatMode.Controller) {
+                    coordinator.enqueueJob(NatConstants.NAT_DJC_PREFIX + routerUuid.getValue(),
+                        () -> Collections.singletonList(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION,
+                            tx -> externalRouterListener.handleDisableSnatInternetVpn(routerUuid.getValue(), routerId,
+                                networkUuid, externalIps, original.getVpnid().getValue(), tx))),
+                        NatConstants.NAT_DJC_MAX_RETRIES);
+                }
             }
         }
     }
 
     private void associateExternalNetworkWithVPN(Networks network) {
-        List<Uuid> routerIds = requireNonNullElse(network.getRouterIds(), Collections.emptyList());
-        for (Uuid routerId : routerIds) {
-            //long router = NatUtil.getVpnId(dataBroker, routerId.getValue());
+        if (network.getRouterIds() != null) {
+            List<Uuid> routerIds = network.getRouterIds();
+            for (Uuid routerId : routerIds) {
+                //long router = NatUtil.getVpnId(dataBroker, routerId.getValue());
 
-            InstanceIdentifier<RouterPorts> routerPortsId = NatUtil.getRouterPortsId(routerId.getValue());
-            Optional<RouterPorts> optRouterPorts = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
-                routerPortsId);
-            if (!optRouterPorts.isPresent()) {
-                LOG.debug("associateExternalNetworkWithVPN : Could not read Router Ports data object with id: {} "
+                InstanceIdentifier<RouterPorts> routerPortsId = NatUtil.getRouterPortsId(routerId.getValue());
+                Optional<RouterPorts> optRouterPorts = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
+                    routerPortsId);
+                if (!optRouterPorts.isPresent()) {
+                    LOG.debug("associateExternalNetworkWithVPN : Could not read Router Ports data object with id: {} "
                         + "to handle associate ext nw {}", routerId, network.getId());
-                continue;
-            }
-            RouterPorts routerPorts = optRouterPorts.get();
-            for (Ports port : requireNonNullElse(routerPorts.getPorts(), Collections.<Ports>emptyList())) {
-                String portName = port.getPortName();
-                BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName);
-                if (dpnId.equals(BigInteger.ZERO)) {
-                    LOG.debug("associateExternalNetworkWithVPN : DPN not found for {}, "
-                            + "skip handling of ext nw {} association", portName, network.getId());
                     continue;
                 }
-                for (InternalToExternalPortMap ipMap : requireNonNullElse(port.getInternalToExternalPortMap(),
-                        Collections.<InternalToExternalPortMap>emptyList())) {
-                    // remove all VPN related entries
-                    coordinator.enqueueJob(NatConstants.NAT_DJC_PREFIX + ipMap.key(),
-                        () -> Collections.singletonList(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION,
-                            tx -> floatingIpListener.createNATFlowEntries(dpnId, portName, routerId.getValue(),
-                                network.getId(), ipMap, tx))), NatConstants.NAT_DJC_MAX_RETRIES);
+                RouterPorts routerPorts = optRouterPorts.get();
+                for (Ports port : routerPorts.nonnullPorts()) {
+                    String portName = port.getPortName();
+                    BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName);
+                    if (dpnId.equals(BigInteger.ZERO)) {
+                        LOG.debug("associateExternalNetworkWithVPN : DPN not found for {}, "
+                            + "skip handling of ext nw {} association", portName, network.getId());
+                        continue;
+                    }
+                    for (InternalToExternalPortMap ipMap : port.nonnullInternalToExternalPortMap()) {
+                        // remove all VPN related entries
+                        coordinator.enqueueJob(NatConstants.NAT_DJC_PREFIX + ipMap.key(),
+                            () -> Collections.singletonList(
+                                txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION,
+                                    tx -> floatingIpListener.createNATFlowEntries(dpnId, portName, routerId.getValue(),
+                                        network.getId(), ipMap, tx))), NatConstants.NAT_DJC_MAX_RETRIES);
+                    }
                 }
             }
-        }
 
-        // SNAT
-        for (Uuid routerId : routerIds) {
-            LOG.debug("associateExternalNetworkWithVPN() : for routerId {}",  routerId);
-            Uuid networkId = network.getId();
-            if (networkId == null) {
-                LOG.error("associateExternalNetworkWithVPN : networkId is null for the router ID {}", routerId);
-                return;
-            }
-            final String vpnName = network.getVpnid().getValue();
-            if (vpnName == null) {
-                LOG.error("associateExternalNetworkWithVPN : No VPN associated with ext nw {} for router {}",
+            // SNAT
+            for (Uuid routerId : routerIds) {
+                LOG.debug("associateExternalNetworkWithVPN() : for routerId {}", routerId);
+                Uuid networkId = network.getId();
+                if (networkId == null) {
+                    LOG.error("associateExternalNetworkWithVPN : networkId is null for the router ID {}", routerId);
+                    return;
+                }
+                final String vpnName = network.getVpnid().getValue();
+                if (vpnName == null) {
+                    LOG.error("associateExternalNetworkWithVPN : No VPN associated with ext nw {} for router {}",
                         networkId, routerId);
-                return;
-            }
+                    return;
+                }
 
-            BigInteger dpnId = new BigInteger("0");
-            InstanceIdentifier<RouterToNaptSwitch> routerToNaptSwitch =
-                NatUtil.buildNaptSwitchRouterIdentifier(routerId.getValue());
-            Optional<RouterToNaptSwitch> rtrToNapt =
-                MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, routerToNaptSwitch);
-            if (rtrToNapt.isPresent()) {
-                dpnId = rtrToNapt.get().getPrimarySwitchId();
-            }
-            LOG.debug("associateExternalNetworkWithVPN : got primarySwitch as dpnId{} ", dpnId);
-            if (dpnId == null || dpnId.equals(BigInteger.ZERO)) {
-                LOG.warn("associateExternalNetworkWithVPN : primary napt Switch not found for router {} on dpn: {}",
-                    routerId, dpnId);
-                return;
-            }
-            final BigInteger finalDpnId = dpnId;
-            coordinator.enqueueJob(NatConstants.NAT_DJC_PREFIX + routerId.getValue(),
-                () -> Collections.singletonList(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION,
-                    confTx -> {
-                        Long routerIdentifier = NatUtil.getVpnId(dataBroker, routerId.getValue());
-                        InstanceIdentifierBuilder<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice
-                            .rev160111.intext.ip.map.IpMapping> idBuilder =
-                            InstanceIdentifier.builder(IntextIpMap.class)
-                                .child(org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
-                                    .intext.ip.map.IpMapping.class,
-                                    new org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
-                                        .intext.ip.map.IpMappingKey(routerIdentifier));
-                        InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
-                            .intext.ip.map.IpMapping> id = idBuilder.build();
-                        Optional<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
-                            .intext.ip.map.IpMapping> ipMapping = MDSALUtil.read(dataBroker,
-                                    LogicalDatastoreType.OPERATIONAL, id);
-                        if (ipMapping.isPresent()) {
-                            for (IpMap ipMap : requireNonNullElse(ipMapping.get().getIpMap(),
-                                    Collections.<IpMap>emptyList())) {
-                                String externalIp = ipMap.getExternalIp();
-                                LOG.debug("associateExternalNetworkWithVPN : Calling advToBgpAndInstallFibAndTsFlows "
-                                    + "for dpnId {},vpnName {} and externalIp {}", finalDpnId, vpnName, externalIp);
-                                if (natMode == NatMode.Controller) {
-                                    externalRouterListener.advToBgpAndInstallFibAndTsFlows(finalDpnId,
+                BigInteger dpnId = new BigInteger("0");
+                InstanceIdentifier<RouterToNaptSwitch> routerToNaptSwitch =
+                    NatUtil.buildNaptSwitchRouterIdentifier(routerId.getValue());
+                Optional<RouterToNaptSwitch> rtrToNapt =
+                    MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION, routerToNaptSwitch);
+                if (rtrToNapt.isPresent()) {
+                    dpnId = rtrToNapt.get().getPrimarySwitchId();
+                }
+                LOG.debug("associateExternalNetworkWithVPN : got primarySwitch as dpnId{} ", dpnId);
+                if (dpnId == null || dpnId.equals(BigInteger.ZERO)) {
+                    LOG.warn("associateExternalNetworkWithVPN : primary napt Switch not found for router {} on dpn: {}",
+                        routerId, dpnId);
+                    return;
+                }
+                final BigInteger finalDpnId = dpnId;
+                coordinator.enqueueJob(NatConstants.NAT_DJC_PREFIX + routerId.getValue(),
+                    () -> Collections.singletonList(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION,
+                        confTx -> {
+                            Long routerIdentifier = NatUtil.getVpnId(dataBroker, routerId.getValue());
+                            InstanceIdentifierBuilder<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice
+                                .rev160111.intext.ip.map.IpMapping> idBuilder =
+                                InstanceIdentifier.builder(IntextIpMap.class)
+                                    .child(org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
+                                            .intext.ip.map.IpMapping.class,
+                                        new org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
+                                            .intext.ip.map.IpMappingKey(routerIdentifier));
+                            InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice
+                                .rev160111.intext.ip.map.IpMapping> id = idBuilder.build();
+                            Optional<org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.natservice.rev160111
+                                .intext.ip.map.IpMapping> ipMapping = MDSALUtil.read(dataBroker,
+                                LogicalDatastoreType.OPERATIONAL, id);
+                            if (ipMapping.isPresent()) {
+                                for (IpMap ipMap : ipMapping.get().nonnullIpMap()) {
+                                    String externalIp = ipMap.getExternalIp();
+                                    LOG.debug(
+                                        "associateExternalNetworkWithVPN : Calling advToBgpAndInstallFibAndTsFlows "
+                                            + "for dpnId {},vpnName {} and externalIp {}", finalDpnId, vpnName,
+                                        externalIp);
+                                    if (natMode == NatMode.Controller) {
+                                        externalRouterListener.advToBgpAndInstallFibAndTsFlows(finalDpnId,
                                             NwConstants.INBOUND_NAPT_TABLE, vpnName, routerIdentifier,
                                             routerId.getValue(), externalIp, network.getId(),
                                             null /* external-router */, confTx);
+                                    }
                                 }
-                            }
-                        } else {
-                            LOG.warn("associateExternalNetworkWithVPN: No ipMapping present fot the routerId {}",
+                            } else {
+                                LOG.warn("associateExternalNetworkWithVPN: No ipMapping present fot the routerId {}",
                                     routerId);
-                        }
+                            }
 
-                        long vpnId = NatUtil.getVpnId(dataBroker, vpnName);
-                        // Install 47 entry to point to 21
-                        if (natMode == NatMode.Controller) {
-                            externalRouterListener.installNaptPfibEntriesForExternalSubnets(routerId.getValue(),
+                            long vpnId = NatUtil.getVpnId(dataBroker, vpnName);
+                            // Install 47 entry to point to 21
+                            if (natMode == NatMode.Controller) {
+                                externalRouterListener.installNaptPfibEntriesForExternalSubnets(routerId.getValue(),
                                     finalDpnId, confTx);
-                            if (vpnId != -1) {
-                                LOG.debug("associateExternalNetworkWithVPN : Calling externalRouterListener "
+                                if (vpnId != -1) {
+                                    LOG.debug("associateExternalNetworkWithVPN : Calling externalRouterListener "
                                         + "installNaptPfibEntry for dpnId {} and vpnId {}", finalDpnId, vpnId);
-                                externalRouterListener.installNaptPfibEntry(finalDpnId, vpnId, confTx);
+                                    externalRouterListener.installNaptPfibEntry(finalDpnId, vpnId, confTx);
+                                }
                             }
-                        }
-                    })), NatConstants.NAT_DJC_MAX_RETRIES);
+                        })), NatConstants.NAT_DJC_MAX_RETRIES);
+            }
         }
     }
 
     private void disassociateExternalNetworkFromVPN(Networks network, String vpnName) {
-        for (Uuid routerId : requireNonNullElse(network.getRouterIds(), Collections.<Uuid>emptyList())) {
-            InstanceIdentifier<RouterPorts> routerPortsId = NatUtil.getRouterPortsId(routerId.getValue());
-            Optional<RouterPorts> optRouterPorts = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
-                routerPortsId);
-            if (!optRouterPorts.isPresent()) {
-                LOG.debug("disassociateExternalNetworkFromVPN : Could not read Router Ports data object with id: {} "
-                        + "to handle disassociate ext nw {}", routerId, network.getId());
-                continue;
-            }
-            RouterPorts routerPorts = optRouterPorts.get();
-            for (Ports port : requireNonNullElse(routerPorts.getPorts(), Collections.<Ports>emptyList())) {
-                String portName = port.getPortName();
-                BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName);
-                if (dpnId.equals(BigInteger.ZERO)) {
-                    LOG.debug("disassociateExternalNetworkFromVPN : DPN not found for {},"
-                            + "skip handling of ext nw {} disassociation", portName, network.getId());
+        if (network.getRouterIds() != null) {
+            for (Uuid routerId : network.getRouterIds()) {
+                InstanceIdentifier<RouterPorts> routerPortsId = NatUtil.getRouterPortsId(routerId.getValue());
+                Optional<RouterPorts> optRouterPorts = MDSALUtil.read(dataBroker, LogicalDatastoreType.CONFIGURATION,
+                    routerPortsId);
+                if (!optRouterPorts.isPresent()) {
+                    LOG.debug(
+                        "disassociateExternalNetworkFromVPN : Could not read Router Ports data object with id: {} "
+                            + "to handle disassociate ext nw {}", routerId, network.getId());
                     continue;
                 }
-                for (InternalToExternalPortMap intExtPortMap : requireNonNullElse(port.getInternalToExternalPortMap(),
-                        Collections.<InternalToExternalPortMap>emptyList())) {
-                    coordinator.enqueueJob(NatConstants.NAT_DJC_PREFIX + intExtPortMap.key(),
-                        () -> Collections.singletonList(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION,
-                            tx -> floatingIpListener.removeNATFlowEntries(dpnId, portName, vpnName, routerId.getValue(),
-                                intExtPortMap, tx))), NatConstants.NAT_DJC_MAX_RETRIES);
+                RouterPorts routerPorts = optRouterPorts.get();
+                for (Ports port : routerPorts.nonnullPorts()) {
+                    String portName = port.getPortName();
+                    BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName);
+                    if (dpnId.equals(BigInteger.ZERO)) {
+                        LOG.debug("disassociateExternalNetworkFromVPN : DPN not found for {},"
+                            + "skip handling of ext nw {} disassociation", portName, network.getId());
+                        continue;
+                    }
+                    for (InternalToExternalPortMap intExtPortMap : port.nonnullInternalToExternalPortMap()) {
+                        coordinator.enqueueJob(NatConstants.NAT_DJC_PREFIX + intExtPortMap.key(),
+                            () -> Collections.singletonList(
+                                txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION,
+                                    tx -> floatingIpListener.removeNATFlowEntries(dpnId, portName, vpnName,
+                                        routerId.getValue(),
+                                        intExtPortMap, tx))), NatConstants.NAT_DJC_MAX_RETRIES);
+                    }
                 }
             }
         }
index c0f2033a4df1d963cd1513d072ec27b0083731ef..09e5c4a6853f77c489bb843ba00a873d6dbb2b3a 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.netvirt.natservice.internal;
 
 import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS;
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
 
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.FutureCallback;
@@ -416,7 +415,11 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
         int extIpCounter = externalIps.size();
         LOG.debug("subnetRegisterMapping : counter values before looping counter {} and extIpCounter {}",
                 counter, extIpCounter);
-        for (Uuid subnet : requireNonNullElse(routerEntry.getSubnetIds(), Collections.<Uuid>emptyList())) {
+        @Nullable List<Uuid> subnetIds = routerEntry.getSubnetIds();
+        if (subnetIds == null) {
+            return;
+        }
+        for (Uuid subnet : subnetIds) {
             LOG.debug("subnetRegisterMapping : Looping internal subnets for subnet {}", subnet);
             InstanceIdentifier<Subnetmap> subnetmapId = InstanceIdentifier
                 .builder(Subnetmaps.class)
@@ -1428,12 +1431,10 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
                             }
 
                             if (ipPortMapping.isPresent()) {
-                                for (IntextIpProtocolType intextIpProtocolType : requireNonNullElse(
-                                        ipPortMapping.get().getIntextIpProtocolType(),
-                                        Collections.<IntextIpProtocolType>emptyList())) {
+                                for (IntextIpProtocolType intextIpProtocolType :
+                                        ipPortMapping.get().nonnullIntextIpProtocolType()) {
                                     ProtocolTypes protoType = intextIpProtocolType.getProtocol();
-                                    for (IpPortMap ipPortMap : requireNonNullElse(intextIpProtocolType.getIpPortMap(),
-                                            Collections.<IpPortMap>emptyList())) {
+                                    for (IpPortMap ipPortMap : intextIpProtocolType.nonnullIpPortMap()) {
                                         IpPortExternal ipPortExternal = ipPortMap.getIpPortExternal();
                                         if (ipPortExternal.getIpAddress().equals(externalIp)) {
                                             externalPorts.add(ipPortExternal.getPortNum());
@@ -1619,10 +1620,8 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
         }
         if (externalCountersData.isPresent()) {
             ExternalIpsCounter externalIpsCounters = externalCountersData.get();
-            for (ExternalCounters ext : requireNonNullElse(externalIpsCounters.getExternalCounters(),
-                    Collections.<ExternalCounters>emptyList())) {
-                for (ExternalIpCounter externalIpCount : requireNonNullElse(ext.getExternalIpCounter(),
-                        Collections.<ExternalIpCounter>emptyList())) {
+            for (ExternalCounters ext : externalIpsCounters.nonnullExternalCounters()) {
+                for (ExternalIpCounter externalIpCount : ext.nonnullExternalIpCounter()) {
                     if (externalIpCount.getExternalIp().equals(externalIp)) {
                         if (externalIpCount.getCounter() != 0) {
                             return true;
@@ -2042,10 +2041,8 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
             return;
         }
 
-        for (IntextIpProtocolType intextIpProtocolType : requireNonNullElse(ipPortMapping.getIntextIpProtocolType(),
-                Collections.<IntextIpProtocolType>emptyList())) {
-            for (IpPortMap ipPortMap : requireNonNullElse(intextIpProtocolType.getIpPortMap(),
-                    Collections.<IpPortMap>emptyList())) {
+        for (IntextIpProtocolType intextIpProtocolType : ipPortMapping.nonnullIntextIpProtocolType()) {
+            for (IpPortMap ipPortMap : intextIpProtocolType.nonnullIpPortMap()) {
                 String ipPortInternal = ipPortMap.getIpPortInternal();
                 String[] ipPortParts = ipPortInternal.split(":");
                 if (ipPortParts.length != 2) {
@@ -2158,10 +2155,8 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
                 LOG.error("removeNaptFlowsFromActiveSwitchInternetVpn : Unable to retrieve the IpPortMapping");
                 return;
             }
-            for (IntextIpProtocolType intextIpProtocolType : requireNonNullElse(ipPortMapping.getIntextIpProtocolType(),
-                    Collections.<IntextIpProtocolType>emptyList())) {
-                for (IpPortMap ipPortMap : requireNonNullElse(intextIpProtocolType.getIpPortMap(),
-                        Collections.<IpPortMap>emptyList())) {
+            for (IntextIpProtocolType intextIpProtocolType : ipPortMapping.nonnullIntextIpProtocolType()) {
+                for (IpPortMap ipPortMap : intextIpProtocolType.nonnullIpPortMap()) {
                     String ipPortInternal = ipPortMap.getIpPortInternal();
                     String[] ipPortParts = ipPortInternal.split(":");
                     if (ipPortParts.length != 2) {
@@ -2730,10 +2725,8 @@ public class ExternalRoutersListener extends AsyncDataTreeChangeListenerBase<Rou
                     routerId);
             return;
         }
-        for (IntextIpProtocolType intextIpProtocolType : requireNonNullElse(ipPortMapping.getIntextIpProtocolType(),
-                Collections.<IntextIpProtocolType>emptyList())) {
-            for (IpPortMap ipPortMap : requireNonNullElse(intextIpProtocolType.getIpPortMap(),
-                    Collections.<IpPortMap>emptyList())) {
+        for (IntextIpProtocolType intextIpProtocolType : ipPortMapping.nonnullIntextIpProtocolType()) {
+            for (IpPortMap ipPortMap : intextIpProtocolType.nonnullIpPortMap()) {
                 String ipPortInternal = ipPortMap.getIpPortInternal();
                 String[] ipPortParts = ipPortInternal.split(":");
                 if (ipPortParts.length != 2) {
index af98e5edd0e640cf6d721a23fac5a434316dfad9..f703b8e46786bb896fe19bd6fd583c79e30ac96c 100644 (file)
@@ -7,11 +7,8 @@
  */
 package org.opendaylight.netvirt.natservice.internal;
 
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
-
 import com.google.common.base.Optional;
 import java.math.BigInteger;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -93,8 +90,7 @@ public class NAPTSwitchSelector {
         if (optNaptSwitches.isPresent()) {
             NaptSwitches naptSwitches = optNaptSwitches.get();
 
-            for (RouterToNaptSwitch naptSwitch : requireNonNullElse(naptSwitches.getRouterToNaptSwitch(),
-                    Collections.<RouterToNaptSwitch>emptyList())) {
+            for (RouterToNaptSwitch naptSwitch : naptSwitches.nonnullRouterToNaptSwitch()) {
                 BigInteger primarySwitch = naptSwitch.getPrimarySwitchId();
                 //update weight
                 Integer weight = switchWeights.get(primarySwitch);
index 6c68bce518fc79511953aa67d1928d8ad801503b..95b6fa6580373c21e4ec76c3e1164cbfcfaefe11 100644 (file)
@@ -11,8 +11,6 @@
  */
 package org.opendaylight.netvirt.natservice.internal;
 
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
-
 import com.google.common.base.Optional;
 import com.google.common.util.concurrent.UncheckedExecutionException;
 import java.util.ArrayList;
@@ -569,7 +567,7 @@ public class NaptManager {
         InstanceIdentifier<IpMapping> id = idBuilder.build();
         Optional<IpMapping> ipMapping = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, id);
         if (ipMapping.isPresent()) {
-            for (IpMap ipMap : requireNonNullElse(ipMapping.get().getIpMap(), Collections.<IpMap>emptyList())) {
+            for (IpMap ipMap : ipMapping.get().nonnullIpMap()) {
                 if (Objects.equals(ipMap.getInternalIp(), internalIp)) {
                     LOG.debug("checkIpMap : IpMap : {}", ipMap);
                     externalIp = ipMap.getExternalIp();
@@ -706,7 +704,7 @@ public class NaptManager {
         // Get all externalIps and decrement their counters before deleting the ipmap
         Optional<IpMapping> ipMapping = MDSALUtil.read(dataBroker, LogicalDatastoreType.OPERATIONAL, id);
         if (ipMapping.isPresent()) {
-            for (IpMap ipMap : requireNonNullElse(ipMapping.get().getIpMap(), Collections.<IpMap>emptyList())) {
+            for (IpMap ipMap : ipMapping.get().nonnullIpMap()) {
                 String externalIp = ipMap.getExternalIp();
                 LOG.debug("removeIpMappingForRouterID : externalIP is {}", externalIp);
                 if (externalIp != null) {
@@ -765,8 +763,7 @@ public class NaptManager {
         LOG.debug("initialiseExternalCounter : Initialise External IPs counter");
 
         //update the new counter value for this externalIp
-        for (ExternalIps externalIp : requireNonNullElse(routers.getExternalIps(),
-                Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps externalIp : routers.nonnullExternalIps()) {
             String[] ipSplit = externalIp.getIpAddress().split("/");
             String extIp = ipSplit[0];
             String extPrefix = Short.toString(NatConstants.DEFAULT_PREFIX);
index 48ee9e173cae5067458d89abe7cdaea166ae8785..fa8e7e8a2ec346fd32a7dc27625098d5262bae4d 100644 (file)
@@ -7,12 +7,8 @@
  */
 package org.opendaylight.netvirt.natservice.internal;
 
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
-
 import com.google.common.base.Optional;
 import java.math.BigInteger;
-
-import java.util.Collections;
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -119,8 +115,7 @@ public class NatInterfaceStateChangeListener
                 LOG.warn("remove : Interface {} is not a VPN Interface, ignoring.", interfaceName);
                 return;
             }
-            for (VpnInstanceNames vpnInterfaceVpnInstance : requireNonNullElse(
-                    cfgVpnInterface.get().getVpnInstanceNames(), Collections.<VpnInstanceNames>emptyList())) {
+            for (VpnInstanceNames vpnInterfaceVpnInstance : cfgVpnInterface.get().nonnullVpnInstanceNames()) {
                 String vpnName  = vpnInterfaceVpnInstance.getVpnName();
                 InstanceIdentifier<VpnInterfaceOpDataEntry> idOper = NatUtil
                       .getVpnInterfaceOpDataEntryIdentifier(interfaceName, vpnName);
@@ -168,8 +163,7 @@ public class NatInterfaceStateChangeListener
                 LOG.warn("update : Interface {} is not a VPN Interface, ignoring.", interfaceName);
                 return;
             }
-            for (VpnInstanceNames vpnInterfaceVpnInstance : requireNonNullElse(
-                    cfgVpnInterface.get().getVpnInstanceNames(), Collections.<VpnInstanceNames>emptyList())) {
+            for (VpnInstanceNames vpnInterfaceVpnInstance : cfgVpnInterface.get().nonnullVpnInstanceNames()) {
                 String vpnName  = vpnInterfaceVpnInstance.getVpnName();
                 InstanceIdentifier<VpnInterfaceOpDataEntry> idOper = NatUtil
                       .getVpnInterfaceOpDataEntryIdentifier(interfaceName, vpnName);
index 4251aceae8d483054a69f131a84cc103356143e0..64cfe3f592739a1991435395e3d264ca092ace40 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.netvirt.natservice.internal;
 
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
 import static org.opendaylight.genius.infra.Datastore.OPERATIONAL;
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
 
 import com.google.common.base.Optional;
 import com.google.common.collect.HashBasedTable;
@@ -322,7 +321,7 @@ public class NatSouthboundEventHandlers {
                     + "and port name {}", routerId, portName);
             return Collections.emptyList();
         }
-        return requireNonNullElse(port.get().getInternalToExternalPortMap(), Collections.emptyList());
+        return port.get().nonnullInternalToExternalPortMap();
     }
 
     @Nullable
@@ -425,10 +424,10 @@ public class NatSouthboundEventHandlers {
                 continue;
             }
 
-            for (IntIpProtoType protoType : requireNonNullElse(ipPort.getIntIpProtoType(),
-                    Collections.<IntIpProtoType>emptyList())) {
+            for (IntIpProtoType protoType : ipPort.nonnullIntIpProtoType()) {
                 ProtocolTypes protocol = protoType.getProtocol();
-                for (Integer portnum : requireNonNullElse(protoType.getPorts(), Collections.<Integer>emptyList())) {
+                @Nullable List<Integer> ports = protoType.getPorts();
+                for (Integer portnum : (ports != null ? ports : Collections.<Integer>emptyList())) {
                     //build and remove the flow in outbound table
                     try {
                         removeNatFlow(naptSwitch, NwConstants.OUTBOUND_NAPT_TABLE, routerId, internalIp, portnum);
index 5bb6675fea6b7ecce23693057f64523cb1e4db91..b01a0122b74740ee3fe366544039ddcb88a9e4d2 100644 (file)
@@ -9,7 +9,6 @@
 package org.opendaylight.netvirt.natservice.internal;
 
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Strings;
@@ -20,7 +19,6 @@ import com.google.common.util.concurrent.MoreExecutors;
 import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ExecutionException;
@@ -858,7 +856,7 @@ public class NatTunnelInterfaceStateListener
                 l3Vni = natOverVxlanUtil.getInternetVpnVni(vpnName, routerId).longValue();
             }
         }
-        for (Ports port : requireNonNullElse(routerPorts.getPorts(), Collections.<Ports>emptyList())) {
+        for (Ports port : routerPorts.nonnullPorts()) {
             //Get the DPN on which this interface resides
             final String interfaceName = port.getPortName();
             final BigInteger fipCfgdDpnId = NatUtil.getDpnForInterface(interfaceService, interfaceName);
@@ -873,8 +871,7 @@ public class NatTunnelInterfaceStateListener
                     tepAddedDpnId, fipCfgdDpnId, interfaceName);
                 continue;
             }
-            for (InternalToExternalPortMap intExtPortMap : requireNonNullElse(port.getInternalToExternalPortMap(),
-                    Collections.<InternalToExternalPortMap>emptyList())) {
+            for (InternalToExternalPortMap intExtPortMap : port.nonnullInternalToExternalPortMap()) {
                 final String internalIp = intExtPortMap.getInternalIp();
                 final String externalIp = intExtPortMap.getExternalIp();
                 LOG.debug("hndlTepAddForDnatInEachRtr : DNAT -> Advertising the FIB route to the floating IP {} "
@@ -1085,7 +1082,7 @@ public class NatTunnelInterfaceStateListener
                 l3Vni = natOverVxlanUtil.getInternetVpnVni(vpnName, routerId).longValue();
             }
         }
-        for (Ports port : requireNonNullElse(routerPorts.getPorts(), Collections.<Ports>emptyList())) {
+        for (Ports port : routerPorts.nonnullPorts()) {
             //Get the DPN on which this interface resides
             String interfaceName = port.getPortName();
             BigInteger fipCfgdDpnId = NatUtil.getDpnForInterface(interfaceService, interfaceName);
@@ -1100,8 +1097,7 @@ public class NatTunnelInterfaceStateListener
                     tepDeletedDpnId, fipCfgdDpnId, interfaceName);
                 continue;
             }
-            for (InternalToExternalPortMap intExtPortMap : requireNonNullElse(port.getInternalToExternalPortMap(),
-                    Collections.<InternalToExternalPortMap>emptyList())) {
+            for (InternalToExternalPortMap intExtPortMap : port.nonnullInternalToExternalPortMap()) {
                 String internalIp = intExtPortMap.getInternalIp();
                 String externalIp = intExtPortMap.getExternalIp();
                 externalIp = NatUtil.validateAndAddNetworkMask(externalIp);
index 99e405d0c77545cd067a7d428cefd3472ced4be5..6c81d0197744994a69574139d75dd17b01fcef6a 100644 (file)
@@ -9,7 +9,6 @@
 package org.opendaylight.netvirt.natservice.internal;
 
 import static java.util.Collections.emptyList;
-import static java.util.Objects.requireNonNull;
 import static org.opendaylight.controller.md.sal.binding.api.WriteTransaction.CREATE_MISSING_PARENTS;
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
 
@@ -724,8 +723,7 @@ public final class NatUtil {
                 SingleTransactionDataBroker.syncReadOptionalAndTreatReadFailedExceptionAsAbsentOptional(broker,
                         LogicalDatastoreType.CONFIGURATION, vpnMapsIdentifier);
         if (optionalVpnMaps.isPresent() && optionalVpnMaps.get().getVpnMap() != null) {
-            for (VpnMap vpnMap : requireNonNullElse(optionalVpnMaps.get().getVpnMap(),
-                    Collections.<VpnMap>emptyList())) {
+            for (VpnMap vpnMap : optionalVpnMaps.get().nonnullVpnMap()) {
                 if (routerId.equals(vpnMap.getVpnId().getValue())) {
                     continue;
                 }
@@ -981,7 +979,7 @@ public final class NatUtil {
         // Ensure there are no duplicates
         Collection<String> externalIps = new HashSet<>();
         if (ipMappingOptional.isPresent()) {
-            for (IpMap ipMap : requireNonNullElse(ipMappingOptional.get().getIpMap(), Collections.<IpMap>emptyList())) {
+            for (IpMap ipMap : ipMappingOptional.get().nonnullIpMap()) {
                 externalIps.add(ipMap.getExternalIp());
             }
         }
@@ -1006,7 +1004,7 @@ public final class NatUtil {
                         LogicalDatastoreType.OPERATIONAL, getIpMappingBuilder(routerId));
         Map<String, Long> externalIpsLabel = new HashMap<>();
         if (ipMappingOptional.isPresent()) {
-            for (IpMap ipMap : requireNonNullElse(ipMappingOptional.get().getIpMap(), Collections.<IpMap>emptyList())) {
+            for (IpMap ipMap : ipMappingOptional.get().nonnullIpMap()) {
                 externalIpsLabel.put(ipMap.getExternalIp(), ipMap.getLabel());
             }
         }
@@ -1024,8 +1022,7 @@ public final class NatUtil {
         if (externalCountersData.isPresent()) {
             ExternalCounters externalCounter = externalCountersData.get();
             short countOfLstLoadExtIp = 32767;
-            for (ExternalIpCounter externalIpCounter : requireNonNullElse(externalCounter.getExternalIpCounter(),
-                    Collections.<ExternalIpCounter>emptyList())) {
+            for (ExternalIpCounter externalIpCounter : externalCounter.nonnullExternalIpCounter()) {
                 String curExternalIp = externalIpCounter.getExternalIp();
                 short countOfCurExtIp = externalIpCounter.getCounter();
                 if (countOfCurExtIp < countOfLstLoadExtIp) {
@@ -1088,8 +1085,7 @@ public final class NatUtil {
                         LogicalDatastoreType.OPERATIONAL, id);
         List<BigInteger> dpns = new ArrayList<>();
         if (routerDpnListData.isPresent()) {
-            for (DpnVpninterfacesList dpnVpnInterface : requireNonNullElse(
-                    routerDpnListData.get().getDpnVpninterfacesList(), Collections.<DpnVpninterfacesList>emptyList())) {
+            for (DpnVpninterfacesList dpnVpnInterface : routerDpnListData.get().nonnullDpnVpninterfacesList()) {
                 dpns.add(dpnVpnInterface.getDpnId());
             }
         }
@@ -1179,8 +1175,7 @@ public final class NatUtil {
         if (optionalDpnRoutersList.isPresent()) {
             RoutersList routersList = new RoutersListBuilder().withKey(new RoutersListKey(routerName))
                     .setRouter(routerName).build();
-            List<RoutersList> routersListFromDs = requireNonNullElse(optionalDpnRoutersList.get().getRoutersList(),
-                emptyList());
+            List<RoutersList> routersListFromDs = optionalDpnRoutersList.get().nonnullRoutersList();
             if (!routersListFromDs.contains(routersList)) {
                 LOG.debug("addToDpnRoutersMap : Router {} not present for the DPN {}"
                         + " in the ODL-L3VPN : DPNRouters map", routerName, dpId);
@@ -1409,7 +1404,7 @@ public final class NatUtil {
                     LOG.error("getEgressActionsForTunnels : RPC Call to Get egress actions for Tunnels {} "
                             + "returned with Errors {}", ifName, rpcResult.getErrors());
                 } else {
-                    actions = rpcResult.getResult().getAction();
+                    actions = rpcResult.getResult().nonnullAction();
                 }
             } else {
                 RpcResult<GetEgressActionsForInterfaceOutput> rpcResult =
@@ -1418,11 +1413,11 @@ public final class NatUtil {
                     LOG.error("getEgressActionsForInterface : RPC Call to Get egress actions for interface {} "
                             + "returned with Errors {}", ifName, rpcResult.getErrors());
                 } else {
-                    actions = rpcResult.getResult().getAction();
+                    actions = rpcResult.getResult().nonnullAction();
                 }
             }
             List<ActionInfo> listActionInfo = new ArrayList<>();
-            for (Action action : requireNonNullElse(actions, Collections.<Action>emptyList())) {
+            for (Action action : actions) {
                 org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action
                     actionClass = action.getAction();
                 if (actionClass instanceof OutputActionCase) {
@@ -1501,7 +1496,7 @@ public final class NatUtil {
             LOG.error("getSubnetIdForFloatingIp : port is null");
             return null;
         }
-        for (FixedIps ip : requireNonNullElse(port.getFixedIps(), Collections.<FixedIps>emptyList())) {
+        for (FixedIps ip : port.nonnullFixedIps()) {
             if (Objects.equals(ip.getIpAddress(), targetIP)) {
                 return ip.getSubnetId();
             }
@@ -1774,10 +1769,10 @@ public final class NatUtil {
                 SingleTransactionDataBroker.syncReadOptionalAndTreatReadFailedExceptionAsAbsentOptional(broker,
                         LogicalDatastoreType.CONFIGURATION, externalNwIdentifier);
         if (externalNwData.isPresent()) {
-            for (Networks externalNw : requireNonNullElse(externalNwData.get().getNetworks(),
-                    Collections.<Networks>emptyList())) {
+            for (Networks externalNw : externalNwData.get().nonnullNetworks()) {
                 if (externalNw.getVpnid() != null && externalNw.getVpnid().equals(vpnUuid)) {
-                    return requireNonNullElse(externalNw.getRouterIds(), emptyList());
+                    @Nullable List<Uuid> routerIds = externalNw.getRouterIds();
+                    return routerIds != null ? routerIds : emptyList();
                 }
             }
         }
@@ -1898,7 +1893,7 @@ public final class NatUtil {
     @Nullable
     protected static Uuid getExternalSubnetForRouterExternalIp(String externalIpAddress, Routers router) {
         externalIpAddress = validateAndAddNetworkMask(externalIpAddress);
-        for (ExternalIps extIp : requireNonNullElse(router.getExternalIps(), Collections.<ExternalIps>emptyList())) {
+        for (ExternalIps extIp : router.nonnullExternalIps()) {
             String extIpString = validateAndAddNetworkMask(extIp.getIpAddress());
             if (extIpString.equals(externalIpAddress)) {
                 return extIp.getSubnetId();
@@ -2573,12 +2568,6 @@ public final class NatUtil {
         return node.augmentation(OvsdbBridgeAugmentation.class);
     }
 
-    // Use Objects.requireNonNullElse instead with JDK9+
-    @Nonnull
-    public static <T> T requireNonNullElse(@Nullable T obj, @Nonnull T defaultObj) {
-        return obj != null ? obj : requireNonNull(defaultObj);
-    }
-
     public static String getDefaultFibRouteToSNATForSubnetJobKey(String subnetName, BigInteger dpnId) {
         return NatConstants.NAT_DJC_PREFIX + subnetName + dpnId;
     }
index 994c16f37db6e1100ab0dce60b0819272d6b85e1..3fc9731761cfcd020f7cd8d41cb49f387e495434 100644 (file)
@@ -8,11 +8,9 @@
 package org.opendaylight.netvirt.natservice.internal;
 
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
 
 import com.google.common.base.Optional;
 import java.math.BigInteger;
-import java.util.Collections;
 import java.util.Objects;
 import java.util.concurrent.ExecutionException;
 import javax.inject.Inject;
@@ -206,7 +204,7 @@ public class NatVpnMapsChangeListener extends AsyncDataTreeChangeListenerBase<Vp
             return;
         }
         Uuid networkId = Uuid.getDefaultInstance(externalNetwork);
-        for (Ports port : requireNonNullElse(optRouterPorts.get().getPorts(), Collections.<Ports>emptyList())) {
+        for (Ports port : optRouterPorts.get().nonnullPorts()) {
             String portName = port.getPortName();
             BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName);
             if (dpnId.equals(BigInteger.ZERO)) {
@@ -215,8 +213,7 @@ public class NatVpnMapsChangeListener extends AsyncDataTreeChangeListenerBase<Vp
                 continue;
             }
 
-            for (InternalToExternalPortMap intExtPortMap : requireNonNullElse(port.getInternalToExternalPortMap(),
-                    Collections.<InternalToExternalPortMap>emptyList())) {
+            for (InternalToExternalPortMap intExtPortMap : port.nonnullInternalToExternalPortMap()) {
                 //remove all NAT related entries with routerName
                 //floatingIpListener.removeNATOnlyFlowEntries(dpnId, portName, routerName, null,
                 // intExtPortMap.getInternalIp(), externalIp);
@@ -239,7 +236,7 @@ public class NatVpnMapsChangeListener extends AsyncDataTreeChangeListenerBase<Vp
             return;
         }
         Uuid networkId = Uuid.getDefaultInstance(externalNetwork);
-        for (Ports port : requireNonNullElse(optRouterPorts.get().getPorts(), Collections.<Ports>emptyList())) {
+        for (Ports port : optRouterPorts.get().nonnullPorts()) {
             String portName = port.getPortName();
             BigInteger dpnId = NatUtil.getDpnForInterface(interfaceManager, portName);
             if (dpnId.equals(BigInteger.ZERO)) {
@@ -247,8 +244,7 @@ public class NatVpnMapsChangeListener extends AsyncDataTreeChangeListenerBase<Vp
                         + "skip handling of router {} association with vpn {}", portName, routerName, vpnName);
                 continue;
             }
-            for (InternalToExternalPortMap intExtPortMap : requireNonNullElse(port.getInternalToExternalPortMap(),
-                    Collections.<InternalToExternalPortMap>emptyList())) {
+            for (InternalToExternalPortMap intExtPortMap : port.nonnullInternalToExternalPortMap()) {
                 //remove all NAT related entries with routerName
                 //floatingIpListener.removeNATOnlyFlowEntries(dpnId, portName, routerName, vpnName,
                 // intExtPortMap.getInternalIp(), externalIp);
index 8abb6187282f54a8a70fca8974a628e6ebc9e092..736316f83da8dd2e4af41c538f8da5ef5a84fafe 100644 (file)
@@ -9,19 +9,15 @@
 package org.opendaylight.netvirt.natservice.internal;
 
 import static org.opendaylight.genius.infra.Datastore.CONFIGURATION;
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
 
 import com.google.common.base.Optional;
-
 import java.math.BigInteger;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
-
 import javax.annotation.Nonnull;
 import javax.inject.Inject;
 import javax.inject.Singleton;
-
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -105,8 +101,7 @@ public class UpgradeStateListener extends AbstractClusteredSyncDataTreeChangeLis
             if (original.isUpgradeInProgress() && !updated.isUpgradeInProgress()) {
                 Optional<NaptSwitches> npatSwitches = NatUtil.getAllPrimaryNaptSwitches(dataBroker);
                 if (npatSwitches.isPresent()) {
-                    for (RouterToNaptSwitch routerToNaptSwitch : requireNonNullElse(
-                            npatSwitches.get().getRouterToNaptSwitch(), Collections.<RouterToNaptSwitch>emptyList())) {
+                    for (RouterToNaptSwitch routerToNaptSwitch : npatSwitches.get().nonnullRouterToNaptSwitch()) {
                         BigInteger primaryNaptDpnId = routerToNaptSwitch.getPrimarySwitchId();
                         if (!NatUtil.getSwitchStatus(dataBroker, routerToNaptSwitch.getPrimarySwitchId())) {
                             String routerUuid = routerToNaptSwitch.getRouterName();
@@ -137,7 +132,7 @@ public class UpgradeStateListener extends AbstractClusteredSyncDataTreeChangeLis
             return;
         }
 
-        for (Routers router : requireNonNullElse(routers.getRouters(), Collections.<Routers>emptyList())) {
+        for (Routers router : routers.nonnullRouters()) {
             List<ExternalIps> externalIps = router.getExternalIps();
             if (router.isEnableSnat() && externalIps != null && !externalIps.isEmpty()) {
                 centralizedSwitchScheduler.scheduleCentralizedSwitch(router);
index 2244602b6de2b2262087a588194d96e8a4b25625..19ba7089a4c550f37a1b9cb6d85bb2cf3582d652 100644 (file)
@@ -7,12 +7,9 @@
  */
 package org.opendaylight.netvirt.natservice.rpcservice;
 
-import static org.opendaylight.netvirt.natservice.internal.NatUtil.requireNonNullElse;
-
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -137,8 +134,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
         outerloop:
         for (Uuid subnetUuid: subnetUuidList) {
             subNet = nvpnManager.getNeutronSubnet(subnetUuid);
-            for (AllocationPools allocationPool : requireNonNullElse(subNet.getAllocationPools(),
-                    Collections.<AllocationPools>emptyList())) {
+            for (AllocationPools allocationPool : subNet.nonnullAllocationPools()) {
                 if (NatUtil.isIpInSubnet(ipAddress,
                         allocationPool.getStart().stringValue(),
                         allocationPool.getEnd().stringValue())) {
@@ -166,8 +162,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
             LOG.warn("getNatTranslationsForNetworkAndIpaddress : No DNAT IP Mapping found for IP {}", ipAddress);
         } else {
             for (Ports fipPort : fipPorts) {
-                for (InternalToExternalPortMap fipMap : requireNonNullElse(fipPort.getInternalToExternalPortMap(),
-                        Collections.<InternalToExternalPortMap>emptyList())) {
+                for (InternalToExternalPortMap fipMap : fipPort.nonnullInternalToExternalPortMap()) {
                     if (fipMap.getInternalIp().equals(ipAddress)) {
                         output = new GetNatTranslationsForNetworkAndIpaddressOutputBuilder()
                                     .setExternalIp(fipMap.getExternalIp())
@@ -184,10 +179,8 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
         if (ipPortMapping == null) {
             LOG.warn("getNatTranslationsForNetworkAndIpaddress : No SNAT IP Mapping found for IP {}", ipAddress);
         } else {
-            for (IntextIpProtocolType protocolType : requireNonNullElse(ipPortMapping.getIntextIpProtocolType(),
-                    Collections.<IntextIpProtocolType>emptyList())) {
-                for (IpPortMap ipPortMap : requireNonNullElse(protocolType.getIpPortMap(),
-                        Collections.<IpPortMap>emptyList())) {
+            for (IntextIpProtocolType protocolType : ipPortMapping.nonnullIntextIpProtocolType()) {
+                for (IpPortMap ipPortMap : protocolType.nonnullIpPortMap()) {
                     String[] internalIpPort = ipPortMap.getIpPortInternal().split(NwConstants.MACADDR_SEP);
                     if (ipAddress.equals(internalIpPort[0])) {
 
@@ -228,10 +221,8 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
             // Capturing SNAT information
             List<SnatIpMapping> snatIpMapping = new ArrayList<>();
 
-            for (IntextIpProtocolType protocolType : requireNonNullElse(ipPortMapping.getIntextIpProtocolType(),
-                    Collections.<IntextIpProtocolType>emptyList())) {
-                for (IpPortMap ipPortMap : requireNonNullElse(protocolType.getIpPortMap(),
-                        Collections.<IpPortMap>emptyList())) {
+            for (IntextIpProtocolType protocolType : ipPortMapping.nonnullIntextIpProtocolType()) {
+                for (IpPortMap ipPortMap : protocolType.nonnullIpPortMap()) {
                     String[] internalPortMap = ipPortMap.getIpPortInternal().split(NwConstants.MACADDR_SEP);
                     SnatIpMappingBuilder natIpMappingBuilder = new SnatIpMappingBuilder()
                             .setInternalIp(internalPortMap[0]).setInternalPort(internalPortMap[1])
@@ -251,8 +242,7 @@ public class NatRpcServiceImpl implements OdlNatRpcService {
             LOG.warn("constructNatInformation : No DNAT IP Mapping found for router-uuid {}", routerUuid.getValue());
         } else {
             for (Ports fipPort : fipPorts) {
-                for (InternalToExternalPortMap fipMap : requireNonNullElse(fipPort.getInternalToExternalPortMap(),
-                        Collections.<InternalToExternalPortMap>emptyList())) {
+                for (InternalToExternalPortMap fipMap : fipPort.nonnullInternalToExternalPortMap()) {
                     DnatIpMappingBuilder natIpMappingBuilder = new DnatIpMappingBuilder()
                             .setExternalIp(fipMap.getExternalIp()).setInternalIp(fipMap.getInternalIp());
                     dnatIpMapping.add(natIpMappingBuilder.build());