diff options
author | Martin Polden <mpolden@mpolden.no> | 2019-09-18 09:45:04 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2019-09-19 13:12:08 +0200 |
commit | 6d8977e240a5e65aa315bf0ced0a143f97c6b167 (patch) | |
tree | 28a89ebf95778c67d58ceaa9829c5bb11168d3b0 /node-repository | |
parent | d082531b8c6244de5bc99ed887f706be3a1084df (diff) |
Write new OS versions format
Diffstat (limited to 'node-repository')
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); - } - } |