From 8eb6122b76dcbe998f20aa1b1b980e3a8f177c30 Mon Sep 17 00:00:00 2001 From: "K.V Suneelu Verma" Date: Mon, 17 Apr 2017 18:15:14 +0530 Subject: [PATCH] bug 8257 handling back to back logical switches Making logical switches update/remove participate in dependency resolution workflow. When logical switch delete requests comes it is held until the previous logical switch add request finishes and vice versa. Change-Id: I5d158759a977f7a0f66dcafd297c4d2f06fa3fd4 Signed-off-by: K.V Suneelu Verma --- .../transact/LogicalSwitchRemoveCommand.java | 28 +++++++++++++++-- .../transact/LogicalSwitchUpdateCommand.java | 31 +++++++++++++++---- 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/LogicalSwitchRemoveCommand.java b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/LogicalSwitchRemoveCommand.java index 48abea148..cdc25f81d 100644 --- a/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/LogicalSwitchRemoveCommand.java +++ b/hwvtepsouthbound/hwvtepsouthbound-impl/src/main/java/org/opendaylight/ovsdb/hwvtepsouthbound/transact/LogicalSwitchRemoveCommand.java @@ -24,6 +24,7 @@ import org.opendaylight.ovsdb.lib.schema.typed.TyperUtils; import org.opendaylight.ovsdb.schema.hardwarevtep.LogicalSwitch; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.HwvtepGlobalAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LogicalSwitches; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.RemoteMcastMacs; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.Identifiable; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -74,9 +75,30 @@ public class LogicalSwitchRemoveCommand extends AbstractTransactCommand instanceIdentifier, List lswitchList) { + private void removeLogicalSwitch(final TransactionBuilder transaction, + final InstanceIdentifier nodeIid, final List lswitchList) { for (LogicalSwitches lswitch: lswitchList) { + InstanceIdentifier lsKey = nodeIid.augmentation(HwvtepGlobalAugmentation.class). + child(LogicalSwitches.class, lswitch.getKey()); + onConfigUpdate(transaction, nodeIid, lswitch, lsKey); + } + } + + @Override + public void onConfigUpdate(final TransactionBuilder transaction, + final InstanceIdentifier nodeIid, + final LogicalSwitches lswitch, + final InstanceIdentifier lsKey, + final Object... extraData) { + processDependencies(null, transaction, nodeIid, lsKey, lswitch); + } + + @Override + public void doDeviceTransaction(final TransactionBuilder transaction, + final InstanceIdentifier instanceIdentifier, + final LogicalSwitches lswitch, + final InstanceIdentifier lsKey, + final Object... extraData) { LOG.debug("Removing logcial switch named: {}", lswitch.getHwvtepNodeName().getValue()); Optional operationalSwitchOptional = getOperationalState().getLogicalSwitches(instanceIdentifier, lswitch.getKey()); @@ -88,11 +110,11 @@ public class LogicalSwitchRemoveCommand extends AbstractTransactCommand instanceIdentifier, List lswitchList) { + private void updateLogicalSwitch(final TransactionBuilder transaction, + final InstanceIdentifier nodeIid, final List lswitchList) { for (LogicalSwitches lswitch: lswitchList) { - InstanceIdentifier lsKey = instanceIdentifier. - augmentation(HwvtepGlobalAugmentation.class).child(LogicalSwitches.class, lswitch.getKey()); + InstanceIdentifier lsKey = nodeIid.augmentation(HwvtepGlobalAugmentation.class). + child(LogicalSwitches.class, lswitch.getKey()); + onConfigUpdate(transaction, nodeIid, lswitch, lsKey); + } + } + + @Override + public void onConfigUpdate(final TransactionBuilder transaction, + final InstanceIdentifier nodeIid, + final LogicalSwitches lswitch, + final InstanceIdentifier lsKey, + final Object... extraData) { + processDependencies(null, transaction, nodeIid, lsKey, lswitch); + } + + @Override + public void doDeviceTransaction(final TransactionBuilder transaction, + final InstanceIdentifier instanceIdentifier, + final LogicalSwitches lswitch, + final InstanceIdentifier lsKey, + final Object... extraData) { LOG.debug("Creating logical switch named: {}", lswitch.getHwvtepNodeName()); Optional operationalSwitchOptional = getOperationalState().getLogicalSwitches(instanceIdentifier, lswitch.getKey()); @@ -69,7 +89,7 @@ public class LogicalSwitchUpdateCommand extends AbstractTransactCommand