import java.net.InetSocketAddress;
import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader;
import org.opendaylight.netconf.client.NetconfClientSessionListener;
+import org.opendaylight.netconf.client.SslHandlerFactory;
import org.opendaylight.netconf.nettyutil.handler.ssh.authentication.AuthenticationHandler;
import org.opendaylight.protocol.framework.ReconnectStrategy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class NetconfClientConfiguration {
+ private static final Logger LOG = LoggerFactory.getLogger(NetconfClientConfiguration.class);
+
private final NetconfClientProtocol clientProtocol;
private final InetSocketAddress address;
private final Long connectionTimeoutMillis;
private final ReconnectStrategy reconnectStrategy;
private final AuthenticationHandler authHandler;
-
- NetconfClientConfiguration(final NetconfClientProtocol protocol, final InetSocketAddress address, final Long connectionTimeoutMillis, final NetconfHelloMessageAdditionalHeader additionalHeader, final NetconfClientSessionListener sessionListener, final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler) {
+ private final SslHandlerFactory sslHandlerFactory;
+
+ NetconfClientConfiguration(final NetconfClientProtocol protocol, final InetSocketAddress address,
+ final Long connectionTimeoutMillis,
+ final NetconfHelloMessageAdditionalHeader additionalHeader,
+ final NetconfClientSessionListener sessionListener,
+ final ReconnectStrategy reconnectStrategy, final AuthenticationHandler authHandler,
+ final SslHandlerFactory sslHandlerFactory) {
this.address = address;
this.connectionTimeoutMillis = connectionTimeoutMillis;
this.additionalHeader = additionalHeader;
this.clientProtocol = protocol;
this.reconnectStrategy = reconnectStrategy;
this.authHandler = authHandler;
+ this.sslHandlerFactory = sslHandlerFactory;
validateConfiguration();
}
return clientProtocol;
}
+ public SslHandlerFactory getSslHandlerFactory() {
+ return sslHandlerFactory;
+ }
+
private void validateConfiguration() {
Preconditions.checkNotNull(clientProtocol, " ");
switch (clientProtocol) {
- case SSH:
- validateSshConfiguration();
- // Fall through intentional (ssh validation is a superset of tcp validation)
- case TCP:
- validateTcpConfiguration();
+ case TLS:
+ validateTlsConfiguration();
+ validateTcpConfiguration();
+ break;
+ case SSH:
+ validateSshConfiguration();
+ validateTcpConfiguration();
+ break;
+ case TCP:
+ validateTcpConfiguration();
+ break;
+ default:
+ LOG.warn("Unexpected protocol: {} in netconf client configuration.", clientProtocol);
}
}
+ protected void validateTlsConfiguration() {
+ Preconditions.checkNotNull(sslHandlerFactory, "sslHandlerFactory");
+ }
+
protected void validateSshConfiguration() {
Preconditions.checkNotNull(authHandler, "authHandler");
}
.add("sessionListener", sessionListener)
.add("reconnectStrategy", reconnectStrategy)
.add("clientProtocol", clientProtocol)
- .add("authHandler", authHandler);
+ .add("authHandler", authHandler)
+ .add("sslHandlerFactory", sslHandlerFactory);
}
- public static enum NetconfClientProtocol {
- TCP, SSH
+ public enum NetconfClientProtocol {
+ TCP, SSH, TLS
}
-}
\ No newline at end of file
+}