X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fconfig%2FFileModuleShardConfigProvider.java;h=7ee67be47c0159b83218820951cf369903f4c598;hp=3f65b59b734ed01d6505e47a99206aa9c26ba02f;hb=323593f2e61d16571bc1deedf42e8a4006b59016;hpb=c84cffb9baa8f86f3decd6fa6de2a5e3a2688381 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 3f65b59b73..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,12 +20,17 @@ 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() { + this("./configuration/initial/module-shards.conf", "./configuration/initial/modules.conf"); + } + public FileModuleShardConfigProvider(final String moduleShardsConfigPath, final String modulesConfigPath) { this.moduleShardsConfigPath = moduleShardsConfigPath; this.modulesConfigPath = modulesConfigPath; @@ -38,84 +38,21 @@ public class FileModuleShardConfigProvider implements ModuleShardConfigProvider @Override public Map retrieveModuleConfigs(final Configuration configuration) { - final File moduleShardsFile = new File(moduleShardsConfigPath); - final File modulesFile = new File(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(moduleShardsFile.getPath()); - } - - 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(modulesFile.getPath()); - } + Config moduleShardsConfig = loadConfigFromPath(moduleShardsConfigPath); + Config modulesConfig = loadConfigFromPath(modulesConfigPath); final Map moduleConfigMap = readModuleShardsConfig(moduleShardsConfig); readModulesConfig(modulesConfig, moduleConfigMap, configuration); - return moduleConfigMap; } - private static void readModulesConfig(final Config modulesConfig, - final Map moduleConfigMap, final Configuration configuration) { - final List modulesConfigObjectList = modulesConfig.getObjectList("modules"); - - for (final ConfigObject o : modulesConfigObjectList) { - final ConfigObjectWrapper wrapper = new ConfigObjectWrapper(o); - - final String moduleName = wrapper.stringValue("name"); - final 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) { - final List moduleShardsConfigObjectList = - moduleShardsConfig.getObjectList("module-shards"); - - final Map moduleConfigMap = new HashMap<>(); - for (final ConfigObject moduleShardConfigObject : moduleShardsConfigObjectList) { - final String moduleName = moduleShardConfigObject.get("name").unwrapped().toString(); - final ModuleConfig.Builder builder = ModuleConfig.builder(moduleName); - - final List shardsConfigObjectList = - moduleShardConfigObject.toConfig().getObjectList("shards"); - - for (final ConfigObject shard : shardsConfigObjectList) { - final String shardName = shard.get("name").unwrapped().toString(); - final 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"); } }