diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2020-02-07 13:33:33 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2020-02-07 13:33:33 +0100 |
commit | f4f8f0959f956e22b4fb68f940cac4db31912193 (patch) | |
tree | 9bd8ccecd8524b1ddd3ef825360af17025ecdce6 | |
parent | b39b11118f85fb2b2f2a7951204311e96ed0faec (diff) |
Make sure not to display newer Vespa versions than the system version
2 files changed, 20 insertions, 6 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java index ff1e1a8f151..339facec231 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/application/JobControllerApiHandlerHelper.java @@ -592,10 +592,7 @@ class JobControllerApiHandlerHelper { Cursor latestVersionsObject = stepObject.setObject("latestVersions"); List<ChangeBlocker> blockers = application.deploymentSpec().requireInstance(stepStatus.instance()).changeBlocker(); - controller.versionStatus().versions().stream() - .filter(version -> version.confidence().equalOrHigherThan(normal)) - .max(naturalOrder()) - .or(() -> controller.versionStatus().versions().stream().filter(VespaVersion::isSystemVersion).findAny()) + latestVersionPreferablyWithNormalConfidenceNAndotNewerThanSystem(controller.versionStatus().versions()) .ifPresent(latestPlatform -> { Cursor latestPlatformObject = latestVersionsObject.setObject("platform"); latestPlatformObject.setString("platform", latestPlatform.versionNumber().toFullString()); @@ -692,5 +689,22 @@ class JobControllerApiHandlerHelper { blockerObject.setString("zone", blocker.window().zone().toString()); }); } + + private static Optional<VespaVersion> latestVersionPreferablyWithNormalConfidenceNAndotNewerThanSystem(List<VespaVersion> versions) { + int i; + for (i = versions.size(); i-- > 0; ) + if (versions.get(i).isSystemVersion()) + break; + + if (i < 0) + return Optional.empty(); + + for (int j = i; j >= 0; j--) + if (versions.get(j).confidence().equalOrHigherThan(normal)) + return Optional.of(versions.get(j)); + + return Optional.of(versions.get(i)); + } + } diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json index 3be78c294c7..e75ebc923bd 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/responses/deployment-overview.json @@ -18,7 +18,7 @@ }, "latestVersions": { "platform": { - "platform": "7.164.0", + "platform": "6.1.0", "at": "(ignore)", "upgrade": false, "blockers": [] @@ -505,7 +505,7 @@ "deploying": {}, "latestVersions": { "platform": { - "platform": "7.164.0", + "platform": "6.1.0", "at": "(ignore)", "upgrade": false, "blockers": [] |