/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.budgets.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** *

* Represents the output of the CreateBudget operation. The content consists of the detailed metadata and * data file information, and the current status of the budget object. *

*

* This is the Amazon Resource Name (ARN) pattern for a budget: *

*

* arn:aws:budgets::AccountId:budget/budgetName *

*/ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class Budget implements Serializable, Cloneable, StructuredPojo { /** *

* The name of a budget. The name must be unique within an account. The : and \ characters * aren't allowed in BudgetName. *

*/ private String budgetName; /** *

* The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans * coverage that you want to track with your budget. *

*

* BudgetLimit is required for cost or usage budgets, but optional for RI or Savings Plans utilization * or coverage budgets. RI and Savings Plans utilization or coverage budgets default to 100. This is * the only valid value for RI or Savings Plans utilization or coverage budgets. You can't use * BudgetLimit with PlannedBudgetLimits for CreateBudget and * UpdateBudget actions. *

*/ private Spend budgetLimit; /** *

* A map containing multiple BudgetLimit, including current or future limits. *

*

* PlannedBudgetLimits is available for cost or usage budget and supports both monthly and quarterly * TimeUnit. *

*

* For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from the * current month and include the next 11 months. The key is the start of the month, UTC in * epoch seconds. *

*

* For quarterly budgets, provide four quarters of PlannedBudgetLimits value entries in standard * calendar quarter increments. This must start from the current quarter and include the next three quarters. The * key is the start of the quarter, UTC in epoch seconds. *

*

* If the planned budget expires before 12 months for monthly or four quarters for quarterly, provide the * PlannedBudgetLimits values only for the remaining periods. *

*

* If the budget begins at a date in the future, provide PlannedBudgetLimits values from the start date * of the budget. *

*

* After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget * continues to use the last limit as the BudgetLimit. At that point, the planned budget provides the * same experience as a fixed budget. *

*

* DescribeBudget and DescribeBudgets response along with PlannedBudgetLimits * also contain BudgetLimit representing the current month or quarter limit present in * PlannedBudgetLimits. This only applies to budgets that are created with * PlannedBudgetLimits. Budgets that are created without PlannedBudgetLimits only contain * BudgetLimit. They don't contain PlannedBudgetLimits. *

*/ private java.util.Map plannedBudgetLimits; /** *

* The cost filters, such as Region, Service, member account, * Tag, or Cost Category, that are applied to a budget. *

*

* Amazon Web Services Budgets supports the following services as a Service filter for RI budgets: *

* */ private java.util.Map> costFilters; /** *

* The types of costs that are included in this COST budget. *

*

* USAGE, RI_UTILIZATION, RI_COVERAGE, SAVINGS_PLANS_UTILIZATION * , and SAVINGS_PLANS_COVERAGE budgets do not have CostTypes. *

*/ private CostTypes costTypes; /** *

* The length of time until a budget resets the actual and forecasted spend. *

*/ private String timeUnit; /** *

* The period of time that's covered by a budget. You setthe start date and end date. The start date must come * before the end date. The end date must come before 06/15/87 00:00 UTC. *

*

* If you create your budget and don't specify a start date, Amazon Web Services defaults to the start of your * chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For example, if you created your budget on January * 24, 2018, chose DAILY, and didn't set a start date, Amazon Web Services set your start date to * 01/24/18 00:00 UTC. If you chose MONTHLY, Amazon Web Services set your start date to * 01/01/18 00:00 UTC. If you didn't specify an end date, Amazon Web Services set your end date to * 06/15/87 00:00 UTC. The defaults are the same for the Billing and Cost Management console and the * API. *

*

* You can change either date with the UpdateBudget operation. *

*

* After the end date, Amazon Web Services deletes the budget and all the associated notifications and subscribers. *

*/ private TimePeriod timePeriod; /** *

* The actual and forecasted cost or usage that the budget tracks. *

*/ private CalculatedSpend calculatedSpend; /** *

* Specifies whether this budget tracks costs, usage, RI utilization, RI coverage, Savings Plans utilization, or * Savings Plans coverage. *

*/ private String budgetType; /** *

* The last time that you updated this budget. *

*/ private java.util.Date lastUpdatedTime; /** *

* The parameters that determine the budget amount for an auto-adjusting budget. *

*/ private AutoAdjustData autoAdjustData; /** *

* The name of a budget. The name must be unique within an account. The : and \ characters * aren't allowed in BudgetName. *

* * @param budgetName * The name of a budget. The name must be unique within an account. The : and \ * characters aren't allowed in BudgetName. */ public void setBudgetName(String budgetName) { this.budgetName = budgetName; } /** *

* The name of a budget. The name must be unique within an account. The : and \ characters * aren't allowed in BudgetName. *

* * @return The name of a budget. The name must be unique within an account. The : and \ * characters aren't allowed in BudgetName. */ public String getBudgetName() { return this.budgetName; } /** *

* The name of a budget. The name must be unique within an account. The : and \ characters * aren't allowed in BudgetName. *

* * @param budgetName * The name of a budget. The name must be unique within an account. The : and \ * characters aren't allowed in BudgetName. * @return Returns a reference to this object so that method calls can be chained together. */ public Budget withBudgetName(String budgetName) { setBudgetName(budgetName); return this; } /** *

* The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans * coverage that you want to track with your budget. *

*

* BudgetLimit is required for cost or usage budgets, but optional for RI or Savings Plans utilization * or coverage budgets. RI and Savings Plans utilization or coverage budgets default to 100. This is * the only valid value for RI or Savings Plans utilization or coverage budgets. You can't use * BudgetLimit with PlannedBudgetLimits for CreateBudget and * UpdateBudget actions. *

* * @param budgetLimit * The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans * coverage that you want to track with your budget.

*

* BudgetLimit is required for cost or usage budgets, but optional for RI or Savings Plans * utilization or coverage budgets. RI and Savings Plans utilization or coverage budgets default to * 100. This is the only valid value for RI or Savings Plans utilization or coverage budgets. * You can't use BudgetLimit with PlannedBudgetLimits for CreateBudget * and UpdateBudget actions. */ public void setBudgetLimit(Spend budgetLimit) { this.budgetLimit = budgetLimit; } /** *

* The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans * coverage that you want to track with your budget. *

*

* BudgetLimit is required for cost or usage budgets, but optional for RI or Savings Plans utilization * or coverage budgets. RI and Savings Plans utilization or coverage budgets default to 100. This is * the only valid value for RI or Savings Plans utilization or coverage budgets. You can't use * BudgetLimit with PlannedBudgetLimits for CreateBudget and * UpdateBudget actions. *

* * @return The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans * coverage that you want to track with your budget.

*

* BudgetLimit is required for cost or usage budgets, but optional for RI or Savings Plans * utilization or coverage budgets. RI and Savings Plans utilization or coverage budgets default to * 100. This is the only valid value for RI or Savings Plans utilization or coverage budgets. * You can't use BudgetLimit with PlannedBudgetLimits for * CreateBudget and UpdateBudget actions. */ public Spend getBudgetLimit() { return this.budgetLimit; } /** *

* The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans * coverage that you want to track with your budget. *

*

* BudgetLimit is required for cost or usage budgets, but optional for RI or Savings Plans utilization * or coverage budgets. RI and Savings Plans utilization or coverage budgets default to 100. This is * the only valid value for RI or Savings Plans utilization or coverage budgets. You can't use * BudgetLimit with PlannedBudgetLimits for CreateBudget and * UpdateBudget actions. *

* * @param budgetLimit * The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or Savings Plans * coverage that you want to track with your budget.

*

* BudgetLimit is required for cost or usage budgets, but optional for RI or Savings Plans * utilization or coverage budgets. RI and Savings Plans utilization or coverage budgets default to * 100. This is the only valid value for RI or Savings Plans utilization or coverage budgets. * You can't use BudgetLimit with PlannedBudgetLimits for CreateBudget * and UpdateBudget actions. * @return Returns a reference to this object so that method calls can be chained together. */ public Budget withBudgetLimit(Spend budgetLimit) { setBudgetLimit(budgetLimit); return this; } /** *

* A map containing multiple BudgetLimit, including current or future limits. *

*

* PlannedBudgetLimits is available for cost or usage budget and supports both monthly and quarterly * TimeUnit. *

*

* For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from the * current month and include the next 11 months. The key is the start of the month, UTC in * epoch seconds. *

*

* For quarterly budgets, provide four quarters of PlannedBudgetLimits value entries in standard * calendar quarter increments. This must start from the current quarter and include the next three quarters. The * key is the start of the quarter, UTC in epoch seconds. *

*

* If the planned budget expires before 12 months for monthly or four quarters for quarterly, provide the * PlannedBudgetLimits values only for the remaining periods. *

*

* If the budget begins at a date in the future, provide PlannedBudgetLimits values from the start date * of the budget. *

*

* After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget * continues to use the last limit as the BudgetLimit. At that point, the planned budget provides the * same experience as a fixed budget. *

*

* DescribeBudget and DescribeBudgets response along with PlannedBudgetLimits * also contain BudgetLimit representing the current month or quarter limit present in * PlannedBudgetLimits. This only applies to budgets that are created with * PlannedBudgetLimits. Budgets that are created without PlannedBudgetLimits only contain * BudgetLimit. They don't contain PlannedBudgetLimits. *

* * @return A map containing multiple BudgetLimit, including current or future limits.

*

* PlannedBudgetLimits is available for cost or usage budget and supports both monthly and * quarterly TimeUnit. *

*

* For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from * the current month and include the next 11 months. The key is the start of the month, * UTC in epoch seconds. *

*

* For quarterly budgets, provide four quarters of PlannedBudgetLimits value entries in * standard calendar quarter increments. This must start from the current quarter and include the next three * quarters. The key is the start of the quarter, UTC in epoch seconds. *

*

* If the planned budget expires before 12 months for monthly or four quarters for quarterly, provide the * PlannedBudgetLimits values only for the remaining periods. *

*

* If the budget begins at a date in the future, provide PlannedBudgetLimits values from the * start date of the budget. *

*

* After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget * continues to use the last limit as the BudgetLimit. At that point, the planned budget * provides the same experience as a fixed budget. *

*

* DescribeBudget and DescribeBudgets response along with * PlannedBudgetLimits also contain BudgetLimit representing the current month or * quarter limit present in PlannedBudgetLimits. This only applies to budgets that are created * with PlannedBudgetLimits. Budgets that are created without PlannedBudgetLimits * only contain BudgetLimit. They don't contain PlannedBudgetLimits. */ public java.util.Map getPlannedBudgetLimits() { return plannedBudgetLimits; } /** *

* A map containing multiple BudgetLimit, including current or future limits. *

*

* PlannedBudgetLimits is available for cost or usage budget and supports both monthly and quarterly * TimeUnit. *

*

* For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from the * current month and include the next 11 months. The key is the start of the month, UTC in * epoch seconds. *

*

* For quarterly budgets, provide four quarters of PlannedBudgetLimits value entries in standard * calendar quarter increments. This must start from the current quarter and include the next three quarters. The * key is the start of the quarter, UTC in epoch seconds. *

*

* If the planned budget expires before 12 months for monthly or four quarters for quarterly, provide the * PlannedBudgetLimits values only for the remaining periods. *

*

* If the budget begins at a date in the future, provide PlannedBudgetLimits values from the start date * of the budget. *

*

* After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget * continues to use the last limit as the BudgetLimit. At that point, the planned budget provides the * same experience as a fixed budget. *

*

* DescribeBudget and DescribeBudgets response along with PlannedBudgetLimits * also contain BudgetLimit representing the current month or quarter limit present in * PlannedBudgetLimits. This only applies to budgets that are created with * PlannedBudgetLimits. Budgets that are created without PlannedBudgetLimits only contain * BudgetLimit. They don't contain PlannedBudgetLimits. *

* * @param plannedBudgetLimits * A map containing multiple BudgetLimit, including current or future limits.

*

* PlannedBudgetLimits is available for cost or usage budget and supports both monthly and * quarterly TimeUnit. *

*

* For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from * the current month and include the next 11 months. The key is the start of the month, * UTC in epoch seconds. *

*

* For quarterly budgets, provide four quarters of PlannedBudgetLimits value entries in standard * calendar quarter increments. This must start from the current quarter and include the next three quarters. * The key is the start of the quarter, UTC in epoch seconds. *

*

* If the planned budget expires before 12 months for monthly or four quarters for quarterly, provide the * PlannedBudgetLimits values only for the remaining periods. *

*

* If the budget begins at a date in the future, provide PlannedBudgetLimits values from the * start date of the budget. *

*

* After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget * continues to use the last limit as the BudgetLimit. At that point, the planned budget * provides the same experience as a fixed budget. *

*

* DescribeBudget and DescribeBudgets response along with * PlannedBudgetLimits also contain BudgetLimit representing the current month or * quarter limit present in PlannedBudgetLimits. This only applies to budgets that are created * with PlannedBudgetLimits. Budgets that are created without PlannedBudgetLimits * only contain BudgetLimit. They don't contain PlannedBudgetLimits. */ public void setPlannedBudgetLimits(java.util.Map plannedBudgetLimits) { this.plannedBudgetLimits = plannedBudgetLimits; } /** *

* A map containing multiple BudgetLimit, including current or future limits. *

*

* PlannedBudgetLimits is available for cost or usage budget and supports both monthly and quarterly * TimeUnit. *

*

* For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from the * current month and include the next 11 months. The key is the start of the month, UTC in * epoch seconds. *

*

* For quarterly budgets, provide four quarters of PlannedBudgetLimits value entries in standard * calendar quarter increments. This must start from the current quarter and include the next three quarters. The * key is the start of the quarter, UTC in epoch seconds. *

*

* If the planned budget expires before 12 months for monthly or four quarters for quarterly, provide the * PlannedBudgetLimits values only for the remaining periods. *

*

* If the budget begins at a date in the future, provide PlannedBudgetLimits values from the start date * of the budget. *

*

* After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget * continues to use the last limit as the BudgetLimit. At that point, the planned budget provides the * same experience as a fixed budget. *

*

* DescribeBudget and DescribeBudgets response along with PlannedBudgetLimits * also contain BudgetLimit representing the current month or quarter limit present in * PlannedBudgetLimits. This only applies to budgets that are created with * PlannedBudgetLimits. Budgets that are created without PlannedBudgetLimits only contain * BudgetLimit. They don't contain PlannedBudgetLimits. *

* * @param plannedBudgetLimits * A map containing multiple BudgetLimit, including current or future limits.

*

* PlannedBudgetLimits is available for cost or usage budget and supports both monthly and * quarterly TimeUnit. *

*

* For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from * the current month and include the next 11 months. The key is the start of the month, * UTC in epoch seconds. *

*

* For quarterly budgets, provide four quarters of PlannedBudgetLimits value entries in standard * calendar quarter increments. This must start from the current quarter and include the next three quarters. * The key is the start of the quarter, UTC in epoch seconds. *

*

* If the planned budget expires before 12 months for monthly or four quarters for quarterly, provide the * PlannedBudgetLimits values only for the remaining periods. *

*

* If the budget begins at a date in the future, provide PlannedBudgetLimits values from the * start date of the budget. *

*

* After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget * continues to use the last limit as the BudgetLimit. At that point, the planned budget * provides the same experience as a fixed budget. *

*

* DescribeBudget and DescribeBudgets response along with * PlannedBudgetLimits also contain BudgetLimit representing the current month or * quarter limit present in PlannedBudgetLimits. This only applies to budgets that are created * with PlannedBudgetLimits. Budgets that are created without PlannedBudgetLimits * only contain BudgetLimit. They don't contain PlannedBudgetLimits. * @return Returns a reference to this object so that method calls can be chained together. */ public Budget withPlannedBudgetLimits(java.util.Map plannedBudgetLimits) { setPlannedBudgetLimits(plannedBudgetLimits); return this; } /** * Add a single PlannedBudgetLimits entry * * @see Budget#withPlannedBudgetLimits * @returns a reference to this object so that method calls can be chained together. */ public Budget addPlannedBudgetLimitsEntry(String key, Spend value) { if (null == this.plannedBudgetLimits) { this.plannedBudgetLimits = new java.util.HashMap(); } if (this.plannedBudgetLimits.containsKey(key)) throw new IllegalArgumentException("Duplicated keys (" + key.toString() + ") are provided."); this.plannedBudgetLimits.put(key, value); return this; } /** * Removes all the entries added into PlannedBudgetLimits. * * @return Returns a reference to this object so that method calls can be chained together. */ public Budget clearPlannedBudgetLimitsEntries() { this.plannedBudgetLimits = null; return this; } /** *

* The cost filters, such as Region, Service, member account, * Tag, or Cost Category, that are applied to a budget. *

*

* Amazon Web Services Budgets supports the following services as a Service filter for RI budgets: *

* * * @return The cost filters, such as Region, Service, member account, * Tag, or Cost Category, that are applied to a budget.

*

* Amazon Web Services Budgets supports the following services as a Service filter for RI * budgets: *

*