bug 8673 physical switch node is not removed
[ovsdb.git] / hwvtepsouthbound / hwvtepsouthbound-impl / src / main / java / org / opendaylight / ovsdb / hwvtepsouthbound / transactions / md / HwvtepGlobalRemoveCommand.java
index 8ee8917469dd3a353bff2ab0158574af38388884..74ef97d9178dfcee235db594d24d0c9aabc4fa5a 100644 (file)
@@ -18,6 +18,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hw
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.Managers;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.Switches;
 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.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -28,15 +29,22 @@ public class HwvtepGlobalRemoveCommand extends AbstractTransactionCommand {
     private static final Logger LOG = LoggerFactory.getLogger(HwvtepGlobalRemoveCommand.class);
     private static final long ONE_CONNECTED_MANAGER = 1;
     private static final long ONE_ACTIVE_CONNECTION_IN_PASSIVE_MODE = 1;
+    private final InstanceIdentifier<Node> nodeInstanceIdentifier;
 
     public HwvtepGlobalRemoveCommand(HwvtepConnectionInstance key, TableUpdates updates, DatabaseSchema dbSchema) {
         super(key, updates, dbSchema);
+        this.nodeInstanceIdentifier = key.getInstanceIdentifier();
+    }
+
+    public HwvtepGlobalRemoveCommand(InstanceIdentifier<Node> nodeInstanceIdentifier) {
+        super(null, null, null);
+        this.nodeInstanceIdentifier = nodeInstanceIdentifier;
     }
 
     @Override
     public void execute(ReadWriteTransaction transaction) {
         CheckedFuture<Optional<Node>, ReadFailedException> hwvtepGlobalFuture = transaction.read(
-                LogicalDatastoreType.OPERATIONAL, getOvsdbConnectionInstance().getInstanceIdentifier());
+                LogicalDatastoreType.OPERATIONAL, nodeInstanceIdentifier);
         try {
             Optional<Node> hwvtepGlobalOptional = hwvtepGlobalFuture.get();
             if (hwvtepGlobalOptional.isPresent()) {
@@ -56,8 +64,7 @@ public class HwvtepGlobalRemoveCommand extends AbstractTransactionCommand {
                     } else {
                         LOG.warn("{} had no HwvtepGlobalAugmentation", hwvtepNode.getNodeId().getValue());
                     }
-                    transaction.delete(LogicalDatastoreType.OPERATIONAL,
-                            getOvsdbConnectionInstance().getInstanceIdentifier());
+                    transaction.delete(LogicalDatastoreType.OPERATIONAL, nodeInstanceIdentifier);
                 } else {
                     LOG.debug("Other southbound plugin instances in cluster are connected to the device,"
                             + " not deleting OvsdbNode form data store.");