summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <martin.polden@gmail.com>2016-09-02 11:32:29 +0200
committerMartin Polden <martin.polden@gmail.com>2016-09-02 11:32:29 +0200
commite24360c2b0e9037336e2f8442cdeb210d0a6358a (patch)
tree567894aa6589d72901454aedf21ba45f2052c797 /node-repository
parenteb35f0570d17e3d5b68b7ba42e212444f4c6093b (diff)
Fix hardwareFailure=false deserialization
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java8
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java42
2 files changed, 45 insertions, 5 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
index 84012dd63b7..338ea3cd2e3 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java
@@ -225,7 +225,13 @@ public class NodeSerializer {
private Optional<Status.HardwareFailureType> hardwareFailureFromSlime(Inspector object) {
if ( ! object.valid()) return Optional.empty();
- if (object.type() == Type.BOOL) return Optional.of(Status.HardwareFailureType.unknown); // TODO: Remove this line when 6.28 is deployed everywhere
+ // TODO: Remove boolean handling when 6.28 is deployed everywhere
+ if (object.type() == Type.BOOL) {
+ if (!object.asBool()) {
+ return Optional.empty();
+ }
+ return Optional.of(Status.HardwareFailureType.unknown);
+ }
return Optional.of(hardwareFailureFromString(object.asString()));
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
index eaadc5a0c6e..beb7abc882e 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/persistence/SerializationTest.java
@@ -10,8 +10,8 @@ import com.yahoo.config.provision.TenantName;
import com.yahoo.test.ManualClock;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.hosted.provision.Node;
-import com.yahoo.vespa.hosted.provision.node.Allocation;
import com.yahoo.vespa.hosted.provision.Node.State;
+import com.yahoo.vespa.hosted.provision.node.Allocation;
import com.yahoo.vespa.hosted.provision.node.Configuration;
import com.yahoo.vespa.hosted.provision.node.Generation;
import com.yahoo.vespa.hosted.provision.node.History;
@@ -20,13 +20,13 @@ import com.yahoo.vespa.hosted.provision.node.Status;
import com.yahoo.vespa.hosted.provision.testutils.FlavorConfigBuilder;
import org.junit.Test;
+import java.time.Duration;
+import java.util.Optional;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import java.time.Duration;
-import java.util.Optional;
-
/**
* @author bratseth
*/
@@ -167,6 +167,40 @@ public class SerializationTest {
Node node = nodeSerializer.fromJson(Node.State.provisioned, Utf8.toBytes(nodeData));
assertEquals(Status.HardwareFailureType.unknown, node.status().hardwareFailure().get());
}
+
+ // TODO: Remove when 6.28 is deployed everywhere
+ @Test
+ public void testLegacyNonHardwareFailureDeserialization() {
+ String nodeData =
+ "{\n" +
+ " \"type\" : \"tenant\",\n" +
+ " \"rebootGeneration\" : 0,\n" +
+ " \"configuration\" : {\n" +
+ " \"flavor\" : \"default\"\n" +
+ " },\n" +
+ " \"history\" : [\n" +
+ " {\n" +
+ " \"type\" : \"reserved\",\n" +
+ " \"at\" : 1444391402611\n" +
+ " }\n" +
+ " ],\n" +
+ " \"instance\" : {\n" +
+ " \"applicationId\" : \"myApplication\",\n" +
+ " \"tenantId\" : \"myTenant\",\n" +
+ " \"instanceId\" : \"myInstance\",\n" +
+ " \"serviceId\" : \"content/myId/0\",\n" +
+ " \"restartGeneration\" : 0,\n" +
+ " \"removable\" : false\n" +
+ " },\n" +
+ " \"openStackId\" : \"myId\",\n" +
+ " \"hostname\" : \"myHostname\",\n" +
+ " \"hardwareFailure\" : false\n" +
+ "}";
+
+ Node node = nodeSerializer.fromJson(Node.State.provisioned, Utf8.toBytes(nodeData));
+ assertFalse(node.status().hardwareFailure().isPresent());
+ }
+
@Test
public void testRetiredNodeSerialization() {
Node node = createNode();