summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerij Fredriksen <freva@users.noreply.github.com>2019-11-23 10:43:44 +0100
committerGitHub <noreply@github.com>2019-11-23 10:43:44 +0100
commit46f36c3161124d2d76deb5cdd5a8ea1ef7755bb5 (patch)
tree2d81a836e9e2a8370aa0a63c84bb3b108d8fc84b
parent1ff5c508a6b7b0e6c66880abf0fe381a48eeb92f (diff)
parent08e1bc05fc9404c97648d0999e2fb2a7821c8fbb (diff)
Merge pull request #11392 from vespa-engine/revert-11387-bratseth/required-node-resources
Revert "Let "required" on nodes apply to node resources"
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/CapacityPolicies.java18
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/provisioning/NodeRepositoryProvisioner.java2
2 files changed, 10 insertions, 10 deletions
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 0adab137513..8ee9a92fa46 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
@@ -9,6 +9,7 @@ import com.yahoo.config.provision.Zone;
import java.util.Arrays;
import java.util.Locale;
+import java.util.Optional;
/**
* Defines the policies for assigning cluster capacity in various environments
@@ -26,24 +27,23 @@ public class CapacityPolicies {
this.isUsingAdvertisedResources = zone.region().value().contains("aws-");
}
- public int decideSize(Capacity capacity, ClusterSpec.Type clusterType) {
- int requestedNodes = ensureRedundancy(capacity.nodeCount(), clusterType, capacity.canFail());
- if (capacity.isRequired()) return requestedNodes;
+ public int decideSize(Capacity requestedCapacity, ClusterSpec.Type clusterType) {
+ int requestedNodes = ensureRedundancy(requestedCapacity.nodeCount(), clusterType, requestedCapacity.canFail());
+ if (requestedCapacity.isRequired()) return requestedNodes;
switch(zone.environment()) {
case dev : case test : return 1;
- case perf : return Math.min(capacity.nodeCount(), 3);
+ case perf : return Math.min(requestedCapacity.nodeCount(), 3);
case staging: return requestedNodes <= 1 ? requestedNodes : Math.max(2, requestedNodes / 10);
case prod : return requestedNodes;
default : throw new IllegalArgumentException("Unsupported environment " + zone.environment());
}
}
- public NodeResources decideNodeResources(Capacity capacity, ClusterSpec cluster) {
- NodeResources resources = capacity.nodeResources().orElse(defaultNodeResources(cluster.type()));
- ensureSufficientResources(resources, cluster);
+ public NodeResources decideNodeResources(Optional<NodeResources> requestedResources, ClusterSpec cluster) {
+ if (requestedResources.isPresent()) assertMinimumResources(requestedResources.get(), cluster);
- if (capacity.isRequired()) return resources;
+ NodeResources resources = requestedResources.orElse(defaultNodeResources(cluster.type()));
// Allow slow storage in zones which are not performance sensitive
if (zone.system().isCd() || zone.environment() == Environment.dev || zone.environment() == Environment.test)
@@ -57,7 +57,7 @@ public class CapacityPolicies {
return resources;
}
- private void ensureSufficientResources(NodeResources resources, ClusterSpec cluster) {
+ private void assertMinimumResources(NodeResources resources, ClusterSpec cluster) {
double minMemoryGb = cluster.type() == ClusterSpec.Type.admin ? 2 : 4;
if (resources.memoryGb() >= minMemoryGb) return;
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 cb8f08a60fc..8d9ff2e4216 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
@@ -94,7 +94,7 @@ public class NodeRepositoryProvisioner implements Provisioner {
if (zone.environment().isManuallyDeployed() && nodeCount < requestedCapacity.nodeCount())
logger.log(Level.INFO, "Requested " + requestedCapacity.nodeCount() + " nodes for " + cluster +
", downscaling to " + nodeCount + " nodes in " + zone.environment());
- resources = Optional.of(capacityPolicies.decideNodeResources(requestedCapacity, cluster));
+ resources = Optional.of(capacityPolicies.decideNodeResources(requestedCapacity.nodeResources(), cluster));
boolean exclusive = capacityPolicies.decideExclusivity(cluster.isExclusive());
effectiveGroups = wantedGroups > nodeCount ? nodeCount : wantedGroups; // cannot have more groups than nodes
requestedNodes = NodeSpec.from(nodeCount, resources.get(), exclusive, requestedCapacity.canFail());