diff options
author | Harald Musum <musum@oath.com> | 2018-09-12 14:07:55 +0200 |
---|---|---|
committer | Harald Musum <musum@oath.com> | 2018-09-12 14:07:55 +0200 |
commit | 0d1c46edd96a47c39a2ecdfa78e2aee2f6f94c75 (patch) | |
tree | 35f461f49d19d5a351f95cb6371c61cebb8c1e70 /config-model | |
parent | 68b59b1f79fa8fa1f0d219f8773f3111ff926255 (diff) |
Create a dedicated node for logserver when on hosted (and only in CD for now)
Diffstat (limited to 'config-model')
3 files changed, 27 insertions, 8 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java index 1885ce94ba3..94f8b9b4b09 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java @@ -6,9 +6,7 @@ import com.yahoo.config.model.api.ConfigServerSpec; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.SystemName; -import com.yahoo.container.handler.LogHandler; import com.yahoo.log.LogLevel; -import com.yahoo.searchdefinition.derived.RankProfileList; import com.yahoo.vespa.model.HostResource; import com.yahoo.vespa.model.HostSystem; import com.yahoo.vespa.model.admin.Admin; @@ -60,7 +58,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase { NodesSpecification.optionalDedicatedFromParent(adminElement.getChild("logservers"), context); assignSlobroks(requestedSlobroks.orElse(NodesSpecification.nonDedicated(3, context)), admin); - assignLogserver(requestedLogservers.orElse(NodesSpecification.nonDedicated(1, context)), admin); + assignLogserver(requestedLogservers.orElse(createNodesSpecificationForLogserver()), admin); addLogForwarders(adminElement.getChild("logforwarding"), admin); } @@ -82,9 +80,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase { if (hosts.isEmpty()) return; // No log server can be created (and none is needed) Logserver logserver = createLogserver(admin, hosts); - // TODO: Enable for main system as well - if (context.getDeployState().isHosted() && context.getDeployState().zone().system() == SystemName.cd) - createAdditionalContainerOnLogserverHost(admin, logserver.getHostResource()); + createAdditionalContainerOnLogserverHost(admin, logserver.getHostResource()); } else if (containerModels.iterator().hasNext()) { List<HostResource> hosts = sortedContainerHostsFrom(containerModels.iterator().next(), nodesSpecification.count(), false); if (hosts.isEmpty()) return; // No log server can be created (and none is needed) @@ -95,6 +91,14 @@ public class DomAdminV4Builder extends DomAdminBuilderBase { } } + private NodesSpecification createNodesSpecificationForLogserver() { + // TODO: Enable for main system as well + if (context.getDeployState().isHosted() && context.getDeployState().zone().system() == SystemName.cd) + return NodesSpecification.dedicated(1, context); + else + return NodesSpecification.nonDedicated(1, context); + } + // Creates a container cluster 'logserver-cluster' with 1 container on logserver host // for setting up a handler for getting logs from logserver private void createAdditionalContainerOnLogserverHost(Admin admin, HostResource hostResource) { diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java index 94359e8672e..0ab0c0b6d4f 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java @@ -123,6 +123,19 @@ public class NodesSpecification { Optional.empty()); } + /** Returns a requirement from <code>count</code> dedicated nodes in one group */ + public static NodesSpecification dedicated(int count, ConfigModelContext context) { + return new NodesSpecification(true, + count, + 1, + context.getDeployState().getWantedNodeVespaVersion(), + false, + ! context.getDeployState().getProperties().isBootstrap(), + false, + Optional.empty(), + Optional.empty()); + } + /** * Returns whether this requires dedicated nodes. * Otherwise the model encountering this request should reuse nodes requested for other purposes whenever possible. 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 c1edbec6bf5..27839765930 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 @@ -78,7 +78,8 @@ public class DedicatedAdminV4Test { assertHostContainsServices(model, "hosts/myhost0", "slobrok", "logd"); assertHostContainsServices(model, "hosts/myhost1", "slobrok", "logd"); - assertHostContainsServices(model, "hosts/myhost2", "logserver", "logd"); + // Note: A container is always added on logserver host + assertHostContainsServices(model, "hosts/myhost2", "logserver", "logd", "container"); Monitoring monitoring = model.getAdmin().getMonitoring(); assertEquals("vespa.routing", monitoring.getClustername()); @@ -160,7 +161,8 @@ public class DedicatedAdminV4Test { assertHostContainsServices(model, "hosts/myhost0", "logd", "logforwarder", "slobrok"); assertHostContainsServices(model, "hosts/myhost1", "logd", "logforwarder", "slobrok"); - assertHostContainsServices(model, "hosts/myhost2", "logd", "logforwarder", "logserver"); + // Note: A container is always added on logserver host + assertHostContainsServices(model, "hosts/myhost2", "logd", "logforwarder", "logserver", "container"); Set<String> configIds = model.getConfigIds(); // 1 logforwarder on each host |