diff options
author | HÃ¥kon Hallingstad <hakon.hallingstad@gmail.com> | 2021-01-06 10:32:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-06 10:32:15 +0100 |
commit | 21da42e562beb1cf132118d47170e65b4750efee (patch) | |
tree | ec1a83b3442ea182fc3c680d2fa190854f035bb2 /node-admin/src | |
parent | 130ac9c430496b5e31098818bff19b869d6c9f44 (diff) |
Revert "Revert "Make clients use orchestratorStatus instead of allowedToBeDown""
Diffstat (limited to 'node-admin/src')
7 files changed, 49 insertions, 26 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java index f7f231d5e0c..9d12efbab1b 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java @@ -48,7 +48,7 @@ public class NodeSpec { private final Optional<String> modelName; - private final Optional<Boolean> allowedToBeDown; + private final OrchestratorStatus orchestratorStatus; private final Optional<ApplicationId> owner; private final Optional<NodeMembership> membership; @@ -71,7 +71,7 @@ public class NodeSpec { Optional<Version> currentVespaVersion, Optional<Version> wantedOsVersion, Optional<Version> currentOsVersion, - Optional<Boolean> allowedToBeDown, + OrchestratorStatus orchestratorStatus, Optional<ApplicationId> owner, Optional<NodeMembership> membership, Optional<Long> wantedRestartGeneration, @@ -106,7 +106,7 @@ public class NodeSpec { this.currentVespaVersion = Objects.requireNonNull(currentVespaVersion); this.wantedOsVersion = Objects.requireNonNull(wantedOsVersion); this.currentOsVersion = Objects.requireNonNull(currentOsVersion); - this.allowedToBeDown = Objects.requireNonNull(allowedToBeDown); + this.orchestratorStatus = Objects.requireNonNull(orchestratorStatus); this.owner = Objects.requireNonNull(owner); this.membership = Objects.requireNonNull(membership); this.wantedRestartGeneration = wantedRestartGeneration; @@ -190,8 +190,8 @@ public class NodeSpec { return modelName; } - public Optional<Boolean> allowedToBeDown() { - return allowedToBeDown; + public OrchestratorStatus orchestratorStatus() { + return orchestratorStatus; } public Optional<ApplicationId> owner() { @@ -261,7 +261,7 @@ public class NodeSpec { Objects.equals(currentVespaVersion, that.currentVespaVersion) && Objects.equals(wantedOsVersion, that.wantedOsVersion) && Objects.equals(currentOsVersion, that.currentOsVersion) && - Objects.equals(allowedToBeDown, that.allowedToBeDown) && + Objects.equals(orchestratorStatus, that.orchestratorStatus) && Objects.equals(owner, that.owner) && Objects.equals(membership, that.membership) && Objects.equals(wantedRestartGeneration, that.wantedRestartGeneration) && @@ -290,7 +290,7 @@ public class NodeSpec { currentVespaVersion, wantedOsVersion, currentOsVersion, - allowedToBeDown, + orchestratorStatus, owner, membership, wantedRestartGeneration, @@ -319,7 +319,7 @@ public class NodeSpec { + " currentVespaVersion=" + currentVespaVersion + " wantedOsVersion=" + wantedOsVersion + " currentOsVersion=" + currentOsVersion - + " allowedToBeDown=" + allowedToBeDown + + " allowedToBeDown=" + orchestratorStatus + " owner=" + owner + " membership=" + membership + " wantedRestartGeneration=" + wantedRestartGeneration @@ -347,7 +347,7 @@ public class NodeSpec { private Optional<Version> currentVespaVersion = Optional.empty(); private Optional<Version> wantedOsVersion = Optional.empty(); private Optional<Version> currentOsVersion = Optional.empty(); - private Optional<Boolean> allowedToBeDown = Optional.empty(); + private OrchestratorStatus orchestratorStatus = OrchestratorStatus.NO_REMARKS; private Optional<ApplicationId> owner = Optional.empty(); private Optional<NodeMembership> membership = Optional.empty(); private Optional<Long> wantedRestartGeneration = Optional.empty(); @@ -375,6 +375,7 @@ public class NodeSpec { additionalIpAddresses(node.additionalIpAddresses); wantedRebootGeneration(node.wantedRebootGeneration); currentRebootGeneration(node.currentRebootGeneration); + orchestratorStatus(node.orchestratorStatus); reports(new NodeReports(node.reports)); node.wantedDockerImage.ifPresent(this::wantedDockerImage); node.currentDockerImage.ifPresent(this::currentDockerImage); @@ -382,7 +383,6 @@ public class NodeSpec { node.currentVespaVersion.ifPresent(this::currentVespaVersion); node.wantedOsVersion.ifPresent(this::wantedOsVersion); node.currentOsVersion.ifPresent(this::currentOsVersion); - node.allowedToBeDown.ifPresent(this::allowedToBeDown); node.owner.ifPresent(this::owner); node.membership.ifPresent(this::membership); node.wantedRestartGeneration.ifPresent(this::wantedRestartGeneration); @@ -442,8 +442,8 @@ public class NodeSpec { return this; } - public Builder allowedToBeDown(boolean allowedToBeDown) { - this.allowedToBeDown = Optional.of(allowedToBeDown); + public Builder orchestratorStatus(OrchestratorStatus orchestratorStatus) { + this.orchestratorStatus = orchestratorStatus; return this; } @@ -592,8 +592,8 @@ public class NodeSpec { return currentOsVersion; } - public Optional<Boolean> allowedToBeDown() { - return allowedToBeDown; + public OrchestratorStatus orchestratorStatus() { + return orchestratorStatus; } public Optional<ApplicationId> owner() { @@ -642,7 +642,7 @@ public class NodeSpec { public NodeSpec build() { return new NodeSpec(hostname, wantedDockerImage, currentDockerImage, state, type, flavor, - wantedVespaVersion, currentVespaVersion, wantedOsVersion, currentOsVersion, allowedToBeDown, + wantedVespaVersion, currentVespaVersion, wantedOsVersion, currentOsVersion, orchestratorStatus, owner, membership, wantedRestartGeneration, currentRestartGeneration, wantedRebootGeneration, currentRebootGeneration, diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/OrchestratorStatus.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/OrchestratorStatus.java new file mode 100644 index 00000000000..689882d61c5 --- /dev/null +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/OrchestratorStatus.java @@ -0,0 +1,23 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.node.admin.configserver.noderepository; + +import java.util.stream.Stream; + +public enum OrchestratorStatus { + NO_REMARKS, ALLOWED_TO_BE_DOWN, PERMANENTLY_DOWN, UNKNOWN; + + public static OrchestratorStatus fromString(String statusString) { + return Stream.of(values()) + .filter(status -> status.asString().equals(statusString)) + .findFirst() + .orElse(UNKNOWN); + } + + public String asString() { + return name(); + } + + public boolean isSuspended() { + return this != NO_REMARKS; + } +} diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java index 2e47410f1b5..9ad4d3c565d 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java @@ -161,7 +161,7 @@ public class RealNodeRepository implements NodeRepository { Optional.ofNullable(node.vespaVersion).map(Version::fromString), Optional.ofNullable(node.wantedOsVersion).map(Version::fromString), Optional.ofNullable(node.currentOsVersion).map(Version::fromString), - Optional.ofNullable(node.allowedToBeDown), + Optional.ofNullable(node.orchestratorStatus).map(OrchestratorStatus::fromString).orElse(OrchestratorStatus.NO_REMARKS), Optional.ofNullable(node.owner).map(o -> ApplicationId.from(o.tenant, o.application, o.instance)), membership, Optional.ofNullable(node.restartGeneration), diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java index 932c1384e7e..ff9c502a60f 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java @@ -74,8 +74,8 @@ public class NodeRepositoryNode { public Boolean wantToRetire; @JsonProperty("wantToDeprovision") public Boolean wantToDeprovision; - @JsonProperty("allowedToBeDown") - public Boolean allowedToBeDown; + @JsonProperty("orchestratorStatus") + public String orchestratorStatus; @JsonProperty("reports") public Map<String, JsonNode> reports = null; @@ -112,7 +112,7 @@ public class NodeRepositoryNode { ", parentHostname='" + parentHostname + '\'' + ", wantToRetire=" + wantToRetire + ", wantToDeprovision=" + wantToDeprovision + - ", allowedToBeDown=" + allowedToBeDown + + ", orchestratorStatus=" + orchestratorStatus + ", reports=" + reports + '}'; } diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java index 5d0c7c19b5d..f1a0ecdb1a3 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/coredump/CoredumpHandler.java @@ -244,8 +244,7 @@ public class CoredumpHandler { ); node.parentHostname().ifPresent(parent -> dimensionsBuilder.add("parentHostname", parent)); - node.allowedToBeDown().ifPresent(allowed -> - dimensionsBuilder.add("orchestratorState", allowed ? "ALLOWED_TO_BE_DOWN" : "NO_REMARKS")); + dimensionsBuilder.add("orchestratorState", node.orchestratorStatus().asString()); node.currentVespaVersion().ifPresent(vespaVersion -> dimensionsBuilder.add("vespaVersion", vespaVersion.toFullString())); return dimensionsBuilder.build(); diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java index ae118e6d541..9fa21e5a676 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImpl.java @@ -493,7 +493,7 @@ public class NodeAgentImpl implements NodeAgent { // - Slobrok and internal orchestrator state is used to determine whether // to allow upgrade (suspend). updateNodeRepoWithCurrentAttributes(context); - if (suspendedInOrchestrator || node.allowedToBeDown().orElse(false)) { + if (suspendedInOrchestrator || node.orchestratorStatus().isSuspended()) { context.log(logger, "Call resume against Orchestrator"); orchestrator.resume(context.hostname().value()); suspendedInOrchestrator = false; diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java index fd587da5d71..eea775f9a63 100644 --- a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/nodeagent/NodeAgentImplTest.java @@ -18,6 +18,7 @@ import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeAttribu import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeRepository; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeSpec; import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.NodeState; +import com.yahoo.vespa.hosted.node.admin.configserver.noderepository.OrchestratorStatus; import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.Orchestrator; import com.yahoo.vespa.hosted.node.admin.configserver.orchestrator.OrchestratorException; import com.yahoo.vespa.hosted.node.admin.docker.ContainerOperations; @@ -73,7 +74,7 @@ public class NodeAgentImplTest { final NodeSpec node = nodeBuilder(NodeState.active) .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) - .allowedToBeDown(false) + .orchestratorStatus(OrchestratorStatus.NO_REMARKS) .build(); NodeAgentContext context = createContext(node); @@ -203,7 +204,7 @@ public class NodeAgentImplTest { NodeSpec.Builder specBuilder = nodeBuilder(NodeState.active) .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .wantedVespaVersion(vespaVersion).currentVespaVersion(vespaVersion) - .allowedToBeDown(false); + .orchestratorStatus(OrchestratorStatus.NO_REMARKS); NodeAgentContext firstContext = createContext(specBuilder.build()); NodeAgentImpl nodeAgent = makeNodeAgent(dockerImage, true); @@ -501,7 +502,7 @@ public class NodeAgentImplTest { .wantedDockerImage(dockerImage).currentDockerImage(dockerImage) .currentVespaVersion(vespaVersion) .wantedRestartGeneration(1).currentRestartGeneration(1) - .allowedToBeDown(true) + .orchestratorStatus(OrchestratorStatus.ALLOWED_TO_BE_DOWN) .build(); NodeAgentContext context = createContext(node); @@ -572,7 +573,7 @@ public class NodeAgentImplTest { .type(NodeType.config) .wantedDockerImage(dockerImage) .wantedVespaVersion(vespaVersion) - .allowedToBeDown(true) + .orchestratorStatus(OrchestratorStatus.ALLOWED_TO_BE_DOWN) .build(); NodeAgentContext context = createContext(node); |