summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHÃ¥kon Hallingstad <hakon@oath.com>2019-01-11 11:38:12 +0100
committerGitHub <noreply@github.com>2019-01-11 11:38:12 +0100
commitce35d16812b84cb91da8a9711ff1df1a79329f6e (patch)
tree23ccf04b32d2d1382c6b042d1c74a8efab120996
parent49f435b909ada503d89ade96effa645f9b1960dd (diff)
Revert "Revert "Added logserver feature flag (#8065)""
-rw-r--r--config-model/pom.xml5
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java12
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java6
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java9
6 files changed, 50 insertions, 7 deletions
diff --git a/config-model/pom.xml b/config-model/pom.xml
index 57dbadd94ab..4a99593d505 100644
--- a/config-model/pom.xml
+++ b/config-model/pom.xml
@@ -298,6 +298,11 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>com.yahoo.vespa</groupId>
+ <artifactId>flags</artifactId>
+ <version>${project.version}</version>
+ </dependency>
</dependencies>
<build>
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
index c0d97e43adb..056872f9980 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java
@@ -29,6 +29,7 @@ import com.yahoo.vespa.config.ConfigDefinitionBuilder;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.documentmodel.DocumentModel;
import com.yahoo.config.application.api.ValidationOverrides;
+import com.yahoo.vespa.flags.FlagSource;
import com.yahoo.vespa.model.container.search.QueryProfiles;
import com.yahoo.vespa.model.container.search.QueryProfilesBuilder;
import com.yahoo.vespa.model.container.search.SemanticRuleBuilder;
@@ -73,6 +74,7 @@ public class DeployState implements ConfigDefinitionStore {
private final Version wantedNodeVespaVersion;
private final Instant now;
private final HostProvisioner provisioner;
+ private final FlagSource flagSource;
public static DeployState createTestState() {
return new Builder().build();
@@ -98,7 +100,8 @@ public class DeployState implements ConfigDefinitionStore {
QueryProfiles queryProfiles,
SemanticRules semanticRules,
Instant now,
- Version wantedNodeVespaVersion) {
+ Version wantedNodeVespaVersion,
+ FlagSource flagSource) {
this.logger = deployLogger;
this.fileRegistry = fileRegistry;
this.rankProfileRegistry = rankProfileRegistry;
@@ -120,6 +123,7 @@ public class DeployState implements ConfigDefinitionStore {
this.validationOverrides = applicationPackage.getValidationOverrides().map(ValidationOverrides::fromXml).orElse(ValidationOverrides.empty);
this.wantedNodeVespaVersion = wantedNodeVespaVersion;
this.now = now;
+ this.flagSource = flagSource;
}
public static HostProvisioner getDefaultModelHostProvisioner(ApplicationPackage applicationPackage) {
@@ -236,6 +240,8 @@ public class DeployState implements ConfigDefinitionStore {
public Instant now() { return now; }
+ public FlagSource flagSource() { return flagSource; }
+
public static class Builder {
private ApplicationPackage applicationPackage = MockApplicationPackage.createEmpty();
@@ -251,6 +257,7 @@ public class DeployState implements ConfigDefinitionStore {
private Zone zone = Zone.defaultZone();
private Instant now = Instant.now();
private Version wantedNodeVespaVersion = Vtag.currentVersion;
+ private FlagSource flagSource;
public Builder applicationPackage(ApplicationPackage applicationPackage) {
this.applicationPackage = applicationPackage;
@@ -312,6 +319,11 @@ public class DeployState implements ConfigDefinitionStore {
return this;
}
+ public Builder flagSource(FlagSource flagSource) {
+ this.flagSource = flagSource;
+ return this;
+ }
+
public Builder wantedNodeVespaVersion(Version version) {
this.wantedNodeVespaVersion = version;
return this;
@@ -342,7 +354,8 @@ public class DeployState implements ConfigDefinitionStore {
queryProfiles,
semanticRules,
now,
- wantedNodeVespaVersion);
+ wantedNodeVespaVersion,
+ flagSource);
}
private SearchDocumentModel createSearchDocumentModel(RankProfileRegistry rankProfileRegistry,
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java
index d3f4a122b1e..e7bc2daf736 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java
@@ -23,6 +23,7 @@ import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.component.Version;
import com.yahoo.config.provision.Zone;
import com.yahoo.vespa.config.VespaVersion;
+import com.yahoo.vespa.flags.FlagSource;
import com.yahoo.vespa.model.application.validation.Validation;
import org.xml.sax.SAXException;
@@ -33,6 +34,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
+import java.util.Optional;
import java.util.logging.Logger;
/**
@@ -48,12 +50,13 @@ public class VespaModelFactory implements ModelFactory {
private final Zone zone;
private final Clock clock;
private final Version version;
+ private final FlagSource flagSource;
/** Creates a factory for vespa models for this version of the source */
@Inject
public VespaModelFactory(ComponentRegistry<ConfigModelPlugin> pluginRegistry,
ComponentRegistry<MlModelImporter> modelImporters,
- Zone zone) {
+ Zone zone, FlagSource flagSource) {
this.version = new Version(VespaVersion.major, VespaVersion.minor, VespaVersion.micro);
List<ConfigModelBuilder> modelBuilders = new ArrayList<>();
for (ConfigModelPlugin plugin : pluginRegistry.allComponents()) {
@@ -65,6 +68,7 @@ public class VespaModelFactory implements ModelFactory {
this.modelImporters = modelImporters.allComponents();
this.zone = zone;
this.clock = Clock.systemUTC();
+ this.flagSource = flagSource;
}
public VespaModelFactory(ConfigModelRegistry configModelRegistry) {
@@ -84,6 +88,7 @@ public class VespaModelFactory implements ModelFactory {
this.modelImporters = Collections.emptyList();
this.zone = Zone.defaultZone();
this.clock = clock;
+ this.flagSource = (id, vector) -> Optional.empty();
}
/** Returns the version this model is build for */
@@ -143,6 +148,7 @@ public class VespaModelFactory implements ModelFactory {
.modelImporters(modelImporters)
.zone(zone)
.now(clock.instant())
+ .flagSource(flagSource)
.wantedNodeVespaVersion(modelContext.wantedNodeVespaVersion());
modelContext.previousModel().ifPresent(builder::previousModel);
return builder.build(validationParameters);
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 2c23043abea..28cea9843c7 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
@@ -10,6 +10,9 @@ import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.SystemName;
import com.yahoo.log.LogLevel;
+import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.HostSystem;
import com.yahoo.vespa.model.admin.Admin;
@@ -100,8 +103,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
if (deployState.getProperties().useDedicatedNodeForLogserver() &&
context.getApplicationType() == ConfigModelContext.ApplicationType.DEFAULT &&
deployState.isHosted() &&
- deployState.zone().system() == SystemName.cd &&
- deployState.zone().environment() == Environment.dev)
+ logServerFlagValue(deployState))
return NodesSpecification.dedicated(1, context);
else
return NodesSpecification.nonDedicated(1, context);
@@ -223,4 +225,10 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
admin.addSlobroks(slobroks);
}
+ private boolean logServerFlagValue(DeployState deployState) {
+ return Flags.ENABLE_LOGSERVER.bindTo(deployState.flagSource())
+ .with(FetchVector.Dimension.APPLICATION_ID, deployState.getProperties().applicationId().serializedForm())
+ .value();
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
index 060fe96100d..d3696c6e52f 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
@@ -16,6 +16,10 @@ import com.yahoo.config.model.provision.SingleNodeProvisioner;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Flavor;
import com.yahoo.config.provision.Zone;
+import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.flags.FlagId;
+import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.JsonNodeRawFlag;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
@@ -140,11 +144,13 @@ public class VespaModelTester {
.useDedicatedNodeForLogserver(useDedicatedNodeForLogserver)
.build();
+ FlagSource flagSource = (FlagId id, FetchVector vector) -> Optional.of(JsonNodeRawFlag.fromJson(String.valueOf(useDedicatedNodeForLogserver)));
DeployState deployState = new DeployState.Builder()
.applicationPackage(appPkg)
.modelHostProvisioner(provisioner)
.properties(properties)
.zone(zone)
+ .flagSource(flagSource)
.build();
return modelCreatorWithMockPkg.create(false, deployState, configModelRegistry);
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index 545f288af29..e717607c757 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -8,6 +8,7 @@ import java.util.List;
import java.util.Optional;
import java.util.TreeMap;
+import static com.yahoo.vespa.flags.FetchVector.Dimension.APPLICATION_ID;
import static com.yahoo.vespa.flags.FetchVector.Dimension.HOSTNAME;
/**
@@ -74,8 +75,12 @@ public class Flags {
public static final UnboundBooleanFlag ENABLE_CPU_TEMPERATURE_TASK = defineFeatureFlag(
"enable-cputemptask", true,
"Whether to enable CPU temperature task", "Takes effect on next host admin tick",
- HOSTNAME
- );
+ HOSTNAME);
+
+ public static final UnboundBooleanFlag ENABLE_LOGSERVER = defineFeatureFlag(
+ "enable-logserver", false,
+ "Whether to enable logserver.", "Takes effect at redeployment",
+ APPLICATION_ID);
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, String description,