diff options
author | Jon Bratseth <bratseth@vespa.ai> | 2023-05-15 20:47:16 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@vespa.ai> | 2023-05-15 20:47:16 +0200 |
commit | 9406d9e50a3b0d183ec2d76595679eea41f0129f (patch) | |
tree | c75ae3cd85aa29522043ceb1f3f49e80fe6f8f5f /node-repository | |
parent | c2a220bed85e7af09f62d34de339b168d9507b87 (diff) |
Make all node resource elements optional
Diffstat (limited to 'node-repository')
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, |