summaryrefslogtreecommitdiffstats
path: root/controller-api
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2023-10-11 13:20:00 +0200
committerHarald Musum <musum@yahooinc.com>2023-10-11 13:20:00 +0200
commitfd09c7a8800bd7e71f8cdcb654a9f6d032dd83f6 (patch)
treef5e41be7f4b0b91541b266de304f1d612eb6314c /controller-api
parentfe17fa3d8eff3da0f503b7780777eadbe54f61e9 (diff)
parent412d603988aa79580962705c12b316e2ce4a4a59 (diff)
Merge branch 'master' into hmusum/add-support-level-cost
Diffstat (limited to 'controller-api')
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java23
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClient.java11
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClientMock.java7
3 files changed, 39 insertions, 2 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java
index 1bacbb6bcfe..763f4c89c8b 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/Bill.java
@@ -42,14 +42,22 @@ public class Bill {
private final StatusHistory statusHistory;
private final ZonedDateTime startTime;
private final ZonedDateTime endTime;
+ private final String exportedId;
- public Bill(Id id, TenantName tenant, StatusHistory statusHistory, List<LineItem> lineItems, ZonedDateTime startTime, ZonedDateTime endTime) {
+ public Bill(Id id, TenantName tenant, StatusHistory statusHistory, List<LineItem> lineItems,
+ ZonedDateTime startTime, ZonedDateTime endTime) {
+ this(id, tenant, statusHistory, lineItems, startTime, endTime, null);
+ }
+
+ public Bill(Id id, TenantName tenant, StatusHistory statusHistory, List<LineItem> lineItems,
+ ZonedDateTime startTime, ZonedDateTime endTime, String exportedId) {
this.id = id;
this.tenant = tenant;
this.lineItems = List.copyOf(lineItems);
this.statusHistory = statusHistory;
this.startTime = startTime;
this.endTime = endTime;
+ this.exportedId = exportedId;
}
public Id id() {
@@ -80,6 +88,10 @@ public class Bill {
return endTime;
}
+ public Optional<String> getExportedId() {
+ return Optional.ofNullable(exportedId);
+ }
+
public LocalDate getStartDate() {
return startTime.toLocalDate();
}
@@ -196,6 +208,7 @@ public class Bill {
private BigDecimal gpuCost;
private NodeResources.Architecture architecture;
private int majorVersion;
+ private String exportedId;
public LineItem(String id, String description, BigDecimal amount, String plan, String agent, ZonedDateTime addedAt) {
this.id = id;
@@ -207,7 +220,8 @@ public class Bill {
}
public LineItem(String id, String description, BigDecimal amount, String plan, String agent, ZonedDateTime addedAt, ZonedDateTime startedAt, ZonedDateTime endedAt, ApplicationId applicationId, ZoneId zoneId,
- BigDecimal cpuHours, BigDecimal memoryHours, BigDecimal diskHours, BigDecimal gpuHours, BigDecimal cpuCost, BigDecimal memoryCost, BigDecimal diskCost, BigDecimal gpuCost, NodeResources.Architecture architecture, int majorVersion) {
+ BigDecimal cpuHours, BigDecimal memoryHours, BigDecimal diskHours, BigDecimal gpuHours, BigDecimal cpuCost, BigDecimal memoryCost, BigDecimal diskCost, BigDecimal gpuCost,
+ NodeResources.Architecture architecture, int majorVersion, String exportedId) {
this(id, description, amount, plan, agent, addedAt);
this.startedAt = startedAt;
this.endedAt = endedAt;
@@ -227,6 +241,7 @@ public class Bill {
this.architecture = architecture;
this.majorVersion = majorVersion;
this.gpuCost = gpuCost;
+ this.exportedId = exportedId;
}
/** The opaque ID of this */
@@ -319,6 +334,10 @@ public class Bill {
return majorVersion;
}
+ public Optional<String> getExportedId() {
+ return Optional.ofNullable(exportedId);
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) return true;
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClient.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClient.java
index c5c3bb894ca..3e24314ba5c 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClient.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClient.java
@@ -144,4 +144,15 @@ public interface BillingDatabaseClient {
* Performs necessary maintenance operations
*/
void maintain();
+
+ /**
+ * Set the invoice id from an external system for the given bill
+ */
+ void setExportedInvoiceId(Bill.Id billId, String invoiceId);
+
+ /**
+ * Set the invoice item id from an external system for the given line item
+ */
+ void setExportedInvoiceItemId(String lineItemId, String invoiceItemId);
+
}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClientMock.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClientMock.java
index 7ef85f0eaa6..300c1658c29 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClientMock.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingDatabaseClientMock.java
@@ -178,4 +178,11 @@ public class BillingDatabaseClientMock implements BillingDatabaseClient {
@Override
public void maintain() {}
+
+ @Override
+ public void setExportedInvoiceId(Bill.Id billId, String invoiceId) { }
+
+ @Override
+ public void setExportedInvoiceItemId(String lineItemId, String invoiceItemId) { }
+
}