/*
* 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 ecs-2014-11-13.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.ECS.Model
{
///
/// The details of a capacity provider strategy. A capacity provider strategy can be set
/// when using the RunTask or CreateCluster APIs or as the default capacity
/// provider strategy for a cluster with the CreateCluster API.
///
///
///
/// Only capacity providers that are already associated with a cluster and have an ACTIVE
/// or UPDATING
status can be used in a capacity provider strategy. The PutClusterCapacityProviders
/// API is used to associate a capacity provider with a cluster.
///
///
///
/// If specifying a capacity provider that uses an Auto Scaling group, the capacity provider
/// must already be created. New Auto Scaling group capacity providers can be created
/// with the CreateCapacityProvider API operation.
///
///
///
/// To use a Fargate capacity provider, specify either the FARGATE
or FARGATE_SPOT
/// capacity providers. The Fargate capacity providers are available to all accounts and
/// only need to be associated with a cluster to be used in a capacity provider strategy.
///
///
///
/// A capacity provider strategy may contain a maximum of 6 capacity providers.
///
///
public partial class CapacityProviderStrategyItem
{
private int? _base;
private string _capacityProvider;
private int? _weight;
///
/// Gets and sets the property Base.
///
/// The base value designates how many tasks, at a minimum, to run on the specified
/// capacity provider. Only one capacity provider in a capacity provider strategy can
/// have a base defined. If no value is specified, the default value of 0
/// is used.
///
///
[AWSProperty(Min=0, Max=100000)]
public int Base
{
get { return this._base.GetValueOrDefault(); }
set { this._base = value; }
}
// Check to see if Base property is set
internal bool IsSetBase()
{
return this._base.HasValue;
}
///
/// Gets and sets the property CapacityProvider.
///
/// The short name of the capacity provider.
///
///
[AWSProperty(Required=true)]
public string CapacityProvider
{
get { return this._capacityProvider; }
set { this._capacityProvider = value; }
}
// Check to see if CapacityProvider property is set
internal bool IsSetCapacityProvider()
{
return this._capacityProvider != null;
}
///
/// Gets and sets the property Weight.
///
/// The weight value designates the relative percentage of the total number of
/// tasks launched that should use the specified capacity provider. The weight
/// value is taken into consideration after the base
value, if defined, is
/// satisfied.
///
///
///
/// If no weight
value is specified, the default value of 0
/// is used. When multiple capacity providers are specified within a capacity provider
/// strategy, at least one of the capacity providers must have a weight value greater
/// than zero and any capacity providers with a weight of 0
can't be used
/// to place tasks. If you specify multiple capacity providers in a strategy that all
/// have a weight of 0
, any RunTask
or CreateService
/// actions using the capacity provider strategy will fail.
///
///
///
/// An example scenario for using weights is defining a strategy that contains two capacity
/// providers and both have a weight of 1
, then when the base
/// is satisfied, the tasks will be split evenly across the two capacity providers. Using
/// that same logic, if you specify a weight of 1
for capacityProviderA
/// and a weight of 4
for capacityProviderB, then for every one task
/// that's run using capacityProviderA, four tasks would use capacityProviderB.
///
///
[AWSProperty(Min=0, Max=1000)]
public int Weight
{
get { return this._weight.GetValueOrDefault(); }
set { this._weight = value; }
}
// Check to see if Weight property is set
internal bool IsSetWeight()
{
return this._weight.HasValue;
}
}
}