diff options
Diffstat (limited to 'controller-server')
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 - } - ] - } - ] -} |