summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-09-19 13:16:00 +0200
committerMartin Polden <mpolden@mpolden.no>2019-09-19 13:16:30 +0200
commitfa2f6dfa28c52d483c7cd33aa886719f095d7ebb (patch)
treea0055aabfb3443b4ccc0801c939780bca0773e27 /node-repository
parent2d41d8885eb6bbc9d53a6a23db5fe093bdd1b268 (diff)
Keep compatibility with legacy format
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializer.java13
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/OsVersionsSerializerTest.java16
2 files changed, 27 insertions, 2 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 91f619ffa91..26e59040b95 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,6 +5,7 @@ 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;
@@ -44,8 +45,16 @@ 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) -> {
- var version = Version.fromString(value.field(VERSION_FIELD).asString());
- var active = value.field(ACTIVE_FIELD).asBool();
+ Version version;
+ boolean active;
+ if (value.type() == Type.OBJECT) {
+ version = Version.fromString(value.field(VERSION_FIELD).asString());
+ active = value.field(ACTIVE_FIELD).asBool();
+ } else {
+ // TODO(mpolden): Remove support for legacy format after September 2019
+ version = Version.fromString(value.asString());
+ active = true;
+ }
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 c6583292da8..b41958b36db 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,6 +6,7 @@ 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.assertEquals;
@@ -16,6 +17,21 @@ import static org.junit.Assert.assertEquals;
public class OsVersionsSerializerTest {
@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));
+ 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.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 serialization() {
var versions = Map.of(
NodeType.host, new OsVersion(Version.fromString("1.2.3"), true),