aboutsummaryrefslogtreecommitdiffstats
path: root/node-admin
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2022-09-28 16:20:53 +0200
committerMartin Polden <mpolden@mpolden.no>2022-09-28 16:20:53 +0200
commitf8fbbbd2e28e0791d30b7ac16076707f6e59a624 (patch)
tree7e5fbea90577b08122d7b9d0659ac7fcd878078d /node-admin
parente48fb37a84d5d94fd71e3e3b5ade2299daafa163 (diff)
Add wantToRebuild field
Diffstat (limited to 'node-admin')
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/NodeSpec.java39
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/RealNodeRepository.java3
-rw-r--r--node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/configserver/noderepository/bindings/NodeRepositoryNode.java76
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)