BUG-2343 Report sideloaded models for nc correctly 80/16380/2
authorMaros Marsalek <mmarsale@cisco.com>
Thu, 12 Mar 2015 09:57:00 +0000 (10:57 +0100)
committerMaros Marsalek <mmarsale@cisco.com>
Thu, 12 Mar 2015 10:00:50 +0000 (10:00 +0000)
The sideloading of models behaved as a merge operation but was reported as
replace. Report the resulting models as a merge.

Change-Id: Id44d077e72ae0ce5f202c5178d5c7e5b825d6deb
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfDeviceCommunicator.java
opendaylight/md-sal/sal-netconf-connector/src/main/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfSessionPreferences.java
opendaylight/md-sal/sal-netconf-connector/src/test/java/org/opendaylight/controller/sal/connect/netconf/listener/NetconfSessionPreferencesTest.java

index c62f56ac1ebd29b2c9eabf065a3512ec24ba60b2..ce5aa79af0f85c44dc0beaa68650597f4974213a 100644 (file)
@@ -86,7 +86,7 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener,
             logger.trace("{}: Session advertised capabilities: {}", id, netconfSessionPreferences);
 
             if(overrideNetconfCapabilities.isPresent()) {
-                netconfSessionPreferences = netconfSessionPreferences.replaceModuleCaps(overrideNetconfCapabilities.get());
+                netconfSessionPreferences = netconfSessionPreferences.addModuleCaps(overrideNetconfCapabilities.get());
                 logger.debug("{}: Session capabilities overridden, capabilities that will be used: {}", id, netconfSessionPreferences);
             }
 
index 89211ede77b2e5d03b5b555aec567b3a4c5effbb..9493f977e08c75b96a4678755d3f1b23eae1ed17 100644 (file)
@@ -115,14 +115,11 @@ public final class NetconfSessionPreferences {
                 || containsNonModuleCapability(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING.getNamespace().toString());
     }
 
-    public NetconfSessionPreferences replaceModuleCaps(final NetconfSessionPreferences netconfSessionModuleCapabilities) {
-        final Set<QName> moduleBasedCaps = Sets.newHashSet(netconfSessionModuleCapabilities.getModuleBasedCaps());
-
-        // Preserve monitoring module, since it indicates support for ietf-netconf-monitoring
-        if(containsModuleCapability(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING)) {
-            moduleBasedCaps.add(NetconfMessageTransformUtil.IETF_NETCONF_MONITORING);
-        }
-        return new NetconfSessionPreferences(getNonModuleCaps(), moduleBasedCaps);
+    public NetconfSessionPreferences addModuleCaps(final NetconfSessionPreferences netconfSessionModuleCapabilities) {
+        final HashSet<QName> mergedCaps = Sets.newHashSetWithExpectedSize(moduleBasedCaps.size() + netconfSessionModuleCapabilities.getModuleBasedCaps().size());
+        mergedCaps.addAll(moduleBasedCaps);
+        mergedCaps.addAll(netconfSessionModuleCapabilities.getModuleBasedCaps());
+        return new NetconfSessionPreferences(getNonModuleCaps(), mergedCaps);
     }
 
     public static NetconfSessionPreferences fromNetconfSession(final NetconfClientSession session) {
index 653b641353e34c4408f1e9a46072b0817ef21e49..ff2fe39c3628e5d5af2e752ebca8d4f2f7291dfb 100644 (file)
@@ -32,8 +32,8 @@ public class NetconfSessionPreferencesTest {
         final NetconfSessionPreferences sessionCaps2 = NetconfSessionPreferences.fromStrings(caps2);
         assertCaps(sessionCaps2, 1, 2);
 
-        final NetconfSessionPreferences merged = sessionCaps1.replaceModuleCaps(sessionCaps2);
-        assertCaps(merged, 2, 2 + 1 /*Preserved monitoring*/);
+        final NetconfSessionPreferences merged = sessionCaps1.addModuleCaps(sessionCaps2);
+        assertCaps(merged, 2, 2 + 1 /*Preserved monitoring*/ + 2 /*already present*/);
         for (final QName qName : sessionCaps2.getModuleBasedCaps()) {
             assertThat(merged.getModuleBasedCaps(), hasItem(qName));
         }