diff options
author | Jon Bratseth <bratseth@gmail.com> | 2021-02-16 14:25:06 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2021-02-16 14:25:06 +0100 |
commit | 977c6a7ace8e02c262dc984f06de759b5cd000a0 (patch) | |
tree | 932cf81c21b42a208d2c1a4f7c41105e4dc5a22e /config-model | |
parent | 0399c7f2cf9b75253e91a88e899bab82c36040dd (diff) |
Check quota against actually used resources
Also, filter out admin clusters as those are created by us.
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java | 11 |
1 files changed, 6 insertions, 5 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 11039528fc7..d2b465e9d02 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 @@ -4,6 +4,7 @@ package com.yahoo.vespa.model.application.validation; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.provision.Capacity; import com.yahoo.config.provision.ClusterSpec; +import com.yahoo.config.provision.HostSpec; import com.yahoo.config.provision.SystemName; import com.yahoo.vespa.model.VespaModel; @@ -20,6 +21,7 @@ import java.util.stream.Collectors; * @author ogronnesby */ public class QuotaValidator extends Validator { + private static final Logger log = Logger.getLogger(QuotaValidator.class.getName()); @Override @@ -30,11 +32,10 @@ public class QuotaValidator extends Validator { } private void validateBudget(BigDecimal budget, VespaModel model, SystemName systemName) { - var spend = model.provisioned().all().values().stream() - .filter(Objects::nonNull) - .map(Capacity::maxResources) - .mapToDouble(clusterCapacity -> clusterCapacity.nodeResources().cost() * clusterCapacity.nodes()) - .sum(); + var spend = model.allocatedHosts().getHosts().stream() + .filter(hostSpec -> hostSpec.membership().get().cluster().type() != ClusterSpec.Type.admin) + .mapToDouble(hostSpec -> hostSpec.advertisedResources().cost()) + .sum(); if (Math.abs(spend) < 0.01) { log.warning("Deploying application " + model.applicationPackage().getApplicationId() + " with zero budget use. This is suspicious, but not blocked"); |