Honour secure configs during init step During the init step, zookeeper-refdb might need to connect to the Zookeeper ensemble to perform migration-related tasks, as it was introduced in I7836b739bb. When doing so however, the curator was being initialized without honouring the configurations set in the zookeeper-refdb.secure.config, as it was reading the zookeeper-refdb.config only. Address this issue by reading from zookeeper-refdb.secure.config and falling back to the zookeeper-refdb.config. Change-Id: I9123a979e01f4811dbd71cc41445eb109cf6bfae
diff --git a/src/main/java/com/googlesource/gerrit/plugins/validation/dfsrefdb/zookeeper/ZkInit.java b/src/main/java/com/googlesource/gerrit/plugins/validation/dfsrefdb/zookeeper/ZkInit.java index fdd04a6..71762c7 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/validation/dfsrefdb/zookeeper/ZkInit.java +++ b/src/main/java/com/googlesource/gerrit/plugins/validation/dfsrefdb/zookeeper/ZkInit.java
@@ -20,24 +20,22 @@ import com.google.gerrit.pgm.init.api.InitStep; import com.google.gerrit.server.config.AllProjectsName; import com.google.gerrit.server.config.AllProjectsNameProvider; -import com.google.gerrit.server.config.SitePaths; +import com.google.gerrit.server.config.GlobalPluginConfigProvider; import com.google.gerrit.server.schema.NoteDbSchemaVersionManager; +import com.google.gerrit.server.securestore.SecureStore; import com.google.inject.AbstractModule; import com.google.inject.Inject; import com.google.inject.Injector; import com.google.inject.Singleton; import com.googlesource.gerrit.plugins.validation.dfsrefdb.zookeeper.migration.ZkMigrations; -import java.io.IOException; import org.apache.curator.framework.CuratorFramework; -import org.eclipse.jgit.errors.ConfigInvalidException; -import org.eclipse.jgit.storage.file.FileBasedConfig; -import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.lib.Config; @Singleton public class ZkInit implements InitStep { private final ConsoleUI ui; - private final FileBasedConfig config; + private final Config config; @Inject(optional = true) private NoteDbSchemaVersionManager versionManager; @@ -47,17 +45,20 @@ private final String pluginName; private final Injector initInjector; + private final SecureStore secureStore; @Inject - ZkInit(ConsoleUI ui, SitePaths site, @PluginName String pluginName, Injector initInjector) - throws IOException, ConfigInvalidException { + ZkInit( + ConsoleUI ui, + @PluginName String pluginName, + Injector initInjector, + SecureStore secureStore, + GlobalPluginConfigProvider pluginConfigProvider) { this.ui = ui; this.pluginName = pluginName; this.initInjector = initInjector; - - config = - new FileBasedConfig(site.etc_dir.resolve(pluginName + ".config").toFile(), FS.DETECTED); - config.load(); + this.secureStore = secureStore; + this.config = new ZkMergedConfig(pluginConfigProvider.get(pluginName)); } @Override @@ -88,4 +89,19 @@ } }); } + + private class ZkMergedConfig extends Config { + ZkMergedConfig(Config baseConfig) { + super(baseConfig); + } + + @Override + public String getString(String section, String subsection, String name) { + String secure = secureStore.getForPlugin(pluginName, section, subsection, name); + if (secure != null) { + return secure; + } + return super.getString(section, subsection, name); + } + } }