summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java1
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java10
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/MockModelContext.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java3
-rw-r--r--configdefinitions/src/vespa/configserver.def1
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java8
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java3
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java4
10 files changed, 44 insertions, 9 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
index c75174cd999..6d5804ab700 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
@@ -51,6 +51,7 @@ public interface ModelContext {
Set<Rotation> rotations();
boolean isBootstrap();
boolean isFirstTimeDeployment();
+ boolean useDedicatedNodeForLogserver();
}
}
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; }
};
}
};
diff --git a/configdefinitions/src/vespa/configserver.def b/configdefinitions/src/vespa/configserver.def
index c90709bf4dd..0e32540ec83 100644
--- a/configdefinitions/src/vespa/configserver.def
+++ b/configdefinitions/src/vespa/configserver.def
@@ -68,3 +68,4 @@ sleepTimeWhenRedeployingFails long default=30
# Feature Flags (poor man's feature flags, to be overridden in configserver-config.xml if needed)
deleteApplicationLegacy bool default=false
buildMinimalSetOfConfigModels bool default=true
+useDedicatedNodeForLogserver bool default=false
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
index 914d6963ff0..acf49fe51be 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java
@@ -125,6 +125,7 @@ public class ModelContextImpl implements ModelContext {
private final Set<Rotation> rotations;
private final boolean isBootstrap;
private final boolean isFirstTimeDeployment;
+ private final boolean useDedicatedNodeForLogserver;
public Properties(ApplicationId applicationId,
boolean multitenant,
@@ -136,7 +137,8 @@ public class ModelContextImpl implements ModelContext {
Zone zone,
Set<Rotation> rotations,
boolean isBootstrap,
- boolean isFirstTimeDeployment) {
+ boolean isFirstTimeDeployment,
+ boolean useDedicatedNodeForLogserver) {
this.applicationId = applicationId;
this.multitenant = multitenant;
this.configServerSpecs = configServerSpecs;
@@ -148,6 +150,7 @@ public class ModelContextImpl implements ModelContext {
this.rotations = rotations;
this.isBootstrap = isBootstrap;
this.isFirstTimeDeployment = isFirstTimeDeployment;
+ this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver;
}
@Override
@@ -186,6 +189,9 @@ public class ModelContextImpl implements ModelContext {
@Override
public boolean isFirstTimeDeployment() { return isFirstTimeDeployment; }
+
+ @Override
+ public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; }
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
index c18d3c7fe48..0ebb83f5cd1 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java
@@ -115,7 +115,8 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
zone(),
new Rotations(curator, TenantRepository.getTenantPath(tenant)).readRotationsFromZooKeeper(applicationId),
false, // We may be bootstrapping, but we only know and care during prepare
- false); // Always false, assume no one uses it when activating
+ false, // Always false, assume no one uses it when activating
+ configserverConfig.useDedicatedNodeForLogserver());
}
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
index 49287669a06..4edde0904a4 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
@@ -159,7 +159,8 @@ public class SessionPreparer {
zone,
rotationsSet,
params.isBootstrap(),
- ! currentActiveApplicationSet.isPresent());
+ ! currentActiveApplicationSet.isPresent(),
+ configserverConfig.useDedicatedNodeForLogserver());
this.preparedModelsBuilder = new PreparedModelsBuilder(modelFactoryRegistry,
permanentApplicationPackage,
configDefinitionRepo,
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java
index 28fc179770a..43425aec13b 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/ModelContextImplTest.java
@@ -24,7 +24,7 @@ import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
/**
- * @author lulf
+ * @author Ulf Lilleengen
*/
public class ModelContextImplTest {
@Test
@@ -52,6 +52,7 @@ public class ModelContextImplTest {
Zone.defaultZone(),
rotations,
false,
+ false,
false),
Optional.empty(),
new Version(6),
@@ -69,5 +70,6 @@ public class ModelContextImplTest {
assertFalse(context.properties().hostedVespa());
assertThat(context.properties().rotations(), equalTo(rotations));
assertThat(context.properties().isFirstTimeDeployment(), equalTo(false));
+ assertThat(context.properties().useDedicatedNodeForLogserver(), equalTo(false));
}
}