Ditch NetconfNode from SchemaResourceManager 14/103214/3
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 11 Nov 2022 23:42:28 +0000 (00:42 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 13 Nov 2022 13:08:27 +0000 (14:08 +0100)
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 <robert.varga@pantheon.tech>
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java
netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/MountPointEndToEndTest.java
netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java
netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/spi/AbstractNetconfTopology.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/SchemaResourceManager.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/impl/DefaultSchemaResourceManager.java

index 0a0c04f92678469d945a2a10a3200f09438a5cd1..467870850b1dcefddef7322577fb9a43cb2ea74e 100644 (file)
@@ -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)
index 44fcf748e1db5fe84ed5516e21b2bf663407491d..dbfe47d9b55ca40fe14997f49a1058aeaac5609c 100644 (file)
@@ -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())),
index 051e2aae1b145d6ea67d5d6e1adccf5f33d85aa1..6a684cbc98d4c86f25c2f1bb8d6e4367556aa826 100644 (file)
@@ -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);
index 2903c026278b4d9b7f251b53bcd0bfbeaab140c1..c64c4380d4fc0f2cb42b3fb95fbd939ea02088bd 100644 (file)
@@ -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)
index 19048d8f88b8ee4603cd0353d108a1a8b581e13f..87265a0bc1ee086edbfb298cf5dc11519695c020 100644 (file)
@@ -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);
 }
index 35c341e9387082fafbf5bf69b984a33d88a7cdb3..3c57cdfd1e5da3a1f33410bf7976c72cad907925 100644 (file)
@@ -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;