From: Giles Heron Date: Thu, 7 Apr 2016 08:49:41 +0000 (+0100) Subject: add partial match for non-module capabilities - to enable deviations in base capabilities X-Git-Tag: release/boron~149^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=5b87e56cfc9ed379f0a469ce0d2f25a94651863c;p=netconf.git add partial match for non-module capabilities - to enable deviations in base capabilities Change-Id: I06fbeaeb63cca9ad8b2e7b9aa8c75b3a1ce40334 Signed-off-by: Giles Heron --- diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java index ee119344eb..32d22be32f 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java @@ -110,6 +110,8 @@ public final class NetconfStateSchemas { */ private static NetconfStateSchemas create(final NetconfDeviceRpc deviceRpc, final NetconfSessionPreferences remoteSessionCapabilities, final RemoteDeviceId id) { if(remoteSessionCapabilities.isMonitoringSupported() == false) { + // TODO - need to search for get-schema support, not just ietf-netconf-monitoring support + // issue might be a deviation to ietf-netconf-monitoring where get-schema is unsupported... LOG.warn("{}: Netconf monitoring not supported on device, cannot detect provided schemas", id); return EMPTY; } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfSessionPreferences.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfSessionPreferences.java index 3e1198b041..084481eec7 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfSessionPreferences.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfSessionPreferences.java @@ -20,6 +20,7 @@ import com.google.common.collect.Sets; import java.net.URI; import java.util.Collection; import java.util.HashSet; +import java.util.Iterator; import java.util.Set; import org.opendaylight.netconf.client.NetconfClientSession; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; @@ -82,6 +83,18 @@ public final class NetconfSessionPreferences { return nonModuleCaps; } + // allows partial matches - assuming parameters are in the same order + public boolean containsPartialNonModuleCapability(final String capability) { + final Iterator iterator = nonModuleCaps.iterator(); + while(iterator.hasNext()) { + if (iterator.next().startsWith(capability)) { + LOG.trace("capability {} partially matches {}", capability, nonModuleCaps); + return true; + } + } + return false; + } + public boolean containsNonModuleCapability(final String capability) { return nonModuleCaps.contains(capability); } @@ -115,13 +128,13 @@ public final class NetconfSessionPreferences { } public boolean isNotificationsSupported() { - return containsNonModuleCapability(NetconfMessageTransformUtil.NETCONF_NOTIFICATONS_URI.toString()) + return containsPartialNonModuleCapability(NetconfMessageTransformUtil.NETCONF_NOTIFICATONS_URI.toString()) || containsModuleCapability(NetconfMessageTransformUtil.IETF_NETCONF_NOTIFICATIONS); } public boolean isMonitoringSupported() { return containsModuleCapability(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING) - || containsNonModuleCapability(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING.getNamespace().toString()); + || containsPartialNonModuleCapability(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING.getNamespace().toString()); } /**