summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model-api/abi-spec.json5
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java19
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/DeployState.java9
3 files changed, 20 insertions, 13 deletions
diff --git a/config-model-api/abi-spec.json b/config-model-api/abi-spec.json
index c7b80dce778..28c04f38da5 100644
--- a/config-model-api/abi-spec.json
+++ b/config-model-api/abi-spec.json
@@ -493,7 +493,8 @@
],
"methods": [
"public void <init>()",
- "public void <init>(com.yahoo.config.application.api.DeployLogger)",
+ "public void <init>(com.yahoo.config.application.api.ValidationOverrides, com.yahoo.config.application.api.DeployLogger)",
+ "public void invalid(com.yahoo.config.application.api.ValidationId, java.lang.String, java.time.Instant)",
"public boolean allows(com.yahoo.config.application.api.ValidationId, java.time.Instant)",
"public java.lang.String xmlForm()",
"public java.lang.String toString()"
@@ -520,7 +521,7 @@
],
"methods": [
"public void <init>(java.util.List)",
- "public final void invalid(com.yahoo.config.application.api.ValidationId, java.lang.String, java.time.Instant)",
+ "public void invalid(com.yahoo.config.application.api.ValidationId, java.lang.String, java.time.Instant)",
"public final boolean allows(java.lang.String, java.time.Instant)",
"public boolean allows(com.yahoo.config.application.api.ValidationId, java.time.Instant)",
"public java.lang.String xmlForm()",
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
index 7514a66e282..bcf2ce3999a 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java
@@ -29,8 +29,6 @@ import java.util.logging.Logger;
*/
public class ValidationOverrides {
- private static final Logger log = Logger.getLogger(ValidationOverrides.class.getName());
-
public static final ValidationOverrides empty = new ValidationOverrides(ImmutableList.of(), "<validation-overrides/>");
/** A special instance which behaves as if it contained a valid allow override for every (valid) validation id */
@@ -51,7 +49,7 @@ public class ValidationOverrides {
}
/** Throws a ValidationException unless this validation is overridden at this time */
- public final void invalid(ValidationId validationId, String message, Instant now) {
+ public void invalid(ValidationId validationId, String message, Instant now) {
if ( ! allows(validationId, now))
throw new ValidationException(validationId, message);
}
@@ -176,23 +174,30 @@ public class ValidationOverrides {
public static class AllowAllValidationOverrides extends ValidationOverrides {
private final DeployLogger logger;
+ private final ValidationOverrides wrapped;
/** Create an instance of this which doesn't log */
public AllowAllValidationOverrides() {
- this(null);
+ this(null, null);
}
/** Creates an instance of this which logs what is allows to the given deploy logger */
- public AllowAllValidationOverrides(DeployLogger logger) {
+ public AllowAllValidationOverrides(ValidationOverrides wrapped, DeployLogger logger) {
super(List.of());
+ this.wrapped = wrapped;
this.logger = logger;
}
+ @Override
+ public void invalid(ValidationId validationId, String message, Instant now) {
+ // Log if would otherwise be invalid
+ if (wrapped != null && logger != null && ! wrapped.allows(validationId, now))
+ logger.log(Level.WARNING, "Possibly destructive change '" + validationId + "' allowed");
+ }
+
/** Returns whether the given (assumed invalid) change is allowed by this at the moment */
@Override
public boolean allows(ValidationId validationId, Instant now) {
- if (logger != null)
- logger.log(Level.WARNING, "Possibly destructive change '" + validationId + "' allowed");
return 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 22cc2032881..937d511bb09 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
@@ -121,11 +121,12 @@ public class DeployState implements ConfigDefinitionStore {
this.importedModels = new ImportedMlModels(applicationPackage.getFileReference(ApplicationPackage.MODELS_DIR),
modelImporters);
+ ValidationOverrides suppliedValidationOverrides = applicationPackage.getValidationOverrides().map(ValidationOverrides::fromXml)
+ .orElse(ValidationOverrides.empty);
this.validationOverrides =
- zone.environment().isManuallyDeployed()
- ? new ValidationOverrides.AllowAllValidationOverrides(deployLogger) // Don't protect manually deployed zones
- : applicationPackage.getValidationOverrides().map(ValidationOverrides::fromXml)
- .orElse(ValidationOverrides.empty);
+ zone.environment().isManuallyDeployed() // // Warn but allow in manually deployed zones
+ ? new ValidationOverrides.AllowAllValidationOverrides(suppliedValidationOverrides, deployLogger)
+ : suppliedValidationOverrides;
this.wantedNodeVespaVersion = wantedNodeVespaVersion;
this.now = now;