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.Timer;
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.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 Timer timer;
+ private final NetconfTopologySchemaAssembler schemaAssembler;
private final ActorSystem actorSystem;
private final NetconfClientFactory clientFactory;
private final String topologyId;
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(target = "(type=global-timer)") final Timer timer,
+ @Reference final NetconfTopologySchemaAssembler schemaAssembler,
@Reference final ActorSystemProvider actorSystemProvider,
@Reference(target = "(type=netconf-client-factory)") final NetconfClientFactory clientFactory,
@Reference final DOMMountPointService mountPointService,
@Reference final SchemaResourceManager resourceManager,
@Reference final NetconfClientConfigurationBuilderFactory builderFactory,
final Configuration configuration) {
- this(baseSchemas, dataBroker, clusterSingletonServiceProvider, keepaliveExecutor.getExecutor(),
- processingExecutor.getExecutor(), actorSystemProvider.getActorSystem(), clientFactory, mountPointService,
- encryptionService, rpcProviderService, deviceActionFactory, resourceManager, builderFactory,
- configuration.topology$_$id(), Uint16.valueOf(configuration.write$_$transaction$_$idle$_$timeout()));
+ 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 NetconfClientFactory clientFactory,
- final DOMMountPointService mountPointService, final AAAEncryptionService encryptionService,
- final RpcProviderService rpcProviderService, final DeviceActionFactory deviceActionFactory,
- final SchemaResourceManager resourceManager,
+ final ClusterSingletonServiceProvider clusterSingletonServiceProvider, final Timer 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(), clientFactory,
- 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 NetconfClientFactory clientFactory,
- final DOMMountPointService mountPointService, final AAAEncryptionService encryptionService,
- final RpcProviderService rpcProviderService, final DeviceActionFactory deviceActionFactory,
- final SchemaResourceManager resourceManager, final NetconfClientConfigurationBuilderFactory builderFactory,
- final String topologyId, final Uint16 writeTransactionIdleTimeout) {
+ final ClusterSingletonServiceProvider clusterSingletonServiceProvider, final Timer 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,
+ final Uint16 writeTransactionIdleTimeout) {
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.clientFactory = requireNonNull(clientFactory);
this.topologyId = requireNonNull(topologyId);
.setInstanceIdentifier(instanceIdentifier)
.setNode(node)
.setActorSystem(actorSystem)
- .setKeepaliveExecutor(keepaliveExecutor)
- .setProcessingExecutor(processingExecutor)
+ .setTimer(timer)
+ .setSchemaAssembler(schemaAssembler)
.setTopologyId(topologyId)
.setNetconfClientFactory(clientFactory)
.setSchemaResourceDTO(resourceManager.getSchemaResources(netconfNode.getSchemaCacheDirectory(), deviceId))