Bug 7260: no rules in table 26 for default route 80/49280/3
authorOlga Schukin <olga.schukin@hpe.com>
Tue, 13 Dec 2016 05:53:40 +0000 (07:53 +0200)
committerAlon Kochba <alonko@hpe.com>
Thu, 15 Dec 2016 10:34:55 +0000 (10:34 +0000)
* the model of router gateway wasn't written to mdsal due to NPE
* fix the race cond when add router gateway port done after handling ext network for this router

Change-Id: Ide2e5d6bb8e90d1d13effb8456aeaed395c9675a
Signed-off-by: Olga Schukin <olga.schukin@hpe.com>
vpnservice/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronPortChangeListener.java
vpnservice/neutronvpn/neutronvpn-impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronvpnNatManager.java

index c99fa9dda030d7034cd079472e5e77dd79c67245..f077aa1144930a230cf687a5e9cf0c208e58349c 100644 (file)
@@ -351,7 +351,7 @@ public class NeutronPortChangeListener extends AsyncDataTreeChangeListenerBase<P
             LOG.warn("No router found for router GW port {} router id {}", routerGwPort.getUuid(), routerId.getValue());
             return;
         }
-
+        nvpnNatManager.addExternalRouter(router, dataBroker);
         gwMacResolver.sendArpRequestsToExtGateways(router);
     }
 
index d798a53cf561d65fced4f0e206e32a19b0c1bcca..8596e7029e9cfbafcb679df9e28cc1d7cc7fea4c 100644 (file)
@@ -273,7 +273,7 @@ public class NeutronvpnNatManager implements AutoCloseable {
         try {
             Network input = NeutronvpnUtils.getNeutronNetwork(dataBroker, extNetId);
             ProviderTypes providerNwType = NeutronvpnUtils.getProviderNetworkType(input);
-            if(providerNwType == null){
+            if (providerNwType == null) {
                 LOG.error("Unable to get Network Provider Type for network {} and uuid {}", input.getName(), input.getUuid());
                 return;
             }
@@ -413,7 +413,7 @@ public class NeutronvpnNatManager implements AutoCloseable {
         }
     }
 
-    private void addExternalRouter(Router update, DataBroker broker) {
+    public void addExternalRouter(Router update, DataBroker broker) {
         Uuid routerId = update.getUuid();
         Uuid extNetId = update.getExternalGatewayInfo().getExternalNetworkId();
         Uuid gatewayPortId = update.getGatewayPortId();
@@ -426,7 +426,7 @@ public class NeutronvpnNatManager implements AutoCloseable {
         try {
             Network input = NeutronvpnUtils.getNeutronNetwork(dataBroker, extNetId);
             ProviderTypes providerNwType = NeutronvpnUtils.getProviderNetworkType(input);
-            if(providerNwType == null){
+            if (providerNwType == null) {
                 LOG.error("Unable to get Network Provider Type for network {} and uuid{}", input.getName(), input.getUuid());
                 return;
             }
@@ -440,26 +440,20 @@ public class NeutronvpnNatManager implements AutoCloseable {
             } else {
                 builder = new RoutersBuilder().setKey(new RoutersKey(routerId.getValue()));
             }
-            if (builder != null) {
-                builder.setRouterName(routerId.getValue());
-            }
-            if (builder != null) {
-                builder.setNetworkId(extNetId);
-            }
-            if (builder != null) {
-                builder.setEnableSnat(update.getExternalGatewayInfo().isEnableSnat());
-            }
-            if (builder != null) {
-                ArrayList<String> ext_fixed_ips = new ArrayList<String>();
-                for (ExternalFixedIps fixed_ips : update.getExternalGatewayInfo().getExternalFixedIps()) {
-                    ext_fixed_ips.add(fixed_ips.getIpAddress().getIpv4Address().getValue());
-                }
-                builder.setExternalIps(ext_fixed_ips);
+            builder.setRouterName(routerId.getValue());
+            builder.setNetworkId(extNetId);
+            builder.setEnableSnat(update.getExternalGatewayInfo().isEnableSnat());
+
+            ArrayList<String> ext_fixed_ips = new ArrayList<String>();
+            for (ExternalFixedIps fixed_ips : update.getExternalGatewayInfo().getExternalFixedIps()) {
+                ext_fixed_ips.add(fixed_ips.getIpAddress().getIpv4Address().getValue());
             }
+            builder.setExternalIps(ext_fixed_ips);
+
             if (gatewayPortId != null) {
                 LOG.trace("Setting/Updating gateway Mac for router {}", routerId.getValue());
                 Port port = NeutronvpnUtils.getNeutronPort(broker, gatewayPortId);
-                if (port.getDeviceOwner().equals(NeutronConstants.DEVICE_OWNER_GATEWAY_INF)) {
+                if (port != null && port.getDeviceOwner().equals(NeutronConstants.DEVICE_OWNER_GATEWAY_INF)) {
                     builder.setExtGwMacAddress(port.getMacAddress().getValue());
                 }
             }