summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java9
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingResult.java (renamed from controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanResult.java)14
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java6
-rw-r--r--controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java16
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java1
5 files changed, 36 insertions, 10 deletions
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
index 6b8b3a7e8b5..508479d6929 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java
@@ -22,7 +22,7 @@ public interface BillingController {
/**
* @return String containing error message if something went wrong. Empty otherwise
*/
- PlanResult setPlan(TenantName tenant, PlanId planId, boolean hasDeployments);
+ BillingResult setPlan(TenantName tenant, PlanId planId, boolean hasDeployments);
Invoice.Id createInvoiceForPeriod(TenantName tenant, ZonedDateTime startTime, ZonedDateTime endTime, String agent);
@@ -52,4 +52,11 @@ public interface BillingController {
void deleteBillingInfo(TenantName tenant, Set<User> users, boolean isPrivileged);
+ default CollectionMethod getCollectionMethod(TenantName tenant) {
+ return CollectionMethod.AUTO;
+ }
+
+ default BillingResult setCollectionMethod(TenantName tenant, CollectionMethod method) {
+ return BillingResult.error("Method not implemented");
+ }
} \ No newline at end of file
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanResult.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingResult.java
index a4803ccde64..3a1e9962f12 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/PlanResult.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingResult.java
@@ -4,24 +4,24 @@ package com.yahoo.vespa.hosted.controller.api.integration.billing;
import java.util.Optional;
/**
- * Result of {@link BillingController#setPlan}
+ * General result class for mutating operations on the {@link BillingController}
*
* @author olaa
*/
-public class PlanResult {
+public class BillingResult {
private final Optional<String> errorMessage;
- private PlanResult(Optional<String> errorMessage) {
+ private BillingResult(Optional<String> errorMessage) {
this.errorMessage = errorMessage;
}
- public static PlanResult success() {
- return new PlanResult(Optional.empty());
+ public static BillingResult success() {
+ return new BillingResult(Optional.empty());
}
- public static PlanResult error(String errorMessage) {
- return new PlanResult(Optional.of(errorMessage));
+ public static BillingResult error(String errorMessage) {
+ return new BillingResult(Optional.of(errorMessage));
}
public boolean isSuccess() {
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java
new file mode 100644
index 00000000000..010ce56d1d7
--- /dev/null
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/CollectionMethod.java
@@ -0,0 +1,6 @@
+package com.yahoo.vespa.hosted.controller.api.integration.billing;
+
+public enum CollectionMethod {
+ AUTO,
+ INVOICE
+}
diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
index 19dfe0d9dcc..b438067a3f5 100644
--- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
+++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java
@@ -25,6 +25,7 @@ public class MockBillingController implements BillingController {
Map<TenantName, List<Invoice>> committedInvoices = new HashMap<>();
Map<TenantName, Invoice> uncommittedInvoices = new HashMap<>();
Map<TenantName, List<Invoice.LineItem>> unusedLineItems = new HashMap<>();
+ CollectionMethod collectionMethod = CollectionMethod.AUTO;
@Override
public PlanId getPlan(TenantName tenant) {
@@ -37,9 +38,9 @@ public class MockBillingController implements BillingController {
}
@Override
- public PlanResult setPlan(TenantName tenant, PlanId planId, boolean hasDeployments) {
+ public BillingResult setPlan(TenantName tenant, PlanId planId, boolean hasDeployments) {
plans.put(tenant, planId);
- return PlanResult.success();
+ return BillingResult.success();
}
@Override
@@ -136,6 +137,17 @@ public class MockBillingController implements BillingController {
@Override
public void deleteBillingInfo(TenantName tenant, Set<User> users, boolean isPrivileged) {}
+ @Override
+ public CollectionMethod getCollectionMethod(TenantName tenant) {
+ return collectionMethod;
+ }
+
+ @Override
+ public BillingResult setCollectionMethod(TenantName tenant, CollectionMethod method) {
+ collectionMethod = method;
+ return BillingResult.success();
+ }
+
private PaymentInstrument createInstrument(String id) {
return new PaymentInstrument(id,
"name",
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 915c5a71cd0..b6e0cf5ce25 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
@@ -232,6 +232,7 @@ public class BillingApiHandler extends LoggingRequestHandler {
renderInstrument(root.setObject("payment"), card)
);
+ root.setString("collection", billingController.getCollectionMethod(tenantId).name());
return new SlimeJsonResponse(slimeResponse);
} catch (DateTimeParseException e) {
return ErrorResponse.badRequest("Could not parse date: " + until);