summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2020-05-18 15:02:31 +0200
committerMartin Polden <mpolden@mpolden.no>2020-05-18 15:02:31 +0200
commitf691ef4ecf139fb5901b0b01f09c65abed46534f (patch)
treedafab347045375274d9b5d12dcdd51ed7bce9b9d /node-repository
parent33cc8d8a84b90139098aa21703c82bd012a58643 (diff)
Retire on behalf of a specific system agent
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java6
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java7
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/persistence/NodeSerializer.java6
3 files changed, 13 insertions, 6 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java
index 18a8fe7be6a..31b7181a58a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/Agent.java
@@ -7,9 +7,11 @@ package com.yahoo.vespa.hosted.provision.node;
* @author bratseth
*/
public enum Agent {
+
operator, // A hosted Vespa operator. Some logic recognizes these events.
application, // An application package change deployment
system, // An unspecified system agent
+
// Specific system agents:
NodeFailer,
Rebalancer,
@@ -18,5 +20,7 @@ public enum Agent {
InactiveExpirer,
ProvisionedExpirer,
ReservationExpirer,
- DynamicProvisioningMaintainer
+ DynamicProvisioningMaintainer,
+ RetiringUpgrader;
+
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
index 8b11c10e3dd..6bd2545b153 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/os/RetiringUpgrader.java
@@ -6,6 +6,7 @@ import com.yahoo.config.provision.NodeType;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.NodeList;
import com.yahoo.vespa.hosted.provision.NodeRepository;
+import com.yahoo.vespa.hosted.provision.node.Agent;
import java.time.Duration;
import java.time.Instant;
@@ -66,15 +67,15 @@ public class RetiringUpgrader implements Upgrader {
host = currentNode.get();
NodeType nodeType = host.type();
List<Node> nodesToRetire = nodeRepository.list().childrenOf(host).stream()
- .map(child -> child.with(child.status().withWantToRetire(true)))
+ .map(child -> child.withWantToRetire(true, Agent.RetiringUpgrader, now))
.collect(Collectors.toList());
LOG.info("Retiring and deprovisioning " + host + ": On stale OS version " +
host.status().osVersion().current().map(Version::toFullString).orElse("<unset>") +
", want " + target);
nodesToRetire.add(host.with(host.status()
- .withWantToRetire(true)
.withWantToDeprovision(true)
- .withOsVersion(host.status().osVersion().withWanted(Optional.of(target)))));
+ .withOsVersion(host.status().osVersion().withWanted(Optional.of(target))))
+ .withWantToRetire(true, Agent.RetiringUpgrader, now));
nodeRepository.write(nodesToRetire, lock);
nodeRepository.osVersions().writeChange((change) -> change.withRetirementAt(now, nodeType));
}
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 81fc542afcc..15be7796187 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
@@ -19,17 +19,17 @@ import com.yahoo.slime.ArrayTraverser;
import com.yahoo.slime.Cursor;
import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
-import com.yahoo.slime.Type;
import com.yahoo.slime.SlimeUtils;
+import com.yahoo.slime.Type;
import com.yahoo.vespa.hosted.provision.Node;
import com.yahoo.vespa.hosted.provision.node.Agent;
import com.yahoo.vespa.hosted.provision.node.Allocation;
import com.yahoo.vespa.hosted.provision.node.Generation;
import com.yahoo.vespa.hosted.provision.node.History;
import com.yahoo.vespa.hosted.provision.node.IP;
+import com.yahoo.vespa.hosted.provision.node.OsVersion;
import com.yahoo.vespa.hosted.provision.node.Reports;
import com.yahoo.vespa.hosted.provision.node.Status;
-import com.yahoo.vespa.hosted.provision.node.OsVersion;
import java.io.IOException;
import java.time.Instant;
@@ -394,6 +394,7 @@ public class NodeSerializer {
case "ProvisionedExpirer" : return Agent.ProvisionedExpirer;
case "ReservationExpirer" : return Agent.ReservationExpirer;
case "DynamicProvisioningMaintainer" : return Agent.DynamicProvisioningMaintainer;
+ case "RetiringUpgrader" : return Agent.RetiringUpgrader;
}
throw new IllegalArgumentException("Unknown node event agent '" + eventAgentField.asString() + "'");
}
@@ -410,6 +411,7 @@ public class NodeSerializer {
case ProvisionedExpirer : return "ProvisionedExpirer";
case ReservationExpirer : return "ReservationExpirer";
case DynamicProvisioningMaintainer : return "DynamicProvisioningMaintainer";
+ case RetiringUpgrader: return "RetiringUpgrader";
}
throw new IllegalArgumentException("Serialized form of '" + agent + "' not defined");
}