From 80bdd2f2ffa3c99088fd8869b3c835d5034a2554 Mon Sep 17 00:00:00 2001 From: Thomas Bachman Date: Sat, 30 May 2015 07:36:59 -0400 Subject: [PATCH] Possible fix for OfOverlay overwrite (#2). This is an attempt to fix an overwrite of data in the Inventory Node's OfOverlay augmentation. It changes the writes of the entire augmentation to just a write of the tunnel elements. Change-Id: I5a22dd31381558300544dfb3fcc154f18d71e337 Signed-off-by: Thomas Bachman --- .../neutron/ovsdb/util/InventoryHelper.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/util/InventoryHelper.java b/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/util/InventoryHelper.java index f7e60d33f..9056c92aa 100644 --- a/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/util/InventoryHelper.java +++ b/neutron-ovsdb/src/main/java/org/opendaylight/groupbasedpolicy/neutron/ovsdb/util/InventoryHelper.java @@ -29,6 +29,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay. import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.ExternalInterfacesKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.Tunnel; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; @@ -216,6 +217,19 @@ public class InventoryHelper { submitToDs(transaction); } + private static void addTunnelToOfOverlayAugmentation(Tunnel tunnel, String nodeIdString, DataBroker dataBroker) { + InstanceIdentifier ofOverlayNodeIid = InstanceIdentifier.builder( + Nodes.class) + .child(Node.class, new NodeKey(new NodeId(nodeIdString))) + .augmentation(OfOverlayNodeConfig.class) + .child(Tunnel.class, new TunnelKey(tunnel.getKey())) + .build(); + + WriteTransaction transaction = dataBroker.newReadWriteTransaction(); + transaction.merge(LogicalDatastoreType.CONFIGURATION, ofOverlayNodeIid, tunnel, true); + submitToDs(transaction); + } + /** * Update the {@link OfOverlayConfig} of an Inventory Node * using the new tunnel state. @@ -266,14 +280,9 @@ public class InventoryHelper { } } if (tunnelsUpdated == true) { - OfOverlayNodeConfigBuilder ofOverlayBuilder = null; - if (ofConfig == null) { - ofOverlayBuilder = new OfOverlayNodeConfigBuilder(); - } else { - ofOverlayBuilder = new OfOverlayNodeConfigBuilder(ofConfig); + for (Tunnel tunnel: tunnelList) { + addTunnelToOfOverlayAugmentation(tunnel, nodeIdString, dataBroker); } - ofOverlayBuilder.setTunnel(tunnelList); - addOfOverlayAugmentation(ofOverlayBuilder.build(), nodeIdString, dataBroker); } } } -- 2.36.6