summaryrefslogtreecommitdiffstats
path: root/config-model-api/src
diff options
context:
space:
mode:
Diffstat (limited to 'config-model-api/src')
-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/model/api/ApplicationInfo.java2
3 files changed, 33 insertions, 5 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/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;
}
+
}