From 6983e9f19823b47214b64d33c28b2ff0197eecf8 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sat, 12 Nov 2022 00:42:28 +0100 Subject: [PATCH] Ditch NetconfNode from SchemaResourceManager The tie-in to a network-topology is not appropriate: we are operating on raw paths. JIRA: NETCONF-916 Change-Id: I9b063cc09d5f7e2154e8b57838b788c0aa0b5b73 Signed-off-by: Robert Varga --- .../topology/singleton/impl/NetconfTopologyManager.java | 9 +++++---- .../topology/singleton/impl/MountPointEndToEndTest.java | 3 +-- .../singleton/impl/RemoteDeviceConnectorImplTest.java | 5 +---- .../netconf/topology/spi/AbstractNetconfTopology.java | 3 ++- .../netconf/sal/connect/api/SchemaResourceManager.java | 7 +++++-- .../sal/connect/impl/DefaultSchemaResourceManager.java | 4 +--- 6 files changed, 15 insertions(+), 16 deletions(-) diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java index 0a0c04f926..467870850b 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java @@ -116,15 +116,15 @@ public class NetconfTopologyManager this.baseSchemas = requireNonNull(baseSchemas); this.dataBroker = requireNonNull(dataBroker); this.rpcProviderRegistry = requireNonNull(rpcProviderRegistry); - this.actionProviderRegistry = requireNonNull(actionProviderService); + actionProviderRegistry = requireNonNull(actionProviderService); this.clusterSingletonServiceProvider = requireNonNull(clusterSingletonServiceProvider); this.keepaliveExecutor = keepaliveExecutor.getExecutor(); this.processingExecutor = MoreExecutors.listeningDecorator(processingExecutor.getExecutor()); - this.actorSystem = requireNonNull(actorSystemProvider).getActorSystem(); + actorSystem = requireNonNull(actorSystemProvider).getActorSystem(); this.eventExecutor = requireNonNull(eventExecutor); this.clientDispatcher = requireNonNull(clientDispatcher); this.topologyId = requireNonNull(topologyId); - this.writeTxIdleTimeout = Duration.ofSeconds(config.getWriteTransactionIdleTimeout().toJava()); + writeTxIdleTimeout = Duration.ofSeconds(config.getWriteTransactionIdleTimeout().toJava()); this.mountPointService = mountPointService; this.encryptionService = requireNonNull(encryptionService); this.rpcProviderService = requireNonNull(rpcProviderService); @@ -318,7 +318,8 @@ public class NetconfTopologyManager .setProcessingExecutor(processingExecutor) .setTopologyId(topologyId) .setNetconfClientDispatcher(clientDispatcher) - .setSchemaResourceDTO(resourceManager.getSchemaResources(netconfNode, deviceId)) + .setSchemaResourceDTO(resourceManager.getSchemaResources(netconfNode.getSchemaCacheDirectory(), + deviceId)) .setIdleTimeout(writeTxIdleTimeout) .setPrivateKeyPath(privateKeyPath) .setPrivateKeyPassphrase(privateKeyPassphrase) diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/MountPointEndToEndTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/MountPointEndToEndTest.java index 44fcf748e1..dbfe47d9b5 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/MountPointEndToEndTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/MountPointEndToEndTest.java @@ -282,8 +282,7 @@ public class MountPointEndToEndTest extends AbstractBaseSchemasTest { doReturn(MoreExecutors.newDirectExecutorService()).when(mockThreadPool).getExecutor(); - final SchemaResourcesDTO resources = resourceManager.getSchemaResources( - new NetconfNodeBuilder().setSchemaCacheDirectory(TEST_DEFAULT_SUBDIR).build(), "test"); + final SchemaResourcesDTO resources = resourceManager.getSchemaResources(TEST_DEFAULT_SUBDIR, "test"); resources.getSchemaRegistry().registerSchemaSource( id -> Futures.immediateFuture(YangTextSchemaSource.delegateForByteSource(id, topModuleInfo.getYangTextByteSource())), diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java index 051e2aae1b..6a684cbc98 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java @@ -53,7 +53,6 @@ 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; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.credentials.credentials.LoginPasswordBuilder; 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.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yangtools.yang.common.Uint32; @@ -170,10 +169,8 @@ public class RemoteDeviceConnectorImplTest extends AbstractBaseSchemasTest { .setKeepaliveDelay(Uint32.ONE) .build(); - final Node node = new NodeBuilder().setNodeId(NODE_ID).addAugmentation(netconfNode).build(); - builder.setSchemaResourceDTO(new DefaultSchemaResourceManager(new DefaultYangParserFactory()) - .getSchemaResources(netconfNode, "foo")); + .getSchemaResources(netconfNode.getSchemaCacheDirectory(), "foo")); final RemoteDeviceConnectorImpl remoteDeviceConnection = new RemoteDeviceConnectorImpl(builder.build(), remoteDeviceId, deviceActionFactory); 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 2903c02627..c64c4380d4 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 @@ -215,7 +215,8 @@ public abstract class AbstractNetconfTopology implements NetconfTopology { yanglibRegistrations = List.of(); } else { final boolean reconnectOnChangedSchema = node.requireReconnectOnChangedSchema(); - final SchemaResourcesDTO resources = schemaManager.getSchemaResources(node, nodeId.getValue()); + final SchemaResourcesDTO resources = schemaManager.getSchemaResources(node.getSchemaCacheDirectory(), + nodeId.getValue()); device = new NetconfDeviceBuilder() .setReconnectOnSchemasChange(reconnectOnChangedSchema) .setSchemaResourcesDTO(resources) diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/SchemaResourceManager.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/SchemaResourceManager.java index 19048d8f88..87265a0bc1 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/SchemaResourceManager.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/SchemaResourceManager.java @@ -10,11 +10,14 @@ package org.opendaylight.netconf.sal.connect.api; import com.google.common.annotations.Beta; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice.SchemaResourcesDTO; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; @Beta @NonNullByDefault public interface SchemaResourceManager { - SchemaResourcesDTO getSchemaResources(NetconfNode node, Object nodeId); + // FIXME: document this, nodeId is not quite appropriate name here: it should be a @NonNull id with .toString() + // being interesting + // FIXME: subDirectory should have be really String..., placing the onus of splitting the directory to callers, + // so we do not get separator ambiguity + SchemaResourcesDTO getSchemaResources(String subDirectory, Object nodeId); } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/impl/DefaultSchemaResourceManager.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/impl/DefaultSchemaResourceManager.java index 35c341e938..3c57cdfd1e 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/impl/DefaultSchemaResourceManager.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/impl/DefaultSchemaResourceManager.java @@ -21,7 +21,6 @@ import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.netconf.sal.connect.api.SchemaResourceManager; import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice.SchemaResourcesDTO; import org.opendaylight.netconf.sal.connect.netconf.NetconfStateSchemasResolverImpl; -import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactoryConfiguration; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; import org.opendaylight.yangtools.yang.model.repo.fs.FilesystemSchemaSourceCache; @@ -72,8 +71,7 @@ public final class DefaultSchemaResourceManager implements SchemaResourceManager } @Override - public SchemaResourcesDTO getSchemaResources(final NetconfNode node, final Object nodeId) { - final String subdir = node.getSchemaCacheDirectory(); + public SchemaResourcesDTO getSchemaResources(final String subdir, final Object nodeId) { if (defaultSubdirectory.equals(subdir)) { // Fast path for default devices return defaultResources; -- 2.36.6