import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.MoreExecutors;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import io.netty.util.concurrent.EventExecutor;
import java.time.Duration;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executor;
-import java.util.concurrent.ScheduledExecutorService;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.opendaylight.aaa.encrypt.AAAEncryptionService;
import org.opendaylight.controller.cluster.ActorSystemProvider;
-import org.opendaylight.controller.config.threadpool.ScheduledThreadPool;
-import org.opendaylight.controller.config.threadpool.ThreadPool;
import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.DataObjectModification;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier;
-import org.opendaylight.netconf.client.NetconfClientDispatcher;
+import org.opendaylight.netconf.client.NetconfClientFactory;
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;
+import org.opendaylight.netconf.common.NetconfTimer;
import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologySetup;
-import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologySetup.NetconfTopologySetupBuilder;
import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologyUtils;
import org.opendaylight.netconf.topology.spi.NetconfClientConfigurationBuilderFactory;
import org.opendaylight.netconf.topology.spi.NetconfNodeUtils;
import org.opendaylight.netconf.topology.spi.NetconfTopologyRPCProvider;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev221225.NetconfNode;
+import org.opendaylight.netconf.topology.spi.NetconfTopologySchemaAssembler;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev231121.NetconfNode;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
private final BaseNetconfSchemas baseSchemas;
private final DataBroker dataBroker;
private final ClusterSingletonServiceProvider clusterSingletonServiceProvider;
- private final ScheduledExecutorService keepaliveExecutor;
- private final Executor processingExecutor;
+ private final NetconfTimer timer;
+ private final NetconfTopologySchemaAssembler schemaAssembler;
private final ActorSystem actorSystem;
- private final EventExecutor eventExecutor;
- private final NetconfClientDispatcher clientDispatcher;
+ private final NetconfClientFactory clientFactory;
private final String topologyId;
private final Duration writeTxIdleTimeout;
private final DOMMountPointService mountPointService;
public NetconfTopologyManager(@Reference final BaseNetconfSchemas baseSchemas,
@Reference final DataBroker dataBroker,
@Reference final ClusterSingletonServiceProvider clusterSingletonServiceProvider,
- @Reference(target = "(type=global-netconf-ssh-scheduled-executor)")
- final ScheduledThreadPool keepaliveExecutor,
- @Reference(target = "(type=global-netconf-processing-executor)") final ThreadPool processingExecutor,
+ @Reference final NetconfTimer timer,
+ @Reference final NetconfTopologySchemaAssembler schemaAssembler,
@Reference final ActorSystemProvider actorSystemProvider,
- @Reference(target = "(type=global-event-executor)") final EventExecutor eventExecutor,
- @Reference(target = "(type=netconf-client-dispatcher)") final NetconfClientDispatcher clientDispatcher,
+ @Reference(target = "(type=netconf-client-factory)") final NetconfClientFactory clientFactory,
@Reference final DOMMountPointService mountPointService,
@Reference final AAAEncryptionService encryptionService,
@Reference final RpcProviderService rpcProviderService,
@Reference final SchemaResourceManager resourceManager,
@Reference final NetconfClientConfigurationBuilderFactory builderFactory,
final Configuration configuration) {
- this(baseSchemas, dataBroker, clusterSingletonServiceProvider, keepaliveExecutor.getExecutor(),
- processingExecutor.getExecutor(), actorSystemProvider.getActorSystem(), eventExecutor, clientDispatcher,
- mountPointService, encryptionService, rpcProviderService, deviceActionFactory, resourceManager,
- builderFactory, configuration.topology$_$id(),
+ this(baseSchemas, dataBroker, clusterSingletonServiceProvider, timer, schemaAssembler,
+ actorSystemProvider.getActorSystem(), clientFactory, mountPointService, encryptionService,
+ rpcProviderService, deviceActionFactory, resourceManager, builderFactory, configuration.topology$_$id(),
Uint16.valueOf(configuration.write$_$transaction$_$idle$_$timeout()));
}
@Inject
public NetconfTopologyManager(final BaseNetconfSchemas baseSchemas, final DataBroker dataBroker,
- final ClusterSingletonServiceProvider clusterSingletonServiceProvider,
- final ScheduledThreadPool keepaliveExecutor, final ThreadPool processingExecutor,
- final ActorSystemProvider actorSystemProvider, final EventExecutor eventExecutor,
- final NetconfClientDispatcher clientDispatcher, final DOMMountPointService mountPointService,
+ final ClusterSingletonServiceProvider clusterSingletonServiceProvider, final NetconfTimer timer,
+ final NetconfTopologySchemaAssembler schemaAssembler, final ActorSystemProvider actorSystemProvider,
+ final NetconfClientFactory clientFactory, final DOMMountPointService mountPointService,
final AAAEncryptionService encryptionService, final RpcProviderService rpcProviderService,
final DeviceActionFactory deviceActionFactory, final SchemaResourceManager resourceManager,
final NetconfClientConfigurationBuilderFactory builderFactory) {
- this(baseSchemas, dataBroker, clusterSingletonServiceProvider, keepaliveExecutor.getExecutor(),
- processingExecutor.getExecutor(), actorSystemProvider.getActorSystem(), eventExecutor, clientDispatcher,
- mountPointService, encryptionService, rpcProviderService, deviceActionFactory, resourceManager,
- builderFactory, NetconfNodeUtils.DEFAULT_TOPOLOGY_NAME, Uint16.ZERO);
+ this(baseSchemas, dataBroker, clusterSingletonServiceProvider, timer, schemaAssembler,
+ actorSystemProvider.getActorSystem(), clientFactory, mountPointService, encryptionService,
+ rpcProviderService, deviceActionFactory, resourceManager, builderFactory,
+ NetconfNodeUtils.DEFAULT_TOPOLOGY_NAME, Uint16.ZERO);
}
@SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR",
justification = "Non-final for mocking, but we register for DTCL and that leaks 'this'")
public NetconfTopologyManager(final BaseNetconfSchemas baseSchemas, final DataBroker dataBroker,
- final ClusterSingletonServiceProvider clusterSingletonServiceProvider,
- final ScheduledExecutorService keepaliveExecutor, final Executor processingExecutor,
- final ActorSystem actorSystem, final EventExecutor eventExecutor,
- final NetconfClientDispatcher clientDispatcher, final DOMMountPointService mountPointService,
+ final ClusterSingletonServiceProvider clusterSingletonServiceProvider, final NetconfTimer timer,
+ final NetconfTopologySchemaAssembler schemaAssembler, final ActorSystem actorSystem,
+ final NetconfClientFactory clientFactory, final DOMMountPointService mountPointService,
final AAAEncryptionService encryptionService, final RpcProviderService rpcProviderService,
final DeviceActionFactory deviceActionFactory, final SchemaResourceManager resourceManager,
final NetconfClientConfigurationBuilderFactory builderFactory, final String topologyId,
this.baseSchemas = requireNonNull(baseSchemas);
this.dataBroker = requireNonNull(dataBroker);
this.clusterSingletonServiceProvider = requireNonNull(clusterSingletonServiceProvider);
- this.keepaliveExecutor = requireNonNull(keepaliveExecutor);
- this.processingExecutor = requireNonNull(processingExecutor);
+ this.timer = requireNonNull(timer);
+ this.schemaAssembler = requireNonNull(schemaAssembler);
this.actorSystem = requireNonNull(actorSystem);
- this.eventExecutor = requireNonNull(eventExecutor);
- this.clientDispatcher = requireNonNull(clientDispatcher);
+ this.clientFactory = requireNonNull(clientFactory);
this.topologyId = requireNonNull(topologyId);
writeTxIdleTimeout = Duration.ofSeconds(writeTransactionIdleTimeout.toJava());
this.mountPointService = mountPointService;
final NetconfNode netconfNode = node.augmentation(NetconfNode.class);
final RemoteDeviceId deviceId = NetconfNodeUtils.toRemoteDeviceId(node.getNodeId(), netconfNode);
- return NetconfTopologySetupBuilder.create()
- .setClusterSingletonServiceProvider(clusterSingletonServiceProvider)
- .setBaseSchemas(baseSchemas)
- .setDataBroker(dataBroker)
- .setInstanceIdentifier(instanceIdentifier)
- .setNode(node)
- .setActorSystem(actorSystem)
- .setEventExecutor(eventExecutor)
- .setKeepaliveExecutor(keepaliveExecutor)
- .setProcessingExecutor(processingExecutor)
- .setTopologyId(topologyId)
- .setNetconfClientDispatcher(clientDispatcher)
- .setSchemaResourceDTO(resourceManager.getSchemaResources(netconfNode.getSchemaCacheDirectory(),
- deviceId))
- .setIdleTimeout(writeTxIdleTimeout)
- .build();
+ return NetconfTopologySetup.builder()
+ .setClusterSingletonServiceProvider(clusterSingletonServiceProvider)
+ .setBaseSchemas(baseSchemas)
+ .setDataBroker(dataBroker)
+ .setInstanceIdentifier(instanceIdentifier)
+ .setNode(node)
+ .setActorSystem(actorSystem)
+ .setTimer(timer)
+ .setSchemaAssembler(schemaAssembler)
+ .setTopologyId(topologyId)
+ .setNetconfClientFactory(clientFactory)
+ .setSchemaResourceDTO(resourceManager.getSchemaResources(netconfNode.getSchemaCacheDirectory(), deviceId))
+ .setIdleTimeout(writeTxIdleTimeout)
+ .build();
}
}