aboutsummaryrefslogtreecommitdiffstats
path: root/controller-api/src/main
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2023-06-30 10:57:45 +0200
committerjonmv <venstad@gmail.com>2023-06-30 10:57:45 +0200
commit3efa2694068b6e63d9c4d383a9c8d281c6ade2a6 (patch)
treee25c4a3835ef6c01a3a5e124faaaf5ace535a548 /controller-api/src/main
parent8ff5c45ca2429ed8fb5cdb252043af97e6e89d99 (diff)
Delay using released versions as compile version for three hours
Diffstat (limited to 'controller-api/src/main')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/maven/Metadata.java20
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMavenRepository.java19
2 files changed, 33 insertions, 6 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/maven/Metadata.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/maven/Metadata.java
index dd80a2b3a9a..a0d3614ffc5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/maven/Metadata.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/maven/Metadata.java
@@ -5,9 +5,11 @@ import com.yahoo.component.Version;
import com.yahoo.text.XML;
import org.w3c.dom.Element;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
import static java.util.Objects.requireNonNull;
@@ -19,10 +21,12 @@ import static java.util.Objects.requireNonNull;
public class Metadata {
private final ArtifactId id;
+ private final Instant lastUpdated;
private final List<Version> versions;
- public Metadata(ArtifactId id, List<Version> versions) {
+ public Metadata(ArtifactId id, Instant lastUpdated, List<Version> versions) {
this.id = requireNonNull(id);
+ this.lastUpdated = requireNonNull(lastUpdated);
this.versions = versions.stream().sorted().toList();
}
@@ -31,17 +35,25 @@ public class Metadata {
Element metadata = XML.getDocument(xml).getDocumentElement();
ArtifactId id = new ArtifactId(XML.getValue(XML.getChild(metadata, "groupId")),
XML.getValue(XML.getChild(metadata, "artifactId")));
+ String lastUpdatedTimestamp = XML.getValue(XML.getChild(XML.getChild(metadata, "versioning"), "lastUpdated"));
+ Instant lastUpdated = Instant.from(DateTimeFormatter.ofPattern("yyyyMMddHHmmss").withZone(ZoneId.of("UTC"))
+ .parse(lastUpdatedTimestamp));
List<Version> versions = new ArrayList<>();
for (Element version : XML.getChildren(XML.getChild(XML.getChild(metadata, "versioning"), "versions")))
versions.add(Version.fromString(XML.getValue(version)));
- return new Metadata(id, versions);
+ return new Metadata(id, lastUpdated, versions);
}
/** Id of the metadata this concerns. */
public ArtifactId id() { return id; }
+ /** When the list of versions was last updated. */
+ Instant lastUpdated() { return lastUpdated; }
+
/** List of available versions of this, sorted by ascending version order. */
- public List<Version> versions() { return versions; }
+ public List<Version> versions(Instant availableAt) {
+ return versions.size() == 1 || availableAt.isAfter(lastUpdated.plusSeconds(10800)) ? versions : versions.subList(0, versions.size() - 1);
+ }
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMavenRepository.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMavenRepository.java
index aad6b306662..f43ec795f92 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMavenRepository.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/stubs/MockMavenRepository.java
@@ -2,12 +2,17 @@
package com.yahoo.vespa.hosted.controller.api.integration.stubs;
import com.yahoo.component.Version;
+import com.yahoo.component.annotation.Inject;
import com.yahoo.vespa.hosted.controller.api.integration.maven.ArtifactId;
-import com.yahoo.vespa.hosted.controller.api.integration.maven.Metadata;
import com.yahoo.vespa.hosted.controller.api.integration.maven.MavenRepository;
+import com.yahoo.vespa.hosted.controller.api.integration.maven.Metadata;
+import java.time.Clock;
+import java.time.Instant;
+import java.time.ZoneId;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.atomic.AtomicReference;
/**
* Mock repository for maven artifacts, that returns a static metadata.
@@ -18,21 +23,31 @@ public class MockMavenRepository implements MavenRepository {
public static final ArtifactId id = new ArtifactId("ai.vespa", "search");
+ private final Clock clock;
+ private AtomicReference<Instant> lastUpdated;
private final List<Version> versions = new ArrayList<>();
+ @Inject
public MockMavenRepository() {
+ this(Clock.fixed(Instant.EPOCH, ZoneId.of("UTC")));
+ }
+
+ public MockMavenRepository(Clock clock) {
+ this.clock = clock;
+ this.lastUpdated = new AtomicReference<>(clock.instant().minusSeconds(10801));
versions.addAll(List.of(Version.fromString("6.0"),
Version.fromString("6.1"),
Version.fromString("6.2")));
}
public void addVersion(Version version) {
+ lastUpdated.set(clock.instant());
versions.add(version);
}
@Override
public Metadata metadata() {
- return new Metadata(id, versions);
+ return new Metadata(id, lastUpdated.get(), versions);
}
@Override