import com.google.common.base.MoreObjects;
import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.base.Preconditions;
import java.net.InetSocketAddress;
import java.util.List;
import java.util.Optional;
import org.opendaylight.netconf.client.SslHandlerFactory;
import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
import org.opendaylight.netconf.nettyutil.handler.ssh.client.NetconfSshClient;
+import org.opendaylight.netconf.transport.ssh.ClientFactoryManagerConfigurator;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ssh.client.rev230417.SshClientGrouping;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.tcp.client.rev230417.TcpClientGrouping;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.tls.client.rev230417.TlsClientGrouping;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private final @NonNegative int maximumIncomingChunkSize;
private final String name;
+ private final TcpClientGrouping tcpParameters;
+ private final TlsClientGrouping tlsParameters;
+ private final org.opendaylight.netconf.transport.tls.SslHandlerFactory transportSslHandlerFactory;
+ private final SshClientGrouping sshParameters;
+ private final ClientFactoryManagerConfigurator sshConfigurator;
+
NetconfClientConfiguration(final NetconfClientProtocol protocol, final InetSocketAddress address,
- final Long connectionTimeoutMillis,
- final NetconfHelloMessageAdditionalHeader additionalHeader,
- final NetconfClientSessionListener sessionListener,
- final AuthenticationHandler authHandler,
- final SslHandlerFactory sslHandlerFactory, final NetconfSshClient sshClient,
- final List<Uri> odlHelloCapabilities, final @NonNegative int maximumIncomingChunkSize,
- final String name) {
+ final Long connectionTimeoutMillis,
+ final NetconfHelloMessageAdditionalHeader additionalHeader,
+ final NetconfClientSessionListener sessionListener,
+ final AuthenticationHandler authHandler,
+ final SslHandlerFactory sslHandlerFactory, final NetconfSshClient sshClient,
+ final List<Uri> odlHelloCapabilities, final @NonNegative int maximumIncomingChunkSize,
+ final String name) {
this.address = address;
this.connectionTimeoutMillis = connectionTimeoutMillis;
this.additionalHeader = additionalHeader;
this.odlHelloCapabilities = odlHelloCapabilities;
this.maximumIncomingChunkSize = maximumIncomingChunkSize;
this.name = name;
+ this.tcpParameters = null;
+ this.tlsParameters = null;
+ this.transportSslHandlerFactory = null;
+ this.sshParameters = null;
+ this.sshConfigurator = null;
validateConfiguration();
}
+ NetconfClientConfiguration(final NetconfClientProtocol protocol,
+ final TcpClientGrouping tcpParameters,
+ final TlsClientGrouping tlsParameters,
+ final org.opendaylight.netconf.transport.tls.SslHandlerFactory transportSslHandlerFactory,
+ final SshClientGrouping sshParameters,
+ final ClientFactoryManagerConfigurator sshConfigurator,
+ final NetconfClientSessionListener sessionListener,
+ final List<Uri> odlHelloCapabilities,
+ final Long connectionTimeoutMillis,
+ final @NonNegative int maximumIncomingChunkSize,
+ final NetconfHelloMessageAdditionalHeader additionalHeader,
+ final String name) {
+ this.clientProtocol = requireNonNull(protocol);
+ this.tcpParameters = requireNonNull(tcpParameters);
+ this.tlsParameters = tlsParameters;
+ this.transportSslHandlerFactory = transportSslHandlerFactory;
+ this.sshParameters = sshParameters;
+ this.sshConfigurator = sshConfigurator;
+ this.sessionListener = requireNonNull(sessionListener);
+ this.odlHelloCapabilities = odlHelloCapabilities;
+ this.connectionTimeoutMillis = connectionTimeoutMillis;
+ this.maximumIncomingChunkSize = maximumIncomingChunkSize;
+ this.additionalHeader = additionalHeader;
+ this.name = name;
+ this.address = null;
+ this.authHandler = null;
+ this.sslHandlerFactory = null;
+ this.sshClient = null;
+ // validate
+ if (NetconfClientProtocol.TLS.equals(protocol)) {
+ Preconditions.checkArgument(tlsParameters != null || transportSslHandlerFactory != null,
+ "Either tlsParameters or sslHandlerFactory is required");
+ } else if (NetconfClientProtocol.SSH.equals(protocol)) {
+ requireNonNull(sshParameters);
+ }
+ }
+
public final String getName() {
return name;
}
return maximumIncomingChunkSize;
}
+ public final TcpClientGrouping getTcpParameters() {
+ return tcpParameters;
+ }
+
+ public final TlsClientGrouping getTlsParameters() {
+ return tlsParameters;
+ }
+
+ public final org.opendaylight.netconf.transport.tls.SslHandlerFactory getTransportSslHandlerFactory() {
+ return transportSslHandlerFactory;
+ }
+
+ public final SshClientGrouping getSshParameters() {
+ return sshParameters;
+ }
+
+ public ClientFactoryManagerConfigurator getSshConfigurator() {
+ return sshConfigurator;
+ }
+
private void validateConfiguration() {
switch (requireNonNull(clientProtocol)) {
case TLS:
- validateTlsConfiguration();
validateTcpConfiguration();
+ validateTlsConfiguration();
break;
case SSH:
validateSshConfiguration();