X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fconfig%2FFileModuleShardConfigProvider.java;h=7ee67be47c0159b83218820951cf369903f4c598;hb=1d5ca4009be6c61d7b61989799037ad8f1ab7a75;hp=a37dcc6ef90ee086231ce6f5ce4c20af3cb598d7;hpb=35624f56612e0b8ca641c2fc5fed25f1c7628e51;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileModuleShardConfigProvider.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileModuleShardConfigProvider.java index a37dcc6ef9..7ee67be47c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileModuleShardConfigProvider.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/config/FileModuleShardConfigProvider.java @@ -8,15 +8,10 @@ package org.opendaylight.controller.cluster.datastore.config; import com.typesafe.config.Config; -import com.typesafe.config.ConfigFactory; -import com.typesafe.config.ConfigObject; -import java.io.File; -import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.stream.Collectors; -import org.opendaylight.controller.cluster.access.concepts.MemberName; -import org.opendaylight.controller.cluster.datastore.shardstrategy.ShardStrategyFactory; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -25,97 +20,39 @@ import org.slf4j.LoggerFactory; * * @author Thomas Pantelis */ -public class FileModuleShardConfigProvider implements ModuleShardConfigProvider { +@Component(immediate = true, service = ModuleShardConfigProvider.class) +public class FileModuleShardConfigProvider extends AbstractModuleShardConfigProvider { private static final Logger LOG = LoggerFactory.getLogger(FileModuleShardConfigProvider.class); private final String moduleShardsConfigPath; private final String modulesConfigPath; - public FileModuleShardConfigProvider(String moduleShardsConfigPath, String modulesConfigPath) { + public FileModuleShardConfigProvider() { + this("./configuration/initial/module-shards.conf", "./configuration/initial/modules.conf"); + } + + public FileModuleShardConfigProvider(final String moduleShardsConfigPath, final String modulesConfigPath) { this.moduleShardsConfigPath = moduleShardsConfigPath; this.modulesConfigPath = modulesConfigPath; } @Override - public Map retrieveModuleConfigs(Configuration configuration) { - File moduleShardsFile = new File("./configuration/initial/" + moduleShardsConfigPath); - File modulesFile = new File("./configuration/initial/" + modulesConfigPath); - - Config moduleShardsConfig = null; - if (moduleShardsFile.exists()) { - LOG.info("module shards config file exists - reading config from it"); - moduleShardsConfig = ConfigFactory.parseFile(moduleShardsFile); - } else { - LOG.warn("module shards configuration read from resource"); - moduleShardsConfig = ConfigFactory.load(moduleShardsConfigPath); - } + public Map retrieveModuleConfigs(final Configuration configuration) { + Config moduleShardsConfig = loadConfigFromPath(moduleShardsConfigPath); + Config modulesConfig = loadConfigFromPath(modulesConfigPath); - Config modulesConfig = null; - if (modulesFile.exists()) { - LOG.info("modules config file exists - reading config from it"); - modulesConfig = ConfigFactory.parseFile(modulesFile); - } else { - LOG.warn("modules configuration read from resource"); - modulesConfig = ConfigFactory.load(modulesConfigPath); - } - - Map moduleConfigMap = readModuleShardsConfig(moduleShardsConfig); + final Map moduleConfigMap = readModuleShardsConfig(moduleShardsConfig); readModulesConfig(modulesConfig, moduleConfigMap, configuration); - return moduleConfigMap; } - private static void readModulesConfig(final Config modulesConfig, Map moduleConfigMap, - Configuration configuration) { - List modulesConfigObjectList = modulesConfig.getObjectList("modules"); - - for (ConfigObject o : modulesConfigObjectList) { - ConfigObjectWrapper wrapper = new ConfigObjectWrapper(o); - - String moduleName = wrapper.stringValue("name"); - ModuleConfig.Builder builder = moduleConfigMap.computeIfAbsent(moduleName, ModuleConfig::builder); - - builder.nameSpace(wrapper.stringValue("namespace")); - builder.shardStrategy(ShardStrategyFactory.newShardStrategyInstance(moduleName, - wrapper.stringValue("shard-strategy"), configuration)); - } + @Activate + void activate() { + LOG.info("Shard configuration provider started"); } - private static Map readModuleShardsConfig(final Config moduleShardsConfig) { - List moduleShardsConfigObjectList = - moduleShardsConfig.getObjectList("module-shards"); - - Map moduleConfigMap = new HashMap<>(); - for (ConfigObject moduleShardConfigObject : moduleShardsConfigObjectList) { - String moduleName = moduleShardConfigObject.get("name").unwrapped().toString(); - ModuleConfig.Builder builder = ModuleConfig.builder(moduleName); - - List shardsConfigObjectList = - moduleShardConfigObject.toConfig().getObjectList("shards"); - - for (ConfigObject shard : shardsConfigObjectList) { - String shardName = shard.get("name").unwrapped().toString(); - List replicas = shard.toConfig().getStringList("replicas").stream() - .map(MemberName::forName).collect(Collectors.toList()); - builder.shardConfig(shardName, replicas); - } - - moduleConfigMap.put(moduleName, builder); - } - - return moduleConfigMap; - } - - private static class ConfigObjectWrapper { - - private final ConfigObject configObject; - - ConfigObjectWrapper(final ConfigObject configObject) { - this.configObject = configObject; - } - - public String stringValue(final String name) { - return configObject.get(name).unwrapped().toString(); - } + @Deactivate + void deactivate() { + LOG.info("Shard configuration provider stopped"); } }