From aae8fc849470db75e9cdba5c55cca5cb4d0381ec Mon Sep 17 00:00:00 2001 From: Radek Simko Date: Sat, 14 Nov 2015 10:13:49 +0000 Subject: [PATCH 1/3] provider/aws: Add acceptance test for bugfix for #2694 --- .../resource_aws_ecs_task_definition_test.go | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) 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 de53f597e..8546c2eee 100644 --- a/builtin/providers/aws/resource_aws_ecs_task_definition_test.go +++ b/builtin/providers/aws/resource_aws_ecs_task_definition_test.go @@ -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,6 +180,71 @@ TASK_DEFINITION } ` +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 = < Date: Sat, 14 Nov 2015 10:04:28 +0000 Subject: [PATCH 2/3] provider/aws: Make all fields in ecs_task_definition ForceNew - fixes https://github.com/hashicorp/terraform/issues/2694 --- .../aws/resource_aws_ecs_task_definition.go | 26 ++----------------- 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/builtin/providers/aws/resource_aws_ecs_task_definition.go b/builtin/providers/aws/resource_aws_ecs_task_definition.go index 337c2aadf..b9b40d6bf 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 From 33ca2a796f74724b928b93678375a4a701e339f0 Mon Sep 17 00:00:00 2001 From: Radek Simko Date: Sat, 14 Nov 2015 12:19:29 +0000 Subject: [PATCH 3/3] Fix typo (Modifier -> Modified) --- builtin/providers/aws/resource_aws_codedeploy_app_test.go | 4 ++-- .../aws/resource_aws_codedeploy_deployment_group_test.go | 4 ++-- .../providers/aws/resource_aws_ecs_task_definition_test.go | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/builtin/providers/aws/resource_aws_codedeploy_app_test.go b/builtin/providers/aws/resource_aws_codedeploy_app_test.go index 9c016f184..9610a01a7 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 7608b1f58..3b873fe3b 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_test.go b/builtin/providers/aws/resource_aws_ecs_task_definition_test.go index 8546c2eee..dcc4ef8b3 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"), ), @@ -245,7 +245,7 @@ TASK_DEFINITION } ` -var testAccAWSEcsTaskDefinitionModifier = ` +var testAccAWSEcsTaskDefinitionModified = ` resource "aws_ecs_task_definition" "jenkins" { family = "terraform-acc-test" container_definitions = <