/*
* 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 finspace-2021-03-12.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.Finspace.Model
{
///
/// The configuration based on which FinSpace will scale in or scale out nodes in your
/// cluster.
///
public partial class AutoScalingConfiguration
{
private AutoScalingMetric _autoScalingMetric;
private int? _maxNodeCount;
private double? _metricTarget;
private int? _minNodeCount;
private double? _scaleInCooldownSeconds;
private double? _scaleOutCooldownSeconds;
///
/// Gets and sets the property AutoScalingMetric.
///
/// The metric your cluster will track in order to scale in and out. For example, CPU_UTILIZATION_PERCENTAGE
/// is the average CPU usage across all the nodes in a cluster.
///
///
public AutoScalingMetric AutoScalingMetric
{
get { return this._autoScalingMetric; }
set { this._autoScalingMetric = value; }
}
// Check to see if AutoScalingMetric property is set
internal bool IsSetAutoScalingMetric()
{
return this._autoScalingMetric != null;
}
///
/// Gets and sets the property MaxNodeCount.
///
/// The highest number of nodes to scale. This value cannot be greater than 5.
///
///
[AWSProperty(Min=1, Max=5)]
public int MaxNodeCount
{
get { return this._maxNodeCount.GetValueOrDefault(); }
set { this._maxNodeCount = value; }
}
// Check to see if MaxNodeCount property is set
internal bool IsSetMaxNodeCount()
{
return this._maxNodeCount.HasValue;
}
///
/// Gets and sets the property MetricTarget.
///
/// The desired value of the chosen autoScalingMetric
. When the metric drops
/// below this value, the cluster will scale in. When the metric goes above this value,
/// the cluster will scale out. You can set the target value between 1 and 100 percent.
///
///
[AWSProperty(Min=1, Max=100)]
public double MetricTarget
{
get { return this._metricTarget.GetValueOrDefault(); }
set { this._metricTarget = value; }
}
// Check to see if MetricTarget property is set
internal bool IsSetMetricTarget()
{
return this._metricTarget.HasValue;
}
///
/// Gets and sets the property MinNodeCount.
///
/// The lowest number of nodes to scale. This value must be at least 1 and less than the
/// maxNodeCount
. If the nodes in a cluster belong to multiple availability
/// zones, then minNodeCount
must be at least 3.
///
///
[AWSProperty(Min=1, Max=5)]
public int MinNodeCount
{
get { return this._minNodeCount.GetValueOrDefault(); }
set { this._minNodeCount = value; }
}
// Check to see if MinNodeCount property is set
internal bool IsSetMinNodeCount()
{
return this._minNodeCount.HasValue;
}
///
/// Gets and sets the property ScaleInCooldownSeconds.
///
/// The duration in seconds that FinSpace will wait after a scale in event before initiating
/// another scaling event.
///
///
[AWSProperty(Min=0, Max=100000)]
public double ScaleInCooldownSeconds
{
get { return this._scaleInCooldownSeconds.GetValueOrDefault(); }
set { this._scaleInCooldownSeconds = value; }
}
// Check to see if ScaleInCooldownSeconds property is set
internal bool IsSetScaleInCooldownSeconds()
{
return this._scaleInCooldownSeconds.HasValue;
}
///
/// Gets and sets the property ScaleOutCooldownSeconds.
///
/// The duration in seconds that FinSpace will wait after a scale out event before initiating
/// another scaling event.
///
///
[AWSProperty(Min=0, Max=100000)]
public double ScaleOutCooldownSeconds
{
get { return this._scaleOutCooldownSeconds.GetValueOrDefault(); }
set { this._scaleOutCooldownSeconds = value; }
}
// Check to see if ScaleOutCooldownSeconds property is set
internal bool IsSetScaleOutCooldownSeconds()
{
return this._scaleOutCooldownSeconds.HasValue;
}
}
}