summaryrefslogtreecommitdiffstats
path: root/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
diff options
context:
space:
mode:
Diffstat (limited to 'config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java43
1 files changed, 32 insertions, 11 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
index fdd7733a5f6..050fba1cd2f 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
@@ -165,7 +165,8 @@ public class DeploymentSpecXmlReader {
// Values where the parent may provide a default
DeploymentSpec.UpgradePolicy upgradePolicy = readUpgradePolicy(instanceTag, parentTag);
- DeploymentSpec.UpgradeRevision upgradeRevision = readUpgradeRevision(instanceTag, parentTag);
+ DeploymentSpec.RevisionTarget revisionTarget = readRevisionTarget(instanceTag, parentTag);
+ DeploymentSpec.RevisionChange revisionChange = readRevisionChange(instanceTag, parentTag);
DeploymentSpec.UpgradeRollout upgradeRollout = readUpgradeRollout(instanceTag, parentTag);
List<DeploymentSpec.ChangeBlocker> changeBlockers = readChangeBlockers(instanceTag, parentTag);
Optional<AthenzService> athenzService = mostSpecificAttribute(instanceTag, athenzServiceAttribute).map(AthenzService::from);
@@ -184,7 +185,8 @@ public class DeploymentSpecXmlReader {
.map(name -> new DeploymentInstanceSpec(InstanceName.from(name),
steps,
upgradePolicy,
- upgradeRevision,
+ revisionTarget,
+ revisionChange,
upgradeRollout,
changeBlockers,
globalServiceId.asOptional(),
@@ -474,23 +476,42 @@ public class DeploymentSpecXmlReader {
}
}
- private DeploymentSpec.UpgradeRevision readUpgradeRevision(Element parent, Element fallbackParent) {
+ private DeploymentSpec.RevisionChange readRevisionChange(Element parent, Element fallbackParent) {
Element upgradeElement = XML.getChild(parent, upgradeTag);
if (upgradeElement == null)
upgradeElement = XML.getChild(fallbackParent, upgradeTag);
if (upgradeElement == null)
- return DeploymentSpec.UpgradeRevision.separate;
+ return DeploymentSpec.RevisionChange.whenFailing;
- String revision = upgradeElement.getAttribute("revision");
+ String revision = upgradeElement.getAttribute("revision-change");
if (revision.isEmpty())
- return DeploymentSpec.UpgradeRevision.separate;
+ return DeploymentSpec.RevisionChange.whenFailing;
switch (revision) {
- case "exclusive": return DeploymentSpec.UpgradeRevision.exclusive;
- case "separate": return DeploymentSpec.UpgradeRevision.separate;
- case "latest": return DeploymentSpec.UpgradeRevision.latest;
- default: throw new IllegalArgumentException("Illegal upgrade revision '" + revision + "': " +
- "Must be one of " + Arrays.toString(DeploymentSpec.UpgradeRevision.values()));
+ case "when-clear": return DeploymentSpec.RevisionChange.whenClear;
+ case "when-failing": return DeploymentSpec.RevisionChange.whenFailing;
+ case "always": return DeploymentSpec.RevisionChange.always;
+ default: throw new IllegalArgumentException("Illegal upgrade revision change policy '" + revision + "': " +
+ "Must be one of " + Arrays.toString(DeploymentSpec.RevisionTarget.values()));
+ }
+ }
+
+ private DeploymentSpec.RevisionTarget readRevisionTarget(Element parent, Element fallbackParent) {
+ Element upgradeElement = XML.getChild(parent, upgradeTag);
+ if (upgradeElement == null)
+ upgradeElement = XML.getChild(fallbackParent, upgradeTag);
+ if (upgradeElement == null)
+ return DeploymentSpec.RevisionTarget.latest;
+
+ String revision = upgradeElement.getAttribute("revision-target");
+ if (revision.isEmpty())
+ return DeploymentSpec.RevisionTarget.latest;
+
+ switch (revision) {
+ case "next": return DeploymentSpec.RevisionTarget.next;
+ case "latest": return DeploymentSpec.RevisionTarget.latest;
+ default: throw new IllegalArgumentException("Illegal upgrade revision target '" + revision + "': " +
+ "Must be one of " + Arrays.toString(DeploymentSpec.RevisionTarget.values()));
}
}