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/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);