diff options
author | Martin Polden <martin.polden@gmail.com> | 2016-09-02 11:32:29 +0200 |
---|---|---|
committer | Martin Polden <martin.polden@gmail.com> | 2016-09-02 11:32:29 +0200 |
commit | e24360c2b0e9037336e2f8442cdeb210d0a6358a (patch) | |
tree | 567894aa6589d72901454aedf21ba45f2052c797 /node-repository | |
parent | eb35f0570d17e3d5b68b7ba42e212444f4c6093b (diff) |
Fix hardwareFailure=false deserialization
Diffstat (limited to 'node-repository')
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(); |