/*
* 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 autoscaling-2011-01-01.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.AutoScaling.Model
{
///
/// Container for the parameters to the PutScalingPolicy operation.
/// Creates or updates a scaling policy for an Auto Scaling group. Scaling policies are
/// used to scale an Auto Scaling group based on configurable metrics. If no policies
/// are defined, the dynamic scaling and predictive scaling features are not used.
///
///
///
/// For more information about using dynamic scaling, see Target
/// tracking scaling policies and Step
/// and simple scaling policies in the Amazon EC2 Auto Scaling User Guide.
///
///
///
/// For more information about using predictive scaling, see Predictive
/// scaling for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide.
///
///
///
/// You can view the scaling policies for an Auto Scaling group using the DescribePolicies
/// API call. If you are no longer using a scaling policy, you can delete it by calling
/// the DeletePolicy API.
///
///
public partial class PutScalingPolicyRequest : AmazonAutoScalingRequest
{
private string _adjustmentType;
private string _autoScalingGroupName;
private int? _cooldown;
private bool? _enabled;
private int? _estimatedInstanceWarmup;
private string _metricAggregationType;
private int? _minAdjustmentMagnitude;
private int? _minAdjustmentStep;
private string _policyName;
private string _policyType;
private PredictiveScalingConfiguration _predictiveScalingConfiguration;
private int? _scalingAdjustment;
private List _stepAdjustments = new List();
private TargetTrackingConfiguration _targetTrackingConfiguration;
///
/// Gets and sets the property AdjustmentType.
///
/// Specifies how the scaling adjustment is interpreted (for example, an absolute number
/// or a percentage). The valid values are ChangeInCapacity
, ExactCapacity
,
/// and PercentChangeInCapacity
.
///
///
///
/// Required if the policy type is StepScaling
or SimpleScaling
.
/// For more information, see Scaling
/// adjustment types in the Amazon EC2 Auto Scaling User Guide.
///
///
[AWSProperty(Min=1, Max=255)]
public string AdjustmentType
{
get { return this._adjustmentType; }
set { this._adjustmentType = value; }
}
// Check to see if AdjustmentType property is set
internal bool IsSetAdjustmentType()
{
return this._adjustmentType != null;
}
///
/// Gets and sets the property AutoScalingGroupName.
///
/// The name of the Auto Scaling group.
///
///
[AWSProperty(Required=true, Min=1, Max=255)]
public string AutoScalingGroupName
{
get { return this._autoScalingGroupName; }
set { this._autoScalingGroupName = value; }
}
// Check to see if AutoScalingGroupName property is set
internal bool IsSetAutoScalingGroupName()
{
return this._autoScalingGroupName != null;
}
///
/// Gets and sets the property Cooldown.
///
/// A cooldown period, in seconds, that applies to a specific simple scaling policy. When
/// a cooldown period is specified here, it overrides the default cooldown.
///
///
///
/// Valid only if the policy type is SimpleScaling
. For more information,
/// see Scaling
/// cooldowns for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide.
///
///
///
/// Default: None
///
///
public int Cooldown
{
get { return this._cooldown.GetValueOrDefault(); }
set { this._cooldown = value; }
}
// Check to see if Cooldown property is set
internal bool IsSetCooldown()
{
return this._cooldown.HasValue;
}
///
/// Gets and sets the property Enabled.
///
/// Indicates whether the scaling policy is enabled or disabled. The default is enabled.
/// For more information, see Disabling
/// a scaling policy for an Auto Scaling group in the Amazon EC2 Auto Scaling User
/// Guide.
///
///
public bool Enabled
{
get { return this._enabled.GetValueOrDefault(); }
set { this._enabled = value; }
}
// Check to see if Enabled property is set
internal bool IsSetEnabled()
{
return this._enabled.HasValue;
}
///
/// Gets and sets the property EstimatedInstanceWarmup.
///
/// Not needed if the default instance warmup is defined for the group.
///
///
///
/// The estimated time, in seconds, until a newly launched instance can contribute to
/// the CloudWatch metrics. This warm-up period applies to instances launched due to a
/// specific target tracking or step scaling policy. When a warm-up period is specified
/// here, it overrides the default instance warmup.
///
///
///
/// Valid only if the policy type is TargetTrackingScaling
or StepScaling
.
///
///
///
/// The default is to use the value for the default instance warmup defined for the group.
/// If default instance warmup is null, then EstimatedInstanceWarmup
falls
/// back to the value of default cooldown.
///
///
///
public int EstimatedInstanceWarmup
{
get { return this._estimatedInstanceWarmup.GetValueOrDefault(); }
set { this._estimatedInstanceWarmup = value; }
}
// Check to see if EstimatedInstanceWarmup property is set
internal bool IsSetEstimatedInstanceWarmup()
{
return this._estimatedInstanceWarmup.HasValue;
}
///
/// Gets and sets the property MetricAggregationType.
///
/// The aggregation type for the CloudWatch metrics. The valid values are Minimum
,
/// Maximum
, and Average
. If the aggregation type is null, the
/// value is treated as Average
.
///
///
///
/// Valid only if the policy type is StepScaling
.
///
///
[AWSProperty(Min=1, Max=32)]
public string MetricAggregationType
{
get { return this._metricAggregationType; }
set { this._metricAggregationType = value; }
}
// Check to see if MetricAggregationType property is set
internal bool IsSetMetricAggregationType()
{
return this._metricAggregationType != null;
}
///
/// Gets and sets the property MinAdjustmentMagnitude.
///
/// The minimum value to scale by when the adjustment type is PercentChangeInCapacity
.
/// For example, suppose that you create a step scaling policy to scale out an Auto Scaling
/// group by 25 percent and you specify a MinAdjustmentMagnitude
of 2. If
/// the group has 4 instances and the scaling policy is performed, 25 percent of 4 is
/// 1. However, because you specified a MinAdjustmentMagnitude
of 2, Amazon
/// EC2 Auto Scaling scales out the group by 2 instances.
///
///
///
/// Valid only if the policy type is StepScaling
or SimpleScaling
.
/// For more information, see Scaling
/// adjustment types in the Amazon EC2 Auto Scaling User Guide.
///
///
///
/// Some Auto Scaling groups use instance weights. In this case, set the MinAdjustmentMagnitude
/// to a value that is at least as large as your largest instance weight.
///
///
///
public int MinAdjustmentMagnitude
{
get { return this._minAdjustmentMagnitude.GetValueOrDefault(); }
set { this._minAdjustmentMagnitude = value; }
}
// Check to see if MinAdjustmentMagnitude property is set
internal bool IsSetMinAdjustmentMagnitude()
{
return this._minAdjustmentMagnitude.HasValue;
}
///
/// Gets and sets the property MinAdjustmentStep.
///
/// Available for backward compatibility. Use MinAdjustmentMagnitude
instead.
///
///
public int MinAdjustmentStep
{
get { return this._minAdjustmentStep.GetValueOrDefault(); }
set { this._minAdjustmentStep = value; }
}
// Check to see if MinAdjustmentStep property is set
internal bool IsSetMinAdjustmentStep()
{
return this._minAdjustmentStep.HasValue;
}
///
/// Gets and sets the property PolicyName.
///
/// The name of the policy.
///
///
[AWSProperty(Required=true, Min=1, Max=255)]
public string PolicyName
{
get { return this._policyName; }
set { this._policyName = value; }
}
// Check to see if PolicyName property is set
internal bool IsSetPolicyName()
{
return this._policyName != null;
}
///
/// Gets and sets the property PolicyType.
///
/// One of the following policy types:
///
/// -
///
///
TargetTrackingScaling
///
/// -
///
///
StepScaling
///
/// -
///
///
SimpleScaling
(default)
///
/// -
///
///
PredictiveScaling
///
///
///
[AWSProperty(Min=1, Max=64)]
public string PolicyType
{
get { return this._policyType; }
set { this._policyType = value; }
}
// Check to see if PolicyType property is set
internal bool IsSetPolicyType()
{
return this._policyType != null;
}
///
/// Gets and sets the property PredictiveScalingConfiguration.
///
/// A predictive scaling policy. Provides support for predefined and custom metrics.
///
///
///
/// Predefined metrics include CPU utilization, network in/out, and the Application Load
/// Balancer request count.
///
///
///
/// For more information, see PredictiveScalingConfiguration
/// in the Amazon EC2 Auto Scaling API Reference.
///
///
///
/// Required if the policy type is PredictiveScaling
.
///
///
public PredictiveScalingConfiguration PredictiveScalingConfiguration
{
get { return this._predictiveScalingConfiguration; }
set { this._predictiveScalingConfiguration = value; }
}
// Check to see if PredictiveScalingConfiguration property is set
internal bool IsSetPredictiveScalingConfiguration()
{
return this._predictiveScalingConfiguration != null;
}
///
/// Gets and sets the property ScalingAdjustment.
///
/// The amount by which to scale, based on the specified adjustment type. A positive value
/// adds to the current capacity while a negative number removes from the current capacity.
/// For exact capacity, you must specify a non-negative value.
///
///
///
/// Required if the policy type is SimpleScaling
. (Not used with any other
/// policy type.)
///
///
public int ScalingAdjustment
{
get { return this._scalingAdjustment.GetValueOrDefault(); }
set { this._scalingAdjustment = value; }
}
// Check to see if ScalingAdjustment property is set
internal bool IsSetScalingAdjustment()
{
return this._scalingAdjustment.HasValue;
}
///
/// Gets and sets the property StepAdjustments.
///
/// A set of adjustments that enable you to scale based on the size of the alarm breach.
///
///
///
/// Required if the policy type is StepScaling
. (Not used with any other
/// policy type.)
///
///
public List StepAdjustments
{
get { return this._stepAdjustments; }
set { this._stepAdjustments = value; }
}
// Check to see if StepAdjustments property is set
internal bool IsSetStepAdjustments()
{
return this._stepAdjustments != null && this._stepAdjustments.Count > 0;
}
///
/// Gets and sets the property TargetTrackingConfiguration.
///
/// A target tracking scaling policy. Provides support for predefined or custom metrics.
///
///
///
/// The following predefined metrics are available:
///
/// -
///
///
ASGAverageCPUUtilization
///
/// -
///
///
ASGAverageNetworkIn
///
/// -
///
///
ASGAverageNetworkOut
///
/// -
///
///
ALBRequestCountPerTarget
///
///
///
/// If you specify ALBRequestCountPerTarget
for the metric, you must specify
/// the ResourceLabel
property with the PredefinedMetricSpecification
.
///
///
///
/// For more information, see TargetTrackingConfiguration
/// in the Amazon EC2 Auto Scaling API Reference.
///
///
///
/// Required if the policy type is TargetTrackingScaling
.
///
///
public TargetTrackingConfiguration TargetTrackingConfiguration
{
get { return this._targetTrackingConfiguration; }
set { this._targetTrackingConfiguration = value; }
}
// Check to see if TargetTrackingConfiguration property is set
internal bool IsSetTargetTrackingConfiguration()
{
return this._targetTrackingConfiguration != null;
}
}
}