summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
Diffstat (limited to 'controller-server')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NodeVersionSerializer.java27
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java31
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java24
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java38
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/os-version-status-legacy-format.json22
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json35
6 files changed, 4 insertions, 173 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NodeVersionSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NodeVersionSerializer.java
index 4b6e997241d..6e9def40e44 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NodeVersionSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/NodeVersionSerializer.java
@@ -32,10 +32,6 @@ public class NodeVersionSerializer {
private static final String wantedVersionField = "wantedVersion";
private static final String changedAtField = "changedAt";
- // Legacy fields
- private static final String environmentField = "environment";
- private static final String regionField = "region";
-
public void nodeVersionsToSlime(NodeVersions nodeVersions, Cursor array) {
for (var nodeVersion : nodeVersions.asMap().values()) {
var nodeVersionObject = array.addObject();
@@ -50,29 +46,12 @@ public class NodeVersionSerializer {
var nodeVersions = ImmutableMap.<HostName, NodeVersion>builder();
array.traverse((ArrayTraverser) (i, entry) -> {
var hostname = HostName.from(entry.field(hostnameField).asString());
- var zone = zoneFromSlime(entry);
- // TODO(mpolden): Make the following fields non-optional after September 2019
- var wantedVersion = Serializers.optionalString(entry.field(wantedVersionField))
- .map(Version::fromString)
- .orElse(Version.emptyVersion);
- var changedAt = Serializers.optionalInstant(entry.field(changedAtField)).orElse(Instant.EPOCH);
+ var zone = ZoneId.from(entry.field(zoneField).asString());
+ var wantedVersion = Version.fromString(entry.field(wantedVersionField).asString());
+ var changedAt = Instant.ofEpochMilli(entry.field(changedAtField).asLong());
nodeVersions.put(hostname, new NodeVersion(hostname, zone, version, wantedVersion, changedAt));
});
return new NodeVersions(nodeVersions.build());
}
- // TODO(mpolden): Simplify and in-line after September 2019
- private ZoneId zoneFromSlime(Inspector object) {
- var zoneInspector = object.field(zoneField);
- if (zoneInspector.valid()) {
- return ZoneId.from(zoneInspector.asString());
- }
- var regionInspector = object.field(regionField);
- var environmentInspector = object.field(environmentField);
- if (regionInspector.valid() && environmentInspector.valid()) {
- return ZoneId.from(environmentInspector.asString(), regionInspector.asString());
- }
- return ZoneId.defaultId();
- }
-
}
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java
index fa29969f166..8899ff89c0d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializer.java
@@ -3,12 +3,10 @@ package com.yahoo.vespa.hosted.controller.persistence;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSortedMap;
-import com.yahoo.component.Version;
import com.yahoo.slime.ArrayTraverser;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
-import com.yahoo.vespa.hosted.controller.versions.NodeVersion;
import com.yahoo.vespa.hosted.controller.versions.NodeVersions;
import com.yahoo.vespa.hosted.controller.versions.OsVersion;
import com.yahoo.vespa.hosted.controller.versions.OsVersionStatus;
@@ -30,11 +28,6 @@ public class OsVersionStatusSerializer {
// - CHANGING THE FORMAT OF A FIELD: Don't do it bro.
private static final String versionsField = "versions";
- private static final String versionField = "version";
- private static final String nodesField = "nodes";
- private static final String hostnameField = "hostname";
- private static final String regionField = "region";
- private static final String environmentField = "environment";
private static final String nodeVersionsField = "nodeVersions";
private final OsVersionSerializer osVersionSerializer;
@@ -53,8 +46,6 @@ public class OsVersionStatusSerializer {
Cursor object = versions.addObject();
osVersionSerializer.toSlime(version, object);
nodeVersionSerializer.nodeVersionsToSlime(nodes, object.setArray(nodeVersionsField));
- // TODO(mpolden): Stop writing this after September 2019
- nodesToSlime(nodes, object.setArray(nodesField));
});
return slime;
}
@@ -63,33 +54,13 @@ public class OsVersionStatusSerializer {
return new OsVersionStatus(osVersionsFromSlime(slime.get().field(versionsField)));
}
- private void nodesToSlime(NodeVersions nodeVersions, Cursor array) {
- nodeVersions.asMap().values().forEach(node -> nodeToSlime(node, array.addObject()));
- }
-
- private void nodeToSlime(NodeVersion node, Cursor object) {
- object.setString(hostnameField, node.hostname().value());
- object.setString(versionField, node.currentVersion().toFullString());
- object.setString(regionField, node.zone().region().value());
- object.setString(environmentField, node.zone().environment().value());
- }
-
private ImmutableMap<OsVersion, NodeVersions> osVersionsFromSlime(Inspector array) {
var versions = ImmutableSortedMap.<OsVersion, NodeVersions>naturalOrder();
array.traverse((ArrayTraverser) (i, object) -> {
OsVersion osVersion = osVersionSerializer.fromSlime(object);
- versions.put(osVersion, nodesFromSlime(object, osVersion.version()));
+ versions.put(osVersion, nodeVersionSerializer.nodeVersionsFromSlime(object.field(nodeVersionsField), osVersion.version()));
});
return versions.build();
}
- // TODO(mpolden): Simplify and in-line after September 2019
- private NodeVersions nodesFromSlime(Inspector object, Version version) {
- var newField = object.field(nodeVersionsField);
- if (newField.valid()) {
- return nodeVersionSerializer.nodeVersionsFromSlime(newField, version);
- }
- return nodeVersionSerializer.nodeVersionsFromSlime(object.field(nodesField), version);
- }
-
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java
index ba771d70d26..e585547e921 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/OsVersionStatusSerializerTest.java
@@ -6,16 +6,12 @@ import com.yahoo.component.Version;
import com.yahoo.config.provision.CloudName;
import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.vespa.config.SlimeUtils;
import com.yahoo.vespa.hosted.controller.versions.NodeVersion;
import com.yahoo.vespa.hosted.controller.versions.NodeVersions;
import com.yahoo.vespa.hosted.controller.versions.OsVersion;
import com.yahoo.vespa.hosted.controller.versions.OsVersionStatus;
import org.junit.Test;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Paths;
import java.time.Instant;
import java.util.List;
@@ -47,24 +43,4 @@ public class OsVersionStatusSerializerTest {
assertEquals(status.versions(), serialized.versions());
}
- @Test
- public void testLegacySerialization() throws Exception {
- var data = Files.readAllBytes(Paths.get("src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/os-version-status-legacy-format.json"));
- var serializer = new OsVersionStatusSerializer(new OsVersionSerializer(), new NodeVersionSerializer());
- var versions = ImmutableMap.of(
- new OsVersion(Version.fromString("7.42"), CloudName.from("yahoo")),
- NodeVersions.EMPTY.with(List.of(new NodeVersion(HostName.from("node1"), ZoneId.from("prod", "us-north-1"),
- Version.fromString("7.42"), Version.emptyVersion, Instant.EPOCH),
- new NodeVersion(HostName.from("node2"), ZoneId.from("test", "us-north-2"),
- Version.fromString("7.42"), Version.emptyVersion, Instant.EPOCH))));
-
- var deserialized = serializer.fromSlime(SlimeUtils.jsonToSlime(data));
- assertEquals(versions, deserialized.versions());
-
-
- var serialized = new String(SlimeUtils.toJsonBytes(serializer.toSlime(new OsVersionStatus(versions))), StandardCharsets.UTF_8);
- assertEquals("{\"versions\":[{\"version\":\"7.42.0\",\"cloud\":\"yahoo\",\"nodeVersions\":[{\"hostname\":\"node1\",\"zone\":\"prod.us-north-1\",\"wantedVersion\":\"0.0.0\",\"changedAt\":0},{\"hostname\":\"node2\",\"zone\":\"test.us-north-2\",\"wantedVersion\":\"0.0.0\",\"changedAt\":0}],\"nodes\":[{\"hostname\":\"node1\",\"version\":\"7.42.0\",\"region\":\"us-north-1\",\"environment\":\"prod\"},{\"hostname\":\"node2\",\"version\":\"7.42.0\",\"region\":\"us-north-2\",\"environment\":\"test\"}]}]}",
- serialized);
- }
-
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
index a80dcc118dc..c224e24618e 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/VersionStatusSerializerTest.java
@@ -5,7 +5,6 @@ import com.yahoo.component.Version;
import com.yahoo.config.provision.ApplicationId;
import com.yahoo.config.provision.HostName;
import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.vespa.config.SlimeUtils;
import com.yahoo.vespa.hosted.controller.versions.DeploymentStatistics;
import com.yahoo.vespa.hosted.controller.versions.NodeVersion;
import com.yahoo.vespa.hosted.controller.versions.NodeVersions;
@@ -13,8 +12,6 @@ import com.yahoo.vespa.hosted.controller.versions.VersionStatus;
import com.yahoo.vespa.hosted.controller.versions.VespaVersion;
import org.junit.Test;
-import java.nio.file.Files;
-import java.nio.file.Paths;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
@@ -65,41 +62,6 @@ public class VersionStatusSerializerTest {
}
- @Test
- public void testLegacySerialization() throws Exception {
- var data = Files.readAllBytes(Paths.get("src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json"));
- var serializer = new VersionStatusSerializer(new NodeVersionSerializer());
- var deserializedStatus = serializer.fromSlime(SlimeUtils.jsonToSlime(data));
-
- var statistics = new DeploymentStatistics(
- Version.fromString("7.0"),
- List.of(),
- List.of(),
- List.of()
- );
- var nodeVersions = List.of(new NodeVersion(HostName.from("cfg1"), ZoneId.defaultId(), Version.fromString("7.0"),
- Version.fromString("7.1"), Instant.ofEpochMilli(1111)),
- new NodeVersion(HostName.from("cfg2"), ZoneId.defaultId(), Version.fromString("7.0"),
- Version.fromString("7.1"), Instant.ofEpochMilli(2222)),
- new NodeVersion(HostName.from("cfg3"), ZoneId.defaultId(), Version.fromString("7.0"),
- Version.fromString("7.1"), Instant.ofEpochMilli(3333)));
- var vespaVersion = new VespaVersion(statistics, "badc0ffee",
- Instant.ofEpochMilli(123), true,
- true, true,
- NodeVersions.EMPTY.with(nodeVersions),
- VespaVersion.Confidence.normal);
-
- VespaVersion deserialized = deserializedStatus.versions().get(0);
- assertEquals(vespaVersion.releaseCommit(), deserialized.releaseCommit());
- assertEquals(vespaVersion.committedAt().truncatedTo(MILLIS), deserialized.committedAt());
- assertEquals(vespaVersion.isControllerVersion(), deserialized.isControllerVersion());
- assertEquals(vespaVersion.isSystemVersion(), deserialized.isSystemVersion());
- assertEquals(vespaVersion.isReleased(), deserialized.isReleased());
- assertEquals(vespaVersion.statistics(), deserialized.statistics());
- assertEquals(vespaVersion.nodeVersions(), deserialized.nodeVersions());
- assertEquals(vespaVersion.confidence(), deserialized.confidence());
- }
-
private static NodeVersions nodeVersions(Version version, Version wantedVersion, Instant changedAt, String... hostnames) {
var nodeVersions = new ArrayList<NodeVersion>();
for (var hostname : hostnames) {
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/os-version-status-legacy-format.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/os-version-status-legacy-format.json
deleted file mode 100644
index 5a6a864cbf8..00000000000
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/os-version-status-legacy-format.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "versions": [
- {
- "version": "7.42",
- "cloud": "yahoo",
- "nodes": [
- {
- "hostname": "node1",
- "version": "7.42",
- "region": "us-north-1",
- "environment": "prod"
- },
- {
- "hostname": "node2",
- "version": "7.42",
- "region": "us-north-2",
- "environment": "test"
- }
- ]
- }
- ]
-}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json
deleted file mode 100644
index 08463ed7cb4..00000000000
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/testdata/version-status-legacy-format.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "versions": [
- {
- "releaseCommit": "badc0ffee",
- "releasedAt": 123,
- "isCurrentControllerVersion": true,
- "isCurrentSystemVersion": true,
- "isReleased": true,
- "deploymentStatistics": {
- "version": "7.0",
- "failing": [],
- "production": [],
- "deploying": []
- },
- "confidence": "normal",
- "nodeVersions": [
- {
- "hostname": "cfg1",
- "wantedVersion": "7.1",
- "changedAt": 1111
- },
- {
- "hostname": "cfg2",
- "wantedVersion": "7.1",
- "changedAt": 2222
- },
- {
- "hostname": "cfg3",
- "wantedVersion": "7.1",
- "changedAt": 3333
- }
- ]
- }
- ]
-}