diff options
3 files changed, 16 insertions, 14 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java index ae9d696a9a3..dbbbd049bf6 100644 --- a/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java +++ b/config-model/src/main/java/com/yahoo/config/model/provision/InMemoryProvisioner.java @@ -233,13 +233,7 @@ public class InMemoryProvisioner implements HostProvisioner { // Minimal capacity policies private NodeResources decideResources(NodeResources resources) { - if (resources.vcpuIsUnspecified()) - resources = resources.withVcpu(defaultNodeResources.vcpu()); - if (resources.memoryGbIsUnspecified()) - resources = resources.withMemoryGb(defaultNodeResources.memoryGb()); - if (resources.diskGbIsUnspecified()) - resources = resources.withDiskGb(defaultNodeResources.diskGb()); - return resources; + return resources.withUnspecifiedNumbersFrom(resources); } private List<HostSpec> allocateHostGroup(ClusterSpec clusterGroup, NodeResources requestedResourcesOrUnspecified, diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java index 36ba12c7cf8..438bb26479d 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/NodeResources.java @@ -213,6 +213,7 @@ public class NodeResources { public boolean vcpuIsUnspecified() { return vcpu == 0; } public boolean memoryGbIsUnspecified() { return memoryGb == 0; } public boolean diskGbIsUnspecified() { return diskGb == 0; } + public boolean bandwidthGbpsIsUnspecified() { return bandwidthGbps == 0; } /** Returns the standard cost of these resources, in dollars per hour */ public double cost() { @@ -267,6 +268,19 @@ public class NodeResources { return new NodeResources(vcpu, memoryGb, diskGb, bandwidthGbps, diskSpeed, storageType, architecture, gpuResources); } + public NodeResources withUnspecifiedNumbersFrom(NodeResources fullySpecified) { + var resources = this; + if (resources.vcpuIsUnspecified()) + resources = resources.withVcpu(fullySpecified.vcpu()); + if (resources.memoryGbIsUnspecified()) + resources = resources.withMemoryGb(fullySpecified.memoryGb()); + if (resources.diskGbIsUnspecified()) + resources = resources.withDiskGb(fullySpecified.diskGb()); + if (resources.bandwidthGbpsIsUnspecified()) + resources = resources.withBandwidthGbps(fullySpecified.bandwidthGbps()); + return resources; + } + /** Returns this with disk speed, storage type and architecture set to any */ public NodeResources justNumbers() { if (isUnspecified()) return unspecified(); 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 5b3570a3dfa..5b3c99752de 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 @@ -90,13 +90,7 @@ public class CapacityPolicies { } 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; + return resources.withUnspecifiedNumbersFrom(defaultResources(clusterSpec, applicationId)); } private NodeResources defaultResources(ClusterSpec clusterSpec, ApplicationId applicationId) { |