diff options
author | jonmv <venstad@gmail.com> | 2022-09-15 10:18:18 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-09-15 10:18:18 +0200 |
commit | 82b40a03149f7f1c40cd884c7ce1cb9082625ff6 (patch) | |
tree | f294c17d9dc802d0bbb0d9861093d5685b8a155b /controller-server | |
parent | c2d4d1c349d398d9c64c82acedd41005fef9b190 (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.java | 9 |
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)); |