Bug 5463 : dpID coming as null during ovsdbbridge add DCN 58/37858/2
authorFaseela K <faseela.k@ericsson.com>
Tue, 15 Mar 2016 13:07:46 +0000 (18:37 +0530)
committerFaseela K <faseela.k@ericsson.com>
Wed, 20 Apr 2016 06:15:21 +0000 (06:15 +0000)
Description : Whenever a bridge is started, datapath-node-id is not coming
in the initial notification, and often it comes in a subsequent update
notification, which is not handled in interface-manager

Change-Id: I7cb19e8ba109254710aabf8aca4bbba9edc85fca
Signed-off-by: Faseela K <faseela.k@ericsson.com>
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/InterfaceConfigListener.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/InterfaceTopologyStateListener.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceTopologyStateAddHelper.java

index dec2f154376efe43edd36f848aa56bfd688b2cec..9d17e71e119051c263e1a80ff6b1b2c186b09f2a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
+ * Copyright (c) 2015 - 2016 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -39,6 +39,7 @@ public class InterfaceConfigListener extends AsyncDataTreeChangeListenerBase<Int
     private IdManagerService idManager;
     private AlivenessMonitorService alivenessMonitorService;
     private IMdsalApiManager mdsalApiManager;
+    private static final int MAX_RETRIES = 3;
 
     public InterfaceConfigListener(final DataBroker dataBroker, final IdManagerService idManager,
                                    final AlivenessMonitorService alivenessMonitorService,
@@ -67,7 +68,7 @@ public class InterfaceConfigListener extends AsyncDataTreeChangeListenerBase<Int
         ParentRefs parentRefs = interfaceOld.getAugmentation(ParentRefs.class);
         DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
         RendererConfigRemoveWorker configWorker = new RendererConfigRemoveWorker(key, interfaceOld, ifName, parentRefs);
-        coordinator.enqueueJob(ifName, configWorker);
+        coordinator.enqueueJob(ifName, configWorker, MAX_RETRIES);
     }
 
     @Override
@@ -76,7 +77,7 @@ public class InterfaceConfigListener extends AsyncDataTreeChangeListenerBase<Int
         String ifNameNew = interfaceNew.getName();
         DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
         RendererConfigUpdateWorker worker = new RendererConfigUpdateWorker(key, interfaceOld, interfaceNew, ifNameNew);
-        coordinator.enqueueJob(ifNameNew, worker);
+        coordinator.enqueueJob(ifNameNew, worker, MAX_RETRIES);
     }
 
     @Override
@@ -89,7 +90,7 @@ public class InterfaceConfigListener extends AsyncDataTreeChangeListenerBase<Int
         }
         DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance();
         RendererConfigAddWorker configWorker = new RendererConfigAddWorker(key, interfaceNew, parentRefs, ifName);
-        coordinator.enqueueJob(ifName, configWorker);
+        coordinator.enqueueJob(ifName, configWorker, MAX_RETRIES);
     }
 
     private class RendererConfigAddWorker implements Callable<List<ListenableFuture<Void>>> {
index db2ebcd7fa826a8c4f1cf64b00cbabf77c6a1155..81203c7a58440974092c77b42559f14b8d5ac613 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
+ * Copyright (c) 2015 - 2016 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -48,7 +48,7 @@ public class InterfaceTopologyStateListener extends AsyncDataChangeListenerBase<
 
     @Override
     protected AsyncDataBroker.DataChangeScope getDataChangeScope() {
-        return AsyncDataBroker.DataChangeScope.BASE;
+        return AsyncDataBroker.DataChangeScope.ONE;
     }
 
     @Override
@@ -63,8 +63,13 @@ public class InterfaceTopologyStateListener extends AsyncDataChangeListenerBase<
     @Override
     protected void update(InstanceIdentifier<OvsdbBridgeAugmentation> identifier, OvsdbBridgeAugmentation bridgeOld,
                           OvsdbBridgeAugmentation bridgeNew) {
-        LOG.info("Received Update DataChange Notification for identifier: {}, ovsdbBridgeAugmentation old: {}, new: {}." +
-                "No Action Performed.", identifier, bridgeOld, bridgeNew);
+        LOG.debug("Received Update DataChange Notification for identifier: {}, ovsdbBridgeAugmentation old: {}, new: {}.",
+                identifier, bridgeOld, bridgeNew);
+        if(bridgeOld.getDatapathId()== null && bridgeNew.getDatapathId()!= null){
+            DataStoreJobCoordinator jobCoordinator = DataStoreJobCoordinator.getInstance();
+            RendererStateAddWorker rendererStateAddWorker = new RendererStateAddWorker(identifier, bridgeNew);
+            jobCoordinator.enqueueJob(bridgeNew.getBridgeName().getValue() + bridgeNew.getDatapathId(), rendererStateAddWorker);
+        }
     }
 
     @Override
index ae9dccf33575c3886974a88a126d30514564157c..c4babcdab6654f7fa9727ae600d9f8e47879b7fa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
+ * Copyright (c) 2015 - 2016 Ericsson India Global Services Pvt Ltd. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
@@ -44,24 +44,12 @@ public class OvsInterfaceTopologyStateAddHelper {
         WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
 
         if (bridgeNew.getDatapathId() == null) {
-            LOG.warn("DataPathId found as null for Bridge Augmentation: {}... retrying...", bridgeNew);
-            Optional<OvsdbBridgeAugmentation> bridgeNodeOptional = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeIid, dataBroker);
-            if (bridgeNodeOptional.isPresent()) {
-                bridgeNew = bridgeNodeOptional.get();
-            }
-            if (bridgeNew.getDatapathId() == null) {
-                LOG.warn("DataPathId found as null again for Bridge Augmentation: {}. Bailing out.", bridgeNew);
-                return futures;
-            }
+            LOG.warn("DataPathId found as null for Bridge Augmentation: {}... returning...", bridgeNew);
+            return futures;
         }
         String bridgeName = bridgeNew.getBridgeName().getValue();
         BigInteger dpnId = IfmUtil.getDpnId(bridgeNew.getDatapathId());
 
-        if (dpnId == null) {
-            LOG.warn("Got Null DPID for Bridge: {}", bridgeNew);
-            return futures;
-        }
-
         // create bridge reference entry in interface meta operational DS
         InterfaceMetaUtils.createBridgeRefEntry(dpnId, bridgeIid, writeTransaction);