Skip to content

Commit

Permalink
Merge pull request #5565 from ewilde/task-def-inactive
Browse files Browse the repository at this point in the history
resource/aws_ecs_task_definition: Treat INACTIVE task definitions as removed
  • Loading branch information
bflad authored Aug 20, 2018
2 parents 1de7c5b + 1a4bfdb commit ae8b643
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
9 changes: 8 additions & 1 deletion aws/resource_aws_ecs_task_definition.go
Original file line number Diff line number Diff line change
Expand Up @@ -244,10 +244,17 @@ func resourceAwsEcsTaskDefinitionRead(d *schema.ResourceData, meta interface{})
if err != nil {
return err
}
log.Printf("[DEBUG] Received task definition %s", out)
log.Printf("[DEBUG] Received task definition %s, status:%s\n %s", aws.StringValue(out.TaskDefinition.Family),
aws.StringValue(out.TaskDefinition.Status), out)

taskDefinition := out.TaskDefinition

if aws.StringValue(taskDefinition.Status) == "INACTIVE" {
log.Printf("[DEBUG] Removing ECS task definition %s because it's INACTIVE", aws.StringValue(out.TaskDefinition.Family))
d.SetId("")
return nil
}

d.SetId(*taskDefinition.Family)
d.Set("arn", taskDefinition.TaskDefinitionArn)
d.Set("family", taskDefinition.Family)
Expand Down
34 changes: 34 additions & 0 deletions aws/resource_aws_ecs_task_definition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,40 @@ func TestAccAWSEcsTaskDefinition_ExecutionRole(t *testing.T) {
})
}

// Regression for https://github.com/hashicorp/terraform/issues/3582#issuecomment-286409786
func TestAccAWSEcsTaskDefinition_Inactive(t *testing.T) {
var def ecs.TaskDefinition

rString := acctest.RandString(8)
tdName := fmt.Sprintf("tf_acc_td_basic_%s", rString)

markTaskDefinitionInactive := func() {
conn := testAccProvider.Meta().(*AWSClient).ecsconn
conn.DeregisterTaskDefinition(&ecs.DeregisterTaskDefinitionInput{
TaskDefinition: aws.String(fmt.Sprintf("%s:1", tdName)),
})
}

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSEcsTaskDefinitionDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSEcsTaskDefinition(tdName),
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSEcsTaskDefinitionExists("aws_ecs_task_definition.jenkins", &def),
),
},
{
Config: testAccAWSEcsTaskDefinition(tdName),
PreConfig: markTaskDefinitionInactive,
Check: resource.TestCheckResourceAttr("aws_ecs_task_definition.jenkins", "revision", "2"), // should get re-created
},
},
})
}

func testAccCheckEcsTaskDefinitionRecreated(t *testing.T,
before, after *ecs.TaskDefinition) resource.TestCheckFunc {
return func(s *terraform.State) error {
Expand Down

0 comments on commit ae8b643

Please sign in to comment.