/*
* Copyright 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.
*/
/*
* Do not modify this file. This file is generated from the budgets-2016-10-20.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.Budgets.Model
{
///
/// 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
///
///
public partial class Budget
{
private AutoAdjustData _autoAdjustData;
private Spend _budgetLimit;
private string _budgetName;
private BudgetType _budgetType;
private CalculatedSpend _calculatedSpend;
private Dictionary> _costFilters = new Dictionary>();
private CostTypes _costTypes;
private DateTime? _lastUpdatedTime;
private Dictionary _plannedBudgetLimits = new Dictionary();
private TimePeriod _timePeriod;
private TimeUnit _timeUnit;
///
/// Gets and sets the property AutoAdjustData.
///
/// The parameters that determine the budget amount for an auto-adjusting budget.
///
///
public AutoAdjustData AutoAdjustData
{
get { return this._autoAdjustData; }
set { this._autoAdjustData = value; }
}
// Check to see if AutoAdjustData property is set
internal bool IsSetAutoAdjustData()
{
return this._autoAdjustData != null;
}
///
/// Gets and sets the property 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 Spend BudgetLimit
{
get { return this._budgetLimit; }
set { this._budgetLimit = value; }
}
// Check to see if BudgetLimit property is set
internal bool IsSetBudgetLimit()
{
return this._budgetLimit != null;
}
///
/// Gets and sets the property BudgetName.
///
/// The name of a budget. The name must be unique within an account. The :
/// and \
characters aren't allowed in BudgetName
.
///
///
[AWSProperty(Required=true, Min=1, Max=100)]
public string BudgetName
{
get { return this._budgetName; }
set { this._budgetName = value; }
}
// Check to see if BudgetName property is set
internal bool IsSetBudgetName()
{
return this._budgetName != null;
}
///
/// Gets and sets the property BudgetType.
///
/// Specifies whether this budget tracks costs, usage, RI utilization, RI coverage, Savings
/// Plans utilization, or Savings Plans coverage.
///
///
[AWSProperty(Required=true)]
public BudgetType BudgetType
{
get { return this._budgetType; }
set { this._budgetType = value; }
}
// Check to see if BudgetType property is set
internal bool IsSetBudgetType()
{
return this._budgetType != null;
}
///
/// Gets and sets the property CalculatedSpend.
///
/// The actual and forecasted cost or usage that the budget tracks.
///
///
public CalculatedSpend CalculatedSpend
{
get { return this._calculatedSpend; }
set { this._calculatedSpend = value; }
}
// Check to see if CalculatedSpend property is set
internal bool IsSetCalculatedSpend()
{
return this._calculatedSpend != null;
}
///
/// Gets and sets the property CostFilters.
///
/// 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:
///
/// -
///
/// Amazon EC2
///
///
-
///
/// Amazon Redshift
///
///
-
///
/// Amazon Relational Database Service
///
///
-
///
/// Amazon ElastiCache
///
///
-
///
/// Amazon OpenSearch Service
///
///
///
public Dictionary> CostFilters
{
get { return this._costFilters; }
set { this._costFilters = value; }
}
// Check to see if CostFilters property is set
internal bool IsSetCostFilters()
{
return this._costFilters != null && this._costFilters.Count > 0;
}
///
/// Gets and sets the property CostTypes.
///
/// 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
.
///
///
public CostTypes CostTypes
{
get { return this._costTypes; }
set { this._costTypes = value; }
}
// Check to see if CostTypes property is set
internal bool IsSetCostTypes()
{
return this._costTypes != null;
}
///
/// Gets and sets the property LastUpdatedTime.
///
/// The last time that you updated this budget.
///
///
public DateTime LastUpdatedTime
{
get { return this._lastUpdatedTime.GetValueOrDefault(); }
set { this._lastUpdatedTime = value; }
}
// Check to see if LastUpdatedTime property is set
internal bool IsSetLastUpdatedTime()
{
return this._lastUpdatedTime.HasValue;
}
///
/// Gets and sets the property 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 Dictionary PlannedBudgetLimits
{
get { return this._plannedBudgetLimits; }
set { this._plannedBudgetLimits = value; }
}
// Check to see if PlannedBudgetLimits property is set
internal bool IsSetPlannedBudgetLimits()
{
return this._plannedBudgetLimits != null && this._plannedBudgetLimits.Count > 0;
}
///
/// Gets and sets the property TimePeriod.
///
/// 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.
///
///
public TimePeriod TimePeriod
{
get { return this._timePeriod; }
set { this._timePeriod = value; }
}
// Check to see if TimePeriod property is set
internal bool IsSetTimePeriod()
{
return this._timePeriod != null;
}
///
/// Gets and sets the property TimeUnit.
///
/// The length of time until a budget resets the actual and forecasted spend.
///
///
[AWSProperty(Required=true)]
public TimeUnit TimeUnit
{
get { return this._timeUnit; }
set { this._timeUnit = value; }
}
// Check to see if TimeUnit property is set
internal bool IsSetTimeUnit()
{
return this._timeUnit != null;
}
}
}