BUG-3625 Allow replace nested composite nodes in cfg-subsystem
[controller.git] / opendaylight / netconf / config-netconf-connector / src / main / java / org / opendaylight / controller / netconf / confignetconfconnector / operations / editconfig / NoneEditConfigStrategy.java
index 87e64c3e1f70b8d28a505deed372e2d8f7c92ffd..83afd708163e2068ddd287aac7058b4330c79480 100644 (file)
@@ -8,8 +8,10 @@
 
 package org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig;
 
+import java.util.Collections;
 import java.util.Map;
 import org.opendaylight.controller.config.util.ConfigTransactionClient;
+import org.opendaylight.controller.netconf.confignetconfconnector.exception.NetconfConfigHandlingException;
 import org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.fromxml.AttributeConfigElement;
 import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ServiceRegistryWrapper;
 import org.slf4j.Logger;
@@ -21,8 +23,21 @@ public class NoneEditConfigStrategy implements EditConfigStrategy {
 
     @Override
     public void executeConfiguration(String module, String instance, Map<String, AttributeConfigElement> configuration,
-                                     ConfigTransactionClient ta, ServiceRegistryWrapper services) {
-        LOG.debug("Skipping configuration element for {}:{}", module, instance);
+                                     ConfigTransactionClient ta, ServiceRegistryWrapper services) throws NetconfConfigHandlingException {
+        if(configuration != null && !configuration.isEmpty()) {
+            for (Map.Entry<String, AttributeConfigElement> attrEntry : configuration.entrySet()) {
+                if(attrEntry.getValue().getEditStrategy().isPresent()) {
+                    final Map<String, AttributeConfigElement> partialConfig =
+                            Collections.singletonMap(attrEntry.getKey(), attrEntry.getValue());
+                    attrEntry.getValue().getEditStrategy().get().getFittingStrategy()
+                            .executeConfiguration(module, instance, partialConfig, ta, services);
+                } else {
+                    LOG.debug("Skipping configuration element for {}:{}:{}", module, instance, attrEntry.getKey());
+                }
+            }
+        } else {
+            LOG.debug("Skipping configuration element for {}:{}", module, instance);
+        }
     }
 
 }