From: Tomas Cechvala Date: Tue, 28 Feb 2017 12:56:37 +0000 (+0100) Subject: Fixing read-write transaction in InterfaceManager X-Git-Tag: release/carbon~31 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F65%2F52365%2F1;p=groupbasedpolicy.git Fixing read-write transaction in InterfaceManager Transaction was not closed which caused problems in NETCONF for creating next write or read-write transactions. Changed to read-only transaction as long as write is not needed. Change-Id: I3cdefc6330e7264e670749c02ed379903bab61e3 Signed-off-by: Tomas Cechvala --- diff --git a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java index ac6cc065a..afa42e76f 100644 --- a/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java +++ b/renderers/vpp/src/main/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManager.java @@ -19,7 +19,7 @@ import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; +import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.ConfigCommand; import org.opendaylight.groupbasedpolicy.renderer.vpp.commands.LoopbackCommand; @@ -423,8 +423,9 @@ public class InterfaceManager implements AutoCloseable { private L2Builder readL2ForInterface(DataBroker mountpoint, InterfaceKey ifaceKey) { InstanceIdentifier l2Iid = VppIidFactory.getL2ForInterfaceIid(ifaceKey); - final ReadWriteTransaction rwTxRead = mountpoint.newReadWriteTransaction(); + final ReadOnlyTransaction rwTxRead = mountpoint.newReadOnlyTransaction(); Optional optL2 = DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, l2Iid, rwTxRead); + rwTxRead.close(); return (optL2.isPresent()) ? new L2Builder(optL2.get()) : new L2Builder(); } diff --git a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManagerTest.java b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManagerTest.java index b77fc49a3..412e00ad8 100644 --- a/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManagerTest.java +++ b/renderers/vpp/src/test/java/org/opendaylight/groupbasedpolicy/renderer/vpp/iface/InterfaceManagerTest.java @@ -33,29 +33,22 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint_l import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.AddressType; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.Config; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425._interface.attributes._interface.type.choice.VhostUserCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.VppEndpoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.VppEndpointBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425.config.VppEndpointKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.vpp_renderer.rev160425._interface.attributes._interface.type.choice.VhostUserCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.VhostUser; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.VhostUserRole; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.VppInterfaceAugmentation; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.interfaces._interface.L2; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.l2.base.attributes.Interconnection; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.l2.base.attributes.interconnection.BridgeBased; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev161214.vpp.BridgeDomains; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; -import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import com.google.common.base.Optional; -import com.google.common.base.Strings; -import com.google.common.util.concurrent.MoreExecutors; public class InterfaceManagerTest extends CustomDataBrokerTest { @@ -115,16 +108,7 @@ public class InterfaceManagerTest extends CustomDataBrokerTest { Assert.assertNotNull(vhostUserIface); Assert.assertEquals(VhostUserRole.Client, vhostUserIface.getRole()); Assert.assertEquals(SOCKET, vhostUserIface.getSocket()); - L2 l2Iface = vppIface.getL2(); - if (l2Iface != null) { - Interconnection interconnection = l2Iface.getInterconnection(); - if (interconnection != null) { - if (interconnection instanceof BridgeBased) { - BridgeBased bridgeL2Iface = (BridgeBased) interconnection; - Assert.assertTrue(Strings.isNullOrEmpty(bridgeL2Iface.getBridgeDomain())); - } - } - } + Assert.assertNull(vppIface.getL2()); //TODO test case for adding interface to BD // assert state on ODL data store ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction(); Optional optLocationProvider = rTx.read(LogicalDatastoreType.CONFIGURATION, IidFactory.locationProviderIid(VppEndpointLocationProvider.VPP_ENDPOINT_LOCATION_PROVIDER)).get();