From 55b857f08d4fbf7a827fddb47a35b9318bf93a72 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 6 Dec 2022 23:32:55 +0100 Subject: [PATCH] Clean up NetconfTopology methods No caller cares about NetconfDeviceCapabilities and we should not be using Void. Switch both futures to result in Empty, which is always non-null. This also removes one call site which assumes NetconfSessionPreferences contain NetconfDeviceCapabilities -- which they will not. JIRA: NETCONF-923 Change-Id: I934d8b1cd5915117500b1c0d6028838b727a2353 Signed-off-by: Robert Varga --- .../topology/impl/NetconfTopologyImplTest.java | 10 +++++----- .../impl/RemoteDeviceConnectorImpl.java | 8 ++++---- .../netconf/topology/api/NetconfTopology.java | 8 +++----- .../topology/spi/AbstractNetconfTopology.java | 17 ++++++++--------- .../listener/NetconfDeviceCommunicator.java | 11 ++++++----- 5 files changed, 26 insertions(+), 28 deletions(-) diff --git a/netconf/netconf-topology-impl/src/test/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImplTest.java b/netconf/netconf-topology-impl/src/test/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImplTest.java index 3e0e399a43..847dac386c 100644 --- a/netconf/netconf-topology-impl/src/test/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImplTest.java +++ b/netconf/netconf-topology-impl/src/test/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImplTest.java @@ -48,7 +48,6 @@ import org.opendaylight.netconf.client.NetconfClientSessionListener; import org.opendaylight.netconf.client.conf.NetconfClientConfiguration; import org.opendaylight.netconf.client.conf.NetconfReconnectingClientConfiguration; import org.opendaylight.netconf.sal.connect.api.SchemaResourceManager; -import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseNetconfSchemas; import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.DefaultBaseNetconfSchemas; import org.opendaylight.netconf.topology.spi.AbstractNetconfTopology; @@ -74,6 +73,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.common.Decimal64; +import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.parser.api.YangParserException; @@ -258,13 +258,13 @@ public class NetconfTopologyImplTest { } @Override - public ListenableFuture connectNode(final NodeId nodeId, final Node configNode) { - return Futures.immediateFuture(new NetconfDeviceCapabilities()); + public ListenableFuture connectNode(final NodeId nodeId, final Node configNode) { + return Futures.immediateFuture(Empty.value()); } @Override - public ListenableFuture disconnectNode(final NodeId nodeId) { - return Futures.immediateFuture(null); + public ListenableFuture disconnectNode(final NodeId nodeId) { + return Futures.immediateFuture(Empty.value()); } } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImpl.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImpl.java index 1272d05435..1fcba210f0 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImpl.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImpl.java @@ -39,7 +39,6 @@ import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice; import org.opendaylight.netconf.sal.connect.netconf.NetconfDeviceBuilder; import org.opendaylight.netconf.sal.connect.netconf.SchemalessNetconfDevice; import org.opendaylight.netconf.sal.connect.netconf.auth.DatastoreBackedPublicKeyAuth; -import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.listener.UserPreferences; @@ -67,6 +66,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev15 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.login.pw.unencrypted.LoginPasswordUnencrypted; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId; import org.opendaylight.yangtools.yang.common.Decimal64; +import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; import org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource; @@ -116,12 +116,12 @@ public class RemoteDeviceConnectorImpl implements RemoteDeviceConnector { final NetconfClientSessionListener netconfClientSessionListener = deviceCommunicatorDTO.getSessionListener(); final NetconfReconnectingClientConfiguration clientConfig = getClientConfig(netconfClientSessionListener, netconfNode); - final ListenableFuture future = deviceCommunicator + final ListenableFuture future = deviceCommunicator .initializeRemoteConnection(netconfTopologyDeviceSetup.getNetconfClientDispatcher(), clientConfig); - Futures.addCallback(future, new FutureCallback() { + Futures.addCallback(future, new FutureCallback<>() { @Override - public void onSuccess(final NetconfDeviceCapabilities result) { + public void onSuccess(final Empty result) { LOG.debug("{}: Connector started successfully", remoteDeviceId); } diff --git a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/api/NetconfTopology.java b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/api/NetconfTopology.java index d69e2e272b..32de9bfe06 100644 --- a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/api/NetconfTopology.java +++ b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/api/NetconfTopology.java @@ -5,18 +5,16 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.api; import com.google.common.util.concurrent.ListenableFuture; -import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; 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.opendaylight.yangtools.yang.common.Empty; public interface NetconfTopology { - ListenableFuture connectNode(NodeId nodeId, Node configNode); - - ListenableFuture disconnectNode(NodeId nodeId); + ListenableFuture connectNode(NodeId nodeId, Node configNode); + ListenableFuture disconnectNode(NodeId nodeId); } diff --git a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java index 7c7a2d7baa..9c9d722196 100644 --- a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java +++ b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java @@ -47,7 +47,6 @@ import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice.SchemaResource import org.opendaylight.netconf.sal.connect.netconf.NetconfDeviceBuilder; import org.opendaylight.netconf.sal.connect.netconf.SchemalessNetconfDevice; import org.opendaylight.netconf.sal.connect.netconf.auth.DatastoreBackedPublicKeyAuth; -import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.listener.UserPreferences; @@ -74,6 +73,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev15 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.schema.storage.YangLibrary; 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.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; import org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource; @@ -125,7 +125,7 @@ public abstract class AbstractNetconfTopology implements NetconfTopology { } @Override - public ListenableFuture connectNode(final NodeId nodeId, final Node configNode) { + public ListenableFuture connectNode(final NodeId nodeId, final Node configNode) { LOG.info("Connecting RemoteDevice{{}} , with config {}", nodeId, hideCredentials(configNode)); return setupConnection(nodeId, configNode); } @@ -145,7 +145,7 @@ public abstract class AbstractNetconfTopology implements NetconfTopology { } @Override - public ListenableFuture disconnectNode(final NodeId nodeId) { + public ListenableFuture disconnectNode(final NodeId nodeId) { LOG.debug("Disconnecting RemoteDevice{{}}", nodeId.getValue()); final NetconfConnectorDTO connectorDTO = activeConnectors.remove(nodeId); @@ -155,11 +155,10 @@ public abstract class AbstractNetconfTopology implements NetconfTopology { } connectorDTO.close(); - return Futures.immediateFuture(null); + return Futures.immediateFuture(Empty.value()); } - protected ListenableFuture setupConnection(final NodeId nodeId, - final Node configNode) { + protected ListenableFuture setupConnection(final NodeId nodeId, final Node configNode) { final NetconfNode netconfNode = configNode.augmentation(NetconfNode.class); final NetconfNodeAugmentedOptional nodeOptional = configNode.augmentation(NetconfNodeAugmentedOptional.class); @@ -171,14 +170,14 @@ public abstract class AbstractNetconfTopology implements NetconfTopology { final NetconfClientSessionListener netconfClientSessionListener = deviceCommunicatorDTO.getSessionListener(); final NetconfReconnectingClientConfiguration clientConfig = getClientConfig(netconfClientSessionListener, netconfNode, nodeId); - final ListenableFuture future = + final ListenableFuture future = deviceCommunicator.initializeRemoteConnection(clientDispatcher, clientConfig); activeConnectors.put(nodeId, deviceCommunicatorDTO); - Futures.addCallback(future, new FutureCallback() { + Futures.addCallback(future, new FutureCallback<>() { @Override - public void onSuccess(final NetconfDeviceCapabilities result) { + public void onSuccess(final Empty result) { LOG.debug("Connector for {} started succesfully", nodeId.getValue()); } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfDeviceCommunicator.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfDeviceCommunicator.java index c69c570575..9644a9d6d3 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfDeviceCommunicator.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfDeviceCommunicator.java @@ -39,6 +39,7 @@ import org.opendaylight.netconf.sal.connect.api.RemoteDeviceCommunicator; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yangtools.util.concurrent.FluentFutures; +import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.common.ErrorTag; import org.opendaylight.yangtools.yang.common.ErrorType; import org.opendaylight.yangtools.yang.common.QName; @@ -61,7 +62,7 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener, private final Queue requests = new ArrayDeque<>(); private NetconfClientSession currentSession; - private final SettableFuture firstConnectionFuture; + private final SettableFuture firstConnectionFuture = SettableFuture.create(); private Future taskFuture; // isSessionClosing indicates a close operation on the session is issued and @@ -95,7 +96,6 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener, this.id = id; this.remoteDevice = remoteDevice; this.overrideNetconfCapabilities = overrideNetconfCapabilities; - firstConnectionFuture = SettableFuture.create(); semaphore = rpcMessageLimit > 0 ? new Semaphore(rpcMessageLimit) : null; } @@ -127,7 +127,8 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener, remoteDevice.onRemoteSessionUp(netconfSessionPreferences, this); if (!firstConnectionFuture.isDone()) { - firstConnectionFuture.set(netconfSessionPreferences.getNetconfDeviceCapabilities()); + // FIXME: right, except ... this does not include the device schema setup, so is it really useful? + firstConnectionFuture.set(Empty.value()); } } finally { sessionLock.unlock(); @@ -142,8 +143,8 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener, * @return a ListenableFuture that returns success on first successful connection and failure when the underlying * reconnecting strategy runs out of reconnection attempts */ - public ListenableFuture initializeRemoteConnection( - final NetconfClientDispatcher dispatcher, final NetconfClientConfiguration config) { + public ListenableFuture initializeRemoteConnection(final NetconfClientDispatcher dispatcher, + final NetconfClientConfiguration config) { final Future connectFuture; if (config instanceof NetconfReconnectingClientConfiguration) { -- 2.36.6