summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-09-18 09:45:04 +0200
committerMartin Polden <mpolden@mpolden.no>2019-09-19 13:12:08 +0200
commit6d8977e240a5e65aa315bf0ced0a143f97c6b167 (patch)
tree28a89ebf95778c67d58ceaa9829c5bb11168d3b0 /node-repository
parentd082531b8c6244de5bc99ed887f706be3a1084df (diff)
Write new OS versions format
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializer.java21
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializerTest.java37
2 files changed, 10 insertions, 48 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializer.java
index 4104a31886a..91f619ffa91 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializer.java
@@ -5,7 +5,6 @@ import com.yahoo.component.Version;
import com.yahoo.config.provision.NodeType;
import com.yahoo.slime.ObjectTraverser;
import com.yahoo.slime.Slime;
-import com.yahoo.slime.Type;
import com.yahoo.vespa.config.SlimeUtils;
import com.yahoo.vespa.hosted.provision.os.OsVersion;
@@ -29,9 +28,11 @@ public class OsVersionsSerializer {
public static byte[] toJson(Map<NodeType, OsVersion> versions) {
var slime = new Slime();
var object = slime.setObject();
- // TODO(mpolden): Write active status here once all readers can handle it
- versions.forEach((nodeType, osVersion) -> object.setString(NodeSerializer.toString(nodeType),
- osVersion.version().toFullString()));
+ versions.forEach((nodeType, osVersion) -> {
+ var versionObject = object.setObject(NodeSerializer.toString(nodeType));
+ versionObject.setString(VERSION_FIELD, osVersion.version().toFullString());
+ versionObject.setBool(ACTIVE_FIELD, osVersion.active());
+ });
try {
return SlimeUtils.toJsonBytes(slime);
} catch (IOException e) {
@@ -43,16 +44,8 @@ public class OsVersionsSerializer {
var versions = new TreeMap<NodeType, OsVersion>(); // Use TreeMap to sort by node type
var inspector = SlimeUtils.jsonToSlime(data).get();
inspector.traverse((ObjectTraverser) (key, value) -> {
- Version version;
- boolean active;
- // TODO(mpolden): Remove fallback after next version
- if (value.type() == Type.OBJECT) {
- version = Version.fromString(value.field(VERSION_FIELD).asString());
- active = value.field(ACTIVE_FIELD).asBool();
- } else {
- version = Version.fromString(value.asString());
- active = true;
- }
+ var version = Version.fromString(value.field(VERSION_FIELD).asString());
+ var active = value.field(ACTIVE_FIELD).asBool();
versions.put(NodeSerializer.nodeTypeFromString(key), new OsVersion(version, active));
});
return versions;
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializerTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializerTest.java
index 4aec5b8370e..c6583292da8 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializerTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializerTest.java
@@ -6,55 +6,24 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.os.OsVersion;
import org.junit.Test;
-import java.nio.charset.StandardCharsets;
import java.util.Map;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
/**
* @author mpolden
*/
public class OsVersionsSerializerTest {
- // TODO(mpolden): Remove once no longer supported
@Test
- public void legacy_format() {
- var json = "{\"host\":\"1.2.3\",\"proxyhost\":\"4.5.6\",\"confighost\":\"7.8.9\"}";
- var serializedFromString = OsVersionsSerializer.fromJson(json.getBytes(StandardCharsets.UTF_8));
+ public void serialization() {
var versions = Map.of(
NodeType.host, new OsVersion(Version.fromString("1.2.3"), true),
- NodeType.proxyhost, new OsVersion(Version.fromString("4.5.6"), true),
+ NodeType.proxyhost, new OsVersion(Version.fromString("4.5.6"), false),
NodeType.confighost, new OsVersion(Version.fromString("7.8.9"), true)
);
- assertEquals(versions, serializedFromString);
-
var serialized = OsVersionsSerializer.fromJson(OsVersionsSerializer.toJson(versions));
assertEquals(serialized, versions);
}
- @Test
- public void read_future_format() {
- var json = "{\n" +
- " \"host\": {\n" +
- " \"version\": \"1.2.3\",\n" +
- " \"active\": false\n" +
- " " +
- "},\n" +
- " \"proxyhost\": {\n" +
- " \"version\": \"4.5.6\",\n" +
- " \"active\": true\n" +
- " },\n" +
- " \"confighost\": {\n" +
- " \"version\": \"7.8.9\",\n" +
- " \"active\": true\n" +
- " }\n" +
- "}";
- var versions = OsVersionsSerializer.fromJson(json.getBytes(StandardCharsets.UTF_8));
- assertEquals(Map.of(
- NodeType.host, new OsVersion(Version.fromString("1.2.3"), false),
- NodeType.proxyhost, new OsVersion(Version.fromString("4.5.6"), true),
- NodeType.confighost, new OsVersion(Version.fromString("7.8.9"), true)
- ), versions);
- }
-
}