From eea0f61df1c0453f5e16aeb36d6880956d2daf86 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 4 Aug 2020 13:56:35 +0200 Subject: [PATCH] Migrate cloudscaler to mdsal-binding-util ManagedNewTransactionRunner is moving to MD-SAL, adjust cloudscaler to use it from there. JIRA: GENIUS-292 Change-Id: Iec0e430d787bab5e7c32ccf183ca61f2e7dc13bf Signed-off-by: Robert Varga --- .../rpcservice/CloudscalerRpcServiceImpl.java | 35 +++++++++++-------- .../rpcservice/ComputeNodeManager.java | 6 ++-- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java index 05cd9d9f3..b4a55573e 100644 --- a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java +++ b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/CloudscalerRpcServiceImpl.java @@ -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"); } } } diff --git a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java index 086d3a812..8d28b65af 100644 --- a/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java +++ b/cloudscaler/impl/src/main/java/org/opendaylight/genius/cloudscaler/rpcservice/ComputeNodeManager.java @@ -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 { -- 2.36.6