summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Invoice.java6
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java5
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/billing/responses/billing-all-invoices4
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