MD-SAL API integration
[ovsdb.git] / hwvtepsouthbound / hwvtepsouthbound-impl / src / main / java / org / opendaylight / ovsdb / hwvtepsouthbound / transactions / md / HwvtepGlobalRemoveCommand.java
index 8ee8917469dd3a353bff2ab0158574af38388884..0838b3df54b3f77b34cfc6350c4f4f0e360552ab 100644 (file)
@@ -8,9 +8,11 @@
 
 package org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md;
 
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance;
 import org.opendaylight.ovsdb.lib.message.TableUpdates;
 import org.opendaylight.ovsdb.lib.schema.DatabaseSchema;
@@ -18,30 +20,35 @@ 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;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-
 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());
+        FluentFuture<Optional<Node>> hwvtepGlobalFuture = transaction.read(
+                LogicalDatastoreType.OPERATIONAL, nodeInstanceIdentifier);
         try {
             Optional<Node> hwvtepGlobalOptional = hwvtepGlobalFuture.get();
             if (hwvtepGlobalOptional.isPresent()) {
                 Node hwvtepNode = hwvtepGlobalOptional.get();
-                HwvtepGlobalAugmentation hgAugmentation = hwvtepNode.getAugmentation(HwvtepGlobalAugmentation.class);
+                HwvtepGlobalAugmentation hgAugmentation = hwvtepNode.augmentation(HwvtepGlobalAugmentation.class);
                 if (checkIfOnlyConnectedManager(hgAugmentation)) {
                     if (hgAugmentation != null) {
                         if (hgAugmentation.getSwitches() != null) {
@@ -56,20 +63,18 @@ 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.");
                 }
             }
-        } catch (Exception e) {
+        } catch (InterruptedException | ExecutionException e) {
             LOG.warn("Failure to delete ovsdbNode", e);
         }
     }
 
     private boolean checkIfOnlyConnectedManager(HwvtepGlobalAugmentation hgAugmentation) {
-        Managers onlyConnectedManager = null;
         if (hgAugmentation != null) {
             int connectedManager = 0;
             if (hgAugmentation.getManagers() != null) {
@@ -79,7 +84,6 @@ public class HwvtepGlobalRemoveCommand extends AbstractTransactionCommand {
                         if (connectedManager > ONE_CONNECTED_MANAGER) {
                             return false;
                         }
-                        onlyConnectedManager = manager;
                     }
                 }
             }