From 3b4e76bc05218ed42727db5371416b76710e1567 Mon Sep 17 00:00:00 2001 From: Harald Musum Date: Wed, 4 Jul 2018 13:39:23 +0200 Subject: Use new ValidationParameter class instead of booleans --- .../java/com/yahoo/application/Application.java | 2 +- .../com/yahoo/config/model/api/ModelFactory.java | 23 ++++++++-- .../config/model/api/ValidationParameters.java | 50 ++++++++++++++++++++++ .../com/yahoo/config/model/deploy/DeployState.java | 18 +++++--- .../java/com/yahoo/config/model/test/MockRoot.java | 2 +- .../com/yahoo/config/model/test/TestDriver.java | 2 +- .../java/com/yahoo/vespa/model/VespaModel.java | 3 +- .../com/yahoo/vespa/model/VespaModelFactory.java | 21 ++++----- .../model/application/validation/Validation.java | 17 +++----- .../yahoo/config/model/ApplicationDeployTest.java | 6 +-- .../yahoo/config/model/deploy/DeployStateTest.java | 16 +++---- .../model/provision/ModelProvisioningTest.java | 2 +- .../yahoo/vespa/model/VespaModelFactoryTest.java | 7 +-- .../com/yahoo/vespa/model/admin/AdminTestCase.java | 4 +- .../vespa/model/admin/DedicatedAdminV4Test.java | 2 +- .../ComplexAttributeFieldsValidatorTestCase.java | 7 ++- .../validation/DeploymentFileValidatorTest.java | 2 +- .../validation/SecretStoreValidatorTest.java | 2 +- .../first/AccessControlValidatorTest.java | 2 +- .../model/container/ContainerClusterTest.java | 6 +-- .../configserver/ConfigserverClusterTest.java | 2 +- .../container/xml/ContainerModelBuilderTest.java | 10 ++--- .../model/container/xml/RoutingBuilderTest.java | 2 +- .../model/content/utils/ContentClusterUtils.java | 6 +-- .../yahoo/vespa/model/test/VespaModelTestCase.java | 12 +++--- .../yahoo/vespa/model/test/VespaModelTester.java | 2 +- .../test/utils/VespaModelCreatorWithFilePkg.java | 9 +++- .../test/utils/VespaModelCreatorWithMockPkg.java | 9 ++-- .../server/modelfactory/PreparedModelsBuilder.java | 6 ++- .../config/server/ModelFactoryRegistryTest.java | 3 +- .../vespa/config/server/deploy/DeployTester.java | 11 ++--- .../server/model/LbServicesProducerTest.java | 2 +- .../config/server/model/RoutingProducerTest.java | 2 +- .../config/server/model/TestModelFactory.java | 5 ++- .../server/provision/StaticProvisionerTest.java | 2 +- .../config/server/session/RemoteSessionTest.java | 4 +- .../config/server/session/SessionPreparerTest.java | 7 +-- .../server/zookeeper/ZKApplicationPackageTest.java | 2 +- .../standalone/StandaloneContainerApplication.java | 2 +- 39 files changed, 191 insertions(+), 101 deletions(-) create mode 100644 config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java diff --git a/application/src/main/java/com/yahoo/application/Application.java b/application/src/main/java/com/yahoo/application/Application.java index 5221f95f897..88140873b7b 100644 --- a/application/src/main/java/com/yahoo/application/Application.java +++ b/application/src/main/java/com/yahoo/application/Application.java @@ -112,7 +112,7 @@ public final class Application implements AutoCloseable { .applicationPackage(FilesApplicationPackage.fromFile(path.toFile(), /* Include source files */ true)) .deployLogger((level, s) -> { }) - .build(true); + .build(); return new VespaModel(new NullConfigModelRegistry(), deployState); } catch (IOException | SAXException e) { throw new IllegalArgumentException("Error creating application from '" + path + "'", e); diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java index 572c470b6aa..feccabf47b0 100644 --- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelFactory.java @@ -1,6 +1,7 @@ // 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.api; +import com.yahoo.config.model.api.ValidationParameters.IgnoreValidationErrors; import com.yahoo.config.provision.Version; /** @@ -17,8 +18,8 @@ public interface ModelFactory { /** * Creates an instance of a {@link Model}. The resulting instance will be used to serve config. No model - * validation will be done, calling this method assumes that {@link #createAndValidateModel} has already - * been called at some point for this model. + * validation will be done, calling this method assumes that{@link #createAndValidateModel(ModelContext, ValidationParameters)} + * has already been called at some point for this model. * * @param modelContext an instance of {@link ModelContext}, containing dependencies for creating a {@link Model}. * @return a {@link Model} instance. @@ -32,7 +33,23 @@ public interface ModelFactory { * @param modelContext an instance of {@link ModelContext}, containing dependencies for creating a {@link Model} * @param ignoreValidationErrors true if validation errors should not trigger exceptions * @return a {@link ModelCreateResult} instance. + * @deprecated use {@link #createAndValidateModel(ModelContext, ValidationParameters)} */ - ModelCreateResult createAndValidateModel(ModelContext modelContext, boolean ignoreValidationErrors); + @Deprecated + // TODO: Remove when 6.258 is latest version in use + default ModelCreateResult createAndValidateModel(ModelContext modelContext, boolean ignoreValidationErrors) { + return createAndValidateModel(modelContext, new ValidationParameters(ignoreValidationErrors + ? IgnoreValidationErrors.FALSE + : IgnoreValidationErrors.TRUE)); + } + /** + * Creates an instance of a {@link Model}. The resulting instance will be used to serve config. Any validation + * of a {@link Model} and the {@link ModelContext} can be done in this method. + * + * @param modelContext an instance of {@link ModelContext}, containing dependencies for creating a {@link Model} + * @param validationParameters validation parameters + * @return a {@link ModelCreateResult} instance. + */ + ModelCreateResult createAndValidateModel(ModelContext modelContext, ValidationParameters validationParameters); } diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java new file mode 100644 index 00000000000..6e081d0d668 --- /dev/null +++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ValidationParameters.java @@ -0,0 +1,50 @@ +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.model.api; + +/** + * @author hmusum + */ +public class ValidationParameters { + + public enum IgnoreValidationErrors {TRUE, FALSE} + + public enum FailOnIncompatibleChange {TRUE, FALSE} //Note: Default is FALSE + + public enum CheckRouting {TRUE, FALSE} + + private final IgnoreValidationErrors ignoreValidationErrors; + private final FailOnIncompatibleChange failOnIncompatibleChange; + private final CheckRouting checkRouting; + + public ValidationParameters() { + this(IgnoreValidationErrors.FALSE); + } + + public ValidationParameters(IgnoreValidationErrors ignoreValidationErrors) { + this(ignoreValidationErrors, FailOnIncompatibleChange.FALSE, CheckRouting.TRUE); + } + + public ValidationParameters(CheckRouting checkRouting) { + this(IgnoreValidationErrors.FALSE, FailOnIncompatibleChange.FALSE, checkRouting); + } + + public ValidationParameters(IgnoreValidationErrors ignoreValidationErrors, + FailOnIncompatibleChange failOnIncompatibleChange, + CheckRouting checkRouting) { + this.ignoreValidationErrors = ignoreValidationErrors; + this.failOnIncompatibleChange = failOnIncompatibleChange; + this.checkRouting = checkRouting; + } + + public boolean ignoreValidationErrors() { + return ignoreValidationErrors == IgnoreValidationErrors.TRUE; + } + + public boolean failOnIncompatibleChanges() { + return failOnIncompatibleChange == FailOnIncompatibleChange.TRUE; + } + + public boolean checkRouting() { + return checkRouting == CheckRouting.TRUE; + } +} 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 44e101115a2..8b0285ec2b4 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 @@ -10,6 +10,7 @@ import com.yahoo.config.application.api.UnparsedConfigDefinition; import com.yahoo.config.model.api.ConfigDefinitionRepo; import com.yahoo.config.model.api.HostProvisioner; import com.yahoo.config.model.api.Model; +import com.yahoo.config.model.api.ValidationParameters; import com.yahoo.config.model.application.provider.BaseDeployLogger; import com.yahoo.config.model.application.provider.MockFileRegistry; import com.yahoo.config.model.provision.HostsXmlProvisioner; @@ -70,11 +71,11 @@ public class DeployState implements ConfigDefinitionStore { private final HostProvisioner provisioner; public static DeployState createTestState() { - return new Builder().build(true); + return new Builder().build(); } public static DeployState createTestState(ApplicationPackage applicationPackage) { - return new Builder().applicationPackage(applicationPackage).build(true); + return new Builder().applicationPackage(applicationPackage).build(); } private DeployState(ApplicationPackage applicationPackage, SearchDocumentModel searchDocumentModel, RankProfileRegistry rankProfileRegistry, @@ -227,7 +228,6 @@ public class DeployState implements ConfigDefinitionStore { private Zone zone = Zone.defaultZone(); private Instant now = Instant.now(); private Version wantedNodeVespaVersion = Vtag.currentVersion; - private boolean isFirstTimeDeployment = false; public Builder applicationPackage(ApplicationPackage applicationPackage) { this.applicationPackage = applicationPackage; @@ -289,11 +289,15 @@ public class DeployState implements ConfigDefinitionStore { return this; } - public DeployState build(boolean validate) { + public DeployState build() { + return build(new ValidationParameters()); + } + + public DeployState build(ValidationParameters validationParameters) { RankProfileRegistry rankProfileRegistry = new RankProfileRegistry(); QueryProfiles queryProfiles = new QueryProfilesBuilder().build(applicationPackage); SemanticRules semanticRules = new SemanticRuleBuilder().build(applicationPackage); - SearchDocumentModel searchDocumentModel = createSearchDocumentModel(rankProfileRegistry, logger, queryProfiles, validate); + SearchDocumentModel searchDocumentModel = createSearchDocumentModel(rankProfileRegistry, logger, queryProfiles, validationParameters); return new DeployState(applicationPackage, searchDocumentModel, rankProfileRegistry, fileRegistry, logger, hostProvisioner, properties, permanentApplicationPackage, configDefinitionRepo, previousModel, rotations, zone, queryProfiles, semanticRules, now, wantedNodeVespaVersion); @@ -302,7 +306,7 @@ public class DeployState implements ConfigDefinitionStore { private SearchDocumentModel createSearchDocumentModel(RankProfileRegistry rankProfileRegistry, DeployLogger logger, QueryProfiles queryProfiles, - boolean validate) { + ValidationParameters validationParameters) { Collection readers = applicationPackage.getSearchDefinitions(); Map names = new LinkedHashMap<>(); SearchBuilder builder = new SearchBuilder(applicationPackage, rankProfileRegistry, queryProfiles.getRegistry()); @@ -325,7 +329,7 @@ public class DeployState implements ConfigDefinitionStore { closeIgnoreException(reader.getReader()); } } - builder.build(validate, logger); + builder.build(! validationParameters.ignoreValidationErrors(), logger); return SearchDocumentModel.fromBuilderAndNames(builder, names); } diff --git a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java index e3d766e710f..29d151857cc 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/MockRoot.java @@ -55,7 +55,7 @@ public class MockRoot extends AbstractConfigProducerRoot { } public MockRoot(String rootConfigId, ApplicationPackage applicationPackage) { - this(rootConfigId, new DeployState.Builder().applicationPackage(applicationPackage).build(true)); + this(rootConfigId, new DeployState.Builder().applicationPackage(applicationPackage).build()); } public MockRoot(String rootConfigId, DeployState deployState) { diff --git a/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java b/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java index 9fe0c92141f..b538468d0bc 100644 --- a/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java +++ b/config-model/src/main/java/com/yahoo/config/model/test/TestDriver.java @@ -80,7 +80,7 @@ public class TestDriver { * @return a producer root capable of answering getConfig requests. */ public TestRoot buildModel(ApplicationPackage applicationPackage) { - return buildModel(new DeployState.Builder().applicationPackage(applicationPackage).build(true)); + return buildModel(new DeployState.Builder().applicationPackage(applicationPackage).build()); } /** diff --git a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java index 73fb532cfb4..f3e7a9623d1 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/VespaModel.java @@ -18,6 +18,7 @@ import com.yahoo.config.model.NullConfigModelRegistry; import com.yahoo.config.model.api.FileDistribution; import com.yahoo.config.model.api.HostInfo; import com.yahoo.config.model.api.Model; +import com.yahoo.config.model.api.ValidationParameters; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.producer.AbstractConfigProducer; import com.yahoo.config.model.producer.AbstractConfigProducerRoot; @@ -123,7 +124,7 @@ public final class VespaModel extends AbstractConfigProducerRoot implements Seri * to instantiate config models */ public VespaModel(ApplicationPackage app, ConfigModelRegistry configModelRegistry) throws IOException, SAXException { - this(configModelRegistry, new DeployState.Builder().applicationPackage(app).build(true)); + this(configModelRegistry, new DeployState.Builder().applicationPackage(app).build()); } /** 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 4da4e9e5693..75f70d03fcc 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 @@ -14,6 +14,7 @@ import com.yahoo.config.model.api.Model; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.ModelCreateResult; 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; @@ -88,15 +89,15 @@ public class VespaModelFactory implements ModelFactory { @Override public Model createModel(ModelContext modelContext) { - return buildModel(createDeployState(modelContext, false)); + return buildModel(createDeployState(modelContext, new ValidationParameters(ValidationParameters.IgnoreValidationErrors.TRUE))); } @Override - public ModelCreateResult createAndValidateModel(ModelContext modelContext, boolean ignoreValidationErrors) { - validateXml(modelContext, ignoreValidationErrors); - DeployState deployState = createDeployState(modelContext, true); + public ModelCreateResult createAndValidateModel(ModelContext modelContext, ValidationParameters validationParameters) { + validateXml(modelContext, validationParameters.ignoreValidationErrors()); + DeployState deployState = createDeployState(modelContext, validationParameters); VespaModel model = buildModel(deployState); - List changeActions = validateModel(model, deployState, ignoreValidationErrors); + List changeActions = validateModel(model, deployState, validationParameters); return new ModelCreateResult(model, changeActions); } @@ -126,7 +127,7 @@ public class VespaModelFactory implements ModelFactory { } } - private DeployState createDeployState(ModelContext modelContext, boolean validate) { + private DeployState createDeployState(ModelContext modelContext, ValidationParameters validationParameters) { DeployState.Builder builder = new DeployState.Builder() .applicationPackage(modelContext.applicationPackage()) .deployLogger(modelContext.deployLogger()) @@ -140,7 +141,7 @@ public class VespaModelFactory implements ModelFactory { .now(clock.instant()) .wantedNodeVespaVersion(modelContext.wantedNodeVespaVersion()); modelContext.previousModel().ifPresent(builder::previousModel); - return builder.build(validate); + return builder.build(validationParameters); } private DeployProperties createDeployProperties(ModelContext.Properties properties) { @@ -173,11 +174,11 @@ public class VespaModelFactory implements ModelFactory { } } - private List validateModel(VespaModel model, DeployState deployState, boolean ignoreValidationErrors) { + private List validateModel(VespaModel model, DeployState deployState, ValidationParameters validationParameters) { try { - return Validation.validate(model, ignoreValidationErrors, deployState); + return Validation.validate(model, validationParameters, deployState); } catch (IllegalArgumentException e) { - rethrowUnlessIgnoreErrors(e, ignoreValidationErrors); + rethrowUnlessIgnoreErrors(e, validationParameters.ignoreValidationErrors()); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java index 99c45772b8f..e44acf61466 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java @@ -5,6 +5,7 @@ import com.yahoo.config.application.api.DeployLogger; import com.yahoo.config.application.api.ValidationOverrides; import com.yahoo.config.model.api.ConfigChangeAction; import com.yahoo.config.model.api.Model; +import com.yahoo.config.model.api.ValidationParameters; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.application.validation.change.ChangeValidator; @@ -35,18 +36,14 @@ import static java.util.stream.Collectors.toList; */ public class Validation { - /** Validate everything */ - public static List validate(VespaModel model, boolean force, DeployState deployState) { - return validate(model, true, force, deployState); - } - /** - * Validate with optional checking of routing, which cannot always be valid in unit tests + * Validates the model supplied, and if there already exists a model for the application validates changes + * between the previous and current model * * @return a list of required changes needed to make this configuration live */ - public static List validate(VespaModel model, boolean checkRouting, boolean force, DeployState deployState) { - if (checkRouting) { + public static List validate(VespaModel model, ValidationParameters validationParameters, DeployState deployState) { + if (validationParameters.checkRouting()) { new RoutingValidator().validate(model, deployState); new RoutingSelectorValidator().validate(model, deployState); } @@ -54,13 +51,13 @@ public class Validation { new SearchDataTypeValidator().validate(model, deployState); new ComplexAttributeFieldsValidator().validate(model, deployState); new StreamingValidator().validate(model, deployState); - new RankSetupValidator(force).validate(model, deployState); + new RankSetupValidator(validationParameters.ignoreValidationErrors()).validate(model, deployState); new NoPrefixForIndexes().validate(model, deployState); new DeploymentFileValidator().validate(model, deployState); new RankingConstantsValidator().validate(model, deployState); new SecretStoreValidator().validate(model, deployState); - List result = Collections.emptyList();; + List result = Collections.emptyList(); if (deployState.getProperties().isFirstTimeDeployment()) { validateFirstTimeDeployment(model, deployState); } else { diff --git a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java index d3e8136cdec..643a3bd0b91 100644 --- a/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/ApplicationDeployTest.java @@ -238,7 +238,7 @@ public class ApplicationDeployTest { } private List getSearchDefinitions(FilesApplicationPackage app) { - return new DeployState.Builder().applicationPackage(app).build(true).getSearchDefinitions(); + return new DeployState.Builder().applicationPackage(app).build().getSearchDefinitions(); } public FilesApplicationPackage createAppPkg(String appPkg) throws IOException { @@ -374,7 +374,7 @@ public class ApplicationDeployTest { final File appDir = new File("src/test/cfg/application/configdeftest"); FilesApplicationPackage app = FilesApplicationPackage.fromFile(appDir); - DeployState deployState = new DeployState.Builder().applicationPackage(app).build(true); + DeployState deployState = new DeployState.Builder().applicationPackage(app).build(); ConfigDefinition def = deployState.getConfigDefinition(new ConfigDefinitionKey("foo", CNode.DEFAULT_NAMESPACE)).get(); assertThat(def.getNamespace(), is(CNode.DEFAULT_NAMESPACE)); @@ -394,7 +394,7 @@ public class ApplicationDeployTest { @Test(expected=IllegalArgumentException.class) public void testDifferentNameOfSdFileAndSearchName() throws IOException { FilesApplicationPackage app = createAppPkg(TESTDIR + "sdfilenametest"); - new DeployState.Builder().applicationPackage(app).build(true); + new DeployState.Builder().applicationPackage(app).build(); } } 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 2a9547df839..aa29ebd9825 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 @@ -41,7 +41,7 @@ public class DeployStateTest { DeployState.Builder builder = new DeployState.Builder(); HostProvisioner provisioner = new InMemoryProvisioner(true, "foo.yahoo.com"); builder.modelHostProvisioner(provisioner); - DeployState state = builder.build(true); + DeployState state = builder.build(); assertThat(state.getProvisioner(), is(provisioner)); } @@ -50,7 +50,7 @@ public class DeployStateTest { DeployState.Builder builder = new DeployState.Builder(); ApplicationPackage app = MockApplicationPackage.createEmpty(); builder.permanentApplicationPackage(Optional.of(app)); - DeployState state = builder.build(true); + DeployState state = builder.build(); assertThat(state.getPermanentApplicationPackage().get(), is(app)); } @@ -58,20 +58,20 @@ public class DeployStateTest { public void testPreviousModelIsProvided() throws IOException, SAXException { VespaModel prevModel = new VespaModel(MockApplicationPackage.createEmpty()); DeployState.Builder builder = new DeployState.Builder(); - assertThat(builder.previousModel(prevModel).build(true).getPreviousModel().get(), is(prevModel)); + assertThat(builder.previousModel(prevModel).build().getPreviousModel().get(), is(prevModel)); } @Test public void testProperties() { DeployState.Builder builder = new DeployState.Builder(); - DeployState state = builder.build(true); + DeployState state = builder.build(); assertThat(state.getProperties().applicationId(), is(ApplicationId.defaultId())); ApplicationId customId = new ApplicationId.Builder() .tenant("bar") .applicationName("foo").instanceName("quux").build(); DeployProperties properties = new DeployProperties.Builder().applicationId(customId).build(); builder.properties(properties); - state = builder.build(true); + state = builder.build(); assertThat(state.getProperties().applicationId(), is(customId)); } @@ -112,11 +112,11 @@ public class DeployStateTest { @Test public void testRotations() { Set rotations = new HashSet<>(); - assertThat(new DeployState.Builder().rotations(rotations).build(true).getRotations().size(), is(0)); + assertThat(new DeployState.Builder().rotations(rotations).build().getRotations().size(), is(0)); for (String name : new String[]{"rotation-001.vespa.a02.yahoodns.net", "rotation-002.vespa.a02.yahoodns.net"}) { rotations.add(new Rotation(name)); } - assertThat(new DeployState.Builder().rotations(rotations).build(true).getRotations(), equalTo(rotations)); + assertThat(new DeployState.Builder().rotations(rotations).build().getRotations(), equalTo(rotations)); } private DeployState createDeployState(ApplicationPackage app, Map defs) { @@ -131,7 +131,7 @@ public class DeployStateTest { return null; } }); - return builder.build(true); + return builder.build(); } } 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 56b9ad04f78..85c75309d23 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 @@ -1523,7 +1523,7 @@ public class ModelProvisioningTest { ApplicationPackage appPkg = modelCreatorWithMockPkg.appPkg; DeployState deployState = new DeployState.Builder().applicationPackage(appPkg). properties((new DeployProperties.Builder()).multitenant(multitenant).build()). - build(true); + build(); return modelCreatorWithMockPkg.create(false, deployState); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java index 548d3d04a63..094494073df 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/VespaModelFactoryTest.java @@ -12,6 +12,7 @@ import com.yahoo.config.model.api.Model; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.ModelCreateResult; import com.yahoo.config.model.api.ServiceInfo; +import com.yahoo.config.model.api.ValidationParameters; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.ApplicationName; @@ -65,14 +66,14 @@ public class VespaModelFactoryTest { @Test(expected = IllegalArgumentException.class) public void testThatFactoryModelValidationFailsWithIllegalArgumentException() { VespaModelFactory modelFactory = new VespaModelFactory(new NullConfigModelRegistry()); - modelFactory.createAndValidateModel(new MockModelContext(createApplicationPackageThatFailsWhenValidating()), false); + modelFactory.createAndValidateModel(new MockModelContext(createApplicationPackageThatFailsWhenValidating()), new ValidationParameters()); } // Uses a MockApplicationPackage that throws throws UnsupportedOperationException (rethrown as RuntimeException) when validating @Test(expected = RuntimeException.class) public void testThatFactoryModelValidationFails() { VespaModelFactory modelFactory = new VespaModelFactory(new NullConfigModelRegistry()); - modelFactory.createAndValidateModel(testModelContext, false); + modelFactory.createAndValidateModel(testModelContext, new ValidationParameters()); } @Test @@ -80,7 +81,7 @@ public class VespaModelFactoryTest { VespaModelFactory modelFactory = new VespaModelFactory(new NullConfigModelRegistry()); ModelCreateResult createResult = modelFactory.createAndValidateModel( new MockModelContext(createApplicationPackageThatFailsWhenValidating()), - true); + new ValidationParameters(ValidationParameters.IgnoreValidationErrors.TRUE)); assertNotNull(createResult.getModel()); assertNotNull(createResult.getConfigChangeActions()); assertTrue(createResult.getConfigChangeActions().isEmpty()); 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 5d8a49b86eb..9cafe6541e4 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 @@ -161,7 +161,7 @@ public class AdminTestCase { .instanceName("bim") .build()) .build()) - .build(true); + .build(); TestRoot root = new TestDriver().buildModel(state); String localhost = HostName.getLocalhost(); SentinelConfig config = root.getConfig(SentinelConfig.class, "hosts/" + localhost); @@ -293,7 +293,7 @@ public class AdminTestCase { applicationName("foo").instanceName("bim") .build()) .build()) - .build(true); + .build(); TestRoot root = new TestDriver().buildModel(state); String localhost = HostName.getLocalhost(); SentinelConfig sentinelConfig = root.getConfig(SentinelConfig.class, "hosts/" + localhost); 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 dbff72b4125..7b586354394 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 @@ -204,7 +204,7 @@ public class DedicatedAdminV4Test { return new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder().applicationPackage(app).modelHostProvisioner( new InMemoryProvisioner(Hosts.readFrom(app.getHosts()), true)) - .build(true)); + .build()); } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java index 146369d1620..6483933385d 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/ComplexAttributeFieldsValidatorTestCase.java @@ -3,6 +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.api.ValidationParameters; +import com.yahoo.config.model.api.ValidationParameters.CheckRouting; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.test.MockApplicationPackage; import com.yahoo.vespa.model.VespaModel; @@ -49,7 +51,8 @@ public class ComplexAttributeFieldsValidatorTestCase { private static void createModelAndValidate(String searchDefinition) throws IOException, SAXException { DeployState deployState = createDeployState(servicesXml(), searchDefinition); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - Validation.validate(model, false, false, deployState); + ValidationParameters validationParameters = new ValidationParameters(CheckRouting.FALSE); + Validation.validate(model, validationParameters, deployState); } private static DeployState createDeployState(String servicesXml, String searchDefinition) { @@ -57,7 +60,7 @@ public class ComplexAttributeFieldsValidatorTestCase { .withServices(servicesXml) .withSearchDefinition(searchDefinition) .build(); - return new DeployState.Builder().applicationPackage(app).build(true); + return new DeployState.Builder().applicationPackage(app).build(); } private static String servicesXml() { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidatorTest.java index 9f8ff485d72..86e9ccb8a29 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidatorTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/DeploymentFileValidatorTest.java @@ -56,7 +56,7 @@ public class DeploymentFileValidatorTest { .build(); DeployState.Builder builder = new DeployState.Builder().applicationPackage(app); try { - final DeployState deployState = builder.build(true); + final DeployState deployState = builder.build(); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); new DeploymentFileValidator().validate(model, deployState); fail("Did not get expected exception"); 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 cac3e65de89..03d004e93a4 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 @@ -84,7 +84,7 @@ public class SecretStoreValidatorTest { .properties(new DeployProperties.Builder() .hostedVespa(true) .build()); - final DeployState deployState = builder.build(true); + final DeployState deployState = builder.build(); assertTrue("Test must emulate a hosted deployment.", deployState.isHosted()); return deployState; 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 3f109b53bd9..d3549eb6513 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 @@ -144,7 +144,7 @@ public class AccessControlValidatorTest { .properties(new DeployProperties.Builder() .hostedVespa(true) .build()); - final DeployState deployState = builder.build(true); + final DeployState deployState = builder.build(); assertTrue("Test must emulate a hosted deployment.", deployState.isHosted()); assertEquals("Test must emulate a prod environment.", prod, deployState.zone().environment()); 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 2dbd15b600b..d9c151480fe 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 @@ -78,7 +78,7 @@ public class ContainerClusterTest { public void requreThatWeCanGetTheZoneConfig() { DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(true).build()) .zone(new Zone(SystemName.cd, Environment.test, RegionName.from("some-region"))) - .build(true); + .build(); MockRoot root = new MockRoot("foo", state); ContainerCluster cluster = new ContainerCluster(root, "container0", "container1"); ConfigserverConfig.Builder builder = new ConfigserverConfig.Builder(); @@ -107,7 +107,7 @@ public class ContainerClusterTest { } private ContainerCluster createContainerCluster(boolean isHosted, boolean isCombinedCluster, Optional memoryPercentage, Optional extraComponents) { - DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(isHosted).build()).build(true); + DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(isHosted).build()).build(); MockRoot root = new MockRoot("foo", state); ContainerCluster cluster = extraComponents.isPresent() @@ -255,7 +255,7 @@ public class ContainerClusterTest { @Test public void requireThatRoutingProviderIsDisabledForNonHosted() { - DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(false).build()).build(true); + DeployState state = new DeployState.Builder().properties(new DeployProperties.Builder().hostedVespa(false).build()).build(); MockRoot root = new MockRoot("foo", state); ContainerCluster cluster = new ContainerCluster(root, "container0", "container1"); RoutingProviderConfig.Builder builder = new RoutingProviderConfig.Builder(); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java index 0c91b8d4a16..d4209c9c788 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/configserver/ConfigserverClusterTest.java @@ -38,7 +38,7 @@ public class ConfigserverClusterTest { new ConfigServerContainerModelBuilder(new TestOptions().rpcPort(12345).useVespaVersionInRequest(true) .hostedVespa(true).environment("test").region("bar") .numParallelTenantLoaders(99)) - .build(new DeployState.Builder().build(true), null, root, XML.getDocument(services).getDocumentElement()); + .build(new DeployState.Builder().build(), null, root, XML.getDocument(services).getDocumentElement()); root.freezeModelTopology(); } 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 0fbe44742de..e3dfa093735 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 @@ -116,7 +116,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { .properties(new DeployProperties.Builder() .hostedVespa(true) .build()) - .build(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))); } @@ -512,7 +512,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { " ", ""); - DeployState deployState = new DeployState.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east-1"))).build(true); + DeployState deployState = new DeployState.Builder().zone(new Zone(Environment.dev, RegionName.from("us-east-1"))).build(); createModel(root, deployState, clusterElem); assertEquals(0, getContainerCluster("default").serviceAliases().size()); assertEquals(0, getContainerCluster("default").endpointAliases().size()); @@ -532,7 +532,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { .multitenant(true) .hostedVespa(true) .build()) - .build(true)); + .build()); assertEquals(1, model.getHostSystem().getHosts().size()); } @@ -565,7 +565,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { .properties(new DeployProperties.Builder() .hostedVespa(true) .build()) - .build(true)); + .build()); AbstractConfigProducerRoot modelRoot = model.getRoot(); VipStatusConfig vipStatusConfig = modelRoot.getConfig(VipStatusConfig.class, "jdisc/component/status.html-status-handler"); @@ -593,7 +593,7 @@ public class ContainerModelBuilderTest extends ContainerModelBuilderTestBase { VespaModel model = new VespaModel(new NullConfigModelRegistry(), new DeployState.Builder() .applicationPackage(applicationPackage) .properties(new DeployProperties.Builder().build()) - .build(true)); + .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/container/xml/RoutingBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java index 8ba6aacdc41..a2f32694340 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/RoutingBuilderTest.java @@ -67,7 +67,7 @@ public class RoutingBuilderTest extends ContainerModelBuilderTestBase { DeployState deployState = new DeployState.Builder() .applicationPackage(applicationPackage) .zone(new Zone(Environment.prod, RegionName.from(region))) - .build(true); + .build(); root = new MockRoot("root", deployState); createModel(root, deployState, clusterElem); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java index 8e0c0d0b253..b0d6c94947a 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/utils/ContentClusterUtils.java @@ -39,10 +39,10 @@ public class ContentClusterUtils { private static MockRoot createMockRoot(HostProvisioner provisioner, List searchDefinitions, DeployState.Builder deployStateBuilder) { ApplicationPackage applicationPackage = new MockApplicationPackage.Builder().withSearchDefinitions(searchDefinitions).build(); - deployStateBuilder.applicationPackage(applicationPackage) + DeployState deployState = deployStateBuilder.applicationPackage(applicationPackage) .modelHostProvisioner(provisioner) - .build(true); - return new MockRoot("", deployStateBuilder.build(true)); + .build(); + return new MockRoot("", deployState); } public static MockRoot createMockRoot(String[] hosts, List searchDefinitions) { 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 ce72e784125..1a5ce0a10f4 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 @@ -10,6 +10,7 @@ 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.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; @@ -24,7 +25,6 @@ import com.yahoo.messagebus.MessagebusConfig; import com.yahoo.net.HostName; import com.yahoo.vespa.config.UnknownConfigIdException; import com.yahoo.vespa.model.ConfigProducer; -import com.yahoo.vespa.model.HostSystem; import com.yahoo.vespa.model.VespaModel; import com.yahoo.vespa.model.admin.Admin; import com.yahoo.vespa.model.admin.Configserver; @@ -246,9 +246,9 @@ public class VespaModelTestCase { .withHosts(simpleHosts) .withServices(services) .build(); - DeployState deployState = builder.deployLogger(logger).applicationPackage(app).build(true); + DeployState deployState = builder.deployLogger(logger).applicationPackage(app).build(); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); - Validation.validate(model, true, deployState); + Validation.validate(model, new ValidationParameters(ValidationParameters.IgnoreValidationErrors.TRUE), deployState); assertFalse(logger.msgs.isEmpty()); } @@ -283,7 +283,7 @@ public class VespaModelTestCase { .configServerSpecs(Arrays.asList(new Configserver.Spec("cfghost", 1234, 1235, 1236))) .multitenant(true) .build()) - .build(true); + .build(); VespaModel model = new VespaModel(new NullConfigModelRegistry(), deployState); AllocatedHosts info = model.allocatedHosts(); assertEquals("Admin version 3 is ignored, and there are no other hosts to borrow for admin services", 0, info.getHosts().size()); @@ -302,9 +302,9 @@ public class VespaModelTestCase { public void testPermanentServices() throws IOException, SAXException { ApplicationPackage app = MockApplicationPackage.createEmpty(); DeployState.Builder builder = new DeployState.Builder().applicationPackage(app); - VespaModel model = new VespaModel(new NullConfigModelRegistry(), builder.build(true)); + VespaModel model = new VespaModel(new NullConfigModelRegistry(), builder.build()); assertThat(model.getContainerClusters().size(), is(0)); - model = new VespaModel(new NullConfigModelRegistry(), builder.permanentApplicationPackage(Optional.of(FilesApplicationPackage.fromFile(new File(TESTDIR, "app_permanent")))).build(true)); + model = new VespaModel(new NullConfigModelRegistry(), builder.permanentApplicationPackage(Optional.of(FilesApplicationPackage.fromFile(new File(TESTDIR, "app_permanent")))).build()); assertThat(model.getContainerClusters().size(), is(1)); } 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 715b84c7093..8cc5144c2a3 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 @@ -124,7 +124,7 @@ public class VespaModelTester { .applicationPackage(appPkg) .modelHostProvisioner(provisioner) .properties(properties) - .build(true); + .build(); return modelCreatorWithMockPkg.create(false, deployState, configModelRegistry); } } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java index 18fbf68497f..59c35913e62 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithFilePkg.java @@ -4,6 +4,10 @@ package com.yahoo.vespa.model.test.utils; import com.yahoo.component.Version; import com.yahoo.config.model.ConfigModelRegistry; import com.yahoo.config.model.NullConfigModelRegistry; +import com.yahoo.config.model.api.ValidationParameters; +import com.yahoo.config.model.api.ValidationParameters.CheckRouting; +import com.yahoo.config.model.api.ValidationParameters.FailOnIncompatibleChange; +import com.yahoo.config.model.api.ValidationParameters.IgnoreValidationErrors; import com.yahoo.config.model.application.provider.*; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.vespa.model.VespaModel; @@ -56,12 +60,13 @@ public class VespaModelCreatorWithFilePkg { if (validateApplicationWithSchema) { validate(); } - DeployState deployState = new DeployState.Builder().applicationPackage(applicationPkg).build(true); + DeployState deployState = new DeployState.Builder().applicationPackage(applicationPkg).build(); VespaModel model = new VespaModel(configModelRegistry, deployState); // Validate, but without checking configSources or routing (routing // is constructed in a special way and cannot always be validated in // this step for unit tests) - Validation.validate(model, false, false, deployState); + ValidationParameters validationParameters = new ValidationParameters(IgnoreValidationErrors.TRUE, FailOnIncompatibleChange.TRUE, CheckRouting.FALSE); + Validation.validate(model, validationParameters, deployState); return model; } catch (Exception e) { throw e instanceof RuntimeException ? (RuntimeException) e : new RuntimeException(e); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java index 211589c100d..0a445ffc8b7 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/test/utils/VespaModelCreatorWithMockPkg.java @@ -6,6 +6,8 @@ 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.ConfigChangeAction; +import com.yahoo.config.model.api.ValidationParameters; +import com.yahoo.config.model.api.ValidationParameters.CheckRouting; import com.yahoo.config.model.application.provider.SchemaValidators; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.test.MockApplicationPackage; @@ -38,12 +40,12 @@ public class VespaModelCreatorWithMockPkg { } public VespaModel create() { - DeployState deployState = new DeployState.Builder().applicationPackage(appPkg).build(true); + DeployState deployState = new DeployState.Builder().applicationPackage(appPkg).build(); return create(true, deployState); } public VespaModel create(DeployState.Builder deployStateBuilder) { - return create(true, deployStateBuilder.applicationPackage(appPkg).build(true)); + return create(true, deployStateBuilder.applicationPackage(appPkg).build()); } public VespaModel create(boolean validate, DeployState deployState) { @@ -72,7 +74,8 @@ public class VespaModelCreatorWithMockPkg { // Validate, but without checking configSources or routing (routing // is constructed in a special way and cannot always be validated in // this step for unit tests) - configChangeActions = Validation.validate(model, false, false, deployState); + ValidationParameters validationParameters = new ValidationParameters(CheckRouting.FALSE); + configChangeActions = Validation.validate(model, validationParameters, deployState); } return model; } catch (Exception e) { diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java index 0d9346101e9..ba093ca9db1 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/modelfactory/PreparedModelsBuilder.java @@ -10,6 +10,8 @@ import com.yahoo.config.model.api.Model; import com.yahoo.config.model.api.ModelContext; import com.yahoo.config.model.api.ModelCreateResult; import com.yahoo.config.model.api.ModelFactory; +import com.yahoo.config.model.api.ValidationParameters; +import com.yahoo.config.model.api.ValidationParameters.IgnoreValidationErrors; import com.yahoo.config.model.application.provider.FilesApplicationPackage; import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AllocatedHosts; @@ -104,7 +106,9 @@ public class PreparedModelsBuilder extends ModelsBuilder.*",Pattern.MULTILINE+Pattern.DOTALL).matcher(IOUtils.readAll(zkApp.getServices())).matches()); assertTrue(Pattern.compile(".*.*",Pattern.MULTILINE+Pattern.DOTALL).matcher(IOUtils.readAll(zkApp.getHosts())).matches()); assertTrue(Pattern.compile(".*.*",Pattern.MULTILINE+Pattern.DOTALL).matcher(IOUtils.readAll(zkApp.getFile(Path.fromString("services.xml")).createReader())).matches()); - DeployState deployState = new DeployState.Builder().applicationPackage(zkApp).build(true); + DeployState deployState = new DeployState.Builder().applicationPackage(zkApp).build(); assertEquals(deployState.getSearchDefinitions().size(), 5); assertEquals(zkApp.searchDefinitionContents().size(), 5); assertEquals(IOUtils.readAll(zkApp.getRankingExpression("foo.expression")), "foo()+1\n"); 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 72937301954..f5c18f2b255 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 @@ -230,7 +230,7 @@ public class StandaloneContainerApplication implements Application { ApplicationPackage applicationPackage = rawApplicationPackage.preprocess(Zone.defaultZone(), logger); validateApplication(applicationPackage); DeployState deployState = new DeployState.Builder().applicationPackage(applicationPackage).fileRegistry(fileRegistry) - .deployLogger(logger).configDefinitionRepo(configDefinitionRepo).build(true); + .deployLogger(logger).configDefinitionRepo(configDefinitionRepo).build(); VespaModel root = VespaModel.createIncomplete(deployState); ApplicationConfigProducerRoot vespaRoot = new ApplicationConfigProducerRoot(root, "vespa", deployState.getDocumentModel(), -- cgit v1.2.3