This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
pxz-hos-client-cpp-module/support/aws-sdk-cpp-master/aws-cpp-sdk-ecs/include/aws/ecs/model/PlacementStrategy.h

218 lines
11 KiB
C++

/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include <aws/ecs/ECS_EXPORTS.h>
#include <aws/ecs/model/PlacementStrategyType.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <utility>
namespace Aws
{
namespace Utils
{
namespace Json
{
class JsonValue;
class JsonView;
} // namespace Json
} // namespace Utils
namespace ECS
{
namespace Model
{
/**
* <p>The task placement strategy for a task or service. For more information, see
* <a
* href="https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html">Task
* Placement Strategies</a> in the <i>Amazon Elastic Container Service Developer
* Guide</i>.</p><p><h3>See Also:</h3> <a
* href="http://docs.aws.amazon.com/goto/WebAPI/ecs-2014-11-13/PlacementStrategy">AWS
* API Reference</a></p>
*/
class AWS_ECS_API PlacementStrategy
{
public:
PlacementStrategy();
PlacementStrategy(Aws::Utils::Json::JsonView jsonValue);
PlacementStrategy& operator=(Aws::Utils::Json::JsonView jsonValue);
Aws::Utils::Json::JsonValue Jsonize() const;
/**
* <p>The type of placement strategy. The <code>random</code> placement strategy
* randomly places tasks on available candidates. The <code>spread</code> placement
* strategy spreads placement across available candidates evenly based on the
* <code>field</code> parameter. The <code>binpack</code> strategy places tasks on
* available candidates that have the least available amount of the resource that
* is specified with the <code>field</code> parameter. For example, if you binpack
* on memory, a task is placed on the instance with the least amount of remaining
* memory (but still enough to run the task).</p>
*/
inline const PlacementStrategyType& GetType() const{ return m_type; }
/**
* <p>The type of placement strategy. The <code>random</code> placement strategy
* randomly places tasks on available candidates. The <code>spread</code> placement
* strategy spreads placement across available candidates evenly based on the
* <code>field</code> parameter. The <code>binpack</code> strategy places tasks on
* available candidates that have the least available amount of the resource that
* is specified with the <code>field</code> parameter. For example, if you binpack
* on memory, a task is placed on the instance with the least amount of remaining
* memory (but still enough to run the task).</p>
*/
inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; }
/**
* <p>The type of placement strategy. The <code>random</code> placement strategy
* randomly places tasks on available candidates. The <code>spread</code> placement
* strategy spreads placement across available candidates evenly based on the
* <code>field</code> parameter. The <code>binpack</code> strategy places tasks on
* available candidates that have the least available amount of the resource that
* is specified with the <code>field</code> parameter. For example, if you binpack
* on memory, a task is placed on the instance with the least amount of remaining
* memory (but still enough to run the task).</p>
*/
inline void SetType(const PlacementStrategyType& value) { m_typeHasBeenSet = true; m_type = value; }
/**
* <p>The type of placement strategy. The <code>random</code> placement strategy
* randomly places tasks on available candidates. The <code>spread</code> placement
* strategy spreads placement across available candidates evenly based on the
* <code>field</code> parameter. The <code>binpack</code> strategy places tasks on
* available candidates that have the least available amount of the resource that
* is specified with the <code>field</code> parameter. For example, if you binpack
* on memory, a task is placed on the instance with the least amount of remaining
* memory (but still enough to run the task).</p>
*/
inline void SetType(PlacementStrategyType&& value) { m_typeHasBeenSet = true; m_type = std::move(value); }
/**
* <p>The type of placement strategy. The <code>random</code> placement strategy
* randomly places tasks on available candidates. The <code>spread</code> placement
* strategy spreads placement across available candidates evenly based on the
* <code>field</code> parameter. The <code>binpack</code> strategy places tasks on
* available candidates that have the least available amount of the resource that
* is specified with the <code>field</code> parameter. For example, if you binpack
* on memory, a task is placed on the instance with the least amount of remaining
* memory (but still enough to run the task).</p>
*/
inline PlacementStrategy& WithType(const PlacementStrategyType& value) { SetType(value); return *this;}
/**
* <p>The type of placement strategy. The <code>random</code> placement strategy
* randomly places tasks on available candidates. The <code>spread</code> placement
* strategy spreads placement across available candidates evenly based on the
* <code>field</code> parameter. The <code>binpack</code> strategy places tasks on
* available candidates that have the least available amount of the resource that
* is specified with the <code>field</code> parameter. For example, if you binpack
* on memory, a task is placed on the instance with the least amount of remaining
* memory (but still enough to run the task).</p>
*/
inline PlacementStrategy& WithType(PlacementStrategyType&& value) { SetType(std::move(value)); return *this;}
/**
* <p>The field to apply the placement strategy against. For the
* <code>spread</code> placement strategy, valid values are <code>instanceId</code>
* (or <code>host</code>, which has the same effect), or any platform or custom
* attribute that is applied to a container instance, such as
* <code>attribute:ecs.availability-zone</code>. For the <code>binpack</code>
* placement strategy, valid values are <code>cpu</code> and <code>memory</code>.
* For the <code>random</code> placement strategy, this field is not used.</p>
*/
inline const Aws::String& GetField() const{ return m_field; }
/**
* <p>The field to apply the placement strategy against. For the
* <code>spread</code> placement strategy, valid values are <code>instanceId</code>
* (or <code>host</code>, which has the same effect), or any platform or custom
* attribute that is applied to a container instance, such as
* <code>attribute:ecs.availability-zone</code>. For the <code>binpack</code>
* placement strategy, valid values are <code>cpu</code> and <code>memory</code>.
* For the <code>random</code> placement strategy, this field is not used.</p>
*/
inline bool FieldHasBeenSet() const { return m_fieldHasBeenSet; }
/**
* <p>The field to apply the placement strategy against. For the
* <code>spread</code> placement strategy, valid values are <code>instanceId</code>
* (or <code>host</code>, which has the same effect), or any platform or custom
* attribute that is applied to a container instance, such as
* <code>attribute:ecs.availability-zone</code>. For the <code>binpack</code>
* placement strategy, valid values are <code>cpu</code> and <code>memory</code>.
* For the <code>random</code> placement strategy, this field is not used.</p>
*/
inline void SetField(const Aws::String& value) { m_fieldHasBeenSet = true; m_field = value; }
/**
* <p>The field to apply the placement strategy against. For the
* <code>spread</code> placement strategy, valid values are <code>instanceId</code>
* (or <code>host</code>, which has the same effect), or any platform or custom
* attribute that is applied to a container instance, such as
* <code>attribute:ecs.availability-zone</code>. For the <code>binpack</code>
* placement strategy, valid values are <code>cpu</code> and <code>memory</code>.
* For the <code>random</code> placement strategy, this field is not used.</p>
*/
inline void SetField(Aws::String&& value) { m_fieldHasBeenSet = true; m_field = std::move(value); }
/**
* <p>The field to apply the placement strategy against. For the
* <code>spread</code> placement strategy, valid values are <code>instanceId</code>
* (or <code>host</code>, which has the same effect), or any platform or custom
* attribute that is applied to a container instance, such as
* <code>attribute:ecs.availability-zone</code>. For the <code>binpack</code>
* placement strategy, valid values are <code>cpu</code> and <code>memory</code>.
* For the <code>random</code> placement strategy, this field is not used.</p>
*/
inline void SetField(const char* value) { m_fieldHasBeenSet = true; m_field.assign(value); }
/**
* <p>The field to apply the placement strategy against. For the
* <code>spread</code> placement strategy, valid values are <code>instanceId</code>
* (or <code>host</code>, which has the same effect), or any platform or custom
* attribute that is applied to a container instance, such as
* <code>attribute:ecs.availability-zone</code>. For the <code>binpack</code>
* placement strategy, valid values are <code>cpu</code> and <code>memory</code>.
* For the <code>random</code> placement strategy, this field is not used.</p>
*/
inline PlacementStrategy& WithField(const Aws::String& value) { SetField(value); return *this;}
/**
* <p>The field to apply the placement strategy against. For the
* <code>spread</code> placement strategy, valid values are <code>instanceId</code>
* (or <code>host</code>, which has the same effect), or any platform or custom
* attribute that is applied to a container instance, such as
* <code>attribute:ecs.availability-zone</code>. For the <code>binpack</code>
* placement strategy, valid values are <code>cpu</code> and <code>memory</code>.
* For the <code>random</code> placement strategy, this field is not used.</p>
*/
inline PlacementStrategy& WithField(Aws::String&& value) { SetField(std::move(value)); return *this;}
/**
* <p>The field to apply the placement strategy against. For the
* <code>spread</code> placement strategy, valid values are <code>instanceId</code>
* (or <code>host</code>, which has the same effect), or any platform or custom
* attribute that is applied to a container instance, such as
* <code>attribute:ecs.availability-zone</code>. For the <code>binpack</code>
* placement strategy, valid values are <code>cpu</code> and <code>memory</code>.
* For the <code>random</code> placement strategy, this field is not used.</p>
*/
inline PlacementStrategy& WithField(const char* value) { SetField(value); return *this;}
private:
PlacementStrategyType m_type;
bool m_typeHasBeenSet;
Aws::String m_field;
bool m_fieldHasBeenSet;
};
} // namespace Model
} // namespace ECS
} // namespace Aws