diff --git a/builtin/providers/aws/resource_aws_codedeploy_app_test.go b/builtin/providers/aws/resource_aws_codedeploy_app_test.go index 9c016f1842..9610a01a74 100644 --- a/builtin/providers/aws/resource_aws_codedeploy_app_test.go +++ b/builtin/providers/aws/resource_aws_codedeploy_app_test.go @@ -23,7 +23,7 @@ func TestAccAWSCodeDeployApp_basic(t *testing.T) { ), }, resource.TestStep{ - Config: testAccAWSCodeDeployAppModifier, + Config: testAccAWSCodeDeployAppModified, Check: resource.ComposeTestCheckFunc( testAccCheckAWSCodeDeployAppExists("aws_codedeploy_app.foo"), ), @@ -72,7 +72,7 @@ resource "aws_codedeploy_app" "foo" { name = "foo" }` -var testAccAWSCodeDeployAppModifier = ` +var testAccAWSCodeDeployAppModified = ` resource "aws_codedeploy_app" "foo" { name = "bar" }` diff --git a/builtin/providers/aws/resource_aws_codedeploy_deployment_group_test.go b/builtin/providers/aws/resource_aws_codedeploy_deployment_group_test.go index 7608b1f585..3b873fe3ba 100644 --- a/builtin/providers/aws/resource_aws_codedeploy_deployment_group_test.go +++ b/builtin/providers/aws/resource_aws_codedeploy_deployment_group_test.go @@ -23,7 +23,7 @@ func TestAccAWSCodeDeployDeploymentGroup_basic(t *testing.T) { ), }, resource.TestStep{ - Config: testAccAWSCodeDeployDeploymentGroupModifier, + Config: testAccAWSCodeDeployDeploymentGroupModified, Check: resource.ComposeTestCheckFunc( testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.foo"), ), @@ -133,7 +133,7 @@ resource "aws_codedeploy_deployment_group" "foo" { } }` -var testAccAWSCodeDeployDeploymentGroupModifier = ` +var testAccAWSCodeDeployDeploymentGroupModified = ` resource "aws_codedeploy_app" "foo_app" { name = "foo_app" } diff --git a/builtin/providers/aws/resource_aws_ecs_task_definition.go b/builtin/providers/aws/resource_aws_ecs_task_definition.go index 337c2aadfd..b9b40d6bfd 100644 --- a/builtin/providers/aws/resource_aws_ecs_task_definition.go +++ b/builtin/providers/aws/resource_aws_ecs_task_definition.go @@ -17,7 +17,6 @@ func resourceAwsEcsTaskDefinition() *schema.Resource { return &schema.Resource{ Create: resourceAwsEcsTaskDefinitionCreate, Read: resourceAwsEcsTaskDefinitionRead, - Update: resourceAwsEcsTaskDefinitionUpdate, Delete: resourceAwsEcsTaskDefinitionDelete, Schema: map[string]*schema.Schema{ @@ -40,6 +39,7 @@ func resourceAwsEcsTaskDefinition() *schema.Resource { "container_definitions": &schema.Schema{ Type: schema.TypeString, Required: true, + ForceNew: true, StateFunc: func(v interface{}) string { hash := sha1.Sum([]byte(v.(string))) return hex.EncodeToString(hash[:]) @@ -49,6 +49,7 @@ func resourceAwsEcsTaskDefinition() *schema.Resource { "volume": &schema.Schema{ Type: schema.TypeSet, Optional: true, + ForceNew: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "name": &schema.Schema{ @@ -131,29 +132,6 @@ func resourceAwsEcsTaskDefinitionRead(d *schema.ResourceData, meta interface{}) return nil } -func resourceAwsEcsTaskDefinitionUpdate(d *schema.ResourceData, meta interface{}) error { - oldArn := d.Get("arn").(string) - - log.Printf("[DEBUG] Creating new revision of task definition %q", d.Id()) - err := resourceAwsEcsTaskDefinitionCreate(d, meta) - if err != nil { - return err - } - log.Printf("[DEBUG] New revision of %q created: %q", d.Id(), d.Get("arn").(string)) - - log.Printf("[DEBUG] Deregistering old revision of task definition %q: %q", d.Id(), oldArn) - conn := meta.(*AWSClient).ecsconn - _, err = conn.DeregisterTaskDefinition(&ecs.DeregisterTaskDefinitionInput{ - TaskDefinition: aws.String(oldArn), - }) - if err != nil { - return err - } - log.Printf("[DEBUG] Old revision of task definition deregistered: %q", oldArn) - - return resourceAwsEcsTaskDefinitionRead(d, meta) -} - func resourceAwsEcsTaskDefinitionDelete(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).ecsconn diff --git a/builtin/providers/aws/resource_aws_ecs_task_definition_test.go b/builtin/providers/aws/resource_aws_ecs_task_definition_test.go index de53f597e2..dcc4ef8b31 100644 --- a/builtin/providers/aws/resource_aws_ecs_task_definition_test.go +++ b/builtin/providers/aws/resource_aws_ecs_task_definition_test.go @@ -23,7 +23,7 @@ func TestAccAWSEcsTaskDefinition_basic(t *testing.T) { ), }, resource.TestStep{ - Config: testAccAWSEcsTaskDefinitionModifier, + Config: testAccAWSEcsTaskDefinitionModified, Check: resource.ComposeTestCheckFunc( testAccCheckAWSEcsTaskDefinitionExists("aws_ecs_task_definition.jenkins"), ), @@ -49,6 +49,31 @@ func TestAccAWSEcsTaskDefinition_withScratchVolume(t *testing.T) { }) } +// Regression for https://github.com/hashicorp/terraform/issues/2694 +func TestAccAWSEcsTaskDefinition_withEcsService(t *testing.T) { + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSEcsTaskDefinitionDestroy, + Steps: []resource.TestStep{ + resource.TestStep{ + Config: testAccAWSEcsTaskDefinitionWithEcsService, + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSEcsTaskDefinitionExists("aws_ecs_task_definition.sleep"), + testAccCheckAWSEcsServiceExists("aws_ecs_service.sleep-svc"), + ), + }, + resource.TestStep{ + Config: testAccAWSEcsTaskDefinitionWithEcsServiceModified, + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSEcsTaskDefinitionExists("aws_ecs_task_definition.sleep"), + testAccCheckAWSEcsServiceExists("aws_ecs_service.sleep-svc"), + ), + }, + }, + }) +} + func testAccCheckAWSEcsTaskDefinitionDestroy(s *terraform.State) error { conn := testAccProvider.Meta().(*AWSClient).ecsconn @@ -155,7 +180,72 @@ TASK_DEFINITION } ` -var testAccAWSEcsTaskDefinitionModifier = ` +var testAccAWSEcsTaskDefinitionWithEcsService = ` +resource "aws_ecs_cluster" "default" { + name = "terraform-acc-test" +} + +resource "aws_ecs_service" "sleep-svc" { + name = "tf-acc-ecs-svc" + cluster = "${aws_ecs_cluster.default.id}" + task_definition = "${aws_ecs_task_definition.sleep.arn}" + desired_count = 1 +} + +resource "aws_ecs_task_definition" "sleep" { + family = "terraform-acc-sc-volume-test" + container_definitions = <