From 95f381a4b720eed8d949b75d0275568d10d38255 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 8 Feb 2023 17:59:44 +0100 Subject: [PATCH] Convert mdsal-netconf-tcp to OSGi DS Create a disabled component instead using Declarative Services. This enables it to be used without touching any code, just the SCR console. JIRA: NETCONF-957 Change-Id: Id4fc561c3c8671de421b1410c3291390f87fbf56 Signed-off-by: Robert Varga --- netconf/mdsal-netconf-tcp/pom.xml | 23 +++++++++- .../tcp/NetconfNorthboundTcpServer.java | 44 ++++++++++++++----- .../OSGI-INF/blueprint/netconf-tcp.xml | 39 ---------------- 3 files changed, 53 insertions(+), 53 deletions(-) delete mode 100644 netconf/mdsal-netconf-tcp/src/main/resources/OSGI-INF/blueprint/netconf-tcp.xml diff --git a/netconf/mdsal-netconf-tcp/pom.xml b/netconf/mdsal-netconf-tcp/pom.xml index 4ea926baf4..7a3b899afe 100644 --- a/netconf/mdsal-netconf-tcp/pom.xml +++ b/netconf/mdsal-netconf-tcp/pom.xml @@ -22,9 +22,28 @@ - ${project.groupId} + io.netty + netty-common + + + io.netty + netty-transport + + + org.opendaylight.mdsal.binding.model.ietf + rfc6991-ietf-inet-types + + + org.opendaylight.netconf netconf-api + + org.osgi + org.osgi.service.component.annotations + + + org.osgi + org.osgi.service.metatype.annotations + - diff --git a/netconf/mdsal-netconf-tcp/src/main/java/org/opendaylight/netconf/tcp/NetconfNorthboundTcpServer.java b/netconf/mdsal-netconf-tcp/src/main/java/org/opendaylight/netconf/tcp/NetconfNorthboundTcpServer.java index 423e65e14e..7e8a1d0fbe 100644 --- a/netconf/mdsal-netconf-tcp/src/main/java/org/opendaylight/netconf/tcp/NetconfNorthboundTcpServer.java +++ b/netconf/mdsal-netconf-tcp/src/main/java/org/opendaylight/netconf/tcp/NetconfNorthboundTcpServer.java @@ -8,26 +8,47 @@ package org.opendaylight.netconf.tcp; import io.netty.channel.ChannelFuture; -import java.net.InetAddress; import java.net.InetSocketAddress; import org.opendaylight.netconf.api.NetconfServerDispatcher; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Reference; +import org.osgi.service.metatype.annotations.AttributeDefinition; +import org.osgi.service.metatype.annotations.Designate; +import org.osgi.service.metatype.annotations.ObjectClassDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Create an MD-SAL NETCONF server using TCP. */ -public class NetconfNorthboundTcpServer implements AutoCloseable { +@Component(service = { }, configurationPid = "org.opendaylight.netconf.tcp", enabled = false) +@Designate(ocd = NetconfNorthboundTcpServer.Configuration.class) +public final class NetconfNorthboundTcpServer implements AutoCloseable { + @ObjectClassDefinition + public @interface Configuration { + @AttributeDefinition + String bindingAddress() default "0.0.0.0"; + @AttributeDefinition(min = "1", max = "65535") + int portNumber() default 2831; + } + private static final Logger LOG = LoggerFactory.getLogger(NetconfNorthboundTcpServer.class); private final ChannelFuture tcpServer; - public NetconfNorthboundTcpServer(final NetconfServerDispatcher netconfServerDispatcher, final String address, - final String port) { + @Activate + public NetconfNorthboundTcpServer( + @Reference(target = "(type=netconf-server-dispatcher)") final NetconfServerDispatcher serverDispatcher, + final Configuration configuration) { + this(serverDispatcher, configuration.bindingAddress(), configuration.portNumber()); + } + + public NetconfNorthboundTcpServer(final NetconfServerDispatcher serverDispatcher, final String address, + final int port) { final InetSocketAddress inetAddress = getInetAddress(address, port); - tcpServer = netconfServerDispatcher.createServer(inetAddress); + tcpServer = serverDispatcher.createServer(inetAddress); tcpServer.addListener(future -> { if (future.isDone() && future.isSuccess()) { LOG.info("Netconf TCP endpoint started successfully at {}", inetAddress); @@ -38,12 +59,6 @@ public class NetconfNorthboundTcpServer implements AutoCloseable { }); } - private static InetSocketAddress getInetAddress(final String bindingAddress, final String portNumber) { - final IpAddress ipAddress = IetfInetUtil.ipAddressFor(bindingAddress); - final InetAddress inetAd = IetfInetUtil.INSTANCE.inetAddressFor(ipAddress); - return new InetSocketAddress(inetAd, Integer.parseInt(portNumber)); - } - @Override public void close() { if (tcpServer.isDone()) { @@ -52,4 +67,9 @@ public class NetconfNorthboundTcpServer implements AutoCloseable { tcpServer.cancel(true); } } + + private static InetSocketAddress getInetAddress(final String bindingAddress, final int portNumber) { + final var inetAd = IetfInetUtil.INSTANCE.inetAddressFor(IetfInetUtil.ipAddressFor(bindingAddress)); + return new InetSocketAddress(inetAd, portNumber); + } } diff --git a/netconf/mdsal-netconf-tcp/src/main/resources/OSGI-INF/blueprint/netconf-tcp.xml b/netconf/mdsal-netconf-tcp/src/main/resources/OSGI-INF/blueprint/netconf-tcp.xml deleted file mode 100644 index b41b38ba75..0000000000 --- a/netconf/mdsal-netconf-tcp/src/main/resources/OSGI-INF/blueprint/netconf-tcp.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file -- 2.36.6