Fix NPE triggered after disabling SG on a port
[netvirt.git] / openstack / net-virt-providers / src / main / java / org / opendaylight / netvirt / openstack / netvirt / providers / NetvirtProvidersConfigImpl.java
index f158f1f58c776ea65d017192ea97a07e8d10d022..13c3cbc296ecd662ee97be4979ba3dd1b4fa5ece 100644 (file)
@@ -10,13 +10,17 @@ package org.opendaylight.netvirt.openstack.netvirt.providers;
 import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.netvirt.utils.mdsal.utils.MdsalUtils;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.config.rev160109.*;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.config.rev160109.NetvirtProvidersConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netvirt.providers.config.rev160109.NetvirtProvidersConfigBuilder;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -29,7 +33,9 @@ public class NetvirtProvidersConfigImpl implements AutoCloseable, ConfigInterfac
     private static final Logger LOG = LoggerFactory.getLogger(NetvirtProvidersConfigImpl.class);
     private final DataBroker dataBroker;
     private final ListenerRegistration<DataChangeListener> registration;
-    private final ExecutorService executorService = Executors.newFixedThreadPool(1);
+    private static final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+        .setNameFormat("NV-ProviderCfg-%d").build();
+    private final ExecutorService executorService = Executors.newFixedThreadPool(1, threadFactory);
     private final MdsalUtils mdsalUtils;
 
     public NetvirtProvidersConfigImpl(final DataBroker dataBroker, final short tableOffset) {
@@ -65,14 +71,10 @@ public class NetvirtProvidersConfigImpl implements AutoCloseable, ConfigInterfac
 
     @Override
     public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> asyncDataChangeEvent) {
-        executorService.submit(new Runnable() {
-
-            @Override
-            public void run() {
-                LOG.info("onDataChanged: {}", asyncDataChangeEvent);
-                processConfigCreate(asyncDataChangeEvent);
-                processConfigUpdate(asyncDataChangeEvent);
-            }
+        executorService.submit(() -> {
+            LOG.info("onDataChanged: {}", asyncDataChangeEvent);
+            processConfigCreate(asyncDataChangeEvent);
+            processConfigUpdate(asyncDataChangeEvent);
         });
     }
 
@@ -100,6 +102,30 @@ public class NetvirtProvidersConfigImpl implements AutoCloseable, ConfigInterfac
         if (netvirtProvidersConfig.getTableOffset() != null) {
             NetvirtProvidersProvider.setTableOffset(netvirtProvidersConfig.getTableOffset());
         }
+        if (netvirtProvidersConfig.getSecurityGroupTcpIdleTimeout() != null) {
+            NetvirtProvidersProvider.setSecurityGroupTcpIdleTimeout(netvirtProvidersConfig.getSecurityGroupTcpIdleTimeout());
+        }
+        if (netvirtProvidersConfig.getSecurityGroupTcpHardTimeout() != null) {
+            NetvirtProvidersProvider.setSecurityGroupTcpHardTimeout(netvirtProvidersConfig.getSecurityGroupTcpHardTimeout());
+        }
+        if (netvirtProvidersConfig.getSecurityGroupTcpFinIdleTimeout() != null) {
+            NetvirtProvidersProvider.setSecurityGroupTcpFinIdleTimeout(netvirtProvidersConfig.getSecurityGroupTcpFinIdleTimeout());
+        }
+        if (netvirtProvidersConfig.getSecurityGroupTcpFinHardTimeout() != null) {
+            NetvirtProvidersProvider.setSecurityGroupTcpFinHardTimeout(netvirtProvidersConfig.getSecurityGroupTcpFinHardTimeout());
+        }
+        if (netvirtProvidersConfig.getSecurityGroupUdpIdleTimeout() != null) {
+            NetvirtProvidersProvider.setSecurityGroupUdpIdleTimeout(netvirtProvidersConfig.getSecurityGroupUdpIdleTimeout());
+        }
+        if (netvirtProvidersConfig.getSecurityGroupUdpHardTimeout() != null) {
+            NetvirtProvidersProvider.setSecurityGroupUdpHardTimeout(netvirtProvidersConfig.getSecurityGroupUdpHardTimeout());
+        }
+        if (netvirtProvidersConfig.getSecurityGroupDefaultIdleTimeout() != null) {
+            NetvirtProvidersProvider.setSecurityGroupDefaultIdleTimeout(netvirtProvidersConfig.getSecurityGroupDefaultIdleTimeout());
+        }
+        if (netvirtProvidersConfig.getSecurityGroupDefaultHardTimeout() != null) {
+            NetvirtProvidersProvider.setSecurityGroupDefaultHardTimeout(netvirtProvidersConfig.getSecurityGroupDefaultHardTimeout());
+        }
     }
 
     @Override