From 2ec3dd0fbb32fedf7526f0d6a69e9c0cbe767e6c Mon Sep 17 00:00:00 2001 From: Martin Bobak Date: Tue, 19 Aug 2014 05:52:11 +0200 Subject: [PATCH] Bug 1585 - switch features removed after node updated - use tx.merge rather than tx.put when node or nodeConnector is updated Change-Id: Ib85dff96396d5805d148ed781401abc02a19982b Signed-off-by: Martin Bobak --- .../md/inventory/manager/NodeChangeCommiter.java | 10 ++-------- .../topology/manager/FlowCapableTopologyExporter.java | 4 ++-- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/opendaylight/md-sal/inventory-manager/src/main/java/org/opendaylight/controller/md/inventory/manager/NodeChangeCommiter.java b/opendaylight/md-sal/inventory-manager/src/main/java/org/opendaylight/controller/md/inventory/manager/NodeChangeCommiter.java index 57ec893076..b14bfd429c 100644 --- a/opendaylight/md-sal/inventory-manager/src/main/java/org/opendaylight/controller/md/inventory/manager/NodeChangeCommiter.java +++ b/opendaylight/md-sal/inventory-manager/src/main/java/org/opendaylight/controller/md/inventory/manager/NodeChangeCommiter.java @@ -32,8 +32,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.No import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; @@ -81,7 +79,7 @@ class NodeChangeCommiter implements OpendaylightInventoryListener { InstanceIdentifier value = (InstanceIdentifier) ref.getValue(); LOG.debug("updating node connector : {}.", value); NodeConnector build = data.build(); - tx.put(LogicalDatastoreType.OPERATIONAL, value, build); + tx.merge(LogicalDatastoreType.OPERATIONAL, value, build, true); } }); } @@ -139,13 +137,9 @@ class NodeChangeCommiter implements OpendaylightInventoryListener { manager.enqueue(new InventoryOperation() { @Override public void applyOperation(final ReadWriteTransaction tx) { - final NodeBuilder nodeBuilder = new NodeBuilder(node); - nodeBuilder.setKey(new NodeKey(node.getId())); - final FlowCapableNode augment = InventoryMapping.toInventoryAugment(flowNode); - nodeBuilder.addAugmentation(FlowCapableNode.class, augment); LOG.debug("updating node :{} ", path); - tx.put(LogicalDatastoreType.OPERATIONAL, path, augment); + tx.merge(LogicalDatastoreType.OPERATIONAL, path, augment, true); } }); } diff --git a/opendaylight/md-sal/topology-manager/src/main/java/org/opendaylight/md/controller/topology/manager/FlowCapableTopologyExporter.java b/opendaylight/md-sal/topology-manager/src/main/java/org/opendaylight/md/controller/topology/manager/FlowCapableTopologyExporter.java index d7ce9485c6..451cad4816 100644 --- a/opendaylight/md-sal/topology-manager/src/main/java/org/opendaylight/md/controller/topology/manager/FlowCapableTopologyExporter.java +++ b/opendaylight/md-sal/topology-manager/src/main/java/org/opendaylight/md/controller/topology/manager/FlowCapableTopologyExporter.java @@ -91,7 +91,7 @@ class FlowCapableTopologyExporter implements FlowTopologyDiscoveryListener, Open public void applyOperation(final ReadWriteTransaction transaction) { final Node node = toTopologyNode(toTopologyNodeId(notification.getId()), notification.getNodeRef()); final InstanceIdentifier path = getNodePath(toTopologyNodeId(notification.getId())); - transaction.put(LogicalDatastoreType.OPERATIONAL, path, node); + transaction.merge(LogicalDatastoreType.OPERATIONAL, path, node, true); } }); } @@ -130,7 +130,7 @@ class FlowCapableTopologyExporter implements FlowTopologyDiscoveryListener, Open TerminationPoint point = toTerminationPoint(toTerminationPointId(notification.getId()), notification.getNodeConnectorRef()); final InstanceIdentifier path = tpPath(nodeId, point.getKey().getTpId()); - transaction.put(LogicalDatastoreType.OPERATIONAL, path, point); + transaction.merge(LogicalDatastoreType.OPERATIONAL, path, point, true); if ((fcncu.getState() != null && fcncu.getState().isLinkDown()) || (fcncu.getConfiguration() != null && fcncu.getConfiguration().isPORTDOWN())) { removeAffectedLinks(point.getTpId()); -- 2.36.6