diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2018-01-22 15:11:21 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2018-01-22 15:11:21 +0000 |
commit | 93d76492642dbab93fca5b74db5e124f7e082653 (patch) | |
tree | c2718e793854b9c8312b98af91f15e27a610daa2 /config-model | |
parent | 3414caf51a124abce025c0fe93286c236afd9789 (diff) |
postpone adding logforwarder until all hosts are determined
Diffstat (limited to 'config-model')
5 files changed, 19 insertions, 13 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java index 071b3090f99..eaa4f18e35a 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java @@ -48,6 +48,11 @@ public class Admin extends AbstractConfigProducer implements Serializable { private final List<Slobrok> slobroks = new ArrayList<>(); private Configserver defaultConfigserver; private Logserver logserver; + private LogForwarder.Config logForwarderConfig = null; + + public void setLogForwarderConfig(LogForwarder.Config cfg) { + this.logForwarderConfig = cfg; + } /** * The single cluster controller cluster shared by all content clusters by default when not multitenant. @@ -186,6 +191,9 @@ public class Admin extends AbstractConfigProducer implements Serializable { addLogd(host); addConfigProxy(host); addFileDistribution(host); + if (logForwarderConfig != null) { + addLogForwarder(host); + } } private void addConfigSentinel(HostResource host, ApplicationId applicationId, Zone zone) { @@ -194,6 +202,10 @@ public class Admin extends AbstractConfigProducer implements Serializable { host.getHost().setConfigSentinel(configSentinel); } + private void addLogForwarder(HostResource host) { + addAndInitializeService(host, new LogForwarder(host.getHost(), logForwarderConfig)); + } + private void addLogd(HostResource host) { addAndInitializeService(host, new Logd(host.getHost())); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java index 4f766732e4e..2693a4c7409 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java @@ -37,8 +37,8 @@ public class LogForwarder extends AbstractService implements LogforwarderConfig. * Creates a new LogForwarder instance. */ // TODO: Use proper types? - public LogForwarder(AbstractConfigProducer parent, int index, Config config) { - super(parent, "logforwarder." + index); + public LogForwarder(AbstractConfigProducer parent, Config config) { + super(parent, "logforwarder"); this.config = config; setProp("clustertype", "hosts"); setProp("clustername", "admin"); diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java index b9903ccd163..83e905929d2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java @@ -120,18 +120,12 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu void addLogForwarders(ModelElement logForwardingElement, Admin admin) { if (logForwardingElement == null) return; - int i = 0; for (ModelElement e : logForwardingElement.getChildren("splunk")) { LogForwarder.Config cfg = LogForwarder.cfg() .withSplunkHome(e.getStringAttribute("splunk-home")) .withDeploymentServer(e.getStringAttribute("deployment-server")) .withClientName(e.getStringAttribute("client-name")); - for (HostResource host : admin.getHostSystem().getHosts()) { - LogForwarder logForwarder = new LogForwarder(admin, i, cfg); - logForwarder.setHostResource(host); - logForwarder.initService(); - i++; - } + admin.setLogForwarderConfig(cfg); } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java index fed9000f72b..223b50dd180 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java @@ -270,7 +270,7 @@ public class AdminTestCase { Set<String> configIds = vespaModel.getConfigIds(); // 1 logforwarder on each host - assertTrue(configIds.toString(), configIds.contains("admin/logforwarder.0")); + assertTrue(configIds.toString(), configIds.contains("hosts/myhost0/logforwarder")); } @Test diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java index 4c09fd8d713..999ebd8ad4e 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java @@ -170,12 +170,12 @@ public class DedicatedAdminV4Test { Set<String> configIds = model.getConfigIds(); // 1 logforwarder on each host - IntStream.of(0, 1, 2).forEach(i -> assertTrue(configIds.toString(), configIds.contains("admin/logforwarder." + i))); + IntStream.of(0, 1, 2).forEach(i -> assertTrue(configIds.toString(), configIds.contains("hosts/myhost"+i+"/logforwarder"))); // First forwarder { LogforwarderConfig.Builder builder = new LogforwarderConfig.Builder(); - model.getConfig(builder, "admin/logforwarder.0"); + model.getConfig(builder, "hosts/myhost0/logforwarder"); LogforwarderConfig config = new LogforwarderConfig(builder); assertEquals("foo:123", config.deploymentServer()); @@ -186,7 +186,7 @@ public class DedicatedAdminV4Test { // Other host's forwarder { LogforwarderConfig.Builder builder = new LogforwarderConfig.Builder(); - model.getConfig(builder, "admin/logforwarder.2"); + model.getConfig(builder, "hosts/myhost2/logforwarder"); LogforwarderConfig config = new LogforwarderConfig(builder); assertEquals("foo:123", config.deploymentServer()); |