diff options
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 |
commit | 29987bdca3f1f2df4232c4b5f4dc0a4b6d009d5d (patch) | |
tree | d69cd9d54d75bb977c18e176a40c60225e1bf1de | |
parent | b6c27b2efd34bb2dd7558f4811ffaee8eddef48a (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
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java | 18 |
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()); |