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);
+    }
+  }
 }