diff options
author | Harald Musum <musum@verizonmedia.com> | 2023-10-10 14:43:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-10 14:43:07 +0200 |
commit | 050149b3cc0702299159540144635767379a6e0d (patch) | |
tree | f001c716ccbadc8a7ff35d22bc8ea4e346db92a8 /controller-api/src/main | |
parent | b5e9551aef5230904d726b47578b4cb6b1fcfe2d (diff) | |
parent | d8b9d80eb27523f9b4374f90a49051ed26818285 (diff) |
Merge pull request #28832 from vespa-engine/hmusum/add-handler-for-pricing-api
Add handler for pricing API
Diffstat (limited to 'controller-api/src/main')
4 files changed, 17 insertions, 3 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MockPricingController.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MockPricingController.java index d703af78246..871f51689d5 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MockPricingController.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MockPricingController.java @@ -8,13 +8,25 @@ import com.yahoo.vespa.hosted.controller.api.integration.pricing.PricingControll import com.yahoo.vespa.hosted.controller.api.integration.pricing.PricingInfo; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; public class MockPricingController implements PricingController { @Override public PriceInformation price(List<ClusterResources> clusterResources, PricingInfo pricingInfo, Plan plan) { - return new PriceInformation(new BigDecimal(2 * clusterResources.size()), BigDecimal.ZERO); + BigDecimal listPrice = BigDecimal.valueOf(clusterResources.stream() + .mapToDouble(resources -> resources.nodes() * + (resources.nodeResources().vcpu() * 1000 + + resources.nodeResources().memoryGb() * 100 + + resources.nodeResources().diskGb() * 10)) + .sum()) + .setScale(2, RoundingMode.HALF_UP); + BigDecimal volumeDiscount = new BigDecimal("-5.00"); + BigDecimal committedAmountDiscount = new BigDecimal("0.00"); + BigDecimal enclaveDiscount = new BigDecimal("0.00"); + BigDecimal totalAmount = listPrice.add(volumeDiscount); + return new PriceInformation(listPrice, volumeDiscount, committedAmountDiscount, enclaveDiscount, totalAmount); } } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PriceInformation.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PriceInformation.java index 3a7769a3d8e..2a6ecf87180 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PriceInformation.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PriceInformation.java @@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.controller.api.integration.pricing; import java.math.BigDecimal; -public record PriceInformation(BigDecimal listPrice, BigDecimal volumeDiscount) { +public record PriceInformation(BigDecimal listPrice, BigDecimal volumeDiscount, BigDecimal committedAmountDiscount, + BigDecimal enclaveDiscount, BigDecimal totalAmount) { } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PricingInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PricingInfo.java index 9cc35db23a0..938991e2ed7 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PricingInfo.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PricingInfo.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.hosted.controller.api.integration.pricing; public record PricingInfo(boolean enclave, SupportLevel supportLevel, double committedHourlyAmount) { - public enum SupportLevel { STANDARD, COMMERCIAL, ENTERPRISE } + public enum SupportLevel { BASIC, COMMERCIAL, ENTERPRISE } public static PricingInfo empty() { return new PricingInfo(false, SupportLevel.COMMERCIAL, 0); } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java index c7b3c4ebf25..52900f83203 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java @@ -234,6 +234,7 @@ enum PathGroup { "/badge/v1/{*}", // Badges for deployment jobs. "/zone/v1/{*}", // Lists environment and regions. "/cli/v1/{*}", // Public information for Vespa CLI. + "/pricing/v1/{*}", // Pricing information "/.well-known/{*}"), /** Paths used for deploying system-wide feature flags. */ |