X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fconfig%2FFileModuleShardConfigProvider.java;h=7ee67be47c0159b83218820951cf369903f4c598;hb=HEAD;hp=80fc09c97a1a57ddadbe242c41c3dc3cb46e3ea0;hpb=285e83f59f15a4a614d423a3780a607d562d030b;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 80fc09c97a..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,13 +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 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; @@ -23,100 +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 w = new ConfigObjectWrapper(o); - - String moduleName = w.stringValue("name"); - ModuleConfig.Builder builder = moduleConfigMap.get(moduleName); - if(builder == null) { - builder = ModuleConfig.builder(moduleName); - moduleConfigMap.put(moduleName, builder); - } - - builder.nameSpace(w.stringValue("namespace")); - builder.shardStrategy(ShardStrategyFactory.newShardStrategyInstance(moduleName, - w.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"); - 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"); } }