add partial match for non-module capabilities - to enable deviations in base capabilities 39/37239/1
authorGiles Heron <giheron@cisco.com>
Thu, 7 Apr 2016 08:49:41 +0000 (09:49 +0100)
committerGiles Heron <giheron@cisco.com>
Thu, 7 Apr 2016 09:08:53 +0000 (10:08 +0100)
Change-Id: I06fbeaeb63cca9ad8b2e7b9aa8c75b3a1ce40334
Signed-off-by: Giles Heron <giheron@cisco.com>
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfSessionPreferences.java

index ee119344ebe2f9220f91a0092ab0481fc465950b..32d22be32f96afc7d3bbd5c7de7aea67651933d8 100644 (file)
@@ -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;
         }
index 3e1198b0413134884e43ad26c3125a634e753e22..084481eec736096ff700801aeb2efc1d75a9b75b 100644 (file)
@@ -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<String> 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());
     }
 
     /**