From 88410610fdc766ecfdcbe3020f9ecdb335c1587e Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Thu, 20 Sep 2018 10:50:20 +0200 Subject: Add feature flag for using dedicated node for logserver (#7023) --- .../com/yahoo/config/model/deploy/DeployProperties.java | 17 +++++++++++++++-- .../vespa/model/builder/xml/dom/DomAdminV4Builder.java | 10 +++++++--- .../java/com/yahoo/config/model/MockModelContext.java | 3 +++ .../com/yahoo/vespa/model/VespaModelFactoryTest.java | 3 +++ 4 files changed, 28 insertions(+), 5 deletions(-) (limited to 'config-model') diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java index 53c70399e94..9d9a19bfbd6 100644 --- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java +++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java @@ -27,6 +27,8 @@ public class DeployProperties { private final Version vespaVersion; private final boolean isBootstrap; private final boolean isFirstTimeDeployment; + private final boolean useDedicatedNodeForLogserver; + private DeployProperties(boolean multitenant, ApplicationId applicationId, @@ -37,7 +39,8 @@ public class DeployProperties { String athenzDnsSuffix, Version vespaVersion, boolean isBootstrap, - boolean isFirstTimeDeployment) { + boolean isFirstTimeDeployment, + boolean useDedicatedNodeForLogserver) { this.loadBalancerName = loadBalancerName; this.ztsUrl = ztsUrl; this.athenzDnsSuffix = athenzDnsSuffix; @@ -48,6 +51,7 @@ public class DeployProperties { this.hostedVespa = hostedVespa; this.isBootstrap = isBootstrap; this.isFirstTimeDeployment = isFirstTimeDeployment; + this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver; } public boolean multitenant() { @@ -89,6 +93,8 @@ public class DeployProperties { /** Returns whether this is the first deployment for this application (used during *prepare*, not set on activate) */ public boolean isFirstTimeDeployment() { return isFirstTimeDeployment; } + public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; } + public static class Builder { private ApplicationId applicationId = ApplicationId.defaultId(); @@ -101,6 +107,7 @@ public class DeployProperties { private Version vespaVersion = Version.fromIntValues(1, 0, 0); private boolean isBootstrap = false; private boolean isFirstTimeDeployment = false; + private boolean useDedicatedNodeForLogserver = false; public Builder applicationId(ApplicationId applicationId) { this.applicationId = applicationId; @@ -152,9 +159,15 @@ public class DeployProperties { return this; } + public Builder useDedicatedNodeForLogserver(boolean useDedicatedNodeForLogserver) { + this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver; + return this; + } + public DeployProperties build() { return new DeployProperties(multitenant, applicationId, configServerSpecs, loadBalancerName, hostedVespa, - ztsUrl, athenzDnsSuffix, vespaVersion, isBootstrap, isFirstTimeDeployment); + ztsUrl, athenzDnsSuffix, vespaVersion, isBootstrap, isFirstTimeDeployment, + useDedicatedNodeForLogserver); } } 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 ea943f069cb..566ad0ecff5 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 @@ -3,6 +3,7 @@ package com.yahoo.vespa.model.builder.xml.dom; import com.yahoo.config.model.ConfigModelContext; import com.yahoo.config.model.api.ConfigServerSpec; +import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ClusterSpec; import com.yahoo.config.provision.SystemName; @@ -93,9 +94,12 @@ 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 + DeployState deployState = context.getDeployState(); + if (deployState.getProperties().useDedicatedNodeForLogserver() && + deployState.isHosted() && + deployState.zone().system() == SystemName.cd) + return NodesSpecification.dedicated(1, context); + else return NodesSpecification.nonDedicated(1, context); } diff --git a/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java b/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java index 5bd95334396..948c62c2343 100644 --- a/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java +++ b/config-model/src/test/java/com/yahoo/config/model/MockModelContext.java @@ -133,6 +133,9 @@ public class MockModelContext implements ModelContext { @Override public boolean isFirstTimeDeployment() { return false; } + + @Override + public boolean useDedicatedNodeForLogserver() { return false; } }; } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java index 094494073df..e4198115b2a 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java @@ -216,6 +216,9 @@ public class VespaModelFactoryTest { @Override public boolean isFirstTimeDeployment() { return false; } + + @Override + public boolean useDedicatedNodeForLogserver() { return false; } }; } }; -- cgit v1.2.3