Floating IP failure in magnesium 23/87023/3
authorChetan Arakere Gowdru <chetan.arakere@altencalsoftlabs.com>
Fri, 17 Jan 2020 10:28:59 +0000 (15:58 +0530)
committerChetan Arakere Gowdru <chetan.arakere@altencalsoftlabs.com>
Thu, 23 Jan 2020 07:21:20 +0000 (07:21 +0000)
JIRA : NETVIRT-1662

Signed-off-by: Chetan Arakere Gowdru <chetan.arakere@altencalsoftlabs.com>
Change-Id: I11c5e2ce3bccd21ebf6e7f883759f3a06497a68c

natservice/impl/src/main/java/org/opendaylight/netvirt/natservice/internal/FloatingIPListener.java

index 22a298a8ba06f327c62f4ba3480efb4eea125469..16e337d7fd0269c966b17af4d6e2329a9e6d2cbd 100644 (file)
@@ -374,10 +374,6 @@ public class FloatingIPListener extends AsyncDataTreeChangeListenerBase<Internal
     }
 
     private Uuid getVpnUuid(Uuid extNwId, Uuid floatingIpExternalId) {
-        Uuid subnetId = NatUtil.getFloatingIpPortSubnetIdFromFloatingIpId(dataBroker, floatingIpExternalId);
-        if (subnetId != null) {
-            return subnetId;
-        }
 
         InstanceIdentifier<Networks> nwId = InstanceIdentifier.builder(ExternalNetworks.class).child(Networks.class,
                 new NetworksKey(extNwId)).build();
@@ -389,6 +385,15 @@ public class FloatingIPListener extends AsyncDataTreeChangeListenerBase<Internal
             return null;
         }
 
+        ProviderTypes providerType = nw.get().getProviderNetworkType();
+        if (providerType == ProviderTypes.FLAT || providerType == ProviderTypes.VLAN) {
+            Uuid subnetId = NatUtil
+                .getFloatingIpPortSubnetIdFromFloatingIpId(dataBroker, floatingIpExternalId);
+            if (subnetId != null) {
+                return subnetId;
+            }
+        }
+
         Uuid vpnUuid = nw.get().getVpnid();
         if (vpnUuid == null) {
             LOG.error("getVpnId : Unable to read vpn from External network: {}", extNwId);
@@ -529,6 +534,8 @@ public class FloatingIPListener extends AsyncDataTreeChangeListenerBase<Internal
         }
 
         Uuid vpnUuid = getVpnUuid(extNwId, mapping.getExternalId());
+
+        LOG.trace("createNATFlowEntries : vpnUuid {} for External Network {}", vpnUuid, extNwId);
         if (vpnUuid == null) {
             LOG.error("createNATFlowEntries : No VPN associated with Ext nw {}. Unable to create SNAT table entry "
                     + "for fixed ip {}", extNwId, mapping.getInternalIp());
@@ -574,14 +581,15 @@ public class FloatingIPListener extends AsyncDataTreeChangeListenerBase<Internal
         }
 
         Uuid vpnUuid = getVpnUuid(externalNetworkId, mapping.getExternalId());
+        LOG.trace("createNATFlowEntries : vpnUuid {} for External Network {}", vpnUuid, externalNetworkId);
         if (vpnUuid == null) {
-            LOG.error("createNATFlowEntries : No VPN associated with Ext nw {}. Unable to create SNAT table entry "
-                    + "for fixed ip {}", externalNetworkId, mapping.getInternalIp());
+            LOG.error("createNATFlowEntries : No vpnUuid associated with Ext nw {}. Unable to create SNAT table entry"
+                    + " for fixed ip {}", externalNetworkId, mapping.getInternalIp());
             return;
         }
         VpnInstance vpnInstance = NatUtil.getVpnIdToVpnInstance(dataBroker, vpnUuid.getValue());
         if (vpnInstance == null || vpnInstance.getVpnId() == null) {
-            LOG.error("createNATFlowEntries: No VPN associated with Ext nw {}. Unable to create SNAT table entry"
+            LOG.error("createNATFlowEntries: VpnInstance associated with Ext nw {}. Unable to create SNAT table entry"
                     + " for fixed ip {}",externalNetworkId, mapping.getInternalIp());
             return;
         }