From 21f1f1824eea4eebd0e2b886746ea9ad552338b0 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 4 Jul 2023 19:01:14 +0200 Subject: [PATCH] Reuse NetconfTopologySetup NetconfTopologySetup pretty much all the context we need, there is just no point in passing down individual services. JIRA: NETCONF-1039 Change-Id: I21ec0fad9e267df06e5eb4dab11d2962feb2eee4 Signed-off-by: Robert Varga --- .../singleton/impl/NetconfNodeContext.java | 37 ++++--------------- .../impl/NetconfTopologyContext.java | 23 +++--------- .../impl/NetconfTopologyManager.java | 13 +------ 3 files changed, 16 insertions(+), 57 deletions(-) diff --git a/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeContext.java b/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeContext.java index dbbf12bdcb..19f360030d 100644 --- a/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeContext.java +++ b/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeContext.java @@ -15,14 +15,7 @@ import akka.dispatch.OnComplete; import akka.pattern.Patterns; import akka.util.Timeout; import com.google.common.annotations.VisibleForTesting; -import io.netty.util.concurrent.EventExecutor; -import java.util.concurrent.Executor; -import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; -import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.mdsal.dom.api.DOMMountPointService; -import org.opendaylight.netconf.client.NetconfClientDispatcher; -import org.opendaylight.netconf.client.mdsal.api.BaseNetconfSchemas; import org.opendaylight.netconf.client.mdsal.api.DeviceActionFactory; import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceId; import org.opendaylight.netconf.client.mdsal.api.SchemaResourceManager; @@ -40,15 +33,9 @@ import org.slf4j.LoggerFactory; final class NetconfNodeContext implements AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(NetconfNodeContext.class); - private final NetconfClientDispatcher clientDispatcher; - private final EventExecutor eventExecutor; private final DeviceActionFactory deviceActionFactory; private final SchemaResourceManager schemaManager; - private final BaseNetconfSchemas baseSchemas; private final NetconfClientConfigurationBuilderFactory builderFactory; - private final ScheduledThreadPool keepaliveExecutor; - private final Executor processingExecutor; - private final DataBroker dataBroker; private final DOMMountPointService mountPointService; private final RemoteDeviceId remoteDeviceId; private final NetconfTopologySetup setup; @@ -59,25 +46,16 @@ final class NetconfNodeContext implements AutoCloseable { private NetconfNodeManager netconfNodeManager; private NetconfNodeHandler nodeHandler; - NetconfNodeContext(final NetconfClientDispatcher clientDispatcher, final EventExecutor eventExecutor, - final ScheduledThreadPool keepaliveExecutor, final ThreadPool processingExecutor, - final SchemaResourceManager schemaManager, final DataBroker dataBroker, + NetconfNodeContext(final NetconfTopologySetup setup, final SchemaResourceManager schemaManager, final DOMMountPointService mountPointService, final NetconfClientConfigurationBuilderFactory builderFactory, - final DeviceActionFactory deviceActionFactory, final BaseNetconfSchemas baseSchemas, - final RemoteDeviceId remoteDeviceId, final NetconfTopologySetup setup, + final DeviceActionFactory deviceActionFactory, final RemoteDeviceId remoteDeviceId, final Timeout actorResponseWaitTime) { - this.clientDispatcher = requireNonNull(clientDispatcher); - this.eventExecutor = requireNonNull(eventExecutor); - this.keepaliveExecutor = requireNonNull(keepaliveExecutor); - this.processingExecutor = processingExecutor.getExecutor(); + this.setup = requireNonNull(setup); this.schemaManager = requireNonNull(schemaManager); - this.dataBroker = requireNonNull(dataBroker); this.mountPointService = requireNonNull(mountPointService); this.builderFactory = requireNonNull(builderFactory); this.deviceActionFactory = deviceActionFactory; - this.baseSchemas = requireNonNull(baseSchemas); this.remoteDeviceId = requireNonNull(remoteDeviceId); - this.setup = requireNonNull(setup); this.actorResponseWaitTime = actorResponseWaitTime; registerNodeManager(); } @@ -163,9 +141,10 @@ final class NetconfNodeContext implements AutoCloseable { // Instantiate the handler ... masterSalFacade = createSalFacade(netconfNode.requireLockDatastore()); - nodeHandler = new NetconfNodeHandler(clientDispatcher, eventExecutor, keepaliveExecutor.getExecutor(), - baseSchemas, schemaManager, processingExecutor, builderFactory, deviceActionFactory, masterSalFacade, - remoteDeviceId, configNode.getNodeId(), netconfNode, nodeOptional); + nodeHandler = new NetconfNodeHandler(setup.getNetconfClientDispatcher(), setup.getEventExecutor(), + setup.getKeepaliveExecutor(), setup.getBaseSchemas(), schemaManager, setup.getProcessingExecutor(), + builderFactory, deviceActionFactory, masterSalFacade, remoteDeviceId, configNode.getNodeId(), netconfNode, + nodeOptional); nodeHandler.connect(); } @@ -179,6 +158,6 @@ final class NetconfNodeContext implements AutoCloseable { @VisibleForTesting MasterSalFacade createSalFacade(final boolean lockDatastore) { return new MasterSalFacade(remoteDeviceId, setup.getActorSystem(), masterActorRef, actorResponseWaitTime, - mountPointService, dataBroker, lockDatastore); + mountPointService, setup.getDataBroker(), lockDatastore); } } diff --git a/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java b/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java index 677e807314..1b30f41375 100644 --- a/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java +++ b/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java @@ -12,16 +12,10 @@ import static java.util.Objects.requireNonNull; import akka.util.Timeout; import com.google.common.annotations.VisibleForTesting; import com.google.common.util.concurrent.ListenableFuture; -import io.netty.util.concurrent.EventExecutor; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; -import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService; import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier; -import org.opendaylight.netconf.client.NetconfClientDispatcher; -import org.opendaylight.netconf.client.mdsal.api.BaseNetconfSchemas; import org.opendaylight.netconf.client.mdsal.api.DeviceActionFactory; import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceId; import org.opendaylight.netconf.client.mdsal.api.SchemaResourceManager; @@ -44,21 +38,16 @@ class NetconfTopologyContext implements ClusterSingletonService, AutoCloseable { private RemoteDeviceId remoteDeviceId; - NetconfTopologyContext(final NetconfClientDispatcher clientDispatcher, - final EventExecutor eventExecutor, final ScheduledThreadPool keepaliveExecutor, - final ThreadPool processingExecutor, final SchemaResourceManager schemaManager, - final DataBroker dataBroker, final DOMMountPointService mountPointService, - final NetconfClientConfigurationBuilderFactory builderFactory, - final DeviceActionFactory deviceActionFactory, final BaseNetconfSchemas baseSchemas, - final Timeout actorResponseWaitTime, final ServiceGroupIdentifier serviceGroupIdent, - final NetconfTopologySetup setup) { + NetconfTopologyContext(final SchemaResourceManager schemaManager, + final DOMMountPointService mountPointService, final NetconfClientConfigurationBuilderFactory builderFactory, + final DeviceActionFactory deviceActionFactory, final Timeout actorResponseWaitTime, + final ServiceGroupIdentifier serviceGroupIdent, final NetconfTopologySetup setup) { this.serviceGroupIdent = requireNonNull(serviceGroupIdent); remoteDeviceId = NetconfNodeUtils.toRemoteDeviceId(setup.getNode().getNodeId(), setup.getNode().augmentation(NetconfNode.class)); - topologySingleton = new NetconfNodeContext(clientDispatcher, - eventExecutor, keepaliveExecutor, processingExecutor, schemaManager, dataBroker, mountPointService, - builderFactory, deviceActionFactory, baseSchemas, remoteDeviceId, setup, actorResponseWaitTime); + topologySingleton = new NetconfNodeContext(setup, schemaManager, mountPointService, builderFactory, + deviceActionFactory, remoteDeviceId, actorResponseWaitTime); } @VisibleForTesting diff --git a/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java b/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java index 228c94b730..1568e43c60 100644 --- a/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java +++ b/apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java @@ -82,9 +82,7 @@ public class NetconfTopologyManager private final DOMRpcProviderService rpcProviderRegistry; private final DOMActionProviderService actionProviderRegistry; private final ClusterSingletonServiceProvider clusterSingletonServiceProvider; - private final ScheduledThreadPool keepaliveExecutor; private final ScheduledExecutorService keepaliveExecutorService; - private final ThreadPool processingExecutor; private final Executor processingExecutorService; private final ActorSystem actorSystem; private final EventExecutor eventExecutor; @@ -121,9 +119,7 @@ public class NetconfTopologyManager this.rpcProviderRegistry = requireNonNull(rpcProviderRegistry); actionProviderRegistry = requireNonNull(actionProviderService); this.clusterSingletonServiceProvider = requireNonNull(clusterSingletonServiceProvider); - this.keepaliveExecutor = keepaliveExecutor; keepaliveExecutorService = keepaliveExecutor.getExecutor(); - this.processingExecutor = processingExecutor; processingExecutorService = processingExecutor.getExecutor(); actorSystem = requireNonNull(actorSystemProvider).getActorSystem(); this.eventExecutor = requireNonNull(eventExecutor); @@ -230,13 +226,8 @@ public class NetconfTopologyManager protected NetconfTopologyContext newNetconfTopologyContext(final NetconfTopologySetup setup, final ServiceGroupIdentifier serviceGroupIdent, final Timeout actorResponseWaitTime, final DeviceActionFactory deviceActionFact) { - return new NetconfTopologyContext(setup.getNetconfClientDispatcher(), - setup.getEventExecutor(), keepaliveExecutor, - processingExecutor, resourceManager, - dataBroker, mountPointService, - builderFactory, deviceActionFactory, - baseSchemas, actorResponseWaitTime, - serviceGroupIdent, setup); + return new NetconfTopologyContext(resourceManager, mountPointService, builderFactory, deviceActionFactory, + actorResponseWaitTime, serviceGroupIdent, setup); } @Override -- 2.36.6