aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java9
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java4
3 files changed, 11 insertions, 5 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
index 48b4e9d91bc..09ee25fb437 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Capacity.java
@@ -21,6 +21,8 @@ public final class Capacity {
private final NodeType type;
private Capacity(ClusterResources min, ClusterResources max, boolean required, boolean canFail, NodeType type) {
+ validate(min);
+ validate(max);
if (max.smallerThan(min))
throw new IllegalArgumentException("The max capacity must be larger than the min capacity, but got min " +
min + " and max " + max);
@@ -31,6 +33,13 @@ public final class Capacity {
this.type = type;
}
+ private static void validate(ClusterResources resources) {
+ if (resources.nodes() == 0 && resources.groups() == 0) return; // unspecified
+ if (resources.nodes() % resources.groups() != 0)
+ throw new IllegalArgumentException("The number of nodes (" + resources.nodes() +
+ ") must be divisible by the number of groups (" + resources.groups() + ")");
+ }
+
/** Returns the number of nodes requested */
@Deprecated // TODO: Remove after April 2020
public int nodeCount() { return min.nodes(); }
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java
index 87b5133d4eb..11ae0845fb0 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/ClusterResources.java
@@ -20,9 +20,6 @@ public class ClusterResources {
private final NodeResources nodeResources;
public ClusterResources(int nodes, int groups, NodeResources nodeResources) {
- if (nodes > 0 && groups > 0 && nodes % groups != 0)
- throw new IllegalArgumentException("The number of nodes (" + nodes +
- ") must be divisible by the number of groups (" + groups + ")");
this.nodes = nodes;
this.groups = groups;
this.nodeResources = Objects.requireNonNull(nodeResources);
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
index 831947212de..6802196f80d 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java
@@ -149,8 +149,8 @@ public class NodeRepositoryProvisioner implements Provisioner {
application = application.withClusterLimits(clusterId, requested.minResources(), requested.maxResources());
nodeRepository.applications().set(applicationId, application, lock);
return application.cluster(clusterId).targetResources()
-// .orElseGet(() -> currentResources(applicationId, clusterId, requested)
- .orElse(requested.minResources());
+ .orElseGet(() -> currentResources(applicationId, clusterId, requested)
+ .orElse(requested.minResources()));
}
}