Fix issues related to checkstyle enforcement for module
[genius.git] / interfacemanager / interfacemanager-impl / src / main / java / org / opendaylight / genius / interfacemanager / listeners / InterfaceStateListener.java
index 6489b243720101a51782edbed02ea0da0d6c4a73..c89ef45b1b281840377a7e2d3db170b7a27bd881 100644 (file)
@@ -8,8 +8,13 @@
 package org.opendaylight.genius.interfacemanager.listeners;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.ArrayList;
+import java.util.List;
+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.WriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase;
 import org.opendaylight.genius.datastoreutils.DataStoreJobCoordinator;
 import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
@@ -21,16 +26,16 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
-
-public class InterfaceStateListener extends AsyncClusteredDataTreeChangeListenerBase<Interface, InterfaceStateListener> {
+@Singleton
+public class InterfaceStateListener
+        extends AsyncClusteredDataTreeChangeListenerBase<Interface, InterfaceStateListener> {
     private static final Logger LOG = LoggerFactory.getLogger(InterfaceStateListener.class);
-    private DataBroker dataBroker;
+    private final DataBroker dataBroker;
 
+    @Inject
     public InterfaceStateListener(DataBroker dataBroker) {
-        super(Interface.class, InterfaceStateListener.class);
         this.dataBroker = dataBroker;
+        this.registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker);
     }
 
     @Override
@@ -40,35 +45,39 @@ public class InterfaceStateListener extends AsyncClusteredDataTreeChangeListener
 
     @Override
     protected void remove(InstanceIdentifier<Interface> key, Interface interfaceStateOld) {
+        InterfaceManagerCommonUtils.removeFromInterfaceStateCache(interfaceStateOld);
         LOG.debug("Received interface state remove event for {}, ignoring", interfaceStateOld.getName());
     }
 
     @Override
     protected void update(InstanceIdentifier<Interface> key, Interface interfaceStateOld, Interface interfaceStateNew) {
+        InterfaceManagerCommonUtils.addInterfaceStateToCache(interfaceStateNew);
         LOG.debug("Received interface state update event for {},ignoring...", interfaceStateOld.getName());
     }
 
     @Override
     protected void add(InstanceIdentifier<Interface> key, Interface interfaceStateNew) {
-        if(!Tunnel.class.equals(interfaceStateNew.getType())){
+        InterfaceManagerCommonUtils.addInterfaceStateToCache(interfaceStateNew);
+        if (!Tunnel.class.equals(interfaceStateNew.getType())
+            || !IfmClusterUtils.isEntityOwner(IfmClusterUtils.INTERFACE_CONFIG_ENTITY)) {
             return;
         }
-        IfmClusterUtils.runOnlyInLeaderNode(() -> {
-            LOG.debug("Received Tunnel state add event for {}", interfaceStateNew.getName());
-            DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
-            coordinator.enqueueJob(interfaceStateNew.getName(), () -> {
-                final List<ListenableFuture<Void>> futures = new ArrayList<>();
-                Interface.OperStatus bfdState = InterfaceManagerCommonUtils.getBfdStateFromCache(interfaceStateNew.getName());
-                if (bfdState != null && bfdState != interfaceStateNew.getOperStatus() &&
-                        interfaceStateNew.getOperStatus() != Interface.OperStatus.Unknown) {
-                    // update opstate of interface if TEP has gone down/up as a result of BFD monitoring
-                    LOG.debug("updating tunnel state for interface {}", interfaceStateNew.getName());
-                    WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
-                    InterfaceManagerCommonUtils.updateOpState(transaction, interfaceStateNew.getName(), bfdState);
-                    futures.add(transaction.submit());
-                }
-                return futures;
-            });
+        LOG.debug("Received Tunnel state add event for {}", interfaceStateNew.getName());
+        DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
+        coordinator.enqueueJob(interfaceStateNew.getName(), () -> {
+            final List<ListenableFuture<Void>> futures = new ArrayList<>();
+            Interface.OperStatus bfdState = InterfaceManagerCommonUtils
+                    .getBfdStateFromCache(interfaceStateNew.getName());
+            if (bfdState != null && bfdState != interfaceStateNew.getOperStatus()
+                    && interfaceStateNew.getOperStatus() != Interface.OperStatus.Unknown) {
+                // update opstate of interface if TEP has gone down/up as a
+                // result of BFD monitoring
+                LOG.debug("updating tunnel state for interface {}", interfaceStateNew.getName());
+                WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
+                InterfaceManagerCommonUtils.updateOpState(transaction, interfaceStateNew.getName(), bfdState);
+                futures.add(transaction.submit());
+            }
+            return futures;
         });
     }
 
@@ -76,4 +85,4 @@ public class InterfaceStateListener extends AsyncClusteredDataTreeChangeListener
     protected InterfaceStateListener getDataTreeChangeListener() {
         return InterfaceStateListener.this;
     }
-}
\ No newline at end of file
+}