summaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2021-05-27 14:21:54 +0200
committerMartin Polden <mpolden@mpolden.no>2021-05-27 14:21:54 +0200
commit4b8f28b9978df1393c5b7b4ffc0912dcd7fabf7c (patch)
treef181694b335d3d95e7d62a5491cfd689a57f7ef9 /node-repository
parent33d8403731945563c1d011f88475579a9bb9d3a2 (diff)
Use fixed limit for infrastructure hosts
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
index 9174222b89b..50f77a7df7b 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/maintenance/HostEncrypter.java
@@ -57,7 +57,7 @@ public class HostEncrypter extends NodeRepositoryMaintainer {
private List<Node> unencryptedHosts(NodeList allNodes, NodeType hostType) {
if (!hostType.isHost()) throw new IllegalArgumentException("Expected host type, got " + hostType);
NodeList hostsOfTargetType = allNodes.nodeType(hostType);
- int hostLimit = hostLimit(hostsOfTargetType);
+ int hostLimit = hostLimit(hostsOfTargetType, hostType);
// Find stateful clusters with retiring nodes
NodeList activeNodes = allNodes.state(Node.State.active);
@@ -88,8 +88,11 @@ public class HostEncrypter extends NodeRepositoryMaintainer {
}
/** Returns the number of hosts that can encrypt concurrently */
- private int hostLimit(NodeList hosts) {
- return Math.max(0, maxEncryptingHosts.value() - hosts.encrypting().size());
+ private int hostLimit(NodeList hosts, NodeType hostType) {
+ if (hosts.stream().anyMatch(host -> host.type() != hostType)) throw new IllegalArgumentException("All hosts must be a " + hostType);
+ if (maxEncryptingHosts.value() < 1) return 0; // 0 or negative value effectively stops encryption of all hosts
+ int limit = hostType == NodeType.host ? maxEncryptingHosts.value() : 1;
+ return Math.max(0, limit - hosts.encrypting().size());
}
private void encrypt(Node host, Instant now) {