Interface BillingController

All Known Implementing Classes:
MockBillingController

public interface BillingController
A service that controls creation of bills based on the resource usage of a tenant, controls the quota for a tenant, and controls the plan the tenant is on.
Author:
ogronnesby, olaa
  • Method Details

    • getPlan

      PlanId getPlan(com.yahoo.config.provision.TenantName tenant)
      Get the plan ID for the given tenant. This method will not fail if the tenant does not exist, it will return the default plan for that tenant instead.
    • tenantsWithPlan

      List<com.yahoo.config.provision.TenantName> tenantsWithPlan(List<com.yahoo.config.provision.TenantName> existing, PlanId planId)
      Return the list of tenants with the given plan.
      Parameters:
      existing - All existing tenants in the system
      planId - The ID of the plan to filter existing tenants on.
      Returns:
      The tenants that have the given plan.
    • getQuota

      Quota getQuota(com.yahoo.config.provision.TenantName tenant)
      The quota for the given tenant. This method will return default quota for tenants that do not exist.
    • setPlan

      PlanResult setPlan(com.yahoo.config.provision.TenantName tenant, PlanId planId, boolean hasDeployments, boolean isAccountant)
      Set the plan for the current tenant. Checks some pre-conditions to see if the tenant is eligible for the given plan.
      Parameters:
      tenant - The name of the tenant.
      planId - The ID of the plan to change to.
      hasDeployments - Does the tenant have active deployments.
      isAccountant - Is it the hosted accountant that is doing the operation
      Returns:
      String containing error message if something went wrong. Empty otherwise
    • createBillForPeriod

      Bill.Id createBillForPeriod(com.yahoo.config.provision.TenantName tenant, ZonedDateTime startTime, ZonedDateTime endTime, String agent)
      Create a bill of unbilled use for the given tenant in the given time period.
      Parameters:
      tenant - The name of the tenant.
      startTime - The start of the billing period
      endTime - The end of the billing period
      agent - The agent that creates the bill
      Returns:
      The ID of the new bill.
    • createUncommittedBill

      Bill createUncommittedBill(com.yahoo.config.provision.TenantName tenant, LocalDate until)
      Create an unpersisted bill of unbilled use for the given tenant from the end of last bill until the given date. This is used to show "unbilled use" in the Console.
      Parameters:
      tenant - The name of the tenant.
      until - The end date of the unbilled use period.
      Returns:
      A bill with the resource use and cost.
    • createUncommittedBills

      Map<com.yahoo.config.provision.TenantName,Bill> createUncommittedBills(LocalDate until)
      Run {createUncommittedBill} for all tenants with unbilled use
    • getUnusedLineItems

      List<Bill.LineItem> getUnusedLineItems(com.yahoo.config.provision.TenantName tenant)
      Get line items that have been manually added to a tenant, but is not yet part of a bill
    • addLineItem

      void addLineItem(com.yahoo.config.provision.TenantName tenant, String description, BigDecimal amount, Optional<Bill.Id> billId, String agent)
      Add a line item to the given bill
    • deleteLineItem

      void deleteLineItem(String lineItemId)
      Delete a line item - only available for unused line items
    • getBillsForTenant

      List<Bill> getBillsForTenant(com.yahoo.config.provision.TenantName tenant)
      Get all bills for the given tenant
    • getBill

      Bill getBill(Bill.Id billId)
      Get the bill with the given id
    • getCollectionMethod

      default CollectionMethod getCollectionMethod(com.yahoo.config.provision.TenantName tenant)
      Get the bill collection method for the given tenant
    • setCollectionMethod

      default CollectionResult setCollectionMethod(com.yahoo.config.provision.TenantName tenant, CollectionMethod method)
      Set the bill collection method for the given tenant
    • tenantsWithPlanUnderLimit

      default boolean tenantsWithPlanUnderLimit(Plan plan, int limit)
      Test if the number of tenants with the given plan is under the given limit
    • updateCache

      default void updateCache(List<com.yahoo.config.provision.TenantName> tenants)
    • getAcceptedCountries

      AcceptedCountries getAcceptedCountries()
      Get the list of countries that are accepted
    • validateTaxId

      void validateTaxId(TaxId id) throws IllegalArgumentException
      Validation of tax id
      Throws:
      IllegalArgumentException