/*
* 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
{
///
/// Container for the parameters to the UpdateContainerInstancesState operation.
/// Modifies the status of an Amazon ECS container instance.
///
///
///
/// Once a container instance has reached an ACTIVE
state, you can change
/// the status of a container instance to DRAINING
to manually remove an
/// instance from a cluster, for example to perform system updates, update the Docker
/// daemon, or scale down the cluster size.
///
///
///
/// A container instance can't be changed to DRAINING
until it has reached
/// an ACTIVE
status. If the instance is in any other status, an error will
/// be received.
///
///
///
/// When you set a container instance to DRAINING
, Amazon ECS prevents new
/// tasks from being scheduled for placement on the container instance and replacement
/// service tasks are started on other container instances in the cluster if the resources
/// are available. Service tasks on the container instance that are in the PENDING
/// state are stopped immediately.
///
///
///
/// Service tasks on the container instance that are in the RUNNING
state
/// are stopped and replaced according to the service's deployment configuration parameters,
/// minimumHealthyPercent
and maximumPercent
. You can change
/// the deployment configuration of your service using UpdateService.
///
/// -
///
/// If
minimumHealthyPercent
is below 100%, the scheduler can ignore desiredCount
/// temporarily during task replacement. For example, desiredCount
is four
/// tasks, a minimum of 50% allows the scheduler to stop two existing tasks before starting
/// two new tasks. If the minimum is 100%, the service scheduler can't remove existing
/// tasks until the replacement tasks are considered healthy. Tasks for services that
/// do not use a load balancer are considered healthy if they're in the RUNNING
/// state. Tasks for services that use a load balancer are considered healthy if they're
/// in the RUNNING
state and are reported as healthy by the load balancer.
///
/// -
///
/// The
maximumPercent
parameter represents an upper limit on the number
/// of running tasks during task replacement. You can use this to define the replacement
/// batch size. For example, if desiredCount
is four tasks, a maximum of
/// 200% starts four new tasks before stopping the four tasks to be drained, provided
/// that the cluster resources required to do this are available. If the maximum is 100%,
/// then replacement tasks can't start until the draining tasks have stopped.
///
///
///
/// Any PENDING
or RUNNING
tasks that do not belong to a service
/// aren't affected. You must wait for them to finish or stop them manually.
///
///
///
/// A container instance has completed draining when it has no more RUNNING
/// tasks. You can verify this using ListTasks.
///
///
///
/// When a container instance has been drained, you can set a container instance to ACTIVE
/// status and once it has reached that status the Amazon ECS scheduler can begin scheduling
/// tasks on the instance again.
///
///
public partial class UpdateContainerInstancesStateRequest : AmazonECSRequest
{
private string _cluster;
private List _containerInstances = new List();
private ContainerInstanceStatus _status;
///
/// Gets and sets the property Cluster.
///
/// The short name or full Amazon Resource Name (ARN) of the cluster that hosts the container
/// instance to update. If you do not specify a cluster, the default cluster is assumed.
///
///
public string Cluster
{
get { return this._cluster; }
set { this._cluster = value; }
}
// Check to see if Cluster property is set
internal bool IsSetCluster()
{
return this._cluster != null;
}
///
/// Gets and sets the property ContainerInstances.
///
/// A list of up to 10 container instance IDs or full ARN entries.
///
///
[AWSProperty(Required=true)]
public List ContainerInstances
{
get { return this._containerInstances; }
set { this._containerInstances = value; }
}
// Check to see if ContainerInstances property is set
internal bool IsSetContainerInstances()
{
return this._containerInstances != null && this._containerInstances.Count > 0;
}
///
/// Gets and sets the property Status.
///
/// The container instance state to update the container instance with. The only valid
/// values for this action are ACTIVE
and DRAINING
. A container
/// instance can only be updated to DRAINING
status once it has reached an
/// ACTIVE
state. If a container instance is in REGISTERING
,
/// DEREGISTERING
, or REGISTRATION_FAILED
state you can describe
/// the container instance but can't update the container instance state.
///
///
[AWSProperty(Required=true)]
public ContainerInstanceStatus Status
{
get { return this._status; }
set { this._status = value; }
}
// Check to see if Status property is set
internal bool IsSetStatus()
{
return this._status != null;
}
}
}