Fix adding nodes and Bridge domain in one transaction 00/40500/1
authorMichal Cmarada <mcmarada@cisco.com>
Fri, 17 Jun 2016 16:23:47 +0000 (18:23 +0200)
committerMichal Cmarada <mcmarada@cisco.com>
Fri, 17 Jun 2016 16:23:47 +0000 (18:23 +0200)
Change-Id: I22a2159bde5763c63875b13103332bc3b5c2cdfd
Signed-off-by: Michal Cmarada <mcmarada@cisco.com>
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java
renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java
renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImplTest.java
renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManagerTest.java

index def9b7bb12e015df86341144cd6af7aab7bffe2c..7449070a41f58e5ccfca97526c07a90fddcb8149 100644 (file)
@@ -80,8 +80,6 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager {
             TopologyTypesVbridgeAugment.class,
             new TopologyTypesVbridgeAugmentBuilder().setVbridgeTopology(new VbridgeTopologyBuilder().build()).build())
         .build();
-    @VisibleForTesting
-    static long WAIT_FOR_TOPOLOGY_CREATION = 10; // seconds
     private final DataBroker dataProvder;
 
     private static final class ListenableFutureSetter<T extends DataObject>
@@ -199,35 +197,15 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager {
 
             @Override
             public ListenableFuture<Void> apply(Optional<Topology> optTopology) throws Exception {
-                SettableFuture<Void> topoFuture = SettableFuture.create();
+                WriteTransaction wTx = dataProvder.newWriteOnlyTransaction();
                 if (!optTopology.isPresent()) {
-                    WriteTransaction wTx = dataProvder.newWriteOnlyTransaction();
                     Topology topology = new TopologyBuilder().setKey(topologyKey)
                         .setTopologyTypes(VBRIDGE_TOPOLOGY_TYPE)
                         .addAugmentation(TopologyVbridgeAugment.class, vBridgeAug)
                         .build();
                     wTx.put(LogicalDatastoreType.CONFIGURATION, topologyIid,
                             topology, true);
-                    Futures.addCallback(wTx.submit(), new FutureCallback<Void>() {
-
-                        @Override
-                        public void onSuccess(Void result) {
-                            DataTreeIdentifier<Topology> topoIdentifier =
-                                    new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, topologyIid);
-                            new ListenableFutureSetter<>(dataProvder, topoFuture, topoIdentifier,
-                                    ModificationType.WRITE);
-                        }
-
-                        @Override
-                        public void onFailure(Throwable t) {
-                            LOG.warn("Request create topology for VBD was not stored to CONF DS. {}", topologyIid, t);
-                            topoFuture.setException(new Exception("Cannot send request to VBD."));
-                        }});
-                } else {
-                    topoFuture.set(null);
                 }
-                topoFuture.get(WAIT_FOR_TOPOLOGY_CREATION, TimeUnit.SECONDS);
-                WriteTransaction wTx = dataProvder.newWriteOnlyTransaction();
                 InstanceIdentifier<Node> nodeIid = VppIidFactory.getNodeIid(topologyKey, vppNode.getKey());
                 wTx.put(LogicalDatastoreType.CONFIGURATION, nodeIid, vppNode);
                 SettableFuture<Void> future = SettableFuture.create();
index 4b75d846bc30e6f994cd3741ea33e5bb9bb2de5d..e787e9d5adfb43389aa88b4654bf4db2fa9ef349 100644 (file)
@@ -177,7 +177,7 @@ public class VppRendererPolicyManager {
         ImmutableSet<RendererEndpointKey> rendEpsBefore = policyCtxBefore.getPolicyTable().rowKeySet();
         ImmutableSet<RendererEndpointKey> rendEpsAfter = policyCtxAfter.getPolicyTable().rowKeySet();
         SetMultimap<String, NodeId> vppNodesByL2FdBefore = resolveVppNodesByL2Fd(rendEpsBefore, policyCtxBefore);
-        SetMultimap<String, NodeId> vppNodesByL2FdAfter = resolveVppNodesByL2Fd(rendEpsAfter, policyCtxBefore);
+        SetMultimap<String, NodeId> vppNodesByL2FdAfter = resolveVppNodesByL2Fd(rendEpsAfter, policyCtxAfter);
         return Maps.difference(vppNodesByL2FdBefore.asMap(), vppNodesByL2FdAfter.asMap());
     }
 
index 942499f11da46b546e854b6388093fa3758e0fb0..b1344ecaf4cd446eab34c69c0d4c0986bc0e27f7 100644 (file)
@@ -88,15 +88,10 @@ public class BridgeDomainManagerImplTest extends CustomDataBrokerTest {
     public void init() {
         dataBroker = getDataBroker();
         bridgeDomainManager = new BridgeDomainManagerImpl(dataBroker);
-        BridgeDomainManagerImpl.WAIT_FOR_TOPOLOGY_CREATION = 2;
     }
 
     @Test
     public void testCreateVxlanBridgeDomainOnVppNode() throws Exception {
-        WriteTransaction wTx = dataBroker.newWriteOnlyTransaction();
-        wTx.put(LogicalDatastoreType.OPERATIONAL, VppIidFactory.getTopologyIid(BASE_TOPOLOGY.getKey()),
-                new TopologyBuilder().setKey(BASE_TOPOLOGY.getKey()).build());
-        wTx.submit().get();
         bridgeDomainManager.createVxlanBridgeDomainOnVppNode(BRIDGE_DOMAIN_ID, BRIDGE_DOMAIN_VNI, VPP_NODE_ID);
 
         Optional<Topology> topologyOptional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
index a1d9707eb74dd4ac76bab3bf142df4399680b8e2..fcac48ca09ae1b44cacd4e0bcc52950ecc23fd52 100644 (file)
@@ -167,7 +167,6 @@ public class VppRendererPolicyManagerTest extends CustomDataBrokerTest {
     @Before
     public void init() throws Exception {
         ForwardingManager.WAIT_FOR_BD_CREATION = 2;
-        BridgeDomainManagerImpl.WAIT_FOR_TOPOLOGY_CREATION = 2;
         mountedDataProviderMock = Mockito.mock(MountedDataBrokerProvider.class);
         mountPointDataBroker = getDataBroker();
         setup(); // initialize new data broker for ODL data store