X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Fmapping%2Fruntime%2FRuntime.java;h=b1df316b1acb81010ce3a9e85d20c7b04b004f4e;hp=8af1e0ee90e94fe7c009eb93ece4b1f478b16d4f;hb=c7ec8db7f107b5e265f4e8b2fe3dd0f7b1163b64;hpb=d6e3e28bf86638685e55289d6cd9cb749838a75e diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/Runtime.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/Runtime.java index 8af1e0ee90..b1df316b1a 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/Runtime.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/runtime/Runtime.java @@ -8,30 +8,43 @@ package org.opendaylight.controller.netconf.confignetconfconnector.mapping.runtime; +import com.google.common.base.Optional; import com.google.common.collect.HashMultimap; import com.google.common.collect.Maps; import com.google.common.collect.Multimap; + +import java.util.Collection; +import java.util.Map; +import java.util.Set; + +import javax.management.ObjectName; + import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; -import org.opendaylight.controller.netconf.util.xml.XmlNetconfConstants; +import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.Config; +import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ModuleConfig; import org.opendaylight.controller.netconf.util.xml.XmlUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; -import javax.management.ObjectName; -import java.util.Map; -import java.util.Set; - public class Runtime { private final Map> moduleRuntimes; + private final Map> moduleConfigs; - public Runtime(Map> moduleRuntimes) { + public Runtime(Map> moduleRuntimes, + Map> moduleConfigs) { this.moduleRuntimes = moduleRuntimes; + this.moduleConfigs = moduleConfigs; } private Map> mapInstancesToModules(Set instancesToMap) { Map> retVal = Maps.newHashMap(); + // TODO map to namepsace, prevent module name conflicts + // this code does not support same module names from different namespaces + // Namespace should be present in ObjectName + for (ObjectName objectName : instancesToMap) { String moduleName = ObjectNameUtil.getFactoryName(objectName); @@ -49,27 +62,36 @@ public class Runtime { return retVal; } - public Element toXml(Set instancesToMap, Document document) { - Element root = document.createElement(XmlNetconfConstants.DATA_KEY); + public Element toXml(Set instancesToMap, Set configBeans, Document document) { + Element root = XmlUtil.createElement(document, XmlNetconfConstants.DATA_KEY, Optional.absent()); - Element modulesElement = document.createElement(XmlNetconfConstants.MODULES_KEY); - XmlUtil.addNamespaceAttr(modulesElement, - XmlNetconfConstants.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG); + Element modulesElement = XmlUtil.createElement(document, XmlNetconfConstants.MODULES_KEY, Optional.of(XmlNetconfConstants.URN_OPENDAYLIGHT_PARAMS_XML_NS_YANG_CONTROLLER_CONFIG)); root.appendChild(modulesElement); - Map> moduleToInstances = mapInstancesToModules(instancesToMap); + Map> moduleToRuntimeInstance = mapInstancesToModules(instancesToMap); + Map>> moduleToConfigInstance = Config.getMappedInstances( + configBeans, moduleConfigs); + + for (String localNamespace : moduleConfigs.keySet()) { + + Map> instanceToMbe = moduleToConfigInstance.get(localNamespace); - for (String localNamespace : moduleRuntimes.keySet()) { - for (String moduleName : moduleRuntimes.get(localNamespace).keySet()) { - Multimap instanceToRbe = moduleToInstances.get(moduleName); + for (String moduleName : moduleConfigs.get(localNamespace).keySet()) { + Multimap instanceToRbe = moduleToRuntimeInstance.get(moduleName); - if (instanceToRbe == null) - continue; + for (ObjectName instanceON : instanceToMbe.get(moduleName)) { + String instanceName = ObjectNameUtil.getInstanceName(instanceON); - for (String instanceName : instanceToRbe.keySet()) { - ModuleRuntime moduleRuntime = moduleRuntimes.get(localNamespace).get(moduleName); - Element innerXml = moduleRuntime.toXml(localNamespace, instanceName, instanceToRbe.get(instanceName), document); - modulesElement.appendChild(innerXml); + Element runtimeXml; + ModuleConfig moduleConfig = moduleConfigs.get(localNamespace).get(moduleName); + if(instanceToRbe==null || !instanceToRbe.containsKey(instanceName)) { + runtimeXml = moduleConfig.toXml(instanceON, document, localNamespace); + } else { + ModuleRuntime moduleRuntime = moduleRuntimes.get(localNamespace).get(moduleName); + runtimeXml = moduleRuntime.toXml(localNamespace, instanceToRbe.get(instanceName), document, + moduleConfig, instanceON); + } + modulesElement.appendChild(runtimeXml); } }