diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-05-31 13:17:57 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-05-31 13:17:57 +0200 |
commit | 079b3fd5428859788ad9ae0ecb3644e379906741 (patch) | |
tree | 4f7555f49a2dc69a1c90c3c48f34daed4c82cb88 /controller-server | |
parent | cfc49c3b93988100bb0bc49776f70ce8d9fdd9b9 (diff) |
Consider additional sources of major version
Diffstat (limited to 'controller-server')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java index b097814eadd..8aef09d1a40 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/application/pkg/ApplicationPackageValidator.java @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.hosted.controller.application.pkg; +import com.yahoo.component.Version; import com.yahoo.config.application.api.DeploymentInstanceSpec; import com.yahoo.config.application.api.DeploymentSpec; import com.yahoo.config.application.api.Endpoint; @@ -20,6 +21,7 @@ import com.yahoo.vespa.hosted.controller.Application; import com.yahoo.vespa.hosted.controller.Controller; import com.yahoo.vespa.hosted.controller.application.EndpointId; import com.yahoo.vespa.hosted.controller.deployment.DeploymentSteps; +import com.yahoo.vespa.hosted.controller.versions.VespaVersion; import java.time.Instant; import java.util.ArrayList; @@ -62,11 +64,17 @@ public class ApplicationPackageValidator { validateDeprecatedElements(applicationPackage); } - /** Verify that deployment spec does not use elements deprecated on a major version older than compile version */ + /** Verify that deployment spec does not use elements deprecated on a major version older than wanted major version */ private void validateDeprecatedElements(ApplicationPackage applicationPackage) { + int wantedMajor = applicationPackage.compileVersion().map(Version::getMajor) + .or(() -> applicationPackage.deploymentSpec().majorVersion()) + .or(() -> controller.readVersionStatus().controllerVersion() + .map(VespaVersion::versionNumber) + .map(Version::getMajor)) + .orElseThrow(() -> new IllegalArgumentException("Could not determine wanted major version")); for (var deprecatedElement : applicationPackage.deploymentSpec().deprecatedElements()) { if (applicationPackage.compileVersion().isEmpty()) continue; - if (deprecatedElement.majorVersion() >= applicationPackage.compileVersion().get().getMajor()) continue; + if (deprecatedElement.majorVersion() >= wantedMajor) continue; throw new IllegalArgumentException(deprecatedElement.humanReadableString()); } } |