summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorHarald Musum <musum@oath.com>2018-09-12 14:07:55 +0200
committerHarald Musum <musum@oath.com>2018-09-12 14:07:55 +0200
commit0d1c46edd96a47c39a2ecdfa78e2aee2f6f94c75 (patch)
tree35f461f49d19d5a351f95cb6371c61cebb8c1e70 /config-model
parent68b59b1f79fa8fa1f0d219f8773f3111ff926255 (diff)
Create a dedicated node for logserver when on hosted (and only in CD for now)
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java16
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/NodesSpecification.java13
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java6
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