From: Michal Cmarada Date: Fri, 17 Jun 2016 16:23:47 +0000 (+0200) Subject: Fix adding nodes and Bridge domain in one transaction X-Git-Tag: release/boron~106 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=b8d10f217006b443cb01ca8d361ac1907ae0c925;p=groupbasedpolicy.git Fix adding nodes and Bridge domain in one transaction Change-Id: I22a2159bde5763c63875b13103332bc3b5c2cdfd Signed-off-by: Michal Cmarada --- diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java index def9b7bb1..7449070a4 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImpl.java @@ -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 @@ -199,35 +197,15 @@ public class BridgeDomainManagerImpl implements BridgeDomainManager { @Override public ListenableFuture apply(Optional optTopology) throws Exception { - SettableFuture 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() { - - @Override - public void onSuccess(Void result) { - DataTreeIdentifier 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 nodeIid = VppIidFactory.getNodeIid(topologyKey, vppNode.getKey()); wTx.put(LogicalDatastoreType.CONFIGURATION, nodeIid, vppNode); SettableFuture future = SettableFuture.create(); diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java index 4b75d846b..e787e9d5a 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManager.java @@ -177,7 +177,7 @@ public class VppRendererPolicyManager { ImmutableSet rendEpsBefore = policyCtxBefore.getPolicyTable().rowKeySet(); ImmutableSet rendEpsAfter = policyCtxAfter.getPolicyTable().rowKeySet(); SetMultimap vppNodesByL2FdBefore = resolveVppNodesByL2Fd(rendEpsBefore, policyCtxBefore); - SetMultimap vppNodesByL2FdAfter = resolveVppNodesByL2Fd(rendEpsAfter, policyCtxBefore); + SetMultimap vppNodesByL2FdAfter = resolveVppNodesByL2Fd(rendEpsAfter, policyCtxAfter); return Maps.difference(vppNodesByL2FdBefore.asMap(), vppNodesByL2FdAfter.asMap()); } diff --git a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImplTest.java b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImplTest.java index 942499f11..b1344ecaf 100644 --- a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImplTest.java +++ b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/BridgeDomainManagerImplTest.java @@ -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 topologyOptional = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, diff --git a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManagerTest.java b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManagerTest.java index a1d9707eb..fcac48ca0 100644 --- a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManagerTest.java +++ b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/policy/VppRendererPolicyManagerTest.java @@ -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