Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added support for the deployment configuration settings to the ecs service resource #5220

Merged
merged 1 commit into from
Feb 21, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions builtin/providers/aws/resource_aws_ecs_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,18 @@ func resourceAwsEcsService() *schema.Resource {
Optional: true,
},

"deployment_maximum_percent": &schema.Schema{
Type: schema.TypeInt,
Optional: true,
Default: 200,
},

"deployment_minimum_healthy_percent": &schema.Schema{
Type: schema.TypeInt,
Optional: true,
Default: 100,
},

"load_balancer": &schema.Schema{
Type: schema.TypeSet,
Optional: true,
Expand Down Expand Up @@ -94,6 +106,10 @@ func resourceAwsEcsServiceCreate(d *schema.ResourceData, meta interface{}) error
TaskDefinition: aws.String(d.Get("task_definition").(string)),
DesiredCount: aws.Int64(int64(d.Get("desired_count").(int))),
ClientToken: aws.String(resource.UniqueId()),
DeploymentConfiguration: &ecs.DeploymentConfiguration{
MaximumPercent: aws.Int64(int64(d.Get("deployment_maximum_percent").(int))),
MinimumHealthyPercent: aws.Int64(int64(d.Get("deployment_minimum_healthy_percent").(int))),
},
}

if v, ok := d.GetOk("cluster"); ok {
Expand Down Expand Up @@ -208,6 +224,11 @@ func resourceAwsEcsServiceRead(d *schema.ResourceData, meta interface{}) error {
}
}

if service.DeploymentConfiguration != nil {
d.Set("deployment_maximum_percent", *service.DeploymentConfiguration.MaximumPercent)
d.Set("deployment_minimum_healthy_percent", *service.DeploymentConfiguration.MinimumHealthyPercent)
}

if service.LoadBalancers != nil {
d.Set("load_balancers", flattenEcsLoadBalancers(service.LoadBalancers))
}
Expand All @@ -233,6 +254,13 @@ func resourceAwsEcsServiceUpdate(d *schema.ResourceData, meta interface{}) error
input.TaskDefinition = aws.String(n.(string))
}

if d.HasChange("deployment_maximum_percent") || d.HasChange("deployment_minimum_healthy_percent") {
input.DeploymentConfiguration = &ecs.DeploymentConfiguration{
MaximumPercent: aws.Int64(int64(d.Get("deployment_maximum_percent").(int))),
MinimumHealthyPercent: aws.Int64(int64(d.Get("deployment_minimum_healthy_percent").(int))),
}
}

out, err := conn.UpdateService(&input)
if err != nil {
return err
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ description: |-

-> **Note:** To prevent race condition during service deletion, make sure to set `depends_on` to related `aws_iam_role_policy`, otherwise policy may be destroyed too soon and ECS service will then stuck in `DRAINING` state.

Provides an ECS service - effectively a task that is expected to run until an error occures or user terminates it (typically a webserver or a database).
Provides an ECS service - effectively a task that is expected to run until an error occures or user terminates it (typically a webserver or a database).

See [ECS Services section in AWS developer guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html).

Expand Down Expand Up @@ -42,6 +42,8 @@ The following arguments are supported:
* `desired_count` - (Required) The number of instances of the task definition to place and keep running
* `cluster` - (Optional) ARN of an ECS cluster
* `iam_role` - (Optional) IAM role that allows your Amazon ECS container agent to make calls to your load balancer on your behalf. This parameter is only required if you are using a load balancer with your service.
* `deployment_maximum_percent` - (Optional) The upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment.
* `deployment_minimum_healthy_percent` - (Optional) The lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment.
* `load_balancer` - (Optional) A load balancer block. Load balancers documented below.

Load balancers support the following:
Expand Down