From 38449fd3d36f8a207fcae3c12f29068a799d2413 Mon Sep 17 00:00:00 2001 From: HÃ¥kon Hallingstad Date: Fri, 25 Jan 2019 11:28:11 +0100 Subject: 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. --- .../com/yahoo/config/model/api/ModelContext.java | 1 + .../com/yahoo/config/model/ConfigModelContext.java | 5 +- .../com/yahoo/config/model/admin/AdminModel.java | 11 +- .../config/model/deploy/DeployProperties.java | 174 --------------------- .../com/yahoo/config/model/deploy/DeployState.java | 27 +++- .../yahoo/config/model/deploy/TestProperties.java | 76 +++++++++ .../com/yahoo/vespa/model/VespaModelFactory.java | 25 +-- .../application/validation/ComponentValidator.java | 2 +- .../model/builder/xml/dom/VespaDomBuilder.java | 2 +- .../vespa/model/container/ContainerCluster.java | 2 +- .../yahoo/config/model/deploy/DeployStateTest.java | 6 +- .../model/provision/ModelProvisioningTest.java | 10 +- .../com/yahoo/vespa/model/admin/AdminTestCase.java | 24 ++- .../vespa/model/admin/DedicatedAdminV4Test.java | 12 +- .../validation/SecretStoreValidatorTest.java | 6 +- .../application/validation/ValidationTester.java | 9 +- .../first/AccessControlValidatorTest.java | 6 +- .../model/builder/xml/dom/ContentBuilderTest.java | 28 ++-- .../model/container/ContainerClusterTest.java | 10 +- .../search/ImplicitIndexingClusterTest.java | 5 +- .../container/xml/ContainerModelBuilderTest.java | 27 ++-- .../vespa/model/content/ContentClusterTest.java | 24 +-- .../yahoo/vespa/model/test/VespaModelTestCase.java | 11 +- .../yahoo/vespa/model/test/VespaModelTester.java | 13 +- .../config/server/deploy/ModelContextImpl.java | 10 +- .../config/server/SuperModelControllerTest.java | 4 +- .../server/model/LbServicesProducerTest.java | 6 +- .../server/provision/StaticProvisionerTest.java | 9 +- .../standalone/StandaloneContainerApplication.java | 2 +- 29 files changed, 217 insertions(+), 330 deletions(-) delete mode 100644 config-model/src/main/java/com/yahoo/config/model/deploy/DeployProperties.java create mode 100644 config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java 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 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 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 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 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 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; private final Optional permanentApplicationPackage; private final Optional previousModel; - private final DeployProperties properties; + private final ModelContext.Properties properties; + private final Version vespaVersion; private final Set rotations; private final Zone zone; private final QueryProfiles queryProfiles; @@ -88,7 +90,8 @@ public class DeployState implements ConfigDefinitionStore { FileRegistry fileRegistry, DeployLogger deployLogger, Optional hostProvisioner, - DeployProperties properties, + ModelContext.Properties properties, + Version vespaVersion, Optional permanentApplicationPackage, Optional configDefinitionRepo, java.util.Optional 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 getPreviousModel() { return previousModel; } @@ -243,7 +249,8 @@ public class DeployState implements ConfigDefinitionStore { private DeployLogger logger = new BaseDeployLogger(); private Optional hostProvisioner = Optional.empty(); private Optional 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 = Optional.empty(); private Optional previousModel = Optional.empty(); private Set 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 + * + *

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 configServerSpecs = Collections.emptyList(); + private HostName loadBalancerName = null; + private URI ztsUrl = null; + private String athenzDnsSuffix = null; + private boolean hostedVespa = false; + private Zone zone; + private Set 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 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 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 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 { "" + ""; - 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 { "\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 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 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> 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); -- cgit v1.2.3