diff options
author | Martin Polden <mpolden@mpolden.no> | 2022-09-28 16:20:53 +0200 |
---|---|---|
committer | Martin Polden <mpolden@mpolden.no> | 2022-09-28 16:20:53 +0200 |
commit | f8fbbbd2e28e0791d30b7ac16076707f6e59a624 (patch) | |
tree | 7e5fbea90577b08122d7b9d0659ac7fcd878078d /node-admin | |
parent | e48fb37a84d5d94fd71e3e3b5ade2299daafa163 (diff) |
Add wantToRebuild field
Diffstat (limited to 'node-admin')
3 files changed, 71 insertions, 47 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 3cca7deeeae..1d4d8fa5281 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 @@ -70,6 +70,8 @@ public class NodeSpec { private final List<TrustStoreItem> trustStore; + private final boolean wantToRebuild; + public NodeSpec( String hostname, String id, @@ -101,7 +103,9 @@ public class NodeSpec { Optional<String> parentHostname, Optional<URI> archiveUri, Optional<ApplicationId> exclusiveTo, - List<TrustStoreItem> trustStore) { + List<TrustStoreItem> trustStore, + boolean wantToRebuild) { + if (state == NodeState.active) { requireOptional(owner, "owner"); requireOptional(membership, "membership"); @@ -142,6 +146,7 @@ public class NodeSpec { this.archiveUri = Objects.requireNonNull(archiveUri); this.exclusiveTo = Objects.requireNonNull(exclusiveTo); this.trustStore = Objects.requireNonNull(trustStore); + this.wantToRebuild = wantToRebuild; } public String hostname() { @@ -291,6 +296,10 @@ public class NodeSpec { return trustStore; } + public boolean wantToRebuild() { + return wantToRebuild; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -326,7 +335,8 @@ public class NodeSpec { Objects.equals(parentHostname, that.parentHostname) && Objects.equals(archiveUri, that.archiveUri) && Objects.equals(exclusiveTo, that.exclusiveTo) && - Objects.equals(trustStore, that.trustStore); + Objects.equals(trustStore, that.trustStore) && + Objects.equals(wantToRebuild, that.wantToRebuild); } @Override @@ -362,7 +372,8 @@ public class NodeSpec { parentHostname, archiveUri, exclusiveTo, - trustStore); + trustStore, + wantToRebuild); } @Override @@ -399,6 +410,7 @@ public class NodeSpec { + " archiveUri=" + archiveUri + " exclusiveTo=" + exclusiveTo + " trustStore=" + trustStore + + " wantToRebuild=" + wantToRebuild + " }"; } @@ -434,6 +446,7 @@ public class NodeSpec { private Optional<URI> archiveUri = Optional.empty(); private Optional<ApplicationId> exclusiveTo = Optional.empty(); private List<TrustStoreItem> trustStore = List.of(); + private boolean wantToRebuild = false; public Builder() {} @@ -468,6 +481,7 @@ public class NodeSpec { node.archiveUri.ifPresent(this::archiveUri); node.exclusiveTo.ifPresent(this::exclusiveTo); trustStore(node.trustStore); + wantToRebuild(node.wantToRebuild); } public Builder hostname(String hostname) { @@ -650,6 +664,11 @@ public class NodeSpec { return this; } + public Builder wantToRebuild(boolean wantToRebuild) { + this.wantToRebuild = wantToRebuild; + return this; + } + public Builder updateFromNodeAttributes(NodeAttributes attributes) { attributes.getHostId().ifPresent(this::id); attributes.getDockerImage().ifPresent(this::currentDockerImage); @@ -765,13 +784,13 @@ public class NodeSpec { public NodeSpec build() { return new NodeSpec(hostname, id, wantedDockerImage, currentDockerImage, state, type, flavor, - wantedVespaVersion, currentVespaVersion, wantedOsVersion, currentOsVersion, orchestratorStatus, - owner, membership, - wantedRestartGeneration, currentRestartGeneration, - wantedRebootGeneration, currentRebootGeneration, - wantedFirmwareCheck, currentFirmwareCheck, modelName, - resources, realResources, ipAddresses, additionalIpAddresses, - reports, events, parentHostname, archiveUri, exclusiveTo, trustStore); + wantedVespaVersion, currentVespaVersion, wantedOsVersion, currentOsVersion, orchestratorStatus, + owner, membership, + wantedRestartGeneration, currentRestartGeneration, + wantedRebootGeneration, currentRebootGeneration, + wantedFirmwareCheck, currentFirmwareCheck, modelName, + resources, realResources, ipAddresses, additionalIpAddresses, + reports, events, parentHostname, archiveUri, exclusiveTo, trustStore, wantToRebuild); } 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 e9359944d5d..b70ce491c73 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 @@ -191,7 +191,8 @@ public class RealNodeRepository implements NodeRepository { Optional.ofNullable(node.parentHostname), Optional.ofNullable(node.archiveUri).map(URI::create), Optional.ofNullable(node.exclusiveTo).map(ApplicationId::fromSerializedForm), - trustStore); + trustStore, + node.wantToRebuild); } private static NodeResources nodeResources(NodeRepositoryNode.NodeResources nodeResources) { 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 726ca391c8f..956795e09e9 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 @@ -77,6 +77,8 @@ public class NodeRepositoryNode { public Boolean wantToRetire; @JsonProperty("wantToDeprovision") public Boolean wantToDeprovision; + @JsonProperty("wantToRebuild") + public Boolean wantToRebuild; @JsonProperty("orchestratorStatus") public String orchestratorStatus; @JsonProperty("archiveUri") @@ -95,42 +97,44 @@ public class NodeRepositoryNode { @Override public String toString() { return "NodeRepositoryNode{" + - "state='" + state + '\'' + - ", hostname='" + hostname + '\'' + - ", ipAddresses=" + ipAddresses + - ", additionalIpAddresses=" + additionalIpAddresses + - ", id='" + id + '\'' + - ", modelName='" + modelName + '\'' + - ", flavor='" + flavor + '\'' + - ", resources=" + resources + - ", realResources=" + realResources + - ", membership=" + membership + - ", owner=" + owner + - ", restartGeneration=" + restartGeneration + - ", rebootGeneration=" + rebootGeneration + - ", currentRestartGeneration=" + currentRestartGeneration + - ", currentRebootGeneration=" + currentRebootGeneration + - ", vespaVersion='" + vespaVersion + '\'' + - ", wantedVespaVersion='" + wantedVespaVersion + '\'' + - ", currentOsVersion='" + currentOsVersion + '\'' + - ", wantedOsVersion='" + wantedOsVersion + '\'' + - ", currentFirmwareCheck=" + currentFirmwareCheck + - ", wantedFirmwareCheck=" + wantedFirmwareCheck + - ", failCount=" + failCount + - ", environment='" + environment + '\'' + - ", reservedTo='" + reservedTo + "'" + - ", type='" + type + '\'' + - ", wantedDockerImage='" + wantedDockerImage + '\'' + - ", currentDockerImage='" + currentDockerImage + '\'' + - ", parentHostname='" + parentHostname + '\'' + - ", wantToRetire=" + wantToRetire + - ", wantToDeprovision=" + wantToDeprovision + - ", orchestratorStatus=" + orchestratorStatus + - ", archiveUri=" + archiveUri + - ", reports=" + reports + - ", exclusiveTo=" + exclusiveTo + - ", history=" + history + - '}'; + "state='" + state + '\'' + + ", hostname='" + hostname + '\'' + + ", ipAddresses=" + ipAddresses + + ", additionalIpAddresses=" + additionalIpAddresses + + ", id='" + id + '\'' + + ", flavor='" + flavor + '\'' + + ", resources=" + resources + + ", realResources=" + realResources + + ", membership=" + membership + + ", owner=" + owner + + ", restartGeneration=" + restartGeneration + + ", rebootGeneration=" + rebootGeneration + + ", currentRestartGeneration=" + currentRestartGeneration + + ", currentRebootGeneration=" + currentRebootGeneration + + ", vespaVersion='" + vespaVersion + '\'' + + ", wantedVespaVersion='" + wantedVespaVersion + '\'' + + ", currentOsVersion='" + currentOsVersion + '\'' + + ", wantedOsVersion='" + wantedOsVersion + '\'' + + ", currentFirmwareCheck=" + currentFirmwareCheck + + ", wantedFirmwareCheck=" + wantedFirmwareCheck + + ", modelName='" + modelName + '\'' + + ", failCount=" + failCount + + ", environment='" + environment + '\'' + + ", reservedTo='" + reservedTo + '\'' + + ", type='" + type + '\'' + + ", wantedDockerImage='" + wantedDockerImage + '\'' + + ", currentDockerImage='" + currentDockerImage + '\'' + + ", parentHostname='" + parentHostname + '\'' + + ", wantToRetire=" + wantToRetire + + ", wantToDeprovision=" + wantToDeprovision + + ", wantToRebuild=" + wantToRebuild + + ", orchestratorStatus='" + orchestratorStatus + '\'' + + ", archiveUri='" + archiveUri + '\'' + + ", exclusiveTo='" + exclusiveTo + '\'' + + ", history=" + history + + ", trustStore=" + trustStore + + ", reports=" + reports + + '}'; } @JsonIgnoreProperties(ignoreUnknown = true) |