aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@oath.com>2020-04-26 19:08:28 +0200
committerGitHub <noreply@github.com>2020-04-26 19:08:28 +0200
commit88a1d5141a2c762310763bf4d3d0abd6262833a4 (patch)
tree76c574da119467bf0640729449fa527e4fec699b
parent24538b73e1c976a376226193ab39533cccbd70a4 (diff)
parent0818b4a010cda88004cb5ad77bb7108de0fc96d8 (diff)
Merge pull request #13071 from vespa-engine/bratseth/handle-unspecified-resources
Handle unspecified resources
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java26
1 files changed, 12 insertions, 14 deletions
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 434860ccb30..4000354243f 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
@@ -153,13 +153,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
if (nodes.isEmpty()) return requested.minResources(); // New deployment: Start at min
long groups = nodes.stream().map(node -> node.allocation().get().membership().cluster().group()).distinct().count();
- // Settings which are not autoscaled should always be taken from the currently requested capacity
- // and for those min and max are always the same
- NodeResources nodeResources = nodes.get(0).allocation().get().requestedResources()
- .withBandwidthGbps(requested.minResources().nodeResources().bandwidthGbps())
- .with(requested.minResources().nodeResources().diskSpeed())
- .with(requested.minResources().nodeResources().storageType());
- var currentResources = new ClusterResources(nodes.size(), (int)groups, nodeResources);
+ var currentResources = new ClusterResources(nodes.size(), (int)groups, nodes.get(0).flavor().resources());
return ensureWithin(requested.minResources(), requested.maxResources(), currentResources);
}
@@ -178,13 +172,17 @@ public class NodeRepositoryProvisioner implements Provisioner {
groups = max.groups();
}
}
- double vcpu = between(min.nodeResources().vcpu(), max.nodeResources().vcpu(), current.nodeResources().vcpu());
- double memoryGb = between(min.nodeResources().memoryGb(), max.nodeResources().memoryGb(), current.nodeResources().memoryGb());
- double diskGb = between(min.nodeResources().diskGb(), max.nodeResources().diskGb(), current.nodeResources().diskGb());
- NodeResources nodeResources = current.nodeResources().withVcpu(vcpu)
- .withMemoryGb(memoryGb)
- .withDiskGb(diskGb);
- return new ClusterResources(nodes, groups, nodeResources);
+ if (min.nodeResources() != NodeResources.unspecified && max.nodeResources() != NodeResources.unspecified) {
+ double vcpu = between(min.nodeResources().vcpu(), max.nodeResources().vcpu(), current.nodeResources().vcpu());
+ double memoryGb = between(min.nodeResources().memoryGb(), max.nodeResources().memoryGb(), current.nodeResources().memoryGb());
+ double diskGb = between(min.nodeResources().diskGb(), max.nodeResources().diskGb(), current.nodeResources().diskGb());
+ // Combine computed scaled resources with requested non-scaled resources (for which min=max)
+ NodeResources nodeResources = min.nodeResources().withVcpu(vcpu).withMemoryGb(memoryGb).withDiskGb(diskGb);
+ return new ClusterResources(nodes, groups, nodeResources);
+ }
+ else {
+ return new ClusterResources(nodes, groups, current.nodeResources());
+ }
}
private int between(int min, int max, int n) {