diff options
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/BillingController.java | 9 | ||||
-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.java | 6 | ||||
-rw-r--r-- | controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/integration/billing/MockBillingController.java | 16 | ||||
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/billing/BillingApiHandler.java | 1 |
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); |