diff options
3 files changed, 11 insertions, 4 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java index c474fa1f4df..39d974378b4 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java @@ -104,6 +104,12 @@ public class Invoice { return sumResourceValues(LineItem::getDiskCost); } + public BigDecimal sumAdditionalCost() { + // anything that is not covered by the cost for resources is "additional" costs + var resourceCosts = sumCpuCost().add(sumMemoryCost()).add(sumDiskCost()); + return sum().subtract(resourceCosts); + } + private BigDecimal sumResourceValues(Function<LineItem, Optional<BigDecimal>> f) { return lineItems.stream().flatMap(li -> f.apply(li).stream()).reduce(SCALED_ZERO, BigDecimal::add); } diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java index 367f8e728bf..cedae5b5a46 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java @@ -112,7 +112,7 @@ public class BillingApiHandler extends LoggingRequestHandler { private HttpResponse getAllInvoices() { var invoices = billingController.getInvoices(); - var headers = new String[]{ "ID", "Tenant", "From", "To", "CpuHours", "MemoryHours", "DiskHours", "Cpu", "Memory", "Disk" }; + var headers = new String[]{ "ID", "Tenant", "From", "To", "CpuHours", "MemoryHours", "DiskHours", "Cpu", "Memory", "Disk", "Additional" }; var rows = invoices.stream() .map(invoice -> { return new Object[] { @@ -120,7 +120,8 @@ public class BillingApiHandler extends LoggingRequestHandler { invoice.getStartTime().format(DateTimeFormatter.ISO_LOCAL_DATE), invoice.getEndTime().format(DateTimeFormatter.ISO_LOCAL_DATE), invoice.sumCpuHours(), invoice.sumMemoryHours(), invoice.sumDiskHours(), - invoice.sumCpuCost(), invoice.sumMemoryCost(), invoice.sumDiskCost() + invoice.sumCpuCost(), invoice.sumMemoryCost(), invoice.sumDiskCost(), + invoice.sumAdditionalCost() }; }) .collect(Collectors.toList()); diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/billing-all-invoices b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/billing-all-invoices index 157470106f4..957ed858951 100644 --- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/billing-all-invoices +++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/billing-all-invoices @@ -1,2 +1,2 @@ -ID,Tenant,From,To,CpuHours,MemoryHours,DiskHours,Cpu,Memory,Disk -id-1,default,2020-05-23,2020-05-28,0.00,0.00,0.00,0.00,0.00,0.00 +ID,Tenant,From,To,CpuHours,MemoryHours,DiskHours,Cpu,Memory,Disk,Additional +id-1,default,2020-05-23,2020-05-28,0.00,0.00,0.00,0.00,0.00,0.00,123.00 |