aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@oath.com>2019-01-25 11:28:11 +0100
committerHåkon Hallingstad <hakon@oath.com>2019-01-25 11:28:11 +0100
commit38449fd3d36f8a207fcae3c12f29068a799d2413 (patch)
tree7ac13d8e6f7ce24e45613340d4aa99ea2fff36d9
parent8dbc9098a8f27c0987bee404a4fe24da8bf1bac1 (diff)
Make ModelContext.Properties more accessible in config model
This commit makes it easier to get the ModelContext.Properties instance in the config model. Before, one would typically have to change a bunch of code to wire through a new property (builder methods and fields, DeployProperties constructor, fields, and getters, mock classes, ...). It is made accessible through: - ModelContext.properties(), - DeployState.getProperties(), and - ConfigModelContext.properties() The Properties implementation is in the configserver module, making it easy to back properties with flags.
-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/ConfigModelContext.java5
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java11
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java174
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java27
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java76
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/VespaModelFactory.java25
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java2
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java10
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java24
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java12
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java9
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidatorTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java28
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java10
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java27
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java24
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java11
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java13
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/deploy/ModelContextImpl.java10
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java6
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java9
-rw-r--r--standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java2
29 files changed, 217 insertions, 330 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 6d5804ab700..5021a2b3a5f 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
@@ -39,6 +39,7 @@ public interface ModelContext {
/** The Vespa version we want nodes to become */
Version wantedNodeVespaVersion();
+ /** Warning: As elsewhere in this package, do not make backwards incompatible changes that will break old config models! */
interface Properties {
boolean multitenant();
ApplicationId applicationId();
diff --git a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
index c39eb15b027..f7167147a61 100644
--- a/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
+++ b/config-model/src/main/java/com/yahoo/config/model/ConfigModelContext.java
@@ -3,6 +3,7 @@ package com.yahoo.config.model;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.VespaModel;
@@ -26,7 +27,8 @@ public final class ConfigModelContext {
private ConfigModelContext(ApplicationType applicationType,
DeployState deployState,
- VespaModel vespaModel, ConfigModelRepoAdder configModelRepoAdder,
+ VespaModel vespaModel,
+ ConfigModelRepoAdder configModelRepoAdder,
AbstractConfigProducer parent,
String producerId) {
this.applicationType = applicationType;
@@ -44,6 +46,7 @@ public final class ConfigModelContext {
public DeployState getDeployState() { return deployState; }
public ApplicationType getApplicationType() { return applicationType; }
public VespaModel vespaModel() { return vespaModel; }
+ public ModelContext.Properties properties() { return deployState.getProperties(); }
/** Returns write access to the config model repo, or null (only) if this is improperly initialized during testing */
public ConfigModelRepoAdder getConfigModelRepoAdder() { return configModelRepoAdder; }
diff --git a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
index ff89cd8e41a..b5cadedd454 100644
--- a/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
+++ b/config-model/src/main/java/com/yahoo/config/model/admin/AdminModel.java
@@ -2,11 +2,11 @@
package com.yahoo.config.model.admin;
import com.google.common.collect.ImmutableList;
+import com.yahoo.config.model.ApplicationConfigProducerRoot;
import com.yahoo.config.model.ConfigModel;
import com.yahoo.config.model.ConfigModelContext;
import com.yahoo.config.model.ConfigModelRepo;
-import com.yahoo.config.model.ApplicationConfigProducerRoot;
-import com.yahoo.config.model.deploy.DeployProperties;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
import com.yahoo.config.model.builder.xml.ConfigModelId;
import com.yahoo.config.model.deploy.DeployState;
@@ -18,7 +18,8 @@ import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.container.ContainerModel;
import org.w3c.dom.Element;
-import java.util.*;
+import java.util.Collection;
+import java.util.List;
/**
* Config model adaptor of the Admin class.
@@ -77,7 +78,7 @@ public class AdminModel extends ConfigModel {
@Override
public void doBuild(AdminModel model, Element adminElement, ConfigModelContext modelContext) {
AbstractConfigProducer parent = modelContext.getParentProducer();
- DeployProperties properties = modelContext.getDeployState().getProperties();
+ ModelContext.Properties properties = modelContext.getDeployState().getProperties();
DomAdminV2Builder domBuilder = new DomAdminV2Builder(modelContext.getApplicationType(),
modelContext.getDeployState().getFileRegistry(),
properties.multitenant(),
@@ -106,7 +107,7 @@ public class AdminModel extends ConfigModel {
@Override
public void doBuild(AdminModel model, Element adminElement, ConfigModelContext modelContext) {
AbstractConfigProducer parent = modelContext.getParentProducer();
- DeployProperties properties = modelContext.getDeployState().getProperties();
+ ModelContext.Properties properties = modelContext.getDeployState().getProperties();
DomAdminV4Builder domBuilder = new DomAdminV4Builder(modelContext,
properties.multitenant(),
properties.configServerSpecs(),
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
deleted file mode 100644
index 626b5bfbf5c..00000000000
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.config.model.deploy;
-
-import com.yahoo.config.model.api.ConfigServerSpec;
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.HostName;
-import com.yahoo.component.Version;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Collection of properties for a deployment.
- *
- * @author Ulf Lilleengen
- */
-public class DeployProperties {
-
- private final boolean multitenant;
- private final ApplicationId applicationId;
- private final List<ConfigServerSpec> serverSpecs = new ArrayList<>();
- private final HostName loadBalancerName;
- private final URI ztsUrl;
- private final String athenzDnsSuffix;
- private final boolean hostedVespa;
- private final Version vespaVersion;
- private final boolean isBootstrap;
- private final boolean isFirstTimeDeployment;
- private final boolean useDedicatedNodeForLogserver;
-
-
- private DeployProperties(boolean multitenant,
- ApplicationId applicationId,
- List<ConfigServerSpec> configServerSpecs,
- HostName loadBalancerName,
- boolean hostedVespa,
- URI ztsUrl,
- String athenzDnsSuffix,
- Version vespaVersion,
- boolean isBootstrap,
- boolean isFirstTimeDeployment,
- boolean useDedicatedNodeForLogserver) {
- this.loadBalancerName = loadBalancerName;
- this.ztsUrl = ztsUrl;
- this.athenzDnsSuffix = athenzDnsSuffix;
- this.vespaVersion = vespaVersion;
- this.multitenant = multitenant || hostedVespa || Boolean.getBoolean("multitenant");
- this.applicationId = applicationId;
- this.serverSpecs.addAll(configServerSpecs);
- this.hostedVespa = hostedVespa;
- this.isBootstrap = isBootstrap;
- this.isFirstTimeDeployment = isFirstTimeDeployment;
- this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver;
- }
-
- public boolean multitenant() {
- return multitenant;
- }
-
- public ApplicationId applicationId() {
- return applicationId;
- }
-
- public List<ConfigServerSpec> configServerSpecs() {
- return serverSpecs;
- }
-
- public HostName loadBalancerName() {
- return loadBalancerName;
- }
-
- public URI ztsUrl() {
- return ztsUrl;
- }
-
- public String athenzDnsSuffix() {
- return athenzDnsSuffix;
- }
-
- public boolean hostedVespa() {
- return hostedVespa;
- }
-
- /** Returns the config model version this is building */
- public Version vespaVersion() {
- return vespaVersion;
- }
-
- /** Returns whether this deployment happens during bootstrap *prepare* (not set on activate) */
- public boolean isBootstrap() { return isBootstrap; }
-
- /** 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();
- private boolean multitenant = false;
- private List<ConfigServerSpec> configServerSpecs = new ArrayList<>();
- private HostName loadBalancerName;
- private URI ztsUrl;
- private String athenzDnsSuffix;
- private boolean hostedVespa = false;
- private Version vespaVersion = new Version(1, 0, 0);
- private boolean isBootstrap = false;
- private boolean isFirstTimeDeployment = false;
- private boolean useDedicatedNodeForLogserver = false;
-
- public Builder applicationId(ApplicationId applicationId) {
- this.applicationId = applicationId;
- return this;
- }
-
- public Builder multitenant(boolean multitenant) {
- this.multitenant = multitenant;
- return this;
- }
-
- public Builder configServerSpecs(List<ConfigServerSpec> configServerSpecs) {
- this.configServerSpecs = configServerSpecs;
- return this;
- }
-
- public Builder loadBalancerName(HostName loadBalancerName) {
- this.loadBalancerName = loadBalancerName;
- return this;
- }
-
- public Builder athenzDnsSuffix(String athenzDnsSuffix) {
- this.athenzDnsSuffix = athenzDnsSuffix;
- return this;
- }
-
- public Builder ztsUrl(URI ztsUrl) {
- this.ztsUrl = ztsUrl;
- return this;
- }
-
- public Builder vespaVersion(Version version) {
- this.vespaVersion = version;
- return this;
- }
-
- public Builder hostedVespa(boolean hostedVespa) {
- this.hostedVespa = hostedVespa;
- return this;
- }
-
- public Builder isBootstrap(boolean isBootstrap) {
- this.isBootstrap = isBootstrap;
- return this;
- }
-
- public Builder isFirstTimeDeployment(boolean isFirstTimeDeployment) {
- this.isFirstTimeDeployment = isFirstTimeDeployment;
- 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,
- useDedicatedNodeForLogserver);
- }
- }
-
-}
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..910eff065d1 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
@@ -2,16 +2,18 @@
package com.yahoo.config.model.deploy;
import ai.vespa.rankingexpression.importer.configmodelview.ImportedMlModels;
+import ai.vespa.rankingexpression.importer.configmodelview.MlModelImporter;
import com.yahoo.component.Version;
import com.yahoo.component.Vtag;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.config.application.api.UnparsedConfigDefinition;
+import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
import com.yahoo.config.model.api.HostProvisioner;
-import ai.vespa.rankingexpression.importer.configmodelview.MlModelImporter;
import com.yahoo.config.model.api.Model;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.api.ValidationParameters;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.application.provider.MockFileRegistry;
@@ -28,7 +30,6 @@ import com.yahoo.vespa.config.ConfigDefinition;
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.model.container.search.QueryProfiles;
import com.yahoo.vespa.model.container.search.QueryProfilesBuilder;
import com.yahoo.vespa.model.container.search.SemanticRuleBuilder;
@@ -63,7 +64,8 @@ public class DeployState implements ConfigDefinitionStore {
private final Optional<ConfigDefinitionRepo> configDefinitionRepo;
private final Optional<ApplicationPackage> permanentApplicationPackage;
private final Optional<Model> previousModel;
- private final DeployProperties properties;
+ private final ModelContext.Properties properties;
+ private final Version vespaVersion;
private final Set<Rotation> rotations;
private final Zone zone;
private final QueryProfiles queryProfiles;
@@ -88,7 +90,8 @@ public class DeployState implements ConfigDefinitionStore {
FileRegistry fileRegistry,
DeployLogger deployLogger,
Optional<HostProvisioner> hostProvisioner,
- DeployProperties properties,
+ ModelContext.Properties properties,
+ Version vespaVersion,
Optional<ApplicationPackage> permanentApplicationPackage,
Optional<ConfigDefinitionRepo> configDefinitionRepo,
java.util.Optional<Model> previousModel,
@@ -104,6 +107,7 @@ public class DeployState implements ConfigDefinitionStore {
this.rankProfileRegistry = rankProfileRegistry;
this.applicationPackage = applicationPackage;
this.properties = properties;
+ this.vespaVersion = vespaVersion;
this.previousModel = previousModel;
this.provisioner = hostProvisioner.orElse(getDefaultModelHostProvisioner(applicationPackage));
this.searchDefinitions = searchDocumentModel.getSearchDefinitions();
@@ -210,7 +214,9 @@ public class DeployState implements ConfigDefinitionStore {
return permanentApplicationPackage;
}
- public DeployProperties getProperties() { return properties; }
+ public ModelContext.Properties getProperties() { return properties; }
+
+ public Version getVespaVersion() { return vespaVersion; }
public Optional<Model> getPreviousModel() { return previousModel; }
@@ -243,7 +249,8 @@ public class DeployState implements ConfigDefinitionStore {
private DeployLogger logger = new BaseDeployLogger();
private Optional<HostProvisioner> hostProvisioner = Optional.empty();
private Optional<ApplicationPackage> permanentApplicationPackage = Optional.empty();
- private DeployProperties properties = new DeployProperties.Builder().build();
+ private ModelContext.Properties properties = new TestProperties();
+ private Version version = new Version(1, 0, 0);
private Optional<ConfigDefinitionRepo> configDefinitionRepo = Optional.empty();
private Optional<Model> previousModel = Optional.empty();
private Set<Rotation> rotations = new HashSet<>();
@@ -277,11 +284,16 @@ public class DeployState implements ConfigDefinitionStore {
return this;
}
- public Builder properties(DeployProperties properties) {
+ public Builder properties(ModelContext.Properties properties) {
this.properties = properties;
return this;
}
+ public Builder vespaVersion(Version version) {
+ this.version = version;
+ return this;
+ }
+
public Builder configDefinitionRepo(ConfigDefinitionRepo configDefinitionRepo) {
this.configDefinitionRepo = Optional.of(configDefinitionRepo);
return this;
@@ -333,6 +345,7 @@ public class DeployState implements ConfigDefinitionStore {
logger,
hostProvisioner,
properties,
+ version,
permanentApplicationPackage,
configDefinitionRepo,
previousModel,
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
new file mode 100644
index 00000000000..83e595e1513
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -0,0 +1,76 @@
+// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.config.model.deploy;
+
+import com.google.common.collect.ImmutableList;
+import com.yahoo.config.model.api.ConfigServerSpec;
+import com.yahoo.config.model.api.ModelContext;
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.HostName;
+import com.yahoo.config.provision.Rotation;
+import com.yahoo.config.provision.Zone;
+import com.yahoo.vespa.model.admin.Configserver;
+
+import java.net.URI;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * A test-only Properties class
+ *
+ * <p>Unfortunately this has to be placed in non-test source tree since lots of code already have test code (fix later)
+ *
+ * @author hakonhall
+ */
+public class TestProperties implements ModelContext.Properties {
+ private boolean multitenant = false;
+ private ApplicationId applicationId = ApplicationId.defaultId();
+ private List<ConfigServerSpec> configServerSpecs = Collections.emptyList();
+ private HostName loadBalancerName = null;
+ private URI ztsUrl = null;
+ private String athenzDnsSuffix = null;
+ private boolean hostedVespa = false;
+ private Zone zone;
+ private Set<Rotation> rotations;
+ private boolean isBootstrap = false;
+ private boolean isFirstTimeDeployment = false;
+ private boolean useDedicatedNodeForLogserver = false;
+
+ @Override public boolean multitenant() { return multitenant; }
+ @Override public ApplicationId applicationId() { return applicationId; }
+ @Override public List<ConfigServerSpec> configServerSpecs() { return configServerSpecs; }
+ @Override public HostName loadBalancerName() { return loadBalancerName; }
+ @Override public URI ztsUrl() { return ztsUrl; }
+ @Override public String athenzDnsSuffix() { return athenzDnsSuffix; }
+ @Override public boolean hostedVespa() { return hostedVespa; }
+ @Override public Zone zone() { return zone; }
+ @Override public Set<Rotation> rotations() { return rotations; }
+ @Override public boolean isBootstrap() { return isBootstrap; }
+ @Override public boolean isFirstTimeDeployment() { return isFirstTimeDeployment; }
+ @Override public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; }
+
+ public TestProperties setApplicationId(ApplicationId applicationId) {
+ this.applicationId = applicationId;
+ return this;
+ }
+
+ public TestProperties setHostedVespa(boolean hostedVespa) {
+ this.hostedVespa = hostedVespa;
+ return this;
+ }
+
+ public TestProperties setMultitenant(boolean multitenant) {
+ this.multitenant = multitenant;
+ return this;
+ }
+
+ public TestProperties setConfigServerSpecs(List<Configserver.Spec> configServerSpecs) {
+ this.configServerSpecs = ImmutableList.copyOf(configServerSpecs);
+ return this;
+ }
+
+ public TestProperties setUseDedicatedNodeForLogserver(boolean useDedicatedNodeForLogserver) {
+ this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver;
+ return this;
+ }
+}
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..af6400023cc 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
@@ -1,7 +1,9 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model;
+import ai.vespa.rankingexpression.importer.configmodelview.MlModelImporter;
import com.google.inject.Inject;
+import com.yahoo.component.Version;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.ConfigModelRegistry;
@@ -10,7 +12,6 @@ import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.ConfigModelPlugin;
import com.yahoo.config.model.api.HostProvisioner;
-import ai.vespa.rankingexpression.importer.configmodelview.MlModelImporter;
import com.yahoo.config.model.api.Model;
import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.api.ModelCreateResult;
@@ -18,13 +19,10 @@ import com.yahoo.config.model.api.ModelFactory;
import com.yahoo.config.model.api.ValidationParameters;
import com.yahoo.config.model.application.provider.ApplicationPackageXmlFilesValidator;
import com.yahoo.config.model.builder.xml.ConfigModelBuilder;
-import com.yahoo.config.model.deploy.DeployProperties;
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.model.application.validation.Validation;
-
import org.xml.sax.SAXException;
import java.io.IOException;
@@ -137,7 +135,8 @@ public class VespaModelFactory implements ModelFactory {
.configDefinitionRepo(modelContext.configDefinitionRepo())
.fileRegistry(modelContext.getFileRegistry())
.permanentApplicationPackage(modelContext.permanentApplicationPackage())
- .properties(createDeployProperties(modelContext.properties()))
+ .properties(modelContext.properties())
+ .vespaVersion(version())
.modelHostProvisioner(createHostProvisioner(modelContext))
.rotations(modelContext.properties().rotations())
.modelImporters(modelImporters)
@@ -148,22 +147,6 @@ public class VespaModelFactory implements ModelFactory {
return builder.build(validationParameters);
}
- private DeployProperties createDeployProperties(ModelContext.Properties properties) {
- return new DeployProperties.Builder()
- .applicationId(properties.applicationId())
- .configServerSpecs(properties.configServerSpecs())
- .loadBalancerName(properties.loadBalancerName())
- .ztsUrl(properties.ztsUrl())
- .athenzDnsSuffix(properties.athenzDnsSuffix())
- .multitenant(properties.multitenant())
- .hostedVespa(properties.hostedVespa())
- .vespaVersion(version())
- .isBootstrap(properties.isBootstrap())
- .isFirstTimeDeployment(properties.isFirstTimeDeployment())
- .useDedicatedNodeForLogserver(properties.useDedicatedNodeForLogserver())
- .build();
- }
-
private static HostProvisioner createHostProvisioner(ModelContext modelContext) {
return modelContext.hostProvisioner().orElse(
DeployState.getDefaultModelHostProvisioner(modelContext.applicationPackage()));
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java
index 2bedead6b9a..7485bedf788 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/ComponentValidator.java
@@ -37,7 +37,7 @@ public class ComponentValidator extends Validator {
@Override
public void validate(VespaModel model, DeployState deployState) {
ApplicationPackage app = deployState.getApplicationPackage();
- for (ComponentInfo info : app.getComponentsInfo(deployState.getProperties().vespaVersion())) {
+ for (ComponentInfo info : app.getComponentsInfo(deployState.getVespaVersion())) {
try {
this.jarFile = new JarFile(app.getFileReference(Path.fromString(info.getPathRelativeToAppDir())));
} catch (ZipException e) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
index 7e98804370f..62b76374af9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilder.java
@@ -238,7 +238,7 @@ public class VespaDomBuilder extends VespaModelBuilder {
ApplicationConfigProducerRoot root = new ApplicationConfigProducerRoot(parent,
name,
deployState.getDocumentModel(),
- deployState.getProperties().vespaVersion(),
+ deployState.getVespaVersion(),
deployState.getProperties().applicationId());
root.setHostSystem(new HostSystem(root, "hosts", deployState.getProvisioner(), deployState.getDeployLogger()));
new Client(root);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
index 7a10a97f4da..b133ea1de4c 100755
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
@@ -350,7 +350,7 @@ public final class ContainerCluster
}
private void addAndSendApplicationBundles(DeployState deployState) {
- for (ComponentInfo component : deployState.getApplicationPackage().getComponentsInfo(deployState.getProperties().vespaVersion())) {
+ for (ComponentInfo component : deployState.getApplicationPackage().getComponentsInfo(deployState.getVespaVersion())) {
FileReference reference = FileSender.sendFileToServices(component.getPathRelativeToAppDir(), containers);
applicationBundles.add(reference);
}
diff --git a/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java b/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
index aa29ebd9825..383446228cc 100644
--- a/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/deploy/DeployStateTest.java
@@ -2,9 +2,9 @@
package com.yahoo.config.model.deploy;
import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.codegen.InnerCNode;
import com.yahoo.config.model.api.ConfigDefinitionRepo;
import com.yahoo.config.model.api.HostProvisioner;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockApplicationPackage;
@@ -23,13 +23,11 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
/**
* @author Ulf Lilleengen
@@ -69,7 +67,7 @@ public class DeployStateTest {
ApplicationId customId = new ApplicationId.Builder()
.tenant("bar")
.applicationName("foo").instanceName("quux").build();
- DeployProperties properties = new DeployProperties.Builder().applicationId(customId).build();
+ ModelContext.Properties properties = new TestProperties().setApplicationId(customId);
builder.properties(properties);
state = builder.build();
assertThat(state.getProperties().applicationId(), is(customId));
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
index 3eb1d51a57e..588a722d476 100644
--- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
+++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java
@@ -4,13 +4,10 @@ package com.yahoo.config.model.provision;
import com.yahoo.cloud.config.log.LogdConfig;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.api.HostInfo;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.provision.ClusterMembership;
-import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.Flavor;
-import com.yahoo.config.provision.RegionName;
-import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
import com.yahoo.config.provisioning.FlavorsConfig;
import com.yahoo.container.core.ApplicationMetadataConfig;
@@ -1619,7 +1616,7 @@ public class ModelProvisioningTest {
VespaModelCreatorWithMockPkg modelCreatorWithMockPkg = new VespaModelCreatorWithMockPkg(hosts, services, ApplicationPackageUtils.generateSearchDefinition("type1"));
ApplicationPackage appPkg = modelCreatorWithMockPkg.appPkg;
DeployState deployState = new DeployState.Builder().applicationPackage(appPkg).
- properties((new DeployProperties.Builder()).multitenant(multitenant).build()).
+ properties((new TestProperties()).setMultitenant(multitenant)).
build();
return modelCreatorWithMockPkg.create(false, deployState);
}
@@ -1816,9 +1813,8 @@ public class ModelProvisioningTest {
VespaModelTester tester = new VespaModelTester();
tester.useDedicatedNodeForLogserver(useDedicatedNodeForLogserver);
tester.addHosts(numberOfHosts);
- Zone zone = new Zone(SystemName.cd, Environment.dev, RegionName.defaultName());
- VespaModel model = tester.createModel(zone, services, true);
+ VespaModel model = tester.createModel(Zone.defaultZone(), services, true);
assertThat(model.getRoot().getHostSystem().getHosts().size(), is(numberOfHosts));
Admin admin = model.getAdmin();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
index 93f87ef033b..795da289569 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java
@@ -1,13 +1,13 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.admin;
+import com.yahoo.cloud.config.SentinelConfig;
import com.yahoo.cloud.config.SlobroksConfig;
import com.yahoo.cloud.config.SlobroksConfig.Slobrok;
import com.yahoo.cloud.config.log.LogdConfig;
-import com.yahoo.cloud.config.SentinelConfig;
import com.yahoo.config.model.ApplicationConfigProducerRoot;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.model.test.TestRoot;
import com.yahoo.config.provision.ApplicationId;
@@ -154,13 +154,12 @@ public class AdminTestCase {
public void testTenantAndAppInSentinelConfig() {
DeployState state = new DeployState.Builder()
.zone(new Zone(Environment.dev, RegionName.from("baz")))
- .properties(new DeployProperties.Builder()
- .applicationId(new ApplicationId.Builder()
- .tenant("quux")
- .applicationName("foo")
- .instanceName("bim")
- .build())
- .build())
+ .properties(new TestProperties()
+ .setApplicationId(new ApplicationId.Builder()
+ .tenant("quux")
+ .applicationName("foo")
+ .instanceName("bim")
+ .build()))
.build();
TestRoot root = new TestDriver().buildModel(state);
String localhost = HostName.getLocalhost();
@@ -281,12 +280,11 @@ public class AdminTestCase {
DeployState state = new DeployState.Builder()
.zone(new Zone(Environment.dev, RegionName.from("baz")))
.properties(
- new DeployProperties.Builder().
- applicationId(new ApplicationId.Builder().
+ new TestProperties().
+ setApplicationId(new ApplicationId.Builder().
tenant("quux").
applicationName("foo").instanceName("bim")
- .build())
- .build())
+ .build()))
.build();
TestRoot root = new TestDriver().buildModel(state);
String localhost = HostName.getLocalhost();
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 0b9aeb9f188..9f68b8b32bd 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
@@ -3,10 +3,10 @@ package com.yahoo.vespa.model.admin;
import com.yahoo.cloud.config.LogforwarderConfig;
import com.yahoo.cloud.config.SentinelConfig;
-import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.model.deploy.DeployProperties;
+import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.Hosts;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockApplicationPackage;
@@ -27,7 +27,9 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static com.yahoo.vespa.model.admin.monitoring.DefaultMetricsConsumer.VESPA_CONSUMER_ID;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
/**
* @author Ulf Lilleengen
@@ -188,9 +190,7 @@ public class DedicatedAdminV4Test {
VespaModel model = createModel(hosts, services, new DeployState.Builder()
.zone(new Zone(SystemName.cd, Environment.dev, RegionName.defaultName()))
- .properties(new DeployProperties.Builder()
- .hostedVespa(true)
- .build()));
+ .properties(new TestProperties().setHostedVespa(true)));
assertEquals(1, model.getHosts().size());
// Should create a container on the same node as logserver
assertHostContainsServices(model, "hosts/myhost0", "slobrok", "logd", "logserver", "container");
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java
index e4338436076..da81c74fdd2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/SecretStoreValidatorTest.java
@@ -3,8 +3,8 @@ package com.yahoo.vespa.model.application.validation;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.NullConfigModelRegistry;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
@@ -82,9 +82,7 @@ public class SecretStoreValidatorTest {
DeployState.Builder builder = new DeployState.Builder()
.applicationPackage(app)
.zone(new Zone(Environment.prod, RegionName.from("foo")))
- .properties(new DeployProperties.Builder()
- .hostedVespa(true)
- .build());
+ .properties(new TestProperties().setHostedVespa(true));
final DeployState deployState = builder.build();
assertTrue("Test must emulate a hosted deployment.", deployState.isHosted());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
index 7082dec2c78..a95ae1d1706 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ValidationTester.java
@@ -5,14 +5,12 @@ import com.google.common.collect.ImmutableList;
import com.yahoo.collections.Pair;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.api.ConfigChangeAction;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
-import static com.yahoo.config.model.test.MockApplicationPackage.MUSIC_SEARCHDEFINITION;
-import static com.yahoo.config.model.test.MockApplicationPackage.BOOK_SEARCHDEFINITION;
import java.time.Instant;
import java.time.LocalDate;
@@ -20,6 +18,9 @@ import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.List;
+import static com.yahoo.config.model.test.MockApplicationPackage.BOOK_SEARCHDEFINITION;
+import static com.yahoo.config.model.test.MockApplicationPackage.MUSIC_SEARCHDEFINITION;
+
/**
* @author bratseth
*/
@@ -55,7 +56,7 @@ public class ValidationTester {
VespaModelCreatorWithMockPkg newModelCreator = new VespaModelCreatorWithMockPkg(newApp);
DeployState.Builder deployStateBuilder = new DeployState.Builder()
.applicationPackage(newApp)
- .properties(new DeployProperties.Builder().hostedVespa(true).build())
+ .properties(new TestProperties().setHostedVespa(true))
.modelHostProvisioner(new InMemoryProvisioner(nodeCount))
.now(now);
if (previousModel != null)
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidatorTest.java
index d3549eb6513..84a5b69c5f2 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/first/AccessControlValidatorTest.java
@@ -3,8 +3,8 @@ package com.yahoo.vespa.model.application.validation.first;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.NullConfigModelRegistry;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
@@ -141,9 +141,7 @@ public class AccessControlValidatorTest {
DeployState.Builder builder = new DeployState.Builder()
.applicationPackage(app)
.zone(new Zone(Environment.prod, RegionName.from("foo")) )
- .properties(new DeployProperties.Builder()
- .hostedVespa(true)
- .build());
+ .properties(new TestProperties().setHostedVespa(true));
final DeployState deployState = builder.build();
assertTrue("Test must emulate a hosted deployment.", deployState.isHosted());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
index a5cf26f4d80..2c3e447533d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/ContentBuilderTest.java
@@ -4,25 +4,28 @@ package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.collections.CollectionUtil;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.application.api.ApplicationPackage;
-import com.yahoo.config.model.deploy.DeployProperties;
+import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
-import com.yahoo.vespa.config.search.core.PartitionsConfig;
-import com.yahoo.vespa.config.search.core.ProtonConfig;
-import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
import com.yahoo.text.StringUtilities;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import com.yahoo.vespa.config.ConfigPayloadBuilder;
import com.yahoo.vespa.config.GenericConfig;
+import com.yahoo.vespa.config.search.core.PartitionsConfig;
+import com.yahoo.vespa.config.search.core.ProtonConfig;
import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.Service;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.content.ContentSearchCluster;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
import com.yahoo.vespa.model.content.engines.ProtonEngine;
-import com.yahoo.vespa.model.search.*;
+import com.yahoo.vespa.model.search.AbstractSearchCluster;
+import com.yahoo.vespa.model.search.Dispatch;
+import com.yahoo.vespa.model.search.IndexedSearchCluster;
+import com.yahoo.vespa.model.search.SearchNode;
+import com.yahoo.vespa.model.search.StreamingSearchCluster;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
-
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
@@ -33,7 +36,13 @@ import java.util.List;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.Matchers.containsString;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
/**
* @author baldersheim
@@ -797,10 +806,7 @@ public class ContentBuilderTest extends DomBuilderTest {
"</content>" +
"</services>";
- DeployState.Builder deployStateBuilder = new DeployState.Builder().properties(
- new DeployProperties.Builder()
- .hostedVespa(true)
- .build());
+ DeployState.Builder deployStateBuilder = new DeployState.Builder().properties(new TestProperties().setHostedVespa(true));
VespaModel model = new VespaModelCreatorWithMockPkg(new MockApplicationPackage.Builder()
.withServices(hostedXml)
.withSearchDefinition(MockApplicationPackage.MUSIC_SEARCHDEFINITION)
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
index 121b1cd4f4d..303799d4346 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/ContainerClusterTest.java
@@ -5,8 +5,8 @@ import com.yahoo.cloud.config.ClusterInfoConfig;
import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.cloud.config.RoutingProviderConfig;
import com.yahoo.config.application.api.DeployLogger;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
@@ -60,7 +60,7 @@ public class ContainerClusterTest {
@Test
public void requreThatWeCanGetTheZoneConfig() {
- DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(true).build())
+ DeployState state = new DeployState.Builder().properties(new TestProperties().setHostedVespa(true))
.zone(new Zone(SystemName.cd, Environment.test, RegionName.from("some-region")))
.build();
MockRoot root = new MockRoot("foo", state);
@@ -89,11 +89,11 @@ public class ContainerClusterTest {
return createContainerCluster(root, isCombinedCluster, memoryPercentage, Optional.empty());
}
private MockRoot createRoot(boolean isHosted) {
- DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(isHosted).build()).build();
+ DeployState state = new DeployState.Builder().properties(new TestProperties().setHostedVespa(isHosted)).build();
return new MockRoot("foo", state);
}
private MockRoot createRoot(boolean isHosted, Zone zone) {
- DeployState state = new DeployState.Builder().zone(zone).properties(new DeployProperties.Builder().hostedVespa(isHosted).build()).build();
+ DeployState state = new DeployState.Builder().zone(zone).properties(new TestProperties().setHostedVespa(isHosted)).build();
return new MockRoot("foo", state);
}
private ContainerCluster createContainerCluster(MockRoot root, boolean isCombinedCluster,
@@ -252,7 +252,7 @@ public class ContainerClusterTest {
@Test
public void requireThatRoutingProviderIsDisabledForNonHosted() {
- DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(false).build()).build();
+ DeployState state = new DeployState.Builder().properties(new TestProperties().setHostedVespa(false)).build();
MockRoot root = new MockRoot("foo", state);
ContainerCluster cluster = new ContainerCluster(root, "container0", "container1", state);
RoutingProviderConfig.Builder builder = new RoutingProviderConfig.Builder();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
index bc812e12f43..65866a5e3b8 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
@@ -1,8 +1,9 @@
// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.search;
-import com.yahoo.config.model.deploy.DeployProperties;
+import com.yahoo.config.model.api.ModelContext;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.vespa.model.VespaModel;
@@ -49,7 +50,7 @@ public class ImplicitIndexingClusterTest {
"</http>\n";
private static VespaModel buildMultiTenantVespaModel(String servicesXml) {
- DeployProperties properties = new DeployProperties.Builder().multitenant(true).hostedVespa(true).build();
+ ModelContext.Properties properties = new TestProperties().setMultitenant(true).setHostedVespa(true);
DeployState.Builder deployStateBuilder = new DeployState.Builder()
.properties(properties)
.modelHostProvisioner(new InMemoryProvisioner(true, "host1.yahoo.com", "host2.yahoo.com", "host3.yahoo.com"));
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
index 15c017d86e3..7824149f92d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilderTest.java
@@ -7,8 +7,8 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockApplicationPackage;
@@ -112,9 +112,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
.applicationPackage(applicationPackage)
.deployLogger(logger)
.zone(new Zone(SystemName.cd, Environment.dev, RegionName.from("here")))
- .properties(new DeployProperties.Builder()
- .hostedVespa(isHosted)
- .build())
+ .properties(new TestProperties().setHostedVespa(isHosted))
.build());
QrStartConfig.Builder qrStartBuilder = new QrStartConfig.Builder();
model.getConfig(qrStartBuilder, "jdisc/container.0");
@@ -142,9 +140,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
.applicationPackage(applicationPackage)
.deployLogger(logger)
.zone(zone)
- .properties(new DeployProperties.Builder()
- .hostedVespa(isHosted)
- .build())
+ .properties(new TestProperties().setHostedVespa(isHosted))
.build());
QrStartConfig.Builder qrStartBuilder = new QrStartConfig.Builder();
model.getConfig(qrStartBuilder, "jdisc/container.0");
@@ -212,9 +208,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder()
.applicationPackage(applicationPackage)
.deployLogger(logger)
- .properties(new DeployProperties.Builder()
- .hostedVespa(true)
- .build())
+ .properties(new TestProperties().setHostedVespa(true))
.build());
assertFalse(logger.msgs.isEmpty());
assertThat(logger.msgs.get(0).getSecond(), containsString(String.format("You cannot set port to anything else than %d", Container.BASEPORT)));
@@ -609,10 +603,9 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
VespaModel model = new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder()
.modelHostProvisioner(new InMemoryProvisioner(true, "host1.yahoo.com", "host2.yahoo.com"))
.applicationPackage(applicationPackage)
- .properties(new DeployProperties.Builder()
- .multitenant(true)
- .hostedVespa(true)
- .build())
+ .properties(new TestProperties()
+ .setMultitenant(true)
+ .setHostedVespa(true))
.build());
assertEquals(1, model.getHostSystem().getHosts().size());
}
@@ -643,9 +636,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
ApplicationPackage applicationPackage = new MockApplicationPackage.Builder().withServices(servicesXml).build();
VespaModel model = new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder()
.applicationPackage(applicationPackage)
- .properties(new DeployProperties.Builder()
- .hostedVespa(true)
- .build())
+ .properties(new TestProperties().setHostedVespa(true))
.build());
AbstractConfigProducerRoot modelRoot = model.getRoot();
@@ -673,7 +664,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase {
.build();
VespaModel model = new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder()
.applicationPackage(applicationPackage)
- .properties(new DeployProperties.Builder().build())
+ .properties(new TestProperties())
.build());
String hostname = HostName.getLocalhost(); // Using the same way of getting hostname as filedistribution model
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
index 057ef0efbd6..e2337c42cf3 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
@@ -1,21 +1,21 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.content;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockRoot;
import com.yahoo.config.model.test.TestDriver;
import com.yahoo.config.model.test.TestRoot;
import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.Zone;
-import com.yahoo.vespa.config.content.core.StorDistributormanagerConfig;
-import com.yahoo.vespa.config.content.StorFilestorConfig;
-import com.yahoo.vespa.config.content.core.StorServerConfig;
+import com.yahoo.metrics.MetricsmanagerConfig;
import com.yahoo.vespa.config.content.AllClustersBucketSpacesConfig;
import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.vespa.config.content.StorDistributionConfig;
-import com.yahoo.metrics.MetricsmanagerConfig;
+import com.yahoo.vespa.config.content.StorFilestorConfig;
+import com.yahoo.vespa.config.content.core.StorDistributormanagerConfig;
+import com.yahoo.vespa.config.content.core.StorServerConfig;
import com.yahoo.vespa.config.search.core.ProtonConfig;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.ContainerCluster;
@@ -36,7 +36,13 @@ import java.util.List;
import java.util.Optional;
import static com.yahoo.test.PatternMatcher.matchesPattern;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
public class ContentClusterTest extends ContentBaseTest {
@@ -768,7 +774,7 @@ public class ContentClusterTest extends ContentBaseTest {
private static ContentCluster createOneNodeCluster(String clusterXml, boolean isHostedVespa) throws Exception {
DeployState.Builder deployStateBuilder = new DeployState.Builder()
- .properties(new DeployProperties.Builder().hostedVespa(isHostedVespa).build());
+ .properties(new TestProperties().setHostedVespa(isHostedVespa));
MockRoot root = ContentClusterUtils.createMockRoot(Collections.emptyList(), deployStateBuilder);
ContentCluster cluster = ContentClusterUtils.createCluster(clusterXml, root);
root.freezeModelTopology();
@@ -866,9 +872,7 @@ public class ContentClusterTest extends ContentBaseTest {
private ContentCluster createWithZone(String clusterXml, Zone zone) throws Exception {
DeployState.Builder deployStateBuilder = new DeployState.Builder()
.zone(zone)
- .properties(new DeployProperties.Builder()
- .hostedVespa(true)
- .build());
+ .properties(new TestProperties().setHostedVespa(true));
List<String> searchDefinitions = SearchDefinitionBuilder.createSearchDefinitions("test");
MockRoot root = ContentClusterUtils.createMockRoot(searchDefinitions, deployStateBuilder);
ContentCluster cluster = ContentClusterUtils.createCluster(clusterXml, root);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
index 1a5ce0a10f4..5d842c6651c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTestCase.java
@@ -12,14 +12,14 @@ import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.api.HostInfo;
import com.yahoo.config.model.api.ValidationParameters;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.HostsXmlProvisioner;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.model.test.TestDriver;
-import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.AllocatedHosts;
+import com.yahoo.config.provision.ApplicationId;
import com.yahoo.document.config.DocumentmanagerConfig;
import com.yahoo.messagebus.MessagebusConfig;
import com.yahoo.net.HostName;
@@ -279,10 +279,9 @@ public class VespaModelTestCase {
DeployState deployState = new DeployState.Builder()
.applicationPackage(applicationPackage)
.modelHostProvisioner(new InMemoryProvisioner(true, "host1.yahoo.com"))
- .properties(new DeployProperties.Builder()
- .configServerSpecs(Arrays.asList(new Configserver.Spec("cfghost", 1234, 1235, 1236)))
- .multitenant(true)
- .build())
+ .properties(new TestProperties()
+ .setConfigServerSpecs(Arrays.asList(new Configserver.Spec("cfghost", 1234, 1235, 1236)))
+ .setMultitenant(true))
.build();
VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState);
AllocatedHosts info = model.allocatedHosts();
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..672e2932ab6 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
@@ -2,13 +2,12 @@
package com.yahoo.vespa.model.test;
import com.google.common.collect.ImmutableList;
-import com.yahoo.cloud.config.ConfigserverConfig;
import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.ConfigModelRegistry;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.api.HostProvisioner;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.Host;
import com.yahoo.config.model.provision.Hosts;
import com.yahoo.config.model.provision.InMemoryProvisioner;
@@ -134,11 +133,11 @@ public class VespaModelTester {
new InMemoryProvisioner(hostsByFlavor, failOnOutOfCapacity, startIndexForClusters, retiredHostNames) :
new SingleNodeProvisioner();
- DeployProperties properties = new DeployProperties.Builder()
- .hostedVespa(hosted)
- .applicationId(applicationId)
- .useDedicatedNodeForLogserver(useDedicatedNodeForLogserver)
- .build();
+ TestProperties properties = new TestProperties()
+ .setMultitenant(true)
+ .setHostedVespa(hosted)
+ .setApplicationId(applicationId)
+ .setUseDedicatedNodeForLogserver(useDedicatedNodeForLogserver);
DeployState deployState = new DeployState.Builder()
.applicationPackage(appPkg)
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 771c223c332..0a64eca63be 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
@@ -131,7 +131,7 @@ public class ModelContextImpl implements ModelContext {
private final boolean useDedicatedNodeForLogserver;
public Properties(ApplicationId applicationId,
- boolean multitenant,
+ boolean multitenantFromConfig,
List<ConfigServerSpec> configServerSpecs,
HostName loadBalancerName,
URI ztsUrl,
@@ -143,7 +143,7 @@ public class ModelContextImpl implements ModelContext {
boolean isFirstTimeDeployment,
FlagSource flagSource) {
this.applicationId = applicationId;
- this.multitenant = multitenant;
+ this.multitenant = multitenantFromConfig || hostedVespa || Boolean.getBoolean("multitenant");
this.configServerSpecs = configServerSpecs;
this.loadBalancerName = loadBalancerName;
this.ztsUrl = ztsUrl;
@@ -153,10 +153,8 @@ public class ModelContextImpl implements ModelContext {
this.rotations = rotations;
this.isBootstrap = isBootstrap;
this.isFirstTimeDeployment = isFirstTimeDeployment;
- this.useDedicatedNodeForLogserver = Flags.USE_DEDICATED_NODE_FOR_LOGSERVER
- .bindTo(flagSource)
- .with(FetchVector.Dimension.APPLICATION_ID, applicationId.serializedForm())
- .value();
+ this.useDedicatedNodeForLogserver = Flags.USE_DEDICATED_NODE_FOR_LOGSERVER.bindTo(flagSource)
+ .with(FetchVector.Dimension.APPLICATION_ID, applicationId.serializedForm()).value();
}
@Override
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java
index 1310c9d7bf5..bfbf717bb1c 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/SuperModelControllerTest.java
@@ -6,8 +6,8 @@ import com.yahoo.cloud.config.LbServicesConfig.Tenants.Applications;
import com.yahoo.config.model.api.ApplicationInfo;
import com.yahoo.config.model.api.SuperModel;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.ApplicationName;
import com.yahoo.config.provision.InstanceName;
@@ -162,7 +162,7 @@ public class SuperModelControllerTest {
private DeployState createDeployState(File applicationPackage, ApplicationId applicationId) {
return new DeployState.Builder()
.applicationPackage(FilesApplicationPackage.fromFile(applicationPackage))
- .properties(new DeployProperties.Builder().applicationId(applicationId).build())
+ .properties(new TestProperties().setApplicationId(applicationId))
.build();
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java
index 35b6e4cf644..ed1e649e1d0 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/model/LbServicesProducerTest.java
@@ -6,8 +6,8 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.api.ApplicationInfo;
import com.yahoo.config.model.api.Model;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.test.MockApplicationPackage;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.Environment;
@@ -23,7 +23,6 @@ import org.xml.sax.SAXException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -91,8 +90,7 @@ public class LbServicesProducerTest {
final Zone zone = new Zone(Environment.prod, regionName);
Map<TenantName, Set<ApplicationInfo>> testModel = createTestModel(new DeployState.Builder()
.zone(zone)
- .properties(new DeployProperties.Builder().build())
- .zone(zone));
+ .properties(new TestProperties()));
return getLbServicesConfig(new Zone(Environment.prod, regionName), testModel);
}
diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java b/configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java
index 17ad741d182..11253e2583f 100644
--- a/configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java
+++ b/configserver/src/test/java/com/yahoo/vespa/config/server/provision/StaticProvisionerTest.java
@@ -6,8 +6,8 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.NullConfigModelRegistry;
import com.yahoo.config.model.api.HostProvisioner;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
-import com.yahoo.config.model.deploy.DeployProperties;
import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
import com.yahoo.config.model.provision.InMemoryProvisioner;
import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.model.VespaModel;
@@ -50,10 +50,9 @@ public class StaticProvisionerTest {
DeployState deployState = new DeployState.Builder()
.applicationPackage(app)
.modelHostProvisioner(provisioner)
- .properties(new DeployProperties.Builder()
- .multitenant(true)
- .hostedVespa(true)
- .build())
+ .properties(new TestProperties()
+ .setMultitenant(true)
+ .setHostedVespa(true))
.build();
return new VespaModel(new NullConfigModelRegistry(), deployState);
}
diff --git a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
index f9fe4a02aab..a2e1e36e48f 100644
--- a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
+++ b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneContainerApplication.java
@@ -242,7 +242,7 @@ public class StandaloneContainerApplication implements Application {
VespaModel root = VespaModel.createIncomplete(deployState);
ApplicationConfigProducerRoot vespaRoot = new ApplicationConfigProducerRoot(root, "vespa", deployState.getDocumentModel(),
- deployState.getProperties().vespaVersion(), deployState.getProperties().applicationId());
+ deployState.getVespaVersion(), deployState.getProperties().applicationId());
Element spec = containerRootElement(applicationPackage);
ContainerModel containerModel = newContainerModelBuilder(networkingOption).build(deployState, root, configModelRepo, vespaRoot, spec);