summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-01-23 17:39:35 +0100
committerJon Bratseth <bratseth@gmail.com>2023-01-23 17:39:35 +0100
commitdb4d7f0f9102c15def5c2ff5aee6378213c409bd (patch)
tree4254b1ece9c5e9b1d7e4c2cbe8edbfbbc4200d04 /config-model
parenta62da047311d4e70d019455a83b535ed45a9cbc9 (diff)
Pass DeployState - no functional changes
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java23
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/Validation.java19
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidator.java16
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidator.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java21
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java38
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java22
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java18
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java7
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java16
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyValidator.java (renamed from config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidator.java)15
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidatorTest.java15
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidatorTest.java8
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java25
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java7
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSchemaClusterChangeValidatorTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSchemaClusterChangeValidatorTest.java42
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java6
30 files changed, 182 insertions, 218 deletions
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 54521b946dd..1813e183a60 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
@@ -122,7 +122,8 @@ public class DeployState implements ConfigDefinitionStore {
Version wantedNodeVespaVersion,
boolean accessLoggingEnabledByDefault,
Optional<DockerImage> wantedDockerImageRepo,
- Reindexing reindexing) {
+ Reindexing reindexing,
+ Optional<ValidationOverrides> validationOverrides) {
this.logger = deployLogger;
this.fileRegistry = fileRegistry;
this.executor = executor;
@@ -143,8 +144,8 @@ public class DeployState implements ConfigDefinitionStore {
this.semanticRules = semanticRules; // TODO: Remove this by seeing how pagetemplates are propagated
this.importedModels = importMlModels(applicationPackage, modelImporters, executor);
- this.validationOverrides = applicationPackage.getValidationOverrides().map(ValidationOverrides::fromXml)
- .orElse(ValidationOverrides.empty);
+ this.validationOverrides = validationOverrides.orElse(applicationPackage.getValidationOverrides().map(ValidationOverrides::fromXml)
+ .orElse(ValidationOverrides.empty));
this.wantedNodeVespaVersion = wantedNodeVespaVersion;
this.now = now;
@@ -327,9 +328,10 @@ public class DeployState implements ConfigDefinitionStore {
private Version wantedNodeVespaVersion = Vtag.currentVersion;
private boolean accessLoggingEnabledByDefault = true;
private Optional<DockerImage> wantedDockerImageRepo = Optional.empty();
- private Reindexing reindexing = null;
private RankProfileRegistry rankProfileRegistry = new RankProfileRegistry();
private QueryProfiles queryProfiles = null;
+ private Reindexing reindexing = null;
+ private Optional<ValidationOverrides> validationOverrides = Optional.empty();
public Builder() {}
@@ -437,7 +439,15 @@ public class DeployState implements ConfigDefinitionStore {
return this;
}
- public Builder reindexing(Reindexing reindexing) { this.reindexing = Objects.requireNonNull(reindexing); return this; }
+ public Builder reindexing(Reindexing reindexing) {
+ this.reindexing = Objects.requireNonNull(reindexing);
+ return this;
+ }
+
+ public Builder validationOverrides(ValidationOverrides validationOverrides) {
+ this.validationOverrides = Optional.of(validationOverrides);
+ return this;
+ }
public DeployState build() {
return build(new ValidationParameters());
@@ -470,7 +480,8 @@ public class DeployState implements ConfigDefinitionStore {
wantedNodeVespaVersion,
accessLoggingEnabledByDefault,
wantedDockerImageRepo,
- reindexing);
+ reindexing,
+ validationOverrides);
}
}
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 93a28820125..7b380cd5acf 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
@@ -26,7 +26,7 @@ import com.yahoo.vespa.model.application.validation.change.RedundancyIncreaseVal
import com.yahoo.vespa.model.application.validation.change.ResourcesReductionValidator;
import com.yahoo.vespa.model.application.validation.change.StartupCommandChangeValidator;
import com.yahoo.vespa.model.application.validation.change.StreamingSearchClusterChangeValidator;
-import com.yahoo.vespa.model.application.validation.first.RedundancyOnFirstDeploymentValidator;
+import com.yahoo.vespa.model.application.validation.first.RedundancyValidator;
import java.time.Instant;
import java.util.Arrays;
@@ -98,8 +98,7 @@ public class Validation {
} else {
Optional<Model> currentActiveModel = deployState.getPreviousModel();
if (currentActiveModel.isPresent() && (currentActiveModel.get() instanceof VespaModel)) {
- result = validateChanges((VespaModel) currentActiveModel.get(), model,
- deployState.validationOverrides(), deployState.getDeployLogger(), deployState.now());
+ result = validateChanges((VespaModel) currentActiveModel.get(), model, deployState);
deferConfigChangesForClustersToBeRestarted(result, model);
}
}
@@ -107,14 +106,13 @@ public class Validation {
}
private static List<ConfigChangeAction> validateChanges(VespaModel currentModel, VespaModel nextModel,
- ValidationOverrides overrides, DeployLogger logger,
- Instant now) {
+ DeployState deployState) {
ChangeValidator[] validators = new ChangeValidator[] {
new IndexingModeChangeValidator(),
new GlobalDocumentChangeValidator(),
new IndexedSearchClusterChangeValidator(),
new StreamingSearchClusterChangeValidator(),
- new ConfigValueChangeValidator(logger),
+ new ConfigValueChangeValidator(),
new StartupCommandChangeValidator(),
new ContentTypeRemovalValidator(),
new ContentClusterRemovalValidator(),
@@ -124,10 +122,11 @@ public class Validation {
new NodeResourceChangeValidator(),
new RedundancyIncreaseValidator(),
new CloudAccountChangeValidator(),
- new CertificateRemovalChangeValidator()
+ new CertificateRemovalChangeValidator(),
+ new RedundancyValidator()
};
List<ConfigChangeAction> actions = Arrays.stream(validators)
- .flatMap(v -> v.validate(currentModel, nextModel, overrides, now).stream())
+ .flatMap(v -> v.validate(currentModel, nextModel, deployState).stream())
.toList();
Map<ValidationId, Collection<String>> disallowableActions = actions.stream()
@@ -135,12 +134,12 @@ public class Validation {
.collect(groupingBy(action -> action.validationId().orElseThrow(),
mapping(ConfigChangeAction::getMessage,
toCollection(LinkedHashSet::new))));
- overrides.invalid(disallowableActions, now);
+ deployState.validationOverrides().invalid(disallowableActions, deployState.now());
return actions;
}
private static void validateFirstTimeDeployment(VespaModel model, DeployState deployState) {
- new RedundancyOnFirstDeploymentValidator().validate(model, deployState);
+ new RedundancyValidator().validate(model, deployState);
}
private static void deferConfigChangesForClustersToBeRestarted(List<ConfigChangeAction> actions, VespaModel model) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidator.java
index b225c25a8d3..6f80c3da469 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidator.java
@@ -2,13 +2,12 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.http.Client;
import java.security.cert.X509Certificate;
-import java.time.Instant;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
@@ -25,19 +24,22 @@ public class CertificateRemovalChangeValidator implements ChangeValidator {
private static final Logger logger = Logger.getLogger(CertificateRemovalChangeValidator.class.getName());
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
// Skip for tester applications
if (current.applicationPackage().getApplicationId().instance().isTester()) return List.of();
current.getContainerClusters()
.forEach((clusterId, currentCluster) -> {
if(next.getContainerClusters().containsKey(clusterId))
- validateClients(clusterId, currentCluster.getClients(), next.getContainerClusters().get(clusterId).getClients(), overrides, now);
+ validateClients(clusterId,
+ currentCluster.getClients(),
+ next.getContainerClusters().get(clusterId).getClients(),
+ deployState);
});
return List.of();
}
- void validateClients(String clusterId, List<Client> current, List<Client> next, ValidationOverrides overrides, Instant now) {
+ void validateClients(String clusterId, List<Client> current, List<Client> next, DeployState deployState) {
List<X509Certificate> currentCertificates = current.stream()
.filter(client -> !client.internal())
.map(Client::certificates)
@@ -56,11 +58,11 @@ public class CertificateRemovalChangeValidator implements ChangeValidator {
List<X509Certificate> missingCerts = currentCertificates.stream().filter(cert -> !nextCertificates.contains(cert)).toList();
if (!missingCerts.isEmpty()) {
- overrides.invalid(ValidationId.certificateRemoval,
+ deployState.validationOverrides().invalid(ValidationId.certificateRemoval,
"Data plane certificate(s) from cluster '" + clusterId + "' is removed " +
"(removed certificates: " + missingCerts.stream().map(x509Certificate -> x509Certificate.getSubjectX500Principal().getName()).toList() + ") " +
"This can cause client connection issues.",
- now);
+ deployState.now());
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java
index 772b6a37b02..9992fa37e45 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ChangeValidator.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.config.application.api.ValidationOverrides;
@@ -21,12 +22,10 @@ public interface ChangeValidator {
*
* @param current the current active model
* @param next the next model we would like to activate
- * @param overrides validation overrides
- * @param now the instant to use as now
* @return a list of actions specifying what needs to be done in order to activate the new model.
* Return an empty list if nothing needs to be done
* @throws IllegalArgumentException if the change fails validation
*/
- List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now);
+ List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidator.java
index ba8a8819c5b..c55cfbc5075 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidator.java
@@ -1,14 +1,13 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.CloudAccount;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.model.VespaModel;
-import java.time.Instant;
import java.util.List;
/**
@@ -17,7 +16,7 @@ import java.util.List;
public class CloudAccountChangeValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
for (var clusterId : current.allClusters()) {
CloudAccount currentAccount = cloudAccountOf(current, clusterId);
CloudAccount nextAccount = cloudAccountOf(next, clusterId);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java
index 14fb903a547..353be99cfa9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ClusterSizeReductionValidator.java
@@ -2,13 +2,12 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
-import java.time.Instant;
import java.util.List;
/**
@@ -19,34 +18,26 @@ import java.util.List;
public class ClusterSizeReductionValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
for (var clusterId : current.allClusters()) {
Capacity currentCapacity = current.provisioned().all().get(clusterId);
Capacity nextCapacity = next.provisioned().all().get(clusterId);
if (currentCapacity == null || nextCapacity == null) continue;
- validate(currentCapacity,
- nextCapacity,
- clusterId,
- overrides,
- now);
+ validate(currentCapacity, nextCapacity, clusterId, deployState);
}
return List.of();
}
- private void validate(Capacity current,
- Capacity next,
- ClusterSpec.Id clusterId,
- ValidationOverrides overrides,
- Instant now) {
+ private void validate(Capacity current, Capacity next, ClusterSpec.Id clusterId, DeployState deployState) {
int currentSize = current.minResources().nodes();
int nextSize = next.minResources().nodes();
// don't allow more than 50% reduction, but always allow to reduce size with 1
if ( nextSize < currentSize * 0.5 && nextSize != currentSize - 1)
- overrides.invalid(ValidationId.clusterSizeReduction,
+ deployState.validationOverrides().invalid(ValidationId.clusterSizeReduction,
"Size reduction in '" + clusterId.value() + "' is too large: " +
"New min size must be at least 50% of the current min size. " +
"Current size: " + currentSize + ", new size: " + nextSize,
- now);
+ deployState.now());
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java
index 077855b4b23..84730a18265 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidator.java
@@ -4,8 +4,8 @@ package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.ChangesRequiringRestart;
import com.yahoo.config.ConfigInstance;
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.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.model.Service;
@@ -13,12 +13,10 @@ import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.application.validation.RestartConfigs;
import com.yahoo.vespa.model.utils.internal.ReflectionUtil;
-import java.time.Instant;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.logging.Level;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.util.stream.Collectors.joining;
@@ -32,31 +30,26 @@ import static java.util.stream.Collectors.joining;
*/
public class ConfigValueChangeValidator implements ChangeValidator {
- private final DeployLogger logger;
-
- public ConfigValueChangeValidator(DeployLogger logger) {
- this.logger = logger;
- }
-
/** Inspects the configuration in the new and old Vespa model to determine which services that require restart */
@Override
- public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel,
- ValidationOverrides overrides, Instant now) {
- return findConfigChangesFromModels(currentModel, nextModel).toList();
+ public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel, DeployState deployState) {
+ return findConfigChangesFromModels(currentModel, nextModel, deployState.getDeployLogger()).toList();
}
public Stream<ConfigChangeAction> findConfigChangesFromModels(AbstractConfigProducerRoot currentModel,
- AbstractConfigProducerRoot nextModel) {
+ AbstractConfigProducerRoot nextModel,
+ DeployLogger logger) {
return nextModel.getDescendantServices().stream()
- .map(service -> findConfigChangeActionForService(service, currentModel, nextModel))
+ .map(service -> findConfigChangeActionForService(service, currentModel, nextModel, logger))
.filter(Optional::isPresent)
.map(Optional::get);
}
private Optional<ConfigChangeAction> findConfigChangeActionForService(Service service,
AbstractConfigProducerRoot currentModel,
- AbstractConfigProducerRoot nextModel) {
- List<ChangesRequiringRestart> changes = findConfigChangesForService(service, currentModel, nextModel)
+ AbstractConfigProducerRoot nextModel,
+ DeployLogger logger) {
+ List<ChangesRequiringRestart> changes = findConfigChangesForService(service, currentModel, nextModel, logger)
.toList();
if (changes.isEmpty()) {
return Optional.empty();
@@ -70,14 +63,15 @@ public class ConfigValueChangeValidator implements ChangeValidator {
private Stream<ChangesRequiringRestart> findConfigChangesForService(Service service,
AbstractConfigProducerRoot currentModel,
- AbstractConfigProducerRoot nextModel) {
+ AbstractConfigProducerRoot nextModel,
+ DeployLogger logger) {
Class<? extends Service> serviceClass = service.getClass();
if (!currentModel.getService(service.getConfigId()).isPresent()) {
// Service does not exist in the current model.
return Stream.empty();
}
return getConfigInstancesFromServiceAnnotations(serviceClass)
- .map(configClass -> compareConfigFromCurrentAndNextModel(service, configClass, currentModel, nextModel))
+ .map(configClass -> compareConfigFromCurrentAndNextModel(service, configClass, currentModel, nextModel, logger))
.filter(Optional::isPresent)
.map(Optional::get)
.filter(ChangesRequiringRestart::needsRestart);
@@ -114,9 +108,11 @@ public class ConfigValueChangeValidator implements ChangeValidator {
.distinct();
}
- private Optional<ChangesRequiringRestart> compareConfigFromCurrentAndNextModel(
- Service service, Class<? extends ConfigInstance> configClass,
- AbstractConfigProducerRoot currentModel, AbstractConfigProducerRoot nextModel) {
+ private Optional<ChangesRequiringRestart> compareConfigFromCurrentAndNextModel(Service service,
+ Class<? extends ConfigInstance> configClass,
+ AbstractConfigProducerRoot currentModel,
+ AbstractConfigProducerRoot nextModel,
+ DeployLogger logger) {
if (!hasConfigFieldsFlaggedWithRestart(configClass, service.getClass())) {
logger.logApplicationPackage(Level.FINE, String.format("%s is listed in the annotation for %s, " +
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java
index 3a0b1348d7e..0703d4fa3d6 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidator.java
@@ -2,18 +2,16 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.container.QrConfig;
import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.vespa.model.container.ApplicationContainer;
import com.yahoo.vespa.model.container.Container;
import com.yahoo.vespa.model.container.ContainerCluster;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
/**
* Returns a restart action for each container that has turned on {@link QrConfig#restartOnDeploy()}.
@@ -23,8 +21,7 @@ import java.util.stream.Collectors;
public class ContainerRestartValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel, ValidationOverrides ignored,
- Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel, DeployState deployState) {
List<ConfigChangeAction> actions = new ArrayList<>();
for (ContainerCluster<ApplicationContainer> cluster : nextModel.getContainerClusters().values()) {
actions.addAll(cluster.getContainers().stream()
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
index c33b349ced7..0cc52edf3cc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentClusterRemovalValidator.java
@@ -2,12 +2,11 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
-import java.time.Instant;
import java.util.List;
/**
@@ -19,14 +18,14 @@ import java.util.List;
public class ContentClusterRemovalValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
for (String currentClusterId : current.getContentClusters().keySet()) {
ContentCluster nextCluster = next.getContentClusters().get(currentClusterId);
if (nextCluster == null)
- overrides.invalid(ValidationId.contentClusterRemoval,
+ deployState.validationOverrides().invalid(ValidationId.contentClusterRemoval,
"Content cluster '" + currentClusterId + "' is removed. " +
"This will cause loss of all data in this cluster",
- now);
+ deployState.now());
}
return List.of();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java
index b6b62ec3ac0..396cd471ca5 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ContentTypeRemovalValidator.java
@@ -2,13 +2,12 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.documentmodel.NewDocumentType;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
-import java.time.Instant;
import java.util.List;
/**
@@ -20,18 +19,18 @@ import java.util.List;
public class ContentTypeRemovalValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
for (ContentCluster currentCluster : current.getContentClusters().values()) {
ContentCluster nextCluster = next.getContentClusters().get(currentCluster.getSubId());
if (nextCluster == null) continue; // validated elsewhere
for (NewDocumentType type : currentCluster.getDocumentDefinitions().values()) {
if ( ! nextCluster.getDocumentDefinitions().containsKey(type.getName())) {
- overrides.invalid(ValidationId.contentTypeRemoval,
+ deployState.validationOverrides().invalid(ValidationId.contentTypeRemoval,
"Schema '" + type.getName() + "' is removed " +
"in content cluster '" + currentCluster.getName() + "'. " +
"This will cause loss of all data in this schema",
- now);
+ deployState.now());
}
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
index 43b5e646cc5..fe85da584c8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/GlobalDocumentChangeValidator.java
@@ -2,13 +2,12 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.documentmodel.NewDocumentType;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
-import java.time.Instant;
import java.util.List;
import java.util.Map;
@@ -19,9 +18,8 @@ import java.util.Map;
public class GlobalDocumentChangeValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel,
- ValidationOverrides overrides, Instant now) {
- if (!overrides.allows(ValidationId.globalDocumentChange.value(), now)) {
+ public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel, DeployState deployState) {
+ if (!deployState.validationOverrides().allows(ValidationId.globalDocumentChange.value(), deployState.now())) {
for (Map.Entry<String, ContentCluster> currentEntry : currentModel.getContentClusters().entrySet()) {
ContentCluster nextCluster = nextModel.getContentClusters().get(currentEntry.getKey());
if (nextCluster == null) continue;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java
index 778ae604333..0a50c050b0b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexedSearchClusterChangeValidator.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.ServiceInfo;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.documentmodel.NewDocumentType;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.config.application.api.ValidationOverrides;
@@ -27,13 +28,12 @@ import java.util.stream.Collectors;
public class IndexedSearchClusterChangeValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next,
- ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
List<ConfigChangeAction> result = new ArrayList<>();
for (Map.Entry<String, ContentCluster> currentEntry : current.getContentClusters().entrySet()) {
ContentCluster nextCluster = next.getContentClusters().get(currentEntry.getKey());
if (nextCluster != null && nextCluster.getSearch().hasIndexedCluster()) {
- result.addAll(validateContentCluster(currentEntry.getValue(), nextCluster, overrides, now));
+ result.addAll(validateContentCluster(currentEntry.getValue(), nextCluster, deployState));
}
}
return result;
@@ -41,15 +41,13 @@ public class IndexedSearchClusterChangeValidator implements ChangeValidator {
private static List<ConfigChangeAction> validateContentCluster(ContentCluster currentCluster,
ContentCluster nextCluster,
- ValidationOverrides overrides,
- Instant now) {
- return validateDocumentDatabases(currentCluster, nextCluster, overrides, now);
+ DeployState deployState) {
+ return validateDocumentDatabases(currentCluster, nextCluster, deployState);
}
private static List<ConfigChangeAction> validateDocumentDatabases(ContentCluster currentCluster,
ContentCluster nextCluster,
- ValidationOverrides overrides,
- Instant now) {
+ DeployState deployState) {
List<ConfigChangeAction> result = new ArrayList<>();
for (DocumentDatabase currentDb : getDocumentDbs(currentCluster.getSearch())) {
String docTypeName = currentDb.getName();
@@ -57,7 +55,7 @@ public class IndexedSearchClusterChangeValidator implements ChangeValidator {
filter(db -> db.getName().equals(docTypeName)).findFirst();
if (nextDb.isPresent()) {
result.addAll(validateDocumentDatabase(currentCluster, nextCluster, docTypeName,
- currentDb, nextDb.get(), overrides, now));
+ currentDb, nextDb.get(), deployState));
}
}
return result;
@@ -68,8 +66,7 @@ public class IndexedSearchClusterChangeValidator implements ChangeValidator {
String docTypeName,
DocumentDatabase currentDb,
DocumentDatabase nextDb,
- ValidationOverrides overrides,
- Instant now) {
+ DeployState deployState) {
NewDocumentType currentDocType = currentCluster.getDocumentDefinitions().get(docTypeName);
NewDocumentType nextDocType = nextCluster.getDocumentDefinitions().get(docTypeName);
List<VespaConfigChangeAction> result =
@@ -78,8 +75,7 @@ public class IndexedSearchClusterChangeValidator implements ChangeValidator {
currentDocType,
nextDb,
nextDocType,
- overrides,
- now).validate();
+ deployState).validate();
return modifyActions(result, getSearchNodeServices(nextCluster.getSearch().getIndexed()), docTypeName);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java
index 4acdda03166..b7e63fa4904 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/IndexingModeChangeValidator.java
@@ -2,16 +2,15 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.ServiceInfo;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.documentmodel.NewDocumentType;
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.search.SearchNode;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
@@ -28,8 +27,7 @@ import java.util.stream.Collectors;
public class IndexingModeChangeValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel,
- ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel, DeployState deployState) {
List<ConfigChangeAction> actions = new ArrayList<>();
for (Map.Entry<String, ContentCluster> currentEntry : currentModel.getContentClusters().entrySet()) {
ContentCluster nextCluster = nextModel.getContentClusters().get(currentEntry.getKey());
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java
index 490fea40fab..7979c3c8069 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidator.java
@@ -1,8 +1,8 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.HostSpec;
import com.yahoo.config.provision.NodeResources;
@@ -10,7 +10,6 @@ import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -19,7 +18,7 @@ import java.util.stream.Collectors;
/**
* Emits restart change actions for clusters where the node resources are changed in a way
* which requires a "restart" (container recreation) to take effect.
- * Nodes will restart on their own on this condition but we want to emit restart actions to
+ * Nodes will restart on their own on this condition, but we want to emit restart actions to
* defer applying new config until restart.
*
* @author bratseth
@@ -27,7 +26,7 @@ import java.util.stream.Collectors;
public class NodeResourceChangeValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
var restartActions = new ArrayList<ConfigChangeAction>();
for (ClusterSpec.Id clusterId : current.allClusters()) {
Optional<NodeResources> currentResources = resourcesOf(clusterId, current);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java
index beea302d23d..82ad8e5d6e8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/RedundancyIncreaseValidator.java
@@ -2,34 +2,33 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
-import java.time.Instant;
import java.util.List;
/**
* Checks that redundancy is not increased (without a validation override),
- * as that may easily cause the cluster to run out of reasources.
+ * as that may easily cause the cluster to run out of resources.
*
* @author bratseth
*/
public class RedundancyIncreaseValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
for (ContentCluster currentCluster : current.getContentClusters().values()) {
ContentCluster nextCluster = next.getContentClusters().get(currentCluster.getSubId());
if (nextCluster == null) continue;
if (redundancyOf(nextCluster) > redundancyOf(currentCluster)) {
- overrides.invalid(ValidationId.redundancyIncrease,
+ deployState.validationOverrides().invalid(ValidationId.redundancyIncrease,
"Increasing redundancy from " + redundancyOf(currentCluster) + " to " +
redundancyOf(nextCluster) + " in '" + currentCluster + ". " +
"This is a safe operation but verify that you have room for a " +
redundancyOf(nextCluster) + "/" + redundancyOf(currentCluster) + "x increase " +
"in content size",
- now);
+ deployState.now());
}
}
return List.of();
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java
index 6486b5aff1b..b27266221d2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/ResourcesReductionValidator.java
@@ -2,17 +2,15 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.model.VespaModel;
-import java.time.Instant;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -23,22 +21,18 @@ import java.util.stream.Stream;
public class ResourcesReductionValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
for (var clusterId : current.allClusters()) {
Capacity currentCapacity = current.provisioned().all().get(clusterId);
Capacity nextCapacity = next.provisioned().all().get(clusterId);
if (currentCapacity == null || nextCapacity == null) continue;
- validate(currentCapacity, nextCapacity, clusterId, overrides, now);
+ validate(currentCapacity, nextCapacity, clusterId, deployState);
}
return List.of();
}
- private void validate(Capacity current,
- Capacity next,
- ClusterSpec.Id clusterId,
- ValidationOverrides overrides,
- Instant now) {
+ private void validate(Capacity current, Capacity next, ClusterSpec.Id clusterId, DeployState deployState) {
if (current.minResources().nodeResources().isUnspecified()) return;
if (next.minResources().nodeResources().isUnspecified()) return;
@@ -56,11 +50,11 @@ public class ResourcesReductionValidator implements ChangeValidator {
.toList();
if (illegalChanges.isEmpty()) return;
- overrides.invalid(ValidationId.resourcesReduction,
+ deployState.validationOverrides().invalid(ValidationId.resourcesReduction,
"Resource reduction in '" + clusterId.value() + "' is too large. " +
String.join(" ", illegalChanges) +
" New min resources must be at least 50% of the current min resources",
- now);
+ deployState.now());
}
private static Optional<String> validateResource(String resourceName, double currentValue, double nextValue) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
index 1f5a54d6b0f..9ccedc4f5c4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StartupCommandChangeValidator.java
@@ -2,17 +2,15 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducerRoot;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.model.Service;
import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.config.application.api.ValidationOverrides;
-import java.time.Instant;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -24,8 +22,7 @@ import java.util.stream.Stream;
public class StartupCommandChangeValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel,
- ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel currentModel, VespaModel nextModel, DeployState deployState) {
return findServicesWithChangedStartupCommand(currentModel, nextModel).toList();
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java
index 83d723398a6..ffab63740b9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/StreamingSearchClusterChangeValidator.java
@@ -1,9 +1,9 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.ServiceInfo;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.documentmodel.NewDocumentType;
import com.yahoo.schema.derived.AttributeFields;
@@ -15,7 +15,6 @@ import com.yahoo.vespa.model.application.validation.change.search.DocumentTypeCh
import com.yahoo.vespa.model.content.cluster.ContentCluster;
import com.yahoo.vespa.model.search.StreamingSearchCluster;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -29,7 +28,7 @@ import java.util.stream.Collectors;
public class StreamingSearchClusterChangeValidator implements ChangeValidator {
@Override
- public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, ValidationOverrides overrides, Instant now) {
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
List<ConfigChangeAction> result = new ArrayList<>();
current.getContentClusters().forEach((clusterName, currentCluster) -> {
ContentCluster nextCluster = next.getContentClusters().get(clusterName);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java
index 838c96a8249..f23a7720157 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidator.java
@@ -2,7 +2,7 @@
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.documentmodel.NewDocumentType;
import com.yahoo.schema.derived.AttributeFields;
@@ -14,7 +14,6 @@ import com.yahoo.schema.document.HnswIndexParams;
import com.yahoo.vespa.model.application.validation.change.VespaConfigChangeAction;
import com.yahoo.vespa.model.application.validation.change.VespaRestartAction;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -36,8 +35,7 @@ public class AttributeChangeValidator {
private final AttributeFields nextFields;
private final IndexSchema nextIndexSchema;
private final NewDocumentType nextDocType;
- private final ValidationOverrides overrides;
- private final Instant now;
+ private final DeployState deployState;
public AttributeChangeValidator(ClusterSpec.Id id,
AttributeFields currentFields,
@@ -46,8 +44,7 @@ public class AttributeChangeValidator {
AttributeFields nextFields,
IndexSchema nextIndexSchema,
NewDocumentType nextDocType,
- ValidationOverrides overrides,
- Instant now) {
+ DeployState deployState) {
this.id = id;
this.currentFields = currentFields;
this.currentIndexSchema = currentIndexSchema;
@@ -55,8 +52,7 @@ public class AttributeChangeValidator {
this.nextFields = nextFields;
this.nextIndexSchema = nextIndexSchema;
this.nextDocType = nextDocType;
- this.overrides = overrides;
- this.now = now;
+ this.deployState = deployState;
}
public List<VespaConfigChangeAction> validate() {
@@ -167,10 +163,10 @@ public class AttributeChangeValidator {
private void validatePagedAttributeRemoval(Attribute current, Attribute next) {
if (current.isPaged() && !next.isPaged()) {
- overrides.invalid(ValidationId.pagedSettingRemoval,
+ deployState.validationOverrides().invalid(ValidationId.pagedSettingRemoval,
current + "' has setting 'paged' removed. " +
"This may cause content nodes to run out of memory as the entire attribute is loaded into memory",
- now);
+ deployState.now());
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java
index 55fc268e805..bbe79f0ecc8 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidator.java
@@ -1,13 +1,12 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change.search;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.documentmodel.NewDocumentType;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.vespa.model.application.validation.change.VespaConfigChangeAction;
import com.yahoo.vespa.model.search.DocumentDatabase;
-import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
@@ -23,23 +22,20 @@ public class DocumentDatabaseChangeValidator {
private final NewDocumentType currentDocType;
private final DocumentDatabase nextDatabase;
private final NewDocumentType nextDocType;
- private final ValidationOverrides overrides;
- private final Instant now;
+ private final DeployState deployState;
public DocumentDatabaseChangeValidator(ClusterSpec.Id id,
DocumentDatabase currentDatabase,
NewDocumentType currentDocType,
DocumentDatabase nextDatabase,
NewDocumentType nextDocType,
- ValidationOverrides overrides,
- Instant now) {
+ DeployState deployState) {
this.id = id;
this.currentDatabase = currentDatabase;
this.currentDocType = currentDocType;
this.nextDatabase = nextDatabase;
this.nextDocType = nextDocType;
- this.overrides = overrides;
- this.now = now;
+ this.deployState = deployState;
}
public List<VespaConfigChangeAction> validate() {
@@ -57,7 +53,7 @@ public class DocumentDatabaseChangeValidator {
currentDatabase.getDerivedConfiguration().getIndexSchema(), currentDocType,
nextDatabase.getDerivedConfiguration().getAttributeFields(),
nextDatabase.getDerivedConfiguration().getIndexSchema(), nextDocType,
- overrides, now)
+ deployState)
.validate();
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyValidator.java
index b0cfc832389..87a6e540a4d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyOnFirstDeploymentValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/first/RedundancyValidator.java
@@ -2,18 +2,25 @@
package com.yahoo.vespa.model.application.validation.first;
import com.yahoo.config.application.api.ValidationId;
+import com.yahoo.config.application.api.ValidationOverrides;
+import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.application.validation.Validator;
+import com.yahoo.vespa.model.application.validation.change.ChangeValidator;
import com.yahoo.vespa.model.content.cluster.ContentCluster;
+import java.time.Instant;
+import java.util.List;
+
/**
* Validates that applications in prod zones do not have redundancy 1 (without a validation override).
*
* @author bratseth
*/
-public class RedundancyOnFirstDeploymentValidator extends Validator {
+public class RedundancyValidator extends Validator implements ChangeValidator {
+ /** Validate on first deployment. */
@Override
public void validate(VespaModel model, DeployState deployState) {
if ( ! deployState.isHosted()) return;
@@ -29,4 +36,10 @@ public class RedundancyOnFirstDeploymentValidator extends Validator {
}
}
+ /** Validate on change. */
+ @Override
+ public List<ConfigChangeAction> validate(VespaModel current, VespaModel next, DeployState deployState) {
+ return List.of();
+ }
+
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidatorTest.java
index 6b6621239b0..b955ada20d9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CertificateRemovalChangeValidatorTest.java
@@ -2,6 +2,7 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationOverrides;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.security.X509CertificateUtils;
import com.yahoo.vespa.model.container.http.Client;
import org.junit.jupiter.api.Test;
@@ -38,18 +39,22 @@ public class CertificateRemovalChangeValidatorTest {
CertificateRemovalChangeValidator validator = new CertificateRemovalChangeValidator();
// Adding certs -> ok
- validator.validateClients("clusterId", List.of(c1, c2), List.of(c1, c2, c3), ValidationOverrides.empty, now);
+ validator.validateClients("clusterId", List.of(c1, c2), List.of(c1, c2, c3), new DeployState.Builder().now(now).build());
// Removing certs -> fails
assertThrows(ValidationOverrides.ValidationException.class,
- () ->validator.validateClients("clusterId", List.of(c1, c2, c3), List.of(c1, c3), ValidationOverrides.empty, now));
+ () ->validator.validateClients("clusterId", List.of(c1, c2, c3), List.of(c1, c3),
+ new DeployState.Builder().now(now).build()));
// Removing certs with validationoverrides -> ok
- validator.validateClients("clusterId", List.of(c1, c2, c3), List.of(c1, c3), ValidationOverrides.fromXml(validationOverrides), now);
+ validator.validateClients("clusterId", List.of(c1, c2, c3), List.of(c1, c3),
+ new DeployState.Builder().now(now).validationOverrides(ValidationOverrides.fromXml(validationOverrides)).build());
// Adding and removing internal certs are ok:
- validator.validateClients("clusterId", List.of(c1, c2), List.of(c1, c2, internal), ValidationOverrides.empty, now);
- validator.validateClients("clusterId", List.of(c1, c2, internal), List.of(c1, c2), ValidationOverrides.empty, now);
+ validator.validateClients("clusterId", List.of(c1, c2), List.of(c1, c2, internal),
+ new DeployState.Builder().build());
+ validator.validateClients("clusterId", List.of(c1, c2, internal), List.of(c1, c2),
+ new DeployState.Builder().now(now).build());
}
static X509Certificate certificate(String cn) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidatorTest.java
index aa16927777c..fcc8c82a6e9 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/CloudAccountChangeValidatorTest.java
@@ -1,7 +1,6 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.provision.IntRange;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.Provisioned;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.deploy.TestProperties;
@@ -14,7 +13,6 @@ import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
import java.util.List;
import java.util.Optional;
@@ -33,15 +31,15 @@ class CloudAccountChangeValidatorTest {
CloudAccountChangeValidator validator = new CloudAccountChangeValidator();
try {
- validator.validate(model0, model1, ValidationOverrides.empty, Instant.now());
+ validator.validate(model0, model1, new DeployState.Builder().build());
fail("Expected exception");
} catch (IllegalArgumentException e) {
assertEquals(e.getMessage(), "Cannot change cloud account from unspecified account to " +
"account '000000000000'. The existing deployment must be removed before " +
"changing accounts");
}
- assertEquals(List.of(), validator.validate(model0, model0, ValidationOverrides.empty, Instant.now()));
- assertEquals(List.of(), validator.validate(model1, model1, ValidationOverrides.empty, Instant.now()));
+ assertEquals(List.of(), validator.validate(model0, model0, new DeployState.Builder().build()));
+ assertEquals(List.of(), validator.validate(model1, model1, new DeployState.Builder().build()));
}
private static Provisioned provisioned(Capacity... capacity) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
index 9705bc83e2b..069bf429b41 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ConfigValueChangeValidatorTest.java
@@ -1,6 +1,7 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.test.AnotherrestartConfig;
import com.yahoo.config.ConfigInstance;
import com.yahoo.test.RestartConfig;
@@ -15,14 +16,11 @@ import com.yahoo.vespa.model.HostResource;
import com.yahoo.vespa.model.PortAllocBridge;
import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.application.validation.RestartConfigs;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.vespa.model.test.utils.DeployLoggerStub;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
-import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -49,7 +47,7 @@ public class ConfigValueChangeValidatorTest {
* {@link com.yahoo.vespa.model.application.validation.RestartConfigs} attribute.
* 3) That the config ids for the container services have a specific value.
*
- * This test will to a certain degree ensure that the annotations in the VespaModel is correctly applied.
+ * This test will to a certain degree ensure that the annotations in the VespaModel is correctly applied.
*/
@Test
void requireThatValidatorHandlesVespaModel() {
@@ -66,8 +64,8 @@ public class ConfigValueChangeValidatorTest {
@Test
void requireThatDocumentTypesCanBeAddedWithoutNeedForRestart() {
List<ConfigChangeAction> changes = getConfigChanges(
- createVespaModel("", Arrays.asList("foo")),
- createVespaModel("", Arrays.asList("foo", "bar")));
+ createVespaModel("", List.of("foo")),
+ createVespaModel("", List.of("foo", "bar")));
assertEquals(0, changes.size());
}
@@ -154,14 +152,14 @@ public class ConfigValueChangeValidatorTest {
}
private List<ConfigChangeAction> getConfigChanges(VespaModel currentModel, VespaModel nextModel) {
- ConfigValueChangeValidator validator = new ConfigValueChangeValidator(logger);
- return validator.validate(currentModel, nextModel, ValidationOverrides.empty, Instant.now());
+ ConfigValueChangeValidator validator = new ConfigValueChangeValidator();
+ return validator.validate(currentModel, nextModel, new DeployState.Builder().deployLogger(logger).build());
}
private List<ConfigChangeAction> getConfigChanges(AbstractConfigProducerRoot currentModel,
AbstractConfigProducerRoot nextModel) {
- ConfigValueChangeValidator validator = new ConfigValueChangeValidator(logger);
- return validator.findConfigChangesFromModels(currentModel, nextModel).toList();
+ ConfigValueChangeValidator validator = new ConfigValueChangeValidator();
+ return validator.findConfigChangesFromModels(currentModel, nextModel, logger).toList();
}
private static void assertComponentsEquals(List<ConfigChangeAction> changes, String name, int index) {
@@ -173,7 +171,7 @@ public class ConfigValueChangeValidatorTest {
}
private static VespaModel createVespaModel(String configSegment) {
- return createVespaModel(configSegment, Arrays.asList("music"));
+ return createVespaModel(configSegment, List.of("music"));
}
private static VespaModel createVespaModel(String configSegment, List<String> docTypes) {
@@ -233,7 +231,7 @@ public class ConfigValueChangeValidatorTest {
private static MockRoot createRootWithChildren(AbstractConfigProducer<?>... children) {
MockRoot root = new MockRoot();
- Arrays.asList(children).forEach(root::addChild);
+ List.of(children).forEach(root::addChild);
root.freezeModelTopology();
return root;
}
@@ -269,7 +267,7 @@ public class ConfigValueChangeValidatorTest {
}
public SimpleConfigProducer withChildren(AbstractConfigProducer<?>... producer) {
- Arrays.asList(producer).forEach(this::addChild);
+ List.of(producer).forEach(this::addChild);
return this;
}
}
@@ -323,5 +321,6 @@ public class ConfigValueChangeValidatorTest {
super(name);
}
}
+
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
index e3d6b1ac965..c034944c8ae 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/ContainerRestartValidatorTest.java
@@ -2,14 +2,12 @@
package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.model.api.ConfigChangeAction;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.vespa.defaults.Defaults;
import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
-import java.util.Collections;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
@@ -57,8 +55,7 @@ public class ContainerRestartValidatorTest {
}
private static List<ConfigChangeAction> validateModel(VespaModel current, VespaModel next) {
- return new ContainerRestartValidator()
- .validate(current, next, new ValidationOverrides(Collections.emptyList()), Instant.now());
+ return new ContainerRestartValidator().validate(current, next, new DeployState.Builder().build());
}
private static VespaModel createModel(boolean restartOnDeploy) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSchemaClusterChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSchemaClusterChangeValidatorTest.java
index 309ad4094e4..027bc706067 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSchemaClusterChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/IndexedSchemaClusterChangeValidatorTest.java
@@ -4,15 +4,14 @@ package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.ServiceInfo;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.vespa.model.content.utils.ApplicationPackageBuilder;
import com.yahoo.vespa.model.content.utils.ContentClusterBuilder;
import com.yahoo.vespa.model.content.utils.SchemaBuilder;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
import java.util.List;
import static com.yahoo.vespa.model.application.validation.change.ConfigChangeTestUtils.assertEqualActions;
@@ -72,7 +71,7 @@ public class IndexedSchemaClusterChangeValidatorTest {
private List<ConfigChangeAction> validate() {
return normalizeServicesInActions(validator.validate(currentModel, nextModel,
- ValidationOverrides.empty, Instant.now()));
+ new DeployState.Builder().build()));
}
public void assertValidation() {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java
index d0cc4a605bc..7080a3e0f12 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/NodeResourceChangeValidatorTest.java
@@ -1,7 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.application.validation.change;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.HostProvisioner;
import com.yahoo.config.model.deploy.DeployState;
@@ -15,7 +14,6 @@ import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import org.junit.jupiter.api.Test;
-import java.time.Clock;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -56,9 +54,7 @@ public class NodeResourceChangeValidatorTest {
}
private List<ConfigChangeAction> validate(VespaModel current, VespaModel next) {
- return new NodeResourceChangeValidator().validate(current, next,
- ValidationOverrides.empty,
- Clock.systemUTC().instant());
+ return new NodeResourceChangeValidator().validate(current, next, new DeployState.Builder().build());
}
private static VespaModel model(int mem1, int mem2, int mem3, int mem4) {
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSchemaClusterChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSchemaClusterChangeValidatorTest.java
index 92f2cf61c36..5c5c86e3f3d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSchemaClusterChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/StreamingSchemaClusterChangeValidatorTest.java
@@ -4,17 +4,15 @@ package com.yahoo.vespa.model.application.validation.change;
import com.yahoo.config.application.api.ValidationId;
import com.yahoo.config.model.api.ConfigChangeAction;
import com.yahoo.config.model.api.ServiceInfo;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.model.VespaModel;
-import com.yahoo.config.application.api.ValidationOverrides;
import com.yahoo.vespa.model.content.utils.ApplicationPackageBuilder;
import com.yahoo.vespa.model.content.utils.ContentClusterBuilder;
import com.yahoo.vespa.model.content.utils.DocType;
import com.yahoo.vespa.model.content.utils.SchemaBuilder;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
-import java.util.Arrays;
import java.util.List;
import static com.yahoo.vespa.model.application.validation.change.ConfigChangeTestUtils.assertEqualActions;
@@ -40,7 +38,7 @@ public class StreamingSchemaClusterChangeValidatorTest {
public static VespaModel createOneDocModel(String sdContent) {
return new ApplicationPackageBuilder()
- .addCluster(new ContentClusterBuilder().name("foo").docTypes(Arrays.asList(DocType.streaming("d1"))))
+ .addCluster(new ContentClusterBuilder().name("foo").docTypes(List.of(DocType.streaming("d1"))))
.addSchemas(new SchemaBuilder().name("d1").content(sdContent).build())
.buildCreator().create();
}
@@ -51,7 +49,7 @@ public class StreamingSchemaClusterChangeValidatorTest {
public static VespaModel createTwoDocModel(String d1Content, String d2Content) {
return new ApplicationPackageBuilder()
- .addCluster(new ContentClusterBuilder().name("foo").docTypes(Arrays.asList(DocType.streaming("d1"), DocType.streaming("d2"))))
+ .addCluster(new ContentClusterBuilder().name("foo").docTypes(List.of(DocType.streaming("d1"), DocType.streaming("d2"))))
.addSchemas(new SchemaBuilder().name("d1").content(d1Content).build())
.addSchemas(new SchemaBuilder().name("d2").content(d2Content).build())
.buildCreator().create();
@@ -63,8 +61,8 @@ public class StreamingSchemaClusterChangeValidatorTest {
public static VespaModel createTwoClusterModel(String d1Content, String d2Content) {
return new ApplicationPackageBuilder()
- .addCluster(new ContentClusterBuilder().name("foo").docTypes(Arrays.asList(DocType.streaming("d1"))))
- .addCluster(new ContentClusterBuilder().name("bar").docTypes(Arrays.asList(DocType.streaming("d2"))))
+ .addCluster(new ContentClusterBuilder().name("foo").docTypes(List.of(DocType.streaming("d1"))))
+ .addCluster(new ContentClusterBuilder().name("bar").docTypes(List.of(DocType.streaming("d2"))))
.addSchemas(new SchemaBuilder().name("d1").content(d1Content).build())
.addSchemas(new SchemaBuilder().name("d2").content(d2Content).build())
.buildCreator().create();
@@ -72,7 +70,7 @@ public class StreamingSchemaClusterChangeValidatorTest {
public List<ConfigChangeAction> validate() {
return normalizeServicesInActions(validator.validate(currentModel, nextModel,
- ValidationOverrides.empty, Instant.now()));
+ new DeployState.Builder().build()));
}
public void assertValidation() {
@@ -80,7 +78,7 @@ public class StreamingSchemaClusterChangeValidatorTest {
}
public void assertValidation(ConfigChangeAction exp) {
- assertValidation(Arrays.asList(exp));
+ assertValidation(List.of(exp));
}
public void assertValidation(List<ConfigChangeAction> exp) {
@@ -88,14 +86,14 @@ public class StreamingSchemaClusterChangeValidatorTest {
}
}
- private static String STRING_FIELD = "field f1 type string { indexing: summary }";
- private static String INT_FIELD = "field f1 type int { indexing: summary }";
- private static String ATTRIBUTE_INT_FIELD = "field f1 type int { indexing: attribute | summary }";
- private static String ATTRIBUTE_FAST_ACCESS_INT_FIELD = "field f1 type int { indexing: attribute | summary \n attribute: fast-access }";
- private static List<ServiceInfo> FOO_SERVICE = Arrays.asList(
- new ServiceInfo("searchnode", "null", null, null, "foo/search/0", "null"));
- private static List<ServiceInfo> BAR_SERVICE = Arrays.asList(
- new ServiceInfo("searchnode2", "null", null, null, "bar/search/0", "null"));
+ private static final String STRING_FIELD = "field f1 type string { indexing: summary }";
+ private static final String INT_FIELD = "field f1 type int { indexing: summary }";
+ private static final String ATTRIBUTE_INT_FIELD = "field f1 type int { indexing: attribute | summary }";
+ private static final String ATTRIBUTE_FAST_ACCESS_INT_FIELD = "field f1 type int { indexing: attribute | summary \n attribute: fast-access }";
+ private static final List<ServiceInfo> FOO_SERVICE =
+ List.of(new ServiceInfo("searchnode", "null", null, null, "foo/search/0", "null"));
+ private static final List<ServiceInfo> BAR_SERVICE =
+ List.of(new ServiceInfo("searchnode2", "null", null, null, "bar/search/0", "null"));
@Test
void changing_field_type_requires_refeed() {
@@ -106,17 +104,15 @@ public class StreamingSchemaClusterChangeValidatorTest {
@Test
void changes_in_multiple_streaming_clusters_are_discovered() {
Fixture.withTwoClusters(STRING_FIELD, INT_FIELD)
- .assertValidation(Arrays.asList(
- createFieldTypeChangeRefeedAction("d1", FOO_SERVICE),
- createFieldTypeChangeRefeedAction("d2", BAR_SERVICE)));
+ .assertValidation(List.of(createFieldTypeChangeRefeedAction("d1", FOO_SERVICE),
+ createFieldTypeChangeRefeedAction("d2", BAR_SERVICE)));
}
@Test
void changes_in_multiple_document_types_are_discovered() {
Fixture.withTwoDocTypes(STRING_FIELD, INT_FIELD)
- .assertValidation(Arrays.asList(
- createFieldTypeChangeRefeedAction("d1", FOO_SERVICE),
- createFieldTypeChangeRefeedAction("d2", FOO_SERVICE)));
+ .assertValidation(List.of(createFieldTypeChangeRefeedAction("d1", FOO_SERVICE),
+ createFieldTypeChangeRefeedAction("d2", FOO_SERVICE)));
}
@Test
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java
index 076d78912e8..adecbf42884 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/AttributeChangeValidatorTest.java
@@ -3,8 +3,8 @@ package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
import com.yahoo.config.application.api.ValidationOverrides;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.test.ManualClock;
import com.yahoo.vespa.model.application.validation.change.VespaConfigChangeAction;
import org.junit.jupiter.api.Test;
@@ -28,8 +28,7 @@ public class AttributeChangeValidatorTest {
nextDb().getDerivedConfiguration().getAttributeFields(),
nextDb().getDerivedConfiguration().getIndexSchema(),
nextDocType(),
- new ValidationOverrides(List.of()),
- new ManualClock().instant());
+ new DeployState.Builder().build());
}
@Override
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java
index 27a90c73725..689643e550d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/application/validation/change/search/DocumentDatabaseChangeValidatorTest.java
@@ -2,9 +2,8 @@
package com.yahoo.vespa.model.application.validation.change.search;
import com.yahoo.config.application.api.ValidationId;
-import com.yahoo.config.application.api.ValidationOverrides;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.provision.ClusterSpec;
-import com.yahoo.test.ManualClock;
import com.yahoo.vespa.model.application.validation.change.VespaConfigChangeAction;
import org.junit.jupiter.api.Test;
@@ -28,8 +27,7 @@ public class DocumentDatabaseChangeValidatorTest {
currentDocType(),
nextDb(),
nextDocType(),
- new ValidationOverrides(List.of()),
- new ManualClock().instant());
+ new DeployState.Builder().build());
}
@Override