Adding Logger for debugging. 71/84171/3
authorAmitesh Soni <amitesh.soni@ericsson.com>
Fri, 15 Nov 2019 09:52:51 +0000 (15:22 +0530)
committerAbhinav Gupta <abhinav.gupta@ericsson.com>
Thu, 21 Nov 2019 07:31:42 +0000 (07:31 +0000)
Signed-off-by: Amitesh Soni <amitesh.soni@ericsson.com>
Change-Id: I15a62d9b4476bf9dc034d70b7bffc5ed9668a562

elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInstanceManager.java
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceManager.java

index 78a301e028d35ea579c9f656ebdc42150afff112..925b28802eba45eb4b42f4222235e85fb7511c3c 100644 (file)
@@ -41,6 +41,7 @@ import org.slf4j.LoggerFactory;
 public class ElanInstanceManager extends AsyncDataTreeChangeListenerBase<ElanInstance, ElanInstanceManager> {
 
     private static final Logger LOG = LoggerFactory.getLogger(ElanInstanceManager.class);
+    private static final Logger EVENT_LOGGER = LoggerFactory.getLogger("NetvirtEventLogger");
 
     private final DataBroker broker;
     private final ManagedNewTransactionRunner txRunner;
@@ -75,6 +76,7 @@ public class ElanInstanceManager extends AsyncDataTreeChangeListenerBase<ElanIns
     protected void remove(InstanceIdentifier<ElanInstance> identifier, ElanInstance deletedElan) {
         LOG.trace("Remove ElanInstance - Key: {}, value: {}", identifier, deletedElan);
         String elanName = deletedElan.getElanInstanceName();
+        EVENT_LOGGER.debug("ELAN-Instance, REMOVE {}",elanName);
         elanInterfaceCache.getInterfaceNames(elanName).forEach(
             elanInterfaceName -> jobCoordinator.enqueueJob(ElanUtils.getElanInterfaceJobKey(elanInterfaceName),
                 () -> Collections.singletonList(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION, tx -> {
@@ -102,6 +104,7 @@ public class ElanInstanceManager extends AsyncDataTreeChangeListenerBase<ElanIns
 
     @Override
     protected void update(InstanceIdentifier<ElanInstance> identifier, ElanInstance original, ElanInstance update) {
+        EVENT_LOGGER.debug("ELAN-Instance, UPDATE {}", original.getElanInstanceName());
         Uint32 existingElanTag = original.getElanTag();
         String elanName = update.getElanInstanceName();
         if (existingElanTag == null || !existingElanTag.equals(update.getElanTag())) {
@@ -124,6 +127,7 @@ public class ElanInstanceManager extends AsyncDataTreeChangeListenerBase<ElanIns
     protected void add(InstanceIdentifier<ElanInstance> identifier, ElanInstance elanInstanceAdded) {
         LoggingFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, operTx -> {
             String elanInstanceName  = elanInstanceAdded.getElanInstanceName();
+            EVENT_LOGGER.debug("ELAN-Instance, ADD {}", elanInstanceName);
             Elan elanInfo = ElanUtils.getElanByName(operTx, elanInstanceName);
             if (elanInfo == null) {
                 LoggingFutures.addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(CONFIGURATION,
index d244d1737d074564cdbf9ba556ac177a1b72393c..7d9bcbed32c71374c65a8beee9135ae8019dba31 100644 (file)
@@ -156,6 +156,7 @@ import org.slf4j.LoggerFactory;
 public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanInterface, ElanInterfaceManager>
         implements RecoverableListener {
     private static final Logger LOG = LoggerFactory.getLogger(ElanInterfaceManager.class);
+    private static final Logger EVENT_LOGGER = LoggerFactory.getLogger("NetvirtEventLogger");
     public static final long WAIT_TIME_FOR_SYNC_INSTALL = Long.getLong("wait.time.sync.install", 300L);
     private static final boolean SH_FLAG_SET = true;
     private static final boolean SH_FLAG_UNSET = false;
@@ -233,6 +234,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
     protected void remove(InstanceIdentifier<ElanInterface> identifier, ElanInterface del) {
         String interfaceName = del.getName();
         String elanInstanceName = del.getElanInstanceName();
+        EVENT_LOGGER.debug("ELAN-Interface, REMOVE {} Instance {}", interfaceName, elanInstanceName);
         Queue<ElanInterface> elanInterfaces = unProcessedElanInterfaces.get(elanInstanceName);
         if (elanInterfaces != null && elanInterfaces.contains(del)) {
             elanInterfaces.remove(del);
@@ -269,6 +271,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
     public List<ListenableFuture<Void>> removeElanInterface(ElanInstance elanInfo, String interfaceName,
             InterfaceInfo interfaceInfo) {
         String elanName = elanInfo.getElanInstanceName();
+        EVENT_LOGGER.debug("ELAN-InterfaceState, REMOVE {} Instance {}", interfaceName, elanName);
         Uint32 elanTag = elanInfo.getElanTag();
         // We use two transaction so we don't suffer on multiple shards (interfaces and flows)
         List<ListenableFuture<Void>> futures = new ArrayList<>();
@@ -294,6 +297,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
                     if (dpnInterfaces == null || dpnInterfaces.getInterfaces() == null
                         || dpnInterfaces.getInterfaces().isEmpty()) {
                         // No more Elan Interfaces in this DPN
+                        EVENT_LOGGER.debug("ELAN-Flows, REMOVE {} Instance {}", interfaceName, elanName);
                         LOG.debug("deleting the elan: {} present on dpId: {}", elanInfo.getElanInstanceName(),
                             holder.dpId);
                         if (!elanUtils.isOpenstackVniSemanticsEnforced()) {
@@ -413,6 +417,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
     List<ListenableFuture<Void>> removeEntriesForElanInterface(ElanInstance elanInfo, InterfaceInfo
             interfaceInfo, String interfaceName, boolean isLastElanInterface) {
         String elanName = elanInfo.getElanInstanceName();
+        EVENT_LOGGER.debug("ELAN-InterfaceEntries, REMOVE {} Instance {}", interfaceName, elanName);
         List<ListenableFuture<Void>> futures = new ArrayList<>();
         futures.add(txRunner.callWithNewReadWriteTransactionAndSubmit(CONFIGURATION, flowTx -> {
             futures.add(txRunner.callWithNewReadWriteTransactionAndSubmit(OPERATIONAL, interfaceTx -> {
@@ -434,6 +439,8 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
                                 if (!isLastElanInterface && macEntryOptional.isPresent()) {
                                     interfaceTx.delete(ElanUtils.getMacEntryOperationalDataPath(elanName, macAddress));
                                 }
+                                EVENT_LOGGER.debug("ELAN-MacFlows, REMOVE {} Instance {} Mac {}",
+                                        interfaceName, elanName, macAddress);
                                 elanUtils.deleteMacFlows(elanInfo, interfaceInfo, macEntry, flowTx);
                                 macAddresses.add(macAddress);
                             }
@@ -564,6 +571,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
         String elanName = update.getElanInstanceName();
         String interfaceName = update.getName();
         LOG.info("Update static mac entries for elan interface {} in elan instance {}", interfaceName, elanName);
+        EVENT_LOGGER.debug("ELAN-Interface, UPDATE {} Instance {}", original.getName(), elanName);
 
         List<StaticMacEntries> originalStaticMacEntries = original.getStaticMacEntries();
         List<StaticMacEntries> updatedStaticMacEntries = update.getStaticMacEntries();
@@ -603,6 +611,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
         addErrorLogging(txRunner.callWithNewWriteOnlyTransactionAndSubmit(OPERATIONAL, operTx -> {
             String elanInstanceName = elanInterfaceAdded.getElanInstanceName();
             String interfaceName = elanInterfaceAdded.getName();
+            EVENT_LOGGER.debug("ELAN-Interface, ADD {} Instance {}", interfaceName, elanInstanceName);
             InterfaceInfo interfaceInfo = interfaceManager.getInterfaceInfo(interfaceName);
             if (interfaceInfo == null) {
                 LOG.info("Interface {} is removed from Interface Oper DS due to port down ", interfaceName);
@@ -713,6 +722,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
         String interfaceName = elanInterface.getName();
         String elanInstanceName = elanInterface.getElanInstanceName();
         LOG.trace("Adding elan interface: interface name {} , instance name {}", interfaceName, elanInstanceName);
+        EVENT_LOGGER.debug("ELAN-InterfaceState, ADD {} Instance {}", interfaceName, elanInstanceName);
 
         List<ListenableFuture<Void>> futures = new ArrayList<>();
         AddElanInterfaceHolder holder = new AddElanInterfaceHolder();
@@ -865,6 +875,8 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
                                 "programming smac and dmacs for {} on source and other DPNs for elan {} and interface"
                                     + " {}",
                                 macAddress, elanInstanceName, interfaceName);
+                            EVENT_LOGGER.debug("ELAN-MacFlows, ADD {} Instance {} Mac {}",
+                                    interfaceName, elanInstanceName, macAddress);
                             elanUtils.setupMacFlows(elanInstance, interfaceInfo, ElanConstants.STATIC_MAC_TIMEOUT,
                                 staticMacEntry.getMacAddress().getValue(), true, confTx);
                         }
@@ -948,6 +960,8 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
             InterfaceInfo interfaceInfo, boolean isFirstInterfaceInDpn, TypedWriteTransaction<Configuration> confTx) {
         if (!isOperational(interfaceInfo)) {
             LOG.warn("Interface {} is not operational", elanInterface.getName());
+            EVENT_LOGGER.debug("ELAN-InterfaceEntries, ADD {} Instance {} Interface Status {}, returning",
+                    elanInterface.getName(), elanInstance.getElanInstanceName(), interfaceInfo.getOpState());
             return;
         }
         Uint64 dpId = interfaceInfo.getDpId();
@@ -984,8 +998,12 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
         if (!isOperational(interfaceInfo)) {
             LOG.warn("Entries for interface on dpn {} not installed since interface {} is not operational",
                     dpnInterfaces.getDpId(), interfaceInfo.getInterfaceName());
+            EVENT_LOGGER.debug("ELAN-1stInterfaceEntries, ADD {} Instance {} Interface Status {}, returning",
+                    interfaceInfo.getInterfaceName(), elanInfo.getElanInstanceName(), interfaceInfo.getOpState());
             return;
         }
+        EVENT_LOGGER.debug("ELAN-1stInterfaceEntries, ADD {} Instance {}",
+                interfaceInfo.getInterfaceName(), elanInfo.getElanInstanceName());
         // LocalBroadcast Group creation with elan-Interfaces
         LOG.info("Installing entries for interface {} on dpn {}", interfaceInfo.getInterfaceName(),
                 dpnInterfaces.getDpId());
@@ -1141,6 +1159,11 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
 
     private void setupLocalBroadcastGroups(ElanInstance elanInfo, DpnInterfaces newDpnInterface,
             InterfaceInfo interfaceInfo, TypedWriteTransaction<Configuration> confTx) {
+        if (!isOperational(interfaceInfo)) {
+            EVENT_LOGGER.debug("ELAN-LBG, ADD {} Instance {} Interface Status {}, returning",
+                    interfaceInfo.getInterfaceName(), elanInfo.getElanInstanceName(), interfaceInfo.getOpState());
+            return;
+        }
         setupStandardLocalBroadcastGroups(elanInfo, newDpnInterface, interfaceInfo, confTx);
         setupLeavesLocalBroadcastGroups(elanInfo, newDpnInterface, interfaceInfo, confTx);
     }