/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace ECS { namespace 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.

See Also:

AWS * API Reference

*/ class CapacityProviderStrategyItem { public: AWS_ECS_API CapacityProviderStrategyItem(); AWS_ECS_API CapacityProviderStrategyItem(Aws::Utils::Json::JsonView jsonValue); AWS_ECS_API CapacityProviderStrategyItem& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_ECS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The short name of the capacity provider.

*/ inline const Aws::String& GetCapacityProvider() const{ return m_capacityProvider; } /** *

The short name of the capacity provider.

*/ inline bool CapacityProviderHasBeenSet() const { return m_capacityProviderHasBeenSet; } /** *

The short name of the capacity provider.

*/ inline void SetCapacityProvider(const Aws::String& value) { m_capacityProviderHasBeenSet = true; m_capacityProvider = value; } /** *

The short name of the capacity provider.

*/ inline void SetCapacityProvider(Aws::String&& value) { m_capacityProviderHasBeenSet = true; m_capacityProvider = std::move(value); } /** *

The short name of the capacity provider.

*/ inline void SetCapacityProvider(const char* value) { m_capacityProviderHasBeenSet = true; m_capacityProvider.assign(value); } /** *

The short name of the capacity provider.

*/ inline CapacityProviderStrategyItem& WithCapacityProvider(const Aws::String& value) { SetCapacityProvider(value); return *this;} /** *

The short name of the capacity provider.

*/ inline CapacityProviderStrategyItem& WithCapacityProvider(Aws::String&& value) { SetCapacityProvider(std::move(value)); return *this;} /** *

The short name of the capacity provider.

*/ inline CapacityProviderStrategyItem& WithCapacityProvider(const char* value) { SetCapacityProvider(value); return *this;} /** *

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.

*/ inline int GetWeight() const{ return m_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.

*/ inline bool WeightHasBeenSet() const { return m_weightHasBeenSet; } /** *

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.

*/ inline void SetWeight(int value) { m_weightHasBeenSet = true; m_weight = value; } /** *

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.

*/ inline CapacityProviderStrategyItem& WithWeight(int value) { SetWeight(value); return *this;} /** *

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.

*/ inline int GetBase() const{ return m_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.

*/ inline bool BaseHasBeenSet() const { return m_baseHasBeenSet; } /** *

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.

*/ inline void SetBase(int value) { m_baseHasBeenSet = true; m_base = value; } /** *

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.

*/ inline CapacityProviderStrategyItem& WithBase(int value) { SetBase(value); return *this;} private: Aws::String m_capacityProvider; bool m_capacityProviderHasBeenSet = false; int m_weight; bool m_weightHasBeenSet = false; int m_base; bool m_baseHasBeenSet = false; }; } // namespace Model } // namespace ECS } // namespace Aws