Use documenting constants for put() 11/59411/5
authorStephen Kitt <skitt@redhat.com>
Thu, 22 Jun 2017 15:36:29 +0000 (17:36 +0200)
committerSam Hague <shague@redhat.com>
Sun, 2 Jul 2017 18:04:50 +0000 (18:04 +0000)
WriteTransaction provides constants for put()’s createMissingParents
parameter, this patches uses them throughout.

A few transaction-related collection constructions are replaced with
singletonList().

Change-Id: I5e77870eb2b898eb4a4e364ba0013496c884aa1e
Signed-off-by: Stephen Kitt <skitt@redhat.com>
29 files changed:
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractEgressAclServiceImpl.java
vpnservice/aclservice/impl/src/main/java/org/opendaylight/netvirt/aclservice/AbstractIngressAclServiceImpl.java
vpnservice/aclservice/impl/src/test/java/org/opendaylight/netvirt/aclservice/tests/infra/DataBrokerPairsUtil.java
vpnservice/cloud-servicechain/cloud-servicechain-impl/src/main/java/org/opendaylight/netvirt/cloudservicechain/jobs/AddVpnPseudoPortDataJob.java
vpnservice/dhcpservice/dhcpservice-impl/src/main/java/org/opendaylight/netvirt/dhcpservice/DhcpServiceUtils.java
vpnservice/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanInterfaceManager.java
vpnservice/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanPacketInHandler.java
vpnservice/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/commands/MergeCommand.java
vpnservice/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/ha/handlers/NodeConnectedHandler.java
vpnservice/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/netvirt/elan/utils/ElanForwardingEntriesHandler.java
vpnservice/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/netvirt/elan/utils/ElanUtils.java
vpnservice/elanmanager/elanmanager-impl/src/test/java/org/opendaylight/netvirt/elan/l2gw/LogicalSwitchesCmdTest.java
vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/FibUtil.java
vpnservice/fibmanager/fibmanager-impl/src/main/java/org/opendaylight/netvirt/fibmanager/VrfEntryListener.java
vpnservice/natservice/natservice-impl/src/main/java/org/opendaylight/netvirt/natservice/internal/EvpnDnatFlowProgrammer.java
vpnservice/natservice/natservice-impl/src/main/java/org/opendaylight/netvirt/natservice/internal/NatUtil.java
vpnservice/qosservice/impl/src/main/java/org/opendaylight/netvirt/qosservice/QosAlertManager.java
vpnservice/sfc/classifier/impl/src/main/java/org/opendaylight/netvirt/sfc/classifier/providers/OpenFlow13Provider.java
vpnservice/sfc/translator/src/main/java/org/opendaylight/netvirt/sfc/translator/MdsalUtils.java
vpnservice/statemanager/impl/src/main/java/org/opendaylight/netvirt/statemanager/StateManager.java
vpnservice/statistics/impl/src/main/java/org/opendaylight/statistics/StatisticsImpl.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/TransactionUtil.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnFootprintService.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnInstanceListener.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnInterfaceManager.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnUtil.java
vpnservice/vpnmanager/vpnmanager-impl/src/main/java/org/opendaylight/netvirt/vpnmanager/intervpnlink/InterVpnLinkListener.java
vpnservice/vpnmanager/vpnmanager-impl/src/test/java/org/opendaylight/netvirt/vpnmanager/test/SubnetOpDpnManagerTest.java
vpnservice/vpnmanager/vpnmanager-impl/src/test/java/org/opendaylight/netvirt/vpnmanager/test/VpnSubnetRouteHandlerTest.java

index b20fa0acff4a5268a8603cd653cf005e975550f7..e0fe07a6253c9298da14de42da3d7c510c248b05 100644 (file)
@@ -119,11 +119,10 @@ public abstract class AbstractEgressAclServiceImpl extends AbstractAclServiceImp
                     AclServiceUtils.buildServiceId(interfaceName, serviceIndex, ServiceModeIngress.class);
 
                 WriteTransaction writeTxn = dataBroker.newWriteOnlyTransaction();
-                writeTxn.put(LogicalDatastoreType.CONFIGURATION, path, serviceInfo, true);
+                writeTxn.put(LogicalDatastoreType.CONFIGURATION, path, serviceInfo,
+                        WriteTransaction.CREATE_MISSING_PARENTS);
 
-                List<ListenableFuture<Void>> futures = new ArrayList<>();
-                futures.add(writeTxn.submit());
-                return futures;
+                return Collections.singletonList(writeTxn.submit());
             });
     }
 
index 6ff8a4602f47b6166645128dc09e62e5f92454cd..6419b6e78c9434294ceb8b45e695c0f1c40832db 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.netvirt.aclservice;
 import com.google.common.util.concurrent.ListenableFuture;
 import java.math.BigInteger;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -116,11 +117,10 @@ public abstract class AbstractIngressAclServiceImpl extends AbstractAclServiceIm
                         NwConstants.EGRESS_ACL_SERVICE_INDEX), ServiceModeEgress.class);
 
                 WriteTransaction writeTxn = dataBroker.newWriteOnlyTransaction();
-                writeTxn.put(LogicalDatastoreType.CONFIGURATION, path, serviceInfo, true);
+                writeTxn.put(LogicalDatastoreType.CONFIGURATION, path, serviceInfo,
+                        WriteTransaction.CREATE_MISSING_PARENTS);
 
-                List<ListenableFuture<Void>> futures = new ArrayList<>();
-                futures.add(writeTxn.submit());
-                return futures;
+                return Collections.singletonList(writeTxn.submit());
             });
     }
 
index 285686a1193f09510279ce52d8e1c06d040bdec0..cda37b17989ac9a72cda1e76a50da2132f6dfe5f 100644 (file)
@@ -41,12 +41,13 @@ public class DataBrokerPairsUtil {
 
     public <T extends DataObject> void put(LogicalDatastoreType type, Pair<InstanceIdentifier<T>, T> pair)
             throws TransactionCommitFailedException {
-        tx.put(type, pair.getKey(), pair.getValue(), true);
+        tx.put(type, pair.getKey(), pair.getValue(), WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     public <T extends DataObject> void put(Pair<DataTreeIdentifier<T>, T> pair)
             throws TransactionCommitFailedException {
-        tx.put(pair.getKey().getDatastoreType(), pair.getKey().getRootIdentifier(), pair.getValue(), true);
+        tx.put(pair.getKey().getDatastoreType(), pair.getKey().getRootIdentifier(), pair.getValue(),
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     public <T extends DataObject> void put(DataTreeIdentifierDataObjectPairBuilder<T> builder)
index 1b08bd7fa4621cc572258019affece6f9b1250d9..1f670190ee139dc32b4bbcce6a86151b34c2e78b 100644 (file)
@@ -53,7 +53,7 @@ public class AddVpnPseudoPortDataJob extends VpnPseudoPortDataBaseJob {
                                             .setVpnLportTag(vpnPseudoLportTag).build();
         LOG.trace("Adding lportTag={} to VpnToLportTag map for VPN with rd={}", vpnPseudoLportTag, vpnRd);
         InstanceIdentifier<VpnToPseudoPortData> path = VpnServiceChainUtils.getVpnToPseudoPortTagIid(vpnRd);
-        writeTxn.put(LogicalDatastoreType.CONFIGURATION, path, newValue, true);
+        writeTxn.put(LogicalDatastoreType.CONFIGURATION, path, newValue, WriteTransaction.CREATE_MISSING_PARENTS);
 
         return Collections.singletonList(writeTxn.submit());
     }
index 65f7d02692fe72cd81e53e42704844a79b540a38..3bce76f2dd9998950979f77f48ea04b7a10d39bc 100644 (file)
@@ -272,7 +272,7 @@ public class DhcpServiceUtils {
                         serviceIndex, DhcpMConstants.DEFAULT_FLOW_PRIORITY,
                         DhcpMConstants.COOKIE_VM_INGRESS_TABLE, instructions);
         tx.put(LogicalDatastoreType.CONFIGURATION,
-                buildServiceId(interfaceName, serviceIndex), serviceInfo, true);
+                buildServiceId(interfaceName, serviceIndex), serviceInfo, WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     public static void unbindDhcpService(String interfaceName, WriteTransaction tx) {
index f9b17a5ec487b279c58d33c0b3ebd56729d273d3..61579ad8f66e38a87686aa4b21852db6cea38499 100644 (file)
@@ -1480,7 +1480,8 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
         Optional<BoundServices> existingElanService = elanUtils.read(broker, LogicalDatastoreType.CONFIGURATION,
                 bindServiceId);
         if (!existingElanService.isPresent()) {
-            tx.put(LogicalDatastoreType.CONFIGURATION, bindServiceId, serviceInfo, true);
+            tx.put(LogicalDatastoreType.CONFIGURATION, bindServiceId, serviceInfo,
+                    WriteTransaction.CREATE_MISSING_PARENTS);
         }
     }
 
@@ -1542,7 +1543,8 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
         DpnInterfaces dpnInterface = new DpnInterfacesBuilder().setDpId(dpId).setInterfaces(interfaceNames)
                 .setKey(new DpnInterfacesKey(dpId)).build();
         tx.put(LogicalDatastoreType.OPERATIONAL,
-                ElanUtils.getElanDpnInterfaceOperationalDataPath(elanInstanceName, dpId), dpnInterface, true);
+                ElanUtils.getElanDpnInterfaceOperationalDataPath(elanInstanceName, dpId), dpnInterface,
+                WriteTransaction.CREATE_MISSING_PARENTS);
         return dpnInterface;
     }
 
@@ -1571,7 +1573,8 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
         DpnInterfaces dpnInterface = new DpnInterfacesBuilder().setDpId(dpId).setInterfaces(interfaceNames)
                 .setKey(new DpnInterfacesKey(dpId)).build();
         tx.put(LogicalDatastoreType.OPERATIONAL,
-                ElanUtils.getElanDpnInterfaceOperationalDataPath(elanInstanceName, dpId), dpnInterface, true);
+                ElanUtils.getElanDpnInterfaceOperationalDataPath(elanInstanceName, dpId), dpnInterface,
+                WriteTransaction.CREATE_MISSING_PARENTS);
         return dpnInterface;
     }
 
@@ -1587,7 +1590,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
                     .setKey(new ElanInterfaceMacKey(interfaceName)).build();
             tx.put(LogicalDatastoreType.OPERATIONAL,
                     ElanUtils.getElanInterfaceMacEntriesOperationalDataPath(interfaceName), elanInterfaceMacTable,
-                    true);
+                    WriteTransaction.CREATE_MISSING_PARENTS);
         }
     }
 
@@ -1606,7 +1609,7 @@ public class ElanInterfaceManager extends AsyncDataTreeChangeListenerBase<ElanIn
             Elan elanState = new ElanBuilder().setName(elanInstanceName).setElanInterfaces(interfaceLists)
                     .setKey(new ElanKey(elanInstanceName)).build();
             tx.put(LogicalDatastoreType.OPERATIONAL, ElanUtils.getElanInstanceOperationalDataPath(elanInstanceName),
-                    elanState, true);
+                    elanState, WriteTransaction.CREATE_MISSING_PARENTS);
         }
     }
 
index 43a5ab9565d2398fe895a8870d38c06c66a79546..7f9a3a238ad803b807332d0f21112e08c90e5c9a 100755 (executable)
@@ -8,12 +8,9 @@
 package org.opendaylight.netvirt.elan.internal;
 
 import com.google.common.base.Optional;
-import com.google.common.util.concurrent.ListenableFuture;
 
 import java.math.BigInteger;
-import java.util.ArrayList;
 import java.util.Collections;
-import java.util.List;
 import org.opendaylight.controller.liblldp.NetUtils;
 import org.opendaylight.controller.liblldp.PacketException;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -175,11 +172,10 @@ public class ElanPacketInHandler implements PacketProcessingListener {
             if (!isVlanOrFlatProviderIface && oldMacEntry == null) {
                 InstanceIdentifier<MacEntry> elanMacEntryId =
                         ElanUtils.getMacEntryOperationalDataPath(elanName, physAddress);
-                writeTx.put(LogicalDatastoreType.OPERATIONAL, elanMacEntryId, newMacEntry, true);
+                writeTx.put(LogicalDatastoreType.OPERATIONAL, elanMacEntryId, newMacEntry,
+                        WriteTransaction.CREATE_MISSING_PARENTS);
             }
-            List<ListenableFuture<Void>> futures = new ArrayList<>();
-            futures.add(writeTx.submit());
-            return futures;
+            return Collections.singletonList(writeTx.submit());
         });
     }
 
@@ -200,10 +196,9 @@ public class ElanPacketInHandler implements PacketProcessingListener {
                             macAddress, !isVlanOrFlatProviderIface, flowWritetx);
                     InstanceIdentifier<MacEntry> macEntryId =
                             ElanUtils.getInterfaceMacEntriesIdentifierOperationalDataPath(interfaceName, physAddress);
-                    flowWritetx.put(LogicalDatastoreType.OPERATIONAL, macEntryId, newMacEntry, true);
-                    List<ListenableFuture<Void>> futures = new ArrayList<>();
-                    futures.add(flowWritetx.submit());
-                    return futures;
+                    flowWritetx.put(LogicalDatastoreType.OPERATIONAL, macEntryId, newMacEntry,
+                            WriteTransaction.CREATE_MISSING_PARENTS);
+                    return Collections.singletonList(flowWritetx.submit());
                 });
     }
 
index ed2ef28bc0beb47f6702f7cce8e13f993c9ba499..ed3bf7e1d3c7c2f73169db5e62207ced1b97bd90 100644 (file)
@@ -17,6 +17,7 @@ import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.netvirt.elan.l2gw.ha.HwvtepHAUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes.LocatorSet;
@@ -101,7 +102,7 @@ public abstract class MergeCommand<T extends DataObject, Y extends Builder, Z ex
                 T transformedItem = transform(nodePath, addedItem);
                 String nodeId = transformedId.firstKeyOf(Node.class).getNodeId().getValue();
                 LOG.trace("adding {} {} {}", getDescription(), nodeId, getKey(transformedItem));
-                tx.put(datastoreType, transformedId, transformedItem, true);
+                tx.put(datastoreType, transformedId, transformedItem, WriteTransaction.CREATE_MISSING_PARENTS);
             }
         }
         List<T> removed = new ArrayList<>(orig);
index b733207ed84b4db1dcde420062685afe94bd82d1..e8847f8426e92231e0a362a975cc8227642e7acd 100644 (file)
@@ -18,6 +18,7 @@ import java.util.concurrent.ExecutionException;
 
 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.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
 import org.opendaylight.genius.utils.hwvtep.HwvtepHACache;
@@ -206,7 +207,7 @@ public class NodeConnectedHandler {
         globalNodeMerger.mergeConfigData(nodeBuilder, srcNode, childPath);
         nodeBuilder.addAugmentation(HwvtepGlobalAugmentation.class, dstBuilder.build());
         Node dstNode = nodeBuilder.build();
-        tx.put(CONFIGURATION, childPath, dstNode, true);
+        tx.put(CONFIGURATION, childPath, dstNode, WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     /**
@@ -289,7 +290,7 @@ public class NodeConnectedHandler {
 
         childPsBuilder.addAugmentation(PhysicalSwitchAugmentation.class, dstBuilder.build());
         Node childPSNode = childPsBuilder.build();
-        tx.put(CONFIGURATION, childPsPath, childPSNode, true);
+        tx.put(CONFIGURATION, childPsPath, childPSNode, WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     /**
index 49ce7e0a24e52baab6785de55832c378cf4a1270..1d2106ddfcccb160bb93a694782156a0e5f6b2a6 100644 (file)
@@ -94,7 +94,8 @@ public class ElanForwardingEntriesHandler {
             MacEntry macEntry = new MacEntryBuilder().setMacAddress(mac.getMacAddress()).setIpPrefix(mac.getIpPrefix())
                     .setInterface(interfaceName)
                     .setIsStaticAddress(true).setKey(new MacEntryKey(mac.getMacAddress())).build();
-            tx.put(LogicalDatastoreType.OPERATIONAL, existingMacEntryId, macEntry, true);
+            tx.put(LogicalDatastoreType.OPERATIONAL, existingMacEntryId, macEntry,
+                    WriteTransaction.CREATE_MISSING_PARENTS);
         }
     }
 
@@ -116,7 +117,7 @@ public class ElanForwardingEntriesHandler {
                 macEntry.getMacAddress());
         Optional<MacEntry> existingMacEntry = elanUtils.read(broker, LogicalDatastoreType.OPERATIONAL, macEntryId);
         if (!existingMacEntry.isPresent() && elanUtils.getElanMacTable(elanName) != null) {
-            tx.put(LogicalDatastoreType.OPERATIONAL, macEntryId, macEntry, true);
+            tx.put(LogicalDatastoreType.OPERATIONAL, macEntryId, macEntry, WriteTransaction.CREATE_MISSING_PARENTS);
         }
     }
 
index 8cfcc22fcea13c96fbbc75bac49f502fe78325a2..eb7c98cf44a5d1c72db0eefa35f55ff28108487e 100755 (executable)
@@ -1236,12 +1236,12 @@ public class ElanUtils {
 
         // Add the ElanState in the elan-state operational data-store
         tx.put(LogicalDatastoreType.OPERATIONAL, getElanInstanceOperationalDataPath(elanInstanceName),
-                elanInfo, true);
+                elanInfo, WriteTransaction.CREATE_MISSING_PARENTS);
 
         // Add the ElanMacTable in the elan-mac-table operational data-store
         MacTable elanMacTable = new MacTableBuilder().setKey(new MacTableKey(elanInstanceName)).build();
         tx.put(LogicalDatastoreType.OPERATIONAL, getElanMacTableOperationalDataPath(elanInstanceName),
-                elanMacTable, true);
+                elanMacTable, WriteTransaction.CREATE_MISSING_PARENTS);
 
         ElanTagNameBuilder elanTagNameBuilder = new ElanTagNameBuilder().setElanTag(elanTag)
                 .setKey(new ElanTagNameKey(elanTag)).setName(elanInstanceName);
@@ -1313,19 +1313,6 @@ public class ElanUtils {
         return serviceInfo;
     }
 
-    public static <T extends DataObject> void syncWrite(DataBroker broker, LogicalDatastoreType datastoreType,
-            InstanceIdentifier<T> path, T data) {
-        WriteTransaction tx = broker.newWriteOnlyTransaction();
-        tx.put(datastoreType, path, data, true);
-        CheckedFuture<Void, TransactionCommitFailedException> futures = tx.submit();
-        try {
-            futures.get();
-        } catch (InterruptedException | ExecutionException e) {
-            LOG.error("Error writing to datastore (path, data) : ({}, {})", path, data);
-            throw new RuntimeException(e.getMessage());
-        }
-    }
-
     public static BoundServices getBoundServices(String serviceName, short servicePriority, int flowPriority,
             BigInteger cookie, List<Instruction> instructions) {
         StypeOpenflowBuilder augBuilder = new StypeOpenflowBuilder().setFlowCookie(cookie).setFlowPriority(flowPriority)
index b9707f1b757edadffc0c3c87a0c6d01e31503c5b..3cf06b4eab342f046498144cc6f7cb0ec49af7d8 100644 (file)
@@ -17,6 +17,7 @@ import org.junit.Test;
 import org.mockito.Mockito;
 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.WriteTransaction;
 import org.opendaylight.controller.md.sal.binding.test.AbstractConcurrentDataBrokerTest;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.netvirt.elan.l2gw.ha.HwvtepHAUtil;
@@ -103,7 +104,8 @@ public class LogicalSwitchesCmdTest extends AbstractConcurrentDataBrokerTest {
         originalData = getData(new LogicalSwitches[]{logicalSwitches[0], logicalSwitches[1]});
         updatedData = getData(new LogicalSwitches[]{logicalSwitches[0], logicalSwitches[1], logicalSwitches[2]});
         cmd.mergeOpUpdate(existingData, updatedData, originalData, haNodePath, tx);
-        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[2], logicalSwitches[2], true);
+        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[2], logicalSwitches[2],
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     @Test
@@ -113,8 +115,10 @@ public class LogicalSwitchesCmdTest extends AbstractConcurrentDataBrokerTest {
         updatedData = getData(new LogicalSwitches[]{logicalSwitches[0],
                 logicalSwitches[1], logicalSwitches[2], logicalSwitches[3]});
         cmd.mergeOpUpdate(existingData, updatedData, originalData, haNodePath, tx);
-        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[2], logicalSwitches[2], true);
-        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[3], logicalSwitches[3], true);
+        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[2], logicalSwitches[2],
+                WriteTransaction.CREATE_MISSING_PARENTS);
+        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[3], logicalSwitches[3],
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     @Test
@@ -145,8 +149,10 @@ public class LogicalSwitchesCmdTest extends AbstractConcurrentDataBrokerTest {
         originalData = getData(new LogicalSwitches[]{logicalSwitches[0], logicalSwitches[1]});
         updatedData = getData(new LogicalSwitches[]{logicalSwitches[2], logicalSwitches[3]});
         cmd.mergeOpUpdate(existingData, updatedData, originalData, haNodePath, tx);
-        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[2], logicalSwitches[2], true);
-        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[3], logicalSwitches[3], true);
+        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[2], logicalSwitches[2],
+                WriteTransaction.CREATE_MISSING_PARENTS);
+        Mockito.verify(tx).put(LogicalDatastoreType.OPERATIONAL, ids[3], logicalSwitches[3],
+                WriteTransaction.CREATE_MISSING_PARENTS);
         Mockito.verify(tx).delete(LogicalDatastoreType.OPERATIONAL, ids[0]);
         Mockito.verify(tx).delete(LogicalDatastoreType.OPERATIONAL, ids[1]);
     }
index cf5ce92832c02903450de24ee25cd45f92fa8d48..883813c6a1ce291336b48870b8cd7a68d1613ed9 100644 (file)
@@ -427,7 +427,8 @@ public class FibUtil {
         if (nextHopAdd) {
             RoutePaths routePaths = FibHelper.buildRoutePath(nextHop, label);
             if (writeConfigTxn != null) {
-                writeConfigTxn.put(LogicalDatastoreType.CONFIGURATION, routePathId, routePaths, true);
+                writeConfigTxn.put(LogicalDatastoreType.CONFIGURATION, routePathId, routePaths,
+                        WriteTransaction.CREATE_MISSING_PARENTS);
             } else {
                 MDSALUtil.syncWrite(broker, LogicalDatastoreType.CONFIGURATION, routePathId, routePaths);
             }
index 14c578da988c89928ef6dd6955f511a60b3a62c8..98a89c0023020ea00b55d133a3aecde206725f1c 100755 (executable)
@@ -853,7 +853,8 @@ public class VrfEntryListener extends AsyncDataTreeChangeListenerBase<VrfEntry,
             .child(Node.class, nodeDpn.getKey()).augmentation(FlowCapableNode.class)
             .child(Table.class, new TableKey(terminatingServiceTableFlowEntity.getTableId()))
             .child(Flow.class, flowKey).build();
-        tx.put(LogicalDatastoreType.CONFIGURATION, flowInstanceId, flowbld.build(), true);
+        tx.put(LogicalDatastoreType.CONFIGURATION, flowInstanceId, flowbld.build(),
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     private void removeTunnelTableEntry(BigInteger dpId, long label, WriteTransaction tx) {
@@ -1382,7 +1383,7 @@ public class VrfEntryListener extends AsyncDataTreeChangeListenerBase<VrfEntry,
             .child(Table.class, new TableKey(flow.getTableId())).child(Flow.class, flowKey).build();
 
         if (addOrRemove == NwConstants.ADD_FLOW) {
-            tx.put(LogicalDatastoreType.CONFIGURATION, flowInstanceId, flow, true);
+            tx.put(LogicalDatastoreType.CONFIGURATION, flowInstanceId, flow, WriteTransaction.CREATE_MISSING_PARENTS);
         } else {
             tx.delete(LogicalDatastoreType.CONFIGURATION, flowInstanceId);
         }
index d6bc60da8d2059ff2458e99e9fb226a4e027c01c..a624a9f8f5b03e3c9f1378b9f8fa11bb64382f10 100644 (file)
@@ -206,10 +206,9 @@ public class EvpnDnatFlowProgrammer {
 
             WriteTransaction writeOperTxn = dataBroker.newWriteOnlyTransaction();
             LOG.debug("NAT Service : Add vpnInterface {} to Operational l3vpn:vpn-interfaces ", floatingIpInterface);
-            writeOperTxn.put(LogicalDatastoreType.OPERATIONAL, vpnIfIdentifier, vpnIfBuilder.build(), true);
-            if (writeOperTxn != null) {
-                writeOperTxn.submit();
-            }
+            writeOperTxn.put(LogicalDatastoreType.OPERATIONAL, vpnIfIdentifier, vpnIfBuilder.build(),
+                    WriteTransaction.CREATE_MISSING_PARENTS);
+            writeOperTxn.submit();
         } else {
             LOG.debug("NAT Service : No vpnInterface {} found in Configuration l3vpn:vpn-interfaces ",
                     floatingIpInterface);
index 294845e0934793202518316a21cfedf73398b140..e6e8abf6f82db9f808d8f338af740e1dc2cb9e8c 100644 (file)
@@ -1869,7 +1869,8 @@ public class NatUtil {
                 VpnToDpnListBuilder vpnToDpnListBuilder = new VpnToDpnListBuilder(vpnToDpnList);
                 vpnToDpnListBuilder.setDpnState(VpnToDpnList.DpnState.Active).setVpnInterfaces(vpnInterfaces);
 
-                writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, vpnToDpnListBuilder.build(), true);
+                writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, vpnToDpnListBuilder.build(),
+                        WriteTransaction.CREATE_MISSING_PARENTS);
                 /* If earlier state was inactive, it is considered new DPN coming back to the
                  * same VPN
                  */
@@ -1884,7 +1885,8 @@ public class NatUtil {
                 VpnToDpnListBuilder vpnToDpnListBuilder = new VpnToDpnListBuilder().setDpnId(dpnId);
                 vpnToDpnListBuilder.setDpnState(VpnToDpnList.DpnState.Active).setVpnInterfaces(vpnInterfaces);
 
-                writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, vpnToDpnListBuilder.build(), true);
+                writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, vpnToDpnListBuilder.build(),
+                        WriteTransaction.CREATE_MISSING_PARENTS);
                 newDpnOnVpn = Boolean.TRUE;
             }
         }
@@ -1924,7 +1926,8 @@ public class NatUtil {
                         LOG.warn("vpn interfaces are empty but ip addresses are present for the vpn {} in dpn {}",
                                  vpnName, dpnId);
                     }
-                    writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, dpnInVpnBuilder.build(), true);
+                    writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, dpnInVpnBuilder.build(),
+                            WriteTransaction.CREATE_MISSING_PARENTS);
 
                 } else {
                     writeTxn.delete(LogicalDatastoreType.OPERATIONAL, id.child(org.opendaylight.yang.gen.v1.urn
index 8224ecebf7b3ce29b405c4a2f085f9f35e9bf5a7..53b0fec579d49eb509c7dd8700bd0a89c15235e5 100644 (file)
@@ -337,7 +337,7 @@ public final class QosAlertManager implements Runnable {
                                                           InstanceIdentifier<T> path, T data, DataBroker broker,
                                                           FutureCallback<Void> callback) {
         WriteTransaction tx = broker.newWriteOnlyTransaction();
-        tx.put(datastoreType, path, data, true);
+        tx.put(datastoreType, path, data, WriteTransaction.CREATE_MISSING_PARENTS);
         Futures.addCallback(tx.submit(), callback);
     }
 
index 9944283fcf2743c80be0ddeb56b7fc328919ee26..f0d35c907e29bdc5687dd42c88d4217c030f2d85 100644 (file)
@@ -88,7 +88,7 @@ public class OpenFlow13Provider {
             .child(Flow.class, flow.getKey())
             .build();
 
-        tx.put(LogicalDatastoreType.CONFIGURATION, iidFlow, flow, true);
+        tx.put(LogicalDatastoreType.CONFIGURATION, iidFlow, flow, WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     public void appendFlowForDelete(NodeId node, Flow flow, WriteTransaction tx) {
index 9eb3f3f516a8cd6c294527ccd6d5bf86b603b2a1..4864b096e2a9fedeb655e02b9301c286ebd0d7b3 100644 (file)
@@ -91,7 +91,7 @@ public class MdsalUtils {
             final LogicalDatastoreType logicalDatastoreType, final InstanceIdentifier<D> path, D data)  {
         boolean result = false;
         final WriteTransaction transaction = databroker.newWriteOnlyTransaction();
-        transaction.put(logicalDatastoreType, path, data, true);
+        transaction.put(logicalDatastoreType, path, data, WriteTransaction.CREATE_MISSING_PARENTS);
         CheckedFuture<Void, TransactionCommitFailedException> future = transaction.submit();
         try {
             future.checkedGet();
index 4c5ead821229c27cb0fd5e428d30dcd00047d3e6..aaef68074612baa236c850ac3d7ef449855b33b1 100644 (file)
@@ -63,7 +63,7 @@ public class StateManager implements IStateManager {
             final LogicalDatastoreType logicalDatastoreType, final InstanceIdentifier<D> path, D data)  {
         boolean result = false;
         final WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
-        transaction.put(logicalDatastoreType, path, data, true);
+        transaction.put(logicalDatastoreType, path, data, WriteTransaction.CREATE_MISSING_PARENTS);
         CheckedFuture<Void, TransactionCommitFailedException> future = transaction.submit();
         try {
             future.checkedGet();
index 3f06f23367b2c0d9e7bd2a170f5ac6857a0e98c3..13f9eb1b1f86d6247c412ec5e069690075e5ac01 100644 (file)
@@ -874,7 +874,8 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
         IngressElementCountersRequestConfigBuilder ecrcb = new IngressElementCountersRequestConfigBuilder();
         ecrcb.setCounterRequests(counterRequests);
         requestConfig = ecrcb.build();
-        transaction.put(LogicalDatastoreType.CONFIGURATION, ecrcIdentifier, requestConfig, true);
+        transaction.put(LogicalDatastoreType.CONFIGURATION, ecrcIdentifier, requestConfig,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     private void putEgressElementCounterRequestInConfig(AcquireElementCountersRequestHandlerInput input,
@@ -897,7 +898,8 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
         EgressElementCountersRequestConfigBuilder ecrcb = new EgressElementCountersRequestConfigBuilder();
         ecrcb.setCounterRequests(counterRequests);
         requestConfig = ecrcb.build();
-        transaction.put(LogicalDatastoreType.CONFIGURATION, ecrcIdentifier, requestConfig, true);
+        transaction.put(LogicalDatastoreType.CONFIGURATION, ecrcIdentifier, requestConfig,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     private void creatIngressEelementCountersContainerInConfig(ReadWriteTransaction transaction,
@@ -906,7 +908,8 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
         List<CounterRequests> counterRequests = new ArrayList<CounterRequests>();
         iecrcb.setCounterRequests(counterRequests);
         IngressElementCountersRequestConfig iecrc = iecrcb.build();
-        transaction.put(LogicalDatastoreType.CONFIGURATION, ecrcIdentifier, iecrc, true);
+        transaction.put(LogicalDatastoreType.CONFIGURATION, ecrcIdentifier, iecrc,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     private void creatEgressEelementCountersContainerInConfig(ReadWriteTransaction transaction,
@@ -915,7 +918,8 @@ public class StatisticsImpl implements StatisticsService, ICountersInterfaceChan
         List<CounterRequests> counterRequests = new ArrayList<CounterRequests>();
         eecrcb.setCounterRequests(counterRequests);
         EgressElementCountersRequestConfig eecrc = eecrcb.build();
-        transaction.put(LogicalDatastoreType.CONFIGURATION, ecrcIdentifier, eecrc, true);
+        transaction.put(LogicalDatastoreType.CONFIGURATION, ecrcIdentifier, eecrc,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     private Integer allocateId(String idKey) {
index c70fb7eaa545bd090cd0ae6b5b27809bc504745c..0228f06a2aa4708ae0930328e3401b17a98a7975 100644 (file)
@@ -67,7 +67,7 @@ public class TransactionUtil {
         InstanceIdentifier<T> path,
         T data, FutureCallback<Void> callback) {
         WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
-        tx.put(datastoreType, path, data, true);
+        tx.put(datastoreType, path, data, WriteTransaction.CREATE_MISSING_PARENTS);
         CheckedFuture<Void, TransactionCommitFailedException> futures = tx.submit();
         try {
             futures.get();
index bfd30b56a665db9161a8400ba91286db442c8ce4..1e8044418ad27c5d4bfbf1866e7a5fda341c72b0 100644 (file)
@@ -131,7 +131,8 @@ public class VpnFootprintService implements IVpnFootprintService {
                 VpnToDpnListBuilder vpnToDpnListBuilder = new VpnToDpnListBuilder(vpnToDpnList);
                 vpnToDpnListBuilder.setDpnState(VpnToDpnList.DpnState.Active).setVpnInterfaces(vpnInterfaces);
 
-                writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, vpnToDpnListBuilder.build(), true);
+                writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, vpnToDpnListBuilder.build(),
+                        WriteTransaction.CREATE_MISSING_PARENTS);
                 /* If earlier state was inactive, it is considered new DPN coming back to the
                  * same VPN
                  */
@@ -144,7 +145,8 @@ public class VpnFootprintService implements IVpnFootprintService {
                 VpnToDpnListBuilder vpnToDpnListBuilder = new VpnToDpnListBuilder().setDpnId(dpnId);
                 vpnToDpnListBuilder.setDpnState(VpnToDpnList.DpnState.Active).setVpnInterfaces(vpnInterfaces);
 
-                writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, vpnToDpnListBuilder.build(), true);
+                writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, vpnToDpnListBuilder.build(),
+                        WriteTransaction.CREATE_MISSING_PARENTS);
                 newDpnOnVpn = Boolean.TRUE;
             }
             CheckedFuture<Void, TransactionCommitFailedException> futures = writeTxn.submit();
@@ -256,7 +258,8 @@ public class VpnFootprintService implements IVpnFootprintService {
                         LOG.warn("vpn interfaces are empty but ip addresses are present for the vpn {} in dpn {}",
                                  vpnName, dpnId);
                     }
-                    writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, dpnInVpnBuilder.build(), true);
+                    writeTxn.put(LogicalDatastoreType.OPERATIONAL, id, dpnInVpnBuilder.build(),
+                            WriteTransaction.CREATE_MISSING_PARENTS);
 
                 } else {
                     writeTxn.delete(LogicalDatastoreType.OPERATIONAL, id.child(VpnInterfaces.class,
index 21d356393f59fdb9616b42b4b0051cae5e77019b..190984d967c2e1dd9ceede98b146d6a0e56bab55 100644 (file)
@@ -381,7 +381,7 @@ public class VpnInstanceListener extends AsyncDataTreeChangeListenerBase<VpnInst
         if (writeConfigTxn != null) {
             writeConfigTxn.put(LogicalDatastoreType.CONFIGURATION,
                 VpnOperDsUtils.getVpnInstanceToVpnIdIdentifier(vpnInstanceName),
-                vpnInstanceToVpnId, true);
+                vpnInstanceToVpnId, WriteTransaction.CREATE_MISSING_PARENTS);
         } else {
             TransactionUtil.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION,
                 VpnOperDsUtils.getVpnInstanceToVpnIdIdentifier(vpnInstanceName),
@@ -394,7 +394,7 @@ public class VpnInstanceListener extends AsyncDataTreeChangeListenerBase<VpnInst
         if (writeConfigTxn != null) {
             writeConfigTxn.put(LogicalDatastoreType.CONFIGURATION,
                 VpnUtil.getVpnIdToVpnInstanceIdentifier(vpnId),
-                vpnIdToVpnInstance, true);
+                vpnIdToVpnInstance, WriteTransaction.CREATE_MISSING_PARENTS);
         } else {
             TransactionUtil.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION,
                 VpnUtil.getVpnIdToVpnInstanceIdentifier(vpnId),
index a67025c9f6524e007f4f65df77b4557d616615c9..0365556815fe82a15dc008546a6bdb878b967bfa 100755 (executable)
@@ -686,7 +686,8 @@ public class VpnInterfaceManager extends AsyncDataTreeChangeListenerBase<VpnInte
         WriteTransaction writeOperTxn) {
         VpnInterface opInterface = VpnUtil.getVpnInterface(interfaceName, vpnName, aug, dpnId, Boolean.FALSE);
         InstanceIdentifier<VpnInterface> interfaceId = VpnUtil.getVpnInterfaceIdentifier(interfaceName);
-        writeOperTxn.put(LogicalDatastoreType.OPERATIONAL, interfaceId, opInterface, true);
+        writeOperTxn.put(LogicalDatastoreType.OPERATIONAL, interfaceId, opInterface,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     // TODO Clean up the exception handling
index a64ee700e482b4f164d6ec42ad936de52bded2cf..6d3771b28563587aed86955c00698ca83cbbb815 100755 (executable)
@@ -792,7 +792,7 @@ public class VpnUtil {
     public static <T extends DataObject> void asyncWrite(DataBroker broker, LogicalDatastoreType datastoreType,
         InstanceIdentifier<T> path, T data, FutureCallback<Void> callback) {
         WriteTransaction tx = broker.newWriteOnlyTransaction();
-        tx.put(datastoreType, path, data, true);
+        tx.put(datastoreType, path, data, WriteTransaction.CREATE_MISSING_PARENTS);
         Futures.addCallback(tx.submit(), callback);
     }
 
@@ -825,7 +825,7 @@ public class VpnUtil {
     public static <T extends DataObject> void syncWrite(DataBroker broker, LogicalDatastoreType datastoreType,
         InstanceIdentifier<T> path, T data) {
         WriteTransaction tx = broker.newWriteOnlyTransaction();
-        tx.put(datastoreType, path, data, true);
+        tx.put(datastoreType, path, data, WriteTransaction.CREATE_MISSING_PARENTS);
         CheckedFuture<Void, TransactionCommitFailedException> futures = tx.submit();
         try {
             futures.get();
@@ -1596,10 +1596,8 @@ public class VpnUtil {
                         : getBoundServicesForVpnInterface(dataBroker, vpnInstanceName, interfaceName);
                 writeTxn.put(LogicalDatastoreType.CONFIGURATION, InterfaceUtils.buildServiceId(interfaceName,
                         ServiceIndex.getIndex(NwConstants.L3VPN_SERVICE_NAME, NwConstants.L3VPN_SERVICE_INDEX)),
-                        serviceInfo, true);
-                List<ListenableFuture<Void>> futures = new ArrayList<>();
-                futures.add(writeTxn.submit());
-                return futures;
+                        serviceInfo, WriteTransaction.CREATE_MISSING_PARENTS);
+                return Collections.singletonList(writeTxn.submit());
             });
     }
 
index 26d1b99cade010f3945fc83fbff84d176bfef860..21eecc4b50b84c6e6ab79ab24ac1d707a2badc68 100755 (executable)
@@ -441,7 +441,8 @@ public class InterVpnLinkListener extends AsyncDataTreeChangeListenerBase<InterV
                 .setErrorDescription(errorMsg)
                 .build();
         WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
-        tx.put(LogicalDatastoreType.CONFIGURATION, vpnLinkStateIid, vpnLinkErrorState, true);
+        tx.put(LogicalDatastoreType.CONFIGURATION, vpnLinkStateIid, vpnLinkErrorState,
+                WriteTransaction.CREATE_MISSING_PARENTS);
         tx.submit();
 
         // Sending out an error Notification
index 252d0dc1c5a67b2c738d4758af1ecfc7a3bb646a..4f3a656e6481df8423580662068190b6a67a719d 100644 (file)
@@ -117,7 +117,8 @@ public class SubnetOpDpnManagerTest {
 
         subOpDpnManager.addInterfaceToDpn(subnetId, dpId, infName);
 
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn, true);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn,
+                WriteTransaction.CREATE_MISSING_PARENTS);
 
     }
 
@@ -126,7 +127,8 @@ public class SubnetOpDpnManagerTest {
 
         subOpDpnManager.addPortOpDataEntry(infName, subnetId, dpId);
 
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, portOpIdentifier, portOp, true);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, portOpIdentifier, portOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     @Test
@@ -137,7 +139,8 @@ public class SubnetOpDpnManagerTest {
 
         subOpDpnManager.addPortOpDataEntry(infName, subnetId, dpId);
 
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, portOpIdentifier, portOp, true);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, portOpIdentifier, portOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     @Test
index f8614cf1fc6c90735ee9144ca2ed90cf4263bb7f..dac8a2d66ead7efd7b14d114b195c6e96d2cd623 100644 (file)
@@ -324,9 +324,12 @@ public class VpnSubnetRouteHandlerTest {
 
         vpnSubnetRouteHandler.onPortAddedToSubnet(subnetmap, portId);
 
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, portOpIdentifier, portOp, true);
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn, true);
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, subOpIdentifier, subnetOp, true);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, portOpIdentifier, portOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn,
+                WriteTransaction.CREATE_MISSING_PARENTS);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, subOpIdentifier, subnetOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     @Ignore
@@ -336,8 +339,10 @@ public class VpnSubnetRouteHandlerTest {
         vpnSubnetRouteHandler.onPortRemovedFromSubnet(subnetmap, portId);
 
         verify(mockWriteTx).delete(LogicalDatastoreType.OPERATIONAL, portOpIdentifier);
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn, true);
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, subOpIdentifier, subnetOp, true);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn,
+                WriteTransaction.CREATE_MISSING_PARENTS);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, subOpIdentifier, subnetOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
 
     }
 
@@ -347,9 +352,12 @@ public class VpnSubnetRouteHandlerTest {
 
         vpnSubnetRouteHandler.onInterfaceUp(dpId, interfaceName, subnetId);
 
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, instPortOp, portOp, true);
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn, true);
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, subOpIdentifier, subnetOp, true);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, instPortOp, portOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn,
+                WriteTransaction.CREATE_MISSING_PARENTS);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, subOpIdentifier, subnetOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
     }
 
     @Ignore
@@ -360,7 +368,8 @@ public class VpnSubnetRouteHandlerTest {
 
         // TODO: subnetOpDpnManager is mocked so not sure how this delete ever worked.
         //verify(mockWriteTx).delete(LogicalDatastoreType.OPERATIONAL, dpnOpId);
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, subOpIdentifier, subnetOp, true);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, subOpIdentifier, subnetOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
 
     }
 
@@ -373,8 +382,10 @@ public class VpnSubnetRouteHandlerTest {
 
         vpnSubnetRouteHandler.onSubnetAddedToVpn(subnetmap, true, elanTag);
 
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn, true);
-        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, portOpIdentifier, portOp, true);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, dpnOpId, subnetToDpn,
+                WriteTransaction.CREATE_MISSING_PARENTS);
+        verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, portOpIdentifier, portOp,
+                WriteTransaction.CREATE_MISSING_PARENTS);
 
 
     }