*/
package org.opendaylight.netconf.callhome.mount;
+import static java.util.Objects.requireNonNull;
+
import io.netty.util.concurrent.EventExecutor;
import io.netty.util.concurrent.FailedFuture;
import io.netty.util.concurrent.Future;
import org.opendaylight.netconf.client.NetconfClientSession;
import org.opendaylight.netconf.client.conf.NetconfClientConfiguration;
import org.opendaylight.netconf.client.conf.NetconfReconnectingClientConfiguration;
+import org.opendaylight.netconf.nettyutil.ReconnectFuture;
import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory;
import org.opendaylight.netconf.sal.connect.api.SchemaResourceManager;
+import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseNetconfSchemas;
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.network.topology.topology.Node;
import org.slf4j.Logger;
protected CallHomeTopology topology;
private final CloseCallback onCloseHandler = deviceContext -> {
- LOG.info("Removing {} from Netconf Topology.", deviceContext.getId());
- topology.disconnectNode(deviceContext.getId());
+ final var nodeId = deviceContext.getId();
+ LOG.info("Removing {} from Netconf Topology.", nodeId);
+ topology.disconnectNode(nodeId);
};
private final DeviceActionFactory deviceActionFactory;
+ private final BaseNetconfSchemas baseSchemas;
public CallHomeMountDispatcher(final String topologyId, final EventExecutor eventExecutor,
final ScheduledThreadPool keepaliveExecutor, final ThreadPool processingExecutor,
- final SchemaResourceManager schemaRepositoryProvider, final DataBroker dataBroker,
+ final SchemaResourceManager schemaRepositoryProvider,
+ final BaseNetconfSchemas baseSchemas, final DataBroker dataBroker,
final DOMMountPointService mountService,
final AAAEncryptionService encryptionService) {
- this(topologyId, eventExecutor, keepaliveExecutor, processingExecutor, schemaRepositoryProvider, dataBroker,
- mountService, encryptionService, null);
+ this(topologyId, eventExecutor, keepaliveExecutor, processingExecutor, schemaRepositoryProvider, baseSchemas,
+ dataBroker, mountService, encryptionService, null);
}
public CallHomeMountDispatcher(final String topologyId, final EventExecutor eventExecutor,
final ScheduledThreadPool keepaliveExecutor, final ThreadPool processingExecutor,
- final SchemaResourceManager schemaRepositoryProvider, final DataBroker dataBroker,
- final DOMMountPointService mountService,
+ final SchemaResourceManager schemaRepositoryProvider, final BaseNetconfSchemas baseSchemas,
+ final DataBroker dataBroker, final DOMMountPointService mountService,
final AAAEncryptionService encryptionService, final DeviceActionFactory deviceActionFactory) {
this.topologyId = topologyId;
this.eventExecutor = eventExecutor;
this.schemaRepositoryProvider = schemaRepositoryProvider;
this.deviceActionFactory = deviceActionFactory;
this.sessionManager = new CallHomeMountSessionManager();
+ this.baseSchemas = requireNonNull(baseSchemas);
this.dataBroker = dataBroker;
this.mountService = mountService;
this.encryptionService = encryptionService;
}
@Override
- public Future<Void> createReconnectingClient(final NetconfReconnectingClientConfiguration clientConfiguration) {
- return activateChannel(clientConfiguration);
+ public ReconnectFuture createReconnectingClient(final NetconfReconnectingClientConfiguration clientConfiguration) {
+ return new SingleReconnectFuture(eventExecutor, activateChannel(clientConfiguration));
}
- private <V> Future<V> activateChannel(final NetconfClientConfiguration conf) {
+ private Future<NetconfClientSession> activateChannel(final NetconfClientConfiguration conf) {
final InetSocketAddress remoteAddr = conf.getAddress();
final CallHomeMountSessionContext context = getSessionManager().getByAddress(remoteAddr);
LOG.info("Activating NETCONF channel for ip {} device context {}", remoteAddr, context);
- if (context == null) {
- return new FailedFuture<>(eventExecutor, new NullPointerException());
- }
- return context.activateNetconfChannel(conf.getSessionListener());
+ return context == null ? new FailedFuture<>(eventExecutor, new NullPointerException())
+ : context.activateNetconfChannel(conf.getSessionListener());
}
void createTopology() {
this.topology = new CallHomeTopology(topologyId, this, eventExecutor, keepaliveExecutor, processingExecutor,
- schemaRepositoryProvider, dataBroker, mountService, encryptionService, deviceActionFactory);
+ schemaRepositoryProvider, dataBroker, mountService, encryptionService, baseSchemas,
+ deviceActionFactory);
}
@Override