aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@yahooinc.com>2023-09-27 15:37:22 +0200
committergjoranv <gjoranv@gmail.com>2023-09-28 23:53:43 +0200
commita2cf788ba8c2f58128e1b85bfa31dcda5ee83e6a (patch)
tree6d6064b9177bb46d68ca8d61b4adf2ea83e1ac23 /controller-server/src/main/java/com
parentccf8d906232f9382bf31e658f2112840857e41b5 (diff)
Create API to trigger export of bills
Diffstat (limited to 'controller-server/src/main/java/com')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainer.java1
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java10
2 files changed, 10 insertions, 1 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainer.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainer.java
index 533b1316866..e7ec6675a82 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainer.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/maintenance/BillingReportMaintainer.java
@@ -13,7 +13,6 @@ import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import java.time.Duration;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java
index 67dd172fd83..c2077a3d96e 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandlerV2.java
@@ -85,6 +85,8 @@ public class BillingApiHandlerV2 extends RestApiRequestHandler<BillingApiHandler
.addRoute(RestApi.route("/billing/v2/accountant/preview/tenant/{tenant}")
.get(self::previewBill)
.post(Slime.class, self::createBill))
+ .addRoute(RestApi.route("/billing/v2/accountant/bill/{invoice}/export")
+ .put(Slime.class, self::putAccountantInvoiceExport))
.addRoute(RestApi.route("/billing/v2/accountant/plans")
.get(self::plans))
.addExceptionMapper(RuntimeException.class, (c, e) -> ErrorResponses.logThrowing(c.request(), log, e))
@@ -262,6 +264,14 @@ public class BillingApiHandlerV2 extends RestApiRequestHandler<BillingApiHandler
return new SlimeJsonResponse(slime);
}
+ private HttpResponse putAccountantInvoiceExport(RestApi.RequestContext ctx, Slime slime) {
+ var billId = ctx.attributes().get("invoice")
+ .map(id -> Bill.Id.of((String) id))
+ .orElseThrow(() -> new RestApiException.BadRequest("Missing bill ID"));
+ var exportMethod = slime.get().field("method").asString();
+ var result = billing.exportBill(billId, exportMethod);
+ return new MessageResponse("Bill has been exported: " + result);
+ }
// --------- INVOICE RENDERING ----------