Migrate cloudscaler to mdsal-binding-util 51/91851/3
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 4 Aug 2020 11:56:35 +0000 (13:56 +0200)
committerHema Gopalakrishnan <hema.gopalkrishnan@ericsson.com>
Wed, 12 Aug 2020 18:37:40 +0000 (18:37 +0000)
ManagedNewTransactionRunner is moving to MD-SAL, adjust cloudscaler
to use it from there.

JIRA: GENIUS-292
Change-Id: Iec0e430d787bab5e7c32ccf183ca61f2e7dc13bf
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java
cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java

index 05cd9d9f33daab1ef5c201f1a80c654dc8c13b3a..b4a55573eeb5eedfbc2b388345bb8dc0f31e68f8 100644 (file)
@@ -19,13 +19,14 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 import javax.inject.Inject;
 import javax.inject.Singleton;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunner;
-import org.opendaylight.genius.infra.ManagedNewTransactionRunnerImpl;
 import org.opendaylight.infrautils.utils.concurrent.Executors;
 import org.opendaylight.infrautils.utils.concurrent.LoggingFutures;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
+import org.opendaylight.mdsal.binding.util.Datastore;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunner;
+import org.opendaylight.mdsal.binding.util.ManagedNewTransactionRunnerImpl;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener;
@@ -209,15 +210,19 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService {
                 LOG.info("Cloudscaler Deleting compute node details {}",
                         buildOpenflowNodeIid(computeNode));
                 LOG.info("Cloudscaler Deleting compute node details {}", buildOvsdbNodeId(computeNode));
-                LoggingFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(tx -> {
-                    computeNodeManager.deleteComputeNode(tx, computeNode);
-                }), LOG, "Cloudscaler Failed to delete the compute node");
-                LoggingFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(tx -> {
-                    tx.delete(LogicalDatastoreType.CONFIGURATION, buildOpenflowNodeIid(computeNode));
-                }), LOG, "Cloudscaler Failed to delete the config inventory");
-                LoggingFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(tx -> {
-                    tx.delete(LogicalDatastoreType.CONFIGURATION, buildOvsdbNodeId(computeNode));
-                }), LOG, "Cloudscaler Failed to delete the config topology");
+                // FIXME: why don't we run this as one transaction?!
+                LoggingFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(
+                    Datastore.CONFIGURATION, tx -> {
+                        computeNodeManager.deleteComputeNode(tx, computeNode);
+                    }), LOG, "Cloudscaler Failed to delete the compute node");
+                LoggingFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(
+                    Datastore.CONFIGURATION, tx -> {
+                        tx.delete(buildOpenflowNodeIid(computeNode));
+                    }), LOG, "Cloudscaler Failed to delete the config inventory");
+                LoggingFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(
+                    Datastore.CONFIGURATION, tx -> {
+                        tx.delete(buildOvsdbNodeId(computeNode));
+                    }), LOG, "Cloudscaler Failed to delete the config topology");
             }
         } catch (Throwable e) {
             LOG.error("Cloudscaler Failed to do scale in end {} ", input, e);
@@ -313,10 +318,10 @@ public class CloudscalerRpcServiceImpl implements CloudscalerRpcService {
                                         .child(TransportZone.class, zone.key())
                                         .child(Vteps.class, vteps.key());
                                 LOG.error("Cloudscaler deleting dpn {}", vteps);
-                                LoggingFutures.addErrorLogging(
-                                        txRunner.callWithNewReadWriteTransactionAndSubmit(tx -> {
-                                            tx.delete(LogicalDatastoreType.CONFIGURATION, dpnVtepIid);
-                                        }), LOG, "Cloudscaler Failed to delete the itm tep");
+                                LoggingFutures.addErrorLogging(txRunner.callWithNewReadWriteTransactionAndSubmit(
+                                    Datastore.CONFIGURATION, tx -> {
+                                        tx.delete(dpnVtepIid);
+                                    }), LOG, "Cloudscaler Failed to delete the itm tep");
                             }
                         }
                     }
index 086d3a8123a201d411e551ba50833adc326b8cbb..8d28b65af0b8901e4ec416c8e17cdd34346d3db0 100644 (file)
@@ -22,6 +22,8 @@ import org.opendaylight.infrautils.caches.CacheProvider;
 import org.opendaylight.infrautils.utils.concurrent.Executors;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadWriteTransaction;
+import org.opendaylight.mdsal.binding.util.Datastore.Configuration;
+import org.opendaylight.mdsal.binding.util.TypedReadWriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.cloudscaler.rpcs.rev171220.ComputeNodes;
@@ -99,8 +101,8 @@ public class ComputeNodeManager {
         return computeNodeCache.get(computeIid).orElse(null);
     }
 
-    public void deleteComputeNode(ReadWriteTransaction tx, ComputeNode computeNode) {
-        tx.delete(LogicalDatastoreType.CONFIGURATION, buildComputeNodeIid(computeNode.getComputeName()));
+    public void deleteComputeNode(TypedReadWriteTransaction<@NonNull Configuration> tx, ComputeNode computeNode) {
+        tx.delete(buildComputeNodeIid(computeNode.getComputeName()));
     }
 
     public void add(@NonNull Node node) throws ExecutionException, InterruptedException {