From: Robert Varga Date: Wed, 14 Oct 2020 10:26:44 +0000 (+0200) Subject: Upgrade yang-library schema in sal-netconf-connector X-Git-Tag: v1.13.0~95 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=7f20485943d34df163b8a90982fd629d0e6ec8b9;p=netconf.git Upgrade yang-library schema in sal-netconf-connector Upgrade the schema used for determining the model set present on the device. We will end up interpreting RFC7895 as RFC8525, which is just fine. JIRA: NETCONF-725 Change-Id: If74baa5476f84d511b7c28278cfc54749fb698b1 Signed-off-by: Robert Varga --- diff --git a/features/netconf/odl-netconf-api/pom.xml b/features/netconf/odl-netconf-api/pom.xml index 32074d441d..84485a9da2 100644 --- a/features/netconf/odl-netconf-api/pom.xml +++ b/features/netconf/odl-netconf-api/pom.xml @@ -64,7 +64,7 @@ org.opendaylight.mdsal.model - odl-mdsal-model-rfc7895 + odl-mdsal-model-rfc8342 xml features @@ -74,12 +74,6 @@ xml features - - org.opendaylight.mdsal.model - odl-mdsal-model-rfc8342 - xml - features - org.opendaylight.netconf diff --git a/features/netconf/odl-netconf-api/src/main/feature/feature.xml b/features/netconf/odl-netconf-api/src/main/feature/feature.xml index b8d98e6b0a..c982459620 100644 --- a/features/netconf/odl-netconf-api/src/main/feature/feature.xml +++ b/features/netconf/odl-netconf-api/src/main/feature/feature.xml @@ -10,8 +10,7 @@ odl-netty-4 odl-yangtools-parser-api - odl-mdsal-model-rfc7895 - odl-mdsal-model-rfc8525 odl-mdsal-model-rfc8342 + odl-mdsal-model-rfc8525 diff --git a/netconf/sal-netconf-connector/pom.xml b/netconf/sal-netconf-connector/pom.xml index 1ebc5f497f..e26e3952a1 100644 --- a/netconf/sal-netconf-connector/pom.xml +++ b/netconf/sal-netconf-connector/pom.xml @@ -37,7 +37,7 @@ org.opendaylight.mdsal.binding.model.ietf - rfc7895 + rfc8525 ${project.groupId} diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/LibraryModulesSchemas.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/LibraryModulesSchemas.java index 6e1ea35dab..80ba6b1c4a 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/LibraryModulesSchemas.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/LibraryModulesSchemas.java @@ -48,8 +48,9 @@ import org.opendaylight.netconf.sal.connect.api.NetconfDeviceSchemas; import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceRpc; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.ModulesState; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.module.list.Module; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.ModulesState; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.YangLibrary; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.Module; import org.opendaylight.yangtools.util.xml.UntrustedXML; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Revision; @@ -88,8 +89,9 @@ public final class LibraryModulesSchemas implements NetconfDeviceSchemas { private static final Logger LOG = LoggerFactory.getLogger(LibraryModulesSchemas.class); private static final Pattern DATE_PATTERN = Pattern.compile("(\\d{4}-\\d{2}-\\d{2})"); private static final EffectiveModelContext LIBRARY_CONTEXT = BindingRuntimeHelpers.createEffectiveModel( - ModulesState.class); + YangLibrary.class); + // FIXME: this is legacy RFC7895, add support for RFC8525 containers, too private static final NodeIdentifier MODULES_STATE_NID = NodeIdentifier.create(ModulesState.QNAME); private static final NodeIdentifier MODULE_NID = NodeIdentifier.create(Module.QNAME); private static final NodeIdentifier NAME_NID = NodeIdentifier.create(QName.create(Module.QNAME, "name").intern()); diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasResolverImpl.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasResolverImpl.java index 63deb8ed6f..3c055f56ff 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasResolverImpl.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasResolverImpl.java @@ -12,26 +12,33 @@ import org.opendaylight.netconf.sal.connect.api.NetconfDeviceSchemasResolver; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceRpc; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.ModulesState; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.$YangModuleInfoImpl; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; /** * Default implementation resolving schemas QNames from netconf-state or from modules-state. */ public final class NetconfStateSchemasResolverImpl implements NetconfDeviceSchemasResolver { - private static final QName YANG_LIBRARY_CAPABILITY = QName.create(ModulesState.QNAME, "ietf-yang-library").intern(); + private static final QName RFC8525_YANG_LIBRARY_CAPABILITY = $YangModuleInfoImpl.getInstance().getName(); + private static final QName RFC7895_YANG_LIBRARY_CAPABILITY = RFC8525_YANG_LIBRARY_CAPABILITY + .bindTo(QNameModule.create(RFC8525_YANG_LIBRARY_CAPABILITY.getNamespace(), Revision.of("2016-06-21"))).intern(); @Override public NetconfDeviceSchemas resolve(final NetconfDeviceRpc deviceRpc, final NetconfSessionPreferences remoteSessionCapabilities, final RemoteDeviceId id, final EffectiveModelContext schemaContext) { + // FIXME: I think we should prefer YANG library here if (remoteSessionCapabilities.isMonitoringSupported()) { return NetconfStateSchemas.create(deviceRpc, remoteSessionCapabilities, id, schemaContext); } + if (remoteSessionCapabilities.containsModuleCapability(RFC8525_YANG_LIBRARY_CAPABILITY) + || remoteSessionCapabilities.containsModuleCapability(RFC7895_YANG_LIBRARY_CAPABILITY)) { + return LibraryModulesSchemas.create(deviceRpc, id); + } - // FIXME: I think we should prefer YANG library here - return remoteSessionCapabilities.containsModuleCapability(YANG_LIBRARY_CAPABILITY) - ? LibraryModulesSchemas.create(deviceRpc, id) : NetconfStateSchemas.EMPTY; + return NetconfStateSchemas.EMPTY; } }