summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2020-10-09 11:29:50 +0200
committerØyvind Grønnesby <oyving@verizonmedia.com>2020-10-09 11:29:50 +0200
commit29987bdca3f1f2df4232c4b5f4dc0a4b6d009d5d (patch)
treed69cd9d54d75bb977c18e176a40c60225e1bf1de /config-model
parentb6c27b2efd34bb2dd7558f4811ffaee8eddef48a (diff)
Do not make assumptions on presence of provisioned
- Do not assume all clusters are in provisioned object - Do not assume all clusters in provisioned object have a capacity object
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java
index d06d616efac..8a4eabbd12c 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java
@@ -8,6 +8,8 @@ import com.yahoo.vespa.model.VespaModel;
import java.math.BigDecimal;
import java.util.Locale;
+import java.util.Map;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -24,11 +26,11 @@ public class QuotaValidator extends Validator {
}
private void validateBudget(BigDecimal budget, VespaModel model) {
- var spend = model.allClusters().stream()
- .map(clusterId -> model.provisioned().all().get(clusterId))
+ var spend = model.provisioned().all().values().stream()
+ .filter(Objects::nonNull)
.map(Capacity::maxResources)
- .map(clusterCapacity -> clusterCapacity.nodeResources().cost() * clusterCapacity.nodes())
- .reduce(0.0, Double::sum);
+ .mapToDouble(clusterCapacity -> clusterCapacity.nodeResources().cost() * clusterCapacity.nodes())
+ .sum();
if (budget.doubleValue() < spend) {
throwBudgetExceeded(spend, budget);
@@ -37,12 +39,14 @@ public class QuotaValidator extends Validator {
/** Check that all clusters in the application do not exceed the quota max cluster size. */
private void validateMaxClusterSize(int maxClusterSize, VespaModel model) {
- var invalidClusters = model.allClusters().stream()
- .filter(clusterId -> {
- var cluster = model.provisioned().all().get(clusterId);
+ var invalidClusters = model.provisioned().all().entrySet().stream()
+ .filter(entry -> entry.getValue() != null)
+ .filter(entry -> {
+ var cluster = entry.getValue();
var clusterSize = cluster.maxResources().nodes();
return clusterSize > maxClusterSize;
})
+ .map(Map.Entry::getKey)
.map(ClusterSpec.Id::value)
.collect(Collectors.toList());