summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java33
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java3
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ValidationOverrides.java9
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java2
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java11
5 files changed, 49 insertions, 9 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
index 41a0feff5d4..a3769299cf8 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationMetaData.java
@@ -11,27 +11,32 @@ import java.io.*;
* Metadata about an application package.
*
* @author hmusum
- * @since 5.0
*/
public class ApplicationMetaData {
+
private final String deployedByUser;
private final String deployedFromDir;
private final long deployTimestamp;
+ private final boolean internalRedeploy;
private final long generation;
private final long previousActiveGeneration;
private final String checkSum;
private final String appName;
public ApplicationMetaData(File appDir, String deployedByUser, String deployedFromDir, Long deployTimestamp,
+ boolean internalRedeploy,
String checkSum, Long generation, long previousActiveGeneration) {
- this(deployedByUser, deployedFromDir, deployTimestamp, appDir.getName(), checkSum, generation, previousActiveGeneration);
+ this(deployedByUser, deployedFromDir, deployTimestamp, internalRedeploy,
+ appDir.getName(), checkSum, generation, previousActiveGeneration);
}
- public ApplicationMetaData(String deployedByUser, String deployedFromDir, Long deployTimestamp, String applicationName, String checkSum, Long generation, long previousActiveGeneration) {
+ public ApplicationMetaData(String deployedByUser, String deployedFromDir, Long deployTimestamp, boolean internalRedeploy,
+ String applicationName, String checkSum, Long generation, long previousActiveGeneration) {
this.appName = applicationName;
this.deployedByUser = deployedByUser;
this.deployedFromDir = deployedFromDir;
this.deployTimestamp = deployTimestamp;
+ this.internalRedeploy = internalRedeploy;
this.checkSum = checkSum;
this.generation = generation;
this.previousActiveGeneration = previousActiveGeneration;
@@ -88,6 +93,12 @@ public class ApplicationMetaData {
}
/**
+ * Returns whether this application generation was produced by a system internal redeployment,
+ * not an application package change
+ */
+ public boolean isInternalRedeploy() { return internalRedeploy; }
+
+ /**
* Returns an md5 hash of the contents of the application package
* @return an md5sum of the application package
*/
@@ -115,7 +126,14 @@ public class ApplicationMetaData {
Inspector root = data.get();
Inspector deploy = root.field("deploy");
Inspector app = root.field("application");
- return new ApplicationMetaData(deploy.field("user").asString(), deploy.field("from").asString(), deploy.field("timestamp").asLong(), app.field("name").asString(), app.field("checksum").asString(), app.field("generation").asLong(), app.field("previousActiveGeneration").asLong());
+ return new ApplicationMetaData(deploy.field("user").asString(),
+ deploy.field("from").asString(),
+ deploy.field("timestamp").asLong(),
+ booleanField("internalRedeploy", false, deploy),
+ app.field("name").asString(),
+ app.field("checksum").asString(),
+ app.field("generation").asLong(),
+ app.field("previousActiveGeneration").asLong());
} catch (Exception e) {
throw new IllegalArgumentException("Error parsing json metadata", e);
}
@@ -128,6 +146,7 @@ public class ApplicationMetaData {
deploy.setString("user", deployedByUser);
deploy.setString("from", deployedFromDir);
deploy.setLong("timestamp", deployTimestamp);
+ deploy.setBool("internalRedeploy", internalRedeploy);
Cursor app = meta.setObject("application");
app.setString("name", appName);
app.setString("checksum", checkSum);
@@ -136,6 +155,12 @@ public class ApplicationMetaData {
return slime;
}
+ private static boolean booleanField(String fieldName, boolean defaultValue, Inspector object) {
+ Inspector value = object.field(fieldName);
+ if ( ! value.valid()) return defaultValue;
+ return value.asBool();
+ }
+
public String asJsonString() {
Slime slime = getSlime();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
index fe6f7da2092..dd54fe11c39 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
@@ -224,9 +224,10 @@ public interface ApplicationPackage {
/**
* Gets the ApplicationMetaData instance for this application package.
+ *
* @return an ApplicationMetaData instance
*/
- default ApplicationMetaData getMetaData() { return null; }
+ ApplicationMetaData getMetaData();
default File getFileReference(Path pathRelativeToAppDir) {
throw new UnsupportedOperationException("This application package cannot return file references");
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 11f9add6b25..441ef273a6f 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
@@ -66,6 +66,11 @@ public class ValidationOverrides {
return false;
}
+ public static String toAllowMessage(ValidationId id) {
+ return "To allow this add <allow until='yyyy-mm-dd'>" + id + "</allow> to validation-overrides.xml" +
+ ", see https://docs.vespa.ai/documentation/reference/validation-overrides.html";
+ }
+
/** Returns the XML form of this, or null if it was not created by fromXml, nor is empty */
public String xmlForm() { return xmlForm; }
@@ -155,7 +160,9 @@ public class ValidationOverrides {
/** Returns "validationId: message" */
@Override
- public String getMessage() { return validationId + ": " + super.getMessage(); }
+ public String getMessage() {
+ return validationId + ": " + super.getMessage() + ". " + toAllowMessage(validationId);
+ }
}
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java
index c6a72ebb3ff..486db205a4c 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ApplicationInfo.java
@@ -4,6 +4,7 @@ package com.yahoo.config.model.api;
import com.yahoo.config.provision.ApplicationId;
public class ApplicationInfo {
+
private final ApplicationId applicationId;
private final long generation;
private final Model model; // NOT immutable
@@ -23,4 +24,5 @@ public class ApplicationInfo {
public Model getModel() {
return model;
}
+
}
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java
index b3f0f578e22..d2b8dc75d22 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ConfigDefinitionRepo.java
@@ -7,10 +7,9 @@ import com.yahoo.vespa.config.buildergen.ConfigDefinition;
import java.util.Map;
/**
- * Represents a repository of config definitions.
+ * A config definition repository.
*
- * @author lulf
- * @since 5.10
+ * @author Ulf Lillengen
*/
public interface ConfigDefinitionRepo {
@@ -19,4 +18,10 @@ public interface ConfigDefinitionRepo {
*/
Map<ConfigDefinitionKey, ConfigDefinition> getConfigDefinitions();
+ /**
+ * Gets a config definition from repo or null if not found
+ */
+ // TODO: Remove default implementation when 6.246 is the oldest version in use
+ default ConfigDefinition get(ConfigDefinitionKey key) { return null; }
+
}