diff options
author | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-09-19 16:28:38 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@verizonmedia.com> | 2019-09-19 16:28:38 +0200 |
commit | ab39b5dd2e16d744df37940bef5d71de0f1c4186 (patch) | |
tree | db8667f7387ecc51f834fdbd56d6c2bc2e2c4b64 /node-repository | |
parent | bdd780051258a53a15fb0c4b7b9d664e9972f48c (diff) |
Remove hardwareFailure and hardwareDivergence from Status and ZK
Diffstat (limited to 'node-repository')
3 files changed, 12 insertions, 68 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java index 68a1cf5cd8a..5c86b40395d 100644 --- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java +++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Status.java @@ -21,10 +21,8 @@ public class Status { private final Optional<Version> vespaVersion; private final Optional<DockerImage> dockerImage; private final int failCount; - private final Optional<String> hardwareFailureDescription; private final boolean wantToRetire; private final boolean wantToDeprovision; - private final Optional<String> hardwareDivergence; private final Optional<Version> osVersion; private final Optional<Instant> firmwareVerifiedAt; @@ -32,61 +30,50 @@ public class Status { Optional<Version> vespaVersion, Optional<DockerImage> dockerImage, int failCount, - Optional<String> hardwareFailureDescription, boolean wantToRetire, boolean wantToDeprovision, - Optional<String> hardwareDivergence, Optional<Version> osVersion, Optional<Instant> firmwareVerifiedAt) { - Objects.requireNonNull(hardwareDivergence, "Hardware divergence must be non-null"); - hardwareDivergence.ifPresent(s -> requireNonEmptyString(s, "Hardware divergence must be non-empty")); this.reboot = Objects.requireNonNull(generation, "Generation must be non-null"); this.vespaVersion = Objects.requireNonNull(vespaVersion, "Vespa version must be non-null").filter(v -> !Version.emptyVersion.equals(v)); this.dockerImage = Objects.requireNonNull(dockerImage, "Docker image must be non-null").filter(d -> !DockerImage.EMPTY.equals(d)); this.failCount = failCount; - this.hardwareFailureDescription = Objects.requireNonNull(hardwareFailureDescription, "Hardware failure description must be non-null"); this.wantToRetire = wantToRetire; this.wantToDeprovision = wantToDeprovision; - this.hardwareDivergence = hardwareDivergence; this.osVersion = Objects.requireNonNull(osVersion, "OS version must be non-null"); this.firmwareVerifiedAt = Objects.requireNonNull(firmwareVerifiedAt, "Firmware check instant must be non-null"); } /** Returns a copy of this with the reboot generation changed */ - public Status withReboot(Generation reboot) { return new Status(reboot, vespaVersion, dockerImage, failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); } + public Status withReboot(Generation reboot) { return new Status(reboot, vespaVersion, dockerImage, failCount, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } /** Returns the reboot generation of this node */ public Generation reboot() { return reboot; } /** Returns a copy of this with the vespa version changed */ - public Status withVespaVersion(Version version) { return new Status(reboot, Optional.of(version), dockerImage, failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); } + public Status withVespaVersion(Version version) { return new Status(reboot, Optional.of(version), dockerImage, failCount, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } /** Returns the Vespa version installed on the node, if known */ public Optional<Version> vespaVersion() { return vespaVersion; } /** Returns a copy of this with the docker image changed */ - public Status withDockerImage(DockerImage dockerImage) { return new Status(reboot, vespaVersion, Optional.of(dockerImage), failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); } + public Status withDockerImage(DockerImage dockerImage) { return new Status(reboot, vespaVersion, Optional.of(dockerImage), failCount, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } /** Returns the docker image the node is running, if known */ public Optional<DockerImage> dockerImage() { return dockerImage; } - public Status withIncreasedFailCount() { return new Status(reboot, vespaVersion, dockerImage, failCount + 1, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); } + public Status withIncreasedFailCount() { return new Status(reboot, vespaVersion, dockerImage, failCount + 1, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } - public Status withDecreasedFailCount() { return new Status(reboot, vespaVersion, dockerImage, failCount - 1, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); } + public Status withDecreasedFailCount() { return new Status(reboot, vespaVersion, dockerImage, failCount - 1, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } - public Status setFailCount(Integer value) { return new Status(reboot, vespaVersion, dockerImage, value, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); } + public Status setFailCount(Integer value) { return new Status(reboot, vespaVersion, dockerImage, value, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } /** Returns how many times this node has been moved to the failed state. */ public int failCount() { return failCount; } - public Status withHardwareFailureDescription(Optional<String> hardwareFailureDescription) { return new Status(reboot, vespaVersion, dockerImage, failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); } - - /** Returns the type of the last hardware failure detected on this node, or empty if none */ - public Optional<String> hardwareFailureDescription() { return hardwareFailureDescription; } - /** Returns a copy of this with the want to retire flag changed */ public Status withWantToRetire(boolean wantToRetire) { - return new Status(reboot, vespaVersion, dockerImage, failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); + return new Status(reboot, vespaVersion, dockerImage, failCount, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } /** @@ -99,7 +86,7 @@ public class Status { /** Returns a copy of this with the want to de-provision flag changed */ public Status withWantToDeprovision(boolean wantToDeprovision) { - return new Status(reboot, vespaVersion, dockerImage, failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); + return new Status(reboot, vespaVersion, dockerImage, failCount, wantToRetire, wantToDeprovision, osVersion, firmwareVerifiedAt); } /** @@ -109,16 +96,9 @@ public class Status { return wantToDeprovision; } - public Status withHardwareDivergence(Optional<String> hardwareDivergence) { - return new Status(reboot, vespaVersion, dockerImage, failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, firmwareVerifiedAt); - } - - /** Returns hardware divergence report as JSON string, if any */ - public Optional<String> hardwareDivergence() { return hardwareDivergence; } - /** Returns a copy of this with the current OS version set to version */ public Status withOsVersion(Version version) { - return new Status(reboot, vespaVersion, dockerImage, failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, Optional.of(version), firmwareVerifiedAt); + return new Status(reboot, vespaVersion, dockerImage, failCount, wantToRetire, wantToDeprovision, Optional.of(version), firmwareVerifiedAt); } /** Returns the current OS version of this node, if any */ @@ -128,7 +108,7 @@ public class Status { /** Returns a copy of this with the firmwareVerifiedAt set to the given instant. */ public Status withFirmwareVerifiedAt(Instant instant) { - return new Status(reboot, vespaVersion, dockerImage, failCount, hardwareFailureDescription, wantToRetire, wantToDeprovision, hardwareDivergence, osVersion, Optional.of(instant)); + return new Status(reboot, vespaVersion, dockerImage, failCount, wantToRetire, wantToDeprovision, osVersion, Optional.of(instant)); } /** Returns the last time this node had firmware that was verified to be up to date. */ @@ -138,14 +118,7 @@ public class Status { /** Returns the initial status of a newly provisioned node */ public static Status initial() { - return new Status(Generation.initial(), Optional.empty(), Optional.empty(), 0, Optional.empty(), false, - false, Optional.empty(), Optional.empty(), Optional.empty()); - } - - private void requireNonEmptyString(String value, String message) { - Objects.requireNonNull(value, message); - if (value.trim().isEmpty()) - throw new IllegalArgumentException(message + ", but was '" + value + "'"); + return new Status(Generation.initial(), Optional.empty(), Optional.empty(), 0, false, + false, Optional.empty(), Optional.empty()); } - } 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 0726ff61fdd..98dc45ce62a 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 @@ -68,11 +68,9 @@ public class NodeSerializer { private static final String vespaVersionKey = "vespaVersion"; private static final String currentDockerImageKey = "currentDockerImage"; private static final String failCountKey = "failCount"; - private static final String hardwareFailureKey = "hardwareFailure"; private static final String nodeTypeKey = "type"; private static final String wantToRetireKey = "wantToRetire"; private static final String wantToDeprovisionKey = "wantToDeprovision"; - private static final String hardwareDivergenceKey = "hardwareDivergence"; private static final String osVersionKey = "osVersion"; private static final String firmwareCheckKey = "firmwareCheck"; private static final String reportsKey = "reports"; @@ -137,14 +135,11 @@ public class NodeSerializer { node.status().vespaVersion().ifPresent(version -> object.setString(vespaVersionKey, version.toString())); node.status().dockerImage().ifPresent(image -> object.setString(currentDockerImageKey, image.asString())); object.setLong(failCountKey, node.status().failCount()); - node.status().hardwareFailureDescription().ifPresent(failure -> object.setString(hardwareFailureKey, failure)); object.setBool(wantToRetireKey, node.status().wantToRetire()); object.setBool(wantToDeprovisionKey, node.status().wantToDeprovision()); node.allocation().ifPresent(allocation -> toSlime(allocation, object.setObject(instanceKey))); toSlime(node.history(), object.setArray(historyKey)); object.setString(nodeTypeKey, toString(node.type())); - node.status().hardwareDivergence().ifPresent(hardwareDivergence -> object.setString(hardwareDivergenceKey, - hardwareDivergence)); node.status().osVersion().ifPresent(version -> object.setString(osVersionKey, version.toString())); node.status().firmwareVerifiedAt().ifPresent(instant -> object.setLong(firmwareCheckKey, instant.toEpochMilli())); node.reports().toSlime(object, reportsKey); @@ -225,10 +220,8 @@ public class NodeSerializer { versionFromSlime(object.field(vespaVersionKey)), dockerImageFromSlime(object.field(currentDockerImageKey)), (int)object.field(failCountKey).asLong(), - hardwareFailureDescriptionFromSlime(object), object.field(wantToRetireKey).asBool(), object.field(wantToDeprovisionKey).asBool(), - removeQuotedNulls(hardwareDivergenceFromSlime(object)), versionFromSlime(object.field(osVersionKey)), instantFromSlime(object.field(firmwareCheckKey))); } @@ -316,32 +309,12 @@ public class NodeSerializer { return Optional.empty(); } - private Optional<String> hardwareDivergenceFromSlime(Inspector object) { - if (object.field(hardwareDivergenceKey).valid()) { - return Optional.of(object.field(hardwareDivergenceKey).asString()); - } - return Optional.empty(); - } - - // Remove when we no longer have "null" strings for this field in the node repo - private Optional<String> removeQuotedNulls(Optional<String> value) { - return value.filter(v -> !v.equals("null")); - } - - private Set<String> ipAddressesFromSlime(Inspector object, String key) { ImmutableSet.Builder<String> ipAddresses = ImmutableSet.builder(); object.field(key).traverse((ArrayTraverser) (i, item) -> ipAddresses.add(item.asString())); return ipAddresses.build(); } - private Optional<String> hardwareFailureDescriptionFromSlime(Inspector object) { - if (object.field(hardwareFailureKey).valid()) { - return Optional.of(object.field(hardwareFailureKey).asString()); - } - return Optional.empty(); - } - private Optional<String> modelNameFromSlime(Inspector object) { if (object.field(modelNameKey).valid()) { return Optional.of(object.field(modelNameKey).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 8ab7e7e909a..23699879ceb 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 @@ -84,7 +84,6 @@ public class SerializationTest { node = node.with(FlavorConfigBuilder.createDummies("large").getFlavorOrThrow("large")); node = node.with(node.status().withVespaVersion(Version.fromString("1.2.3"))); node = node.with(node.status().withIncreasedFailCount().withIncreasedFailCount()); - node = node.with(node.status().withHardwareFailureDescription(Optional.of("memory_mcelog"))); node = node.with(NodeType.tenant); Node copy = nodeSerializer.fromJson(Node.State.provisioned, nodeSerializer.toJson(node)); @@ -98,7 +97,6 @@ public class SerializationTest { assertEquals("large", copy.flavor().name()); assertEquals("1.2.3", copy.status().vespaVersion().get().toString()); assertEquals(2, copy.status().failCount()); - assertEquals("memory_mcelog", copy.status().hardwareFailureDescription().get()); assertEquals(node.allocation().get().owner(), copy.allocation().get().owner()); assertEquals(node.allocation().get().membership(), copy.allocation().get().membership()); assertEquals(node.allocation().get().isRemovable(), copy.allocation().get().isRemovable()); |