X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Fmapping%2Fruntime%2FRuntime.java;h=ddbc99d0e58f014ac650230e054cb2fc87f8af3e;hb=1a43f55c49d91816751cec1825c40d0a90f8bd8b;hp=8af1e0ee90e94fe7c009eb93ece4b1f478b16d4f;hpb=d6e3e28bf86638685e55289d6cd9cb749838a75e;p=controller.git 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..ddbc99d0e5 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,41 @@ 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.confignetconfconnector.osgi.EnumResolver; 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 +60,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, final EnumResolver enumResolver) { + 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, enumResolver); + } else { + ModuleRuntime moduleRuntime = moduleRuntimes.get(localNamespace).get(moduleName); + runtimeXml = moduleRuntime.toXml(localNamespace, instanceToRbe.get(instanceName), document, + moduleConfig, instanceON, enumResolver); + } + modulesElement.appendChild(runtimeXml); } }