diff options
author | Gjøran Voldengen <gjoranv@gmail.com> | 2023-10-11 12:39:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-11 12:39:51 +0200 |
commit | 6d7429fa9f98aaa774dd0e02a8be51fc817efa78 (patch) | |
tree | 6902d812e7e5d0590d789dc7da7a0578f9b4476f /controller-api/src | |
parent | 9e5c9398c8141d59d3c07aba9198fa3dc43b56a0 (diff) | |
parent | 084bd4049a74653bf23c2ac32826477906a1e3dc (diff) |
Merge pull request #28839 from vespa-engine/write-external-ids-to-db
Add billing db client methods to set exported invoice/item ids.
Diffstat (limited to 'controller-api/src')
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) { } + } |