aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-09-15 10:18:18 +0200
committerjonmv <venstad@gmail.com>2022-09-15 10:18:18 +0200
commit82b40a03149f7f1c40cd884c7ce1cb9082625ff6 (patch)
treef294c17d9dc802d0bbb0d9861093d5685b8a155b /controller-server
parentc2d4d1c349d398d9c64c82acedd41005fef9b190 (diff)
Warn early when user specifies illegal platform version for dev
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
index 6f9df0fff1b..c6fbb00729a 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/JobController.java
@@ -685,6 +685,10 @@ public class JobController {
if ( ! controller.zoneRegistry().hasZone(type.zone()))
throw new IllegalArgumentException(type.zone() + " is not present in this system");
+ VersionStatus versionStatus = controller.readVersionStatus();
+ if (platform.isPresent() && versionStatus.deployableVersions().stream().map(VespaVersion::versionNumber).noneMatch(platform.get()::equals))
+ throw new IllegalArgumentException("platform version " + platform.get() + " is not present in this system");
+
controller.applications().lockApplicationOrThrow(TenantAndApplicationId.from(id), application -> {
if ( ! application.get().instances().containsKey(id.instance()))
application = controller.applications().withNewInstance(application, id);
@@ -706,7 +710,7 @@ public class JobController {
byte[] diff = getDiff(applicationPackage, deploymentId, lastRun);
controller.applications().lockApplicationOrThrow(TenantAndApplicationId.from(id), application -> {
- Version targetPlatform = platform.orElseGet(() -> findTargetPlatform(applicationPackage, deploymentId, application.get().get(id.instance())));
+ Version targetPlatform = platform.orElseGet(() -> findTargetPlatform(applicationPackage, deploymentId, application.get().get(id.instance()), versionStatus));
if ( ! allowOutdatedPlatform
&& ! controller.readVersionStatus().isOnCurrentMajor(targetPlatform)
&& runs(id, type).values().stream().noneMatch(run -> run.versions().targetPlatform().getMajor() == targetPlatform.getMajor()))
@@ -742,9 +746,8 @@ public class JobController {
.orElseGet(() -> ApplicationPackageDiff.diffAgainstEmpty(applicationPackage));
}
- private Version findTargetPlatform(ApplicationPackage applicationPackage, DeploymentId id, Optional<Instance> instance) {
+ private Version findTargetPlatform(ApplicationPackage applicationPackage, DeploymentId id, Optional<Instance> instance, VersionStatus versionStatus) {
// Prefer previous platform if possible. Candidates are all deployable, ascending, with existing version appended; then reversed.
- VersionStatus versionStatus = controller.readVersionStatus();
Version systemVersion = controller.systemVersion(versionStatus);
List<Version> versions = new ArrayList<>(List.of(systemVersion));