summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2023-10-10 14:43:07 +0200
committerGitHub <noreply@github.com>2023-10-10 14:43:07 +0200
commit050149b3cc0702299159540144635767379a6e0d (patch)
treef001c716ccbadc8a7ff35d22bc8ea4e346db92a8 /controller-api
parentb5e9551aef5230904d726b47578b4cb6b1fcfe2d (diff)
parentd8b9d80eb27523f9b4374f90a49051ed26818285 (diff)
Merge pull request #28832 from vespa-engine/hmusum/add-handler-for-pricing-api
Add handler for pricing API
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/MockPricingController.java14
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PriceInformation.java3
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/pricing/PricingInfo.java2
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/role/PathGroup.java1
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. */