summaryrefslogtreecommitdiffstats
path: root/config-model/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2020-10-01 09:43:21 +0200
committerGitHub <noreply@github.com>2020-10-01 09:43:21 +0200
commit58a92e118482272de89bb6b9046daaaab00f42ac (patch)
tree2c89535dc3026bcc003af59a86f2575645161197 /config-model/src/main/java/com/yahoo
parent8e3bcc207d454d1aab53e979fb55ce990e454a99 (diff)
parent55b24de2df59ecb1accb919deecdf818d44ff1c4 (diff)
Merge pull request #14630 from vespa-engine/ogronnesby/quota-decimal
Use BigDecimal for budget inside the Quota
Diffstat (limited to 'config-model/src/main/java/com/yahoo')
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/QuotaValidator.java9
2 files changed, 6 insertions, 5 deletions
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
index 31c72e1be69..1455b4d8007 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -51,7 +51,7 @@ public class TestProperties implements ModelContext.Properties {
private Optional<EndpointCertificateSecrets> endpointCertificateSecrets = Optional.empty();
private AthenzDomain athenzDomain;
private ApplicationRoles applicationRoles;
- private Quota quota = Quota.empty();
+ private Quota quota = Quota.unlimited();
@Override public boolean multitenant() { return multitenant; }
@Override public ApplicationId applicationId() { return applicationId; }
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 c0a2fe4fdf2..d06d616efac 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
@@ -6,6 +6,7 @@ import com.yahoo.config.provision.Capacity;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.vespa.model.VespaModel;
+import java.math.BigDecimal;
import java.util.Locale;
import java.util.stream.Collectors;
@@ -19,17 +20,17 @@ public class QuotaValidator extends Validator {
public void validate(VespaModel model, DeployState deployState) {
var quota = deployState.getProperties().quota();
quota.maxClusterSize().ifPresent(maxClusterSize -> validateMaxClusterSize(maxClusterSize, model));
- quota.budget().ifPresent(budget -> validateBudget(budget, model));
+ quota.budgetAsDecimal().ifPresent(budget -> validateBudget(budget, model));
}
- private void validateBudget(int budget, VespaModel model) {
+ private void validateBudget(BigDecimal budget, VespaModel model) {
var spend = model.allClusters().stream()
.map(clusterId -> model.provisioned().all().get(clusterId))
.map(Capacity::maxResources)
.map(clusterCapacity -> clusterCapacity.nodeResources().cost() * clusterCapacity.nodes())
.reduce(0.0, Double::sum);
- if (spend > budget) {
+ if (budget.doubleValue() < spend) {
throwBudgetExceeded(spend, budget);
}
}
@@ -51,7 +52,7 @@ public class QuotaValidator extends Validator {
}
}
- private void throwBudgetExceeded(double spend, double budget) {
+ private void throwBudgetExceeded(double spend, BigDecimal budget) {
var message = String.format(Locale.US, "Hourly spend for maximum specified resources ($%.2f) exceeds budget from quota ($%.2f)!", spend, budget);
throw new IllegalArgumentException(message);
}