aboutsummaryrefslogtreecommitdiffstats
path: root/node-repository
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2023-05-15 20:47:16 +0200
committerJon Bratseth <bratseth@vespa.ai>2023-05-15 20:47:16 +0200
commit9406d9e50a3b0d183ec2d76595679eea41f0129f (patch)
treec75ae3cd85aa29522043ceb1f3f49e80fe6f8f5f /node-repository
parentc2a220bed85e7af09f62d34de339b168d9507b87 (diff)
Make all node resource elements optional
Diffstat (limited to 'node-repository')
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java8
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java16
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java9
-rw-r--r--node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java2
4 files changed, 22 insertions, 13 deletions
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
index 70e42fe712f..46eb9e9014a 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/autoscale/Limits.java
@@ -68,10 +68,10 @@ public class Limits {
public Limits fullySpecified(ClusterSpec clusterSpec, NodeRepository nodeRepository, ApplicationId applicationId) {
if (this.isEmpty()) throw new IllegalStateException("Unspecified limits can not be made fully specified");
- var defaultResources = new CapacityPolicies(nodeRepository).defaultNodeResources(clusterSpec, applicationId);
- var specifiedMin = min.nodeResources().isUnspecified() ? min.with(defaultResources) : min;
- var specifiedMax = max.nodeResources().isUnspecified() ? max.with(defaultResources) : max;
- return new Limits(specifiedMin, specifiedMax, groupSize);
+ var capacityPolicies = new CapacityPolicies(nodeRepository);
+ return new Limits(capacityPolicies.specifyFully(min, clusterSpec, applicationId),
+ capacityPolicies.specifyFully(max, clusterSpec, applicationId),
+ groupSize);
}
private double between(double min, double max, double value) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
index 5732e94956a..8cff57e3005 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java
@@ -84,7 +84,21 @@ public class CapacityPolicies {
return target;
}
- public NodeResources defaultNodeResources(ClusterSpec clusterSpec, ApplicationId applicationId) {
+ public ClusterResources specifyFully(ClusterResources resources, ClusterSpec clusterSpec, ApplicationId applicationId) {
+ return resources.with(specifyFully(resources.nodeResources(), clusterSpec, applicationId));
+ }
+
+ public NodeResources specifyFully(NodeResources resources, ClusterSpec clusterSpec, ApplicationId applicationId) {
+ if (resources.vcpuIsUnspecified())
+ resources = resources.withVcpu(defaultResources(clusterSpec, applicationId).vcpu());
+ if (resources.memoryGbIsUnspecified())
+ resources = resources.withMemoryGb(defaultResources(clusterSpec, applicationId).memoryGb());
+ if (resources.diskGbIsUnspecified())
+ resources = resources.withDiskGb(defaultResources(clusterSpec, applicationId).diskGb());
+ return resources;
+ }
+
+ private NodeResources defaultResources(ClusterSpec clusterSpec, ApplicationId applicationId) {
if (clusterSpec.type() == ClusterSpec.Type.admin) {
Architecture architecture = adminClusterArchitecture(applicationId);
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 1eef438a64e..237a6657ccc 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
@@ -124,9 +124,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
}
private NodeResources getNodeResources(ClusterSpec cluster, NodeResources nodeResources, ApplicationId applicationId) {
- return nodeResources.isUnspecified()
- ? capacityPolicies.defaultNodeResources(cluster, applicationId)
- : nodeResources;
+ return capacityPolicies.specifyFully(nodeResources, cluster, applicationId);
}
@Override
@@ -184,10 +182,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
}
private ClusterResources initialResourcesFrom(Capacity requested, ClusterSpec clusterSpec, ApplicationId applicationId) {
- var initial = requested.minResources();
- if (initial.nodeResources().isUnspecified())
- initial = initial.with(capacityPolicies.defaultNodeResources(clusterSpec, applicationId));
- return initial;
+ return capacityPolicies.specifyFully(requested.minResources(), clusterSpec, applicationId);
}
diff --git a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
index f1cf33d0477..36d0e464b3d 100644
--- a/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
+++ b/node-repository/src/test/java/com/yahoo/vespa/hosted/provision/autoscale/AutoscalingTest.java
@@ -358,7 +358,7 @@ public class AutoscalingTest {
.build();
NodeResources defaultResources =
- new CapacityPolicies(fixture.tester().nodeRepository()).defaultNodeResources(fixture.clusterSpec, fixture.applicationId);
+ new CapacityPolicies(fixture.tester().nodeRepository()).specifyFully(NodeResources.unspecified(), fixture.clusterSpec, fixture.applicationId);
fixture.tester().assertResources("Min number of nodes and default resources",
2, 1, defaultResources,