aboutsummaryrefslogtreecommitdiffstats
path: root/configserver/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2022-01-07 10:54:48 +0100
committerGitHub <noreply@github.com>2022-01-07 10:54:48 +0100
commitea8199921bb9b46e86ef7f2c715c2e00b0708ade (patch)
treeb4178b23227abe63dd14ae75310a8e7f07ed608d /configserver/src/main/java/com/yahoo
parent7f0beb86fe8a571575aa220ce3dfd0061de9ece2 (diff)
parent2d80f10452966e85dafa3480a4b1c7c4e97ca55d (diff)
Merge pull request #20680 from vespa-engine/arnej/add-legacy-overrides
Arnej/add legacy overrides
Diffstat (limited to 'configserver/src/main/java/com/yahoo')
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/ActivatedModelsBuilder.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/LegacyFlags.java46
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java3
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java3
4 files changed, 53 insertions, 5 deletions
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 687c897c88b..54ceb394ee6 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
@@ -102,7 +102,7 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
) {
log.log(Level.FINE, () -> String.format("Loading model version %s for session %s application %s",
modelFactory.version(), applicationGeneration, applicationId));
- ModelContext.Properties modelContextProperties = createModelContextProperties(applicationId);
+ ModelContext.Properties modelContextProperties = createModelContextProperties(applicationId, applicationPackage);
Provisioned provisioned = new Provisioned();
ModelContext modelContext = new ModelContextImpl(
applicationPackage,
@@ -146,14 +146,14 @@ public class ActivatedModelsBuilder extends ModelsBuilder<Application> {
return Optional.of(value);
}
- private ModelContext.Properties createModelContextProperties(ApplicationId applicationId) {
+ private ModelContext.Properties createModelContextProperties(ApplicationId applicationId, ApplicationPackage applicationPackage) {
return new ModelContextImpl.Properties(applicationId,
configserverConfig,
zone(),
ImmutableSet.copyOf(new ContainerEndpointsCache(TenantRepository.getTenantPath(tenant), curator).read(applicationId)),
false, // We may be bootstrapping, but we only know and care during prepare
false, // Always false, assume no one uses it when activating
- flagSource,
+ LegacyFlags.from(applicationPackage, flagSource),
new EndpointCertificateMetadataStore(curator, TenantRepository.getTenantPath(tenant))
.readEndpointCertificateMetadata(applicationId)
.flatMap(new EndpointCertificateRetriever(secretStore)::readEndpointCertificateSecrets),
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/LegacyFlags.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/LegacyFlags.java
new file mode 100644
index 00000000000..80467c80196
--- /dev/null
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/LegacyFlags.java
@@ -0,0 +1,46 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.config.server.modelfactory;
+
+import com.yahoo.config.application.api.ApplicationPackage;
+import com.yahoo.vespa.flags.Flags;
+import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.InMemoryFlagSource;
+import com.yahoo.vespa.flags.OrderedFlagSource;
+
+import java.util.Map;
+
+
+/**
+ * @author arnej
+ */
+public class LegacyFlags {
+
+ public static final String GEO_POSITIONS = "v7-geo-positions";
+ public static final String FOO_BAR = "foo-bar"; // for testing
+
+ private static FlagSource buildFrom(Map<String, String> legacyOverrides) {
+ var flags = new InMemoryFlagSource();
+ for (var entry : legacyOverrides.entrySet()) {
+ String key = entry.getKey();
+ String value = entry.getValue();
+ boolean legacyWanted = Boolean.valueOf(value);
+ switch (key) {
+ case GEO_POSITIONS:
+ flags = flags.withBooleanFlag(Flags.USE_V8_GEO_POSITIONS.id(), ! legacyWanted);
+ break;
+ case FOO_BAR:
+ // ignored
+ break;
+ default:
+ throw new IllegalArgumentException("Unknown legacy override: "+key);
+ }
+ }
+ return flags;
+ }
+
+ public static FlagSource from(ApplicationPackage pkg, FlagSource input) {
+ var overrides = buildFrom(pkg.legacyOverrides());
+ FlagSource result = new OrderedFlagSource(overrides, input);
+ return result;
+ }
+}
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 aaacc9f69e0..e4a0fa81f94 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
@@ -35,6 +35,7 @@ import com.yahoo.vespa.config.server.deploy.ZooKeeperDeployer;
import com.yahoo.vespa.config.server.filedistribution.FileDistributionFactory;
import com.yahoo.vespa.config.server.host.HostValidator;
import com.yahoo.vespa.config.server.http.InvalidApplicationException;
+import com.yahoo.vespa.config.server.modelfactory.LegacyFlags;
import com.yahoo.vespa.config.server.modelfactory.ModelFactoryRegistry;
import com.yahoo.vespa.config.server.modelfactory.PreparedModelsBuilder;
import com.yahoo.vespa.config.server.provision.HostProvisionerProvider;
@@ -195,7 +196,7 @@ public class SessionPreparer {
Set.copyOf(containerEndpoints),
params.isBootstrap(),
currentActiveApplicationSet.isEmpty(),
- flagSource,
+ LegacyFlags.from(applicationPackage, flagSource),
endpointCertificateSecrets,
athenzDomain,
params.quota(),
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
index 806b67758c2..6a483c38aee 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/zookeeper/ZKApplicationPackage.java
@@ -10,6 +10,7 @@ import com.yahoo.config.application.api.ComponentInfo;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.application.api.UnparsedConfigDefinition;
import com.yahoo.config.codegen.DefParser;
+import com.yahoo.config.model.application.AbstractApplicationPackage;
import com.yahoo.config.provision.AllocatedHosts;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.serialization.AllocatedHostsSerializer;
@@ -44,7 +45,7 @@ import static com.yahoo.vespa.config.server.zookeeper.ZKApplication.USERAPP_ZK_S
*
* @author Tony Vaagenes
*/
-public class ZKApplicationPackage implements ApplicationPackage {
+public class ZKApplicationPackage extends AbstractApplicationPackage {
private final ZKApplication zkApplication;