diff --git a/.changelog/18716.txt b/.changelog/18716.txt new file mode 100644 index 000000000000..c2bf6e49db1c --- /dev/null +++ b/.changelog/18716.txt @@ -0,0 +1,15 @@ +```release-note:enhancement +resource/aws_codedeploy_deployment_group: Add `arn`, `compute_platform`, and `deployment_group_id` attributes +``` + +```release-note:enhancement +resource/aws_codedeploy_deployment_group: Add `tags` argument +``` + +```release-note:enhancement +resource/aws_codedeploy_deployment_group: Add plan time validation for `terminate_blue_instances_on_deployment_success.termination_wait_time_in_minutes`, `service_role_arn`, `load_balancer_info.target_group_pair_info.prod_traffic_route.listener_arns`, `load_balancer_info.target_group_pair_info.test_traffic_route.listener_arns`, `trigger_configuration.trigger_target_arn` +``` + +```release-note:enhancement +resource/aws_codedeploy_deployment_group: Updating `deployment_group_name` doesnt recreate group +``` \ No newline at end of file diff --git a/aws/resource_aws_codedeploy_deployment_group.go b/aws/resource_aws_codedeploy_deployment_group.go index e105f1ff3c6b..c0e76bba9879 100644 --- a/aws/resource_aws_codedeploy_deployment_group.go +++ b/aws/resource_aws_codedeploy_deployment_group.go @@ -9,12 +9,13 @@ import ( "time" "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awserr" + "github.com/aws/aws-sdk-go/aws/arn" "github.com/aws/aws-sdk-go/service/codedeploy" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/terraform-providers/terraform-provider-aws/aws/internal/hashcode" + "github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags" ) func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { @@ -60,18 +61,28 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { }, Schema: map[string]*schema.Schema{ + "arn": { + Type: schema.TypeString, + Computed: true, + }, "app_name": { Type: schema.TypeString, Required: true, ValidateFunc: validation.StringLenBetween(0, 100), }, - + "compute_platform": { + Type: schema.TypeString, + Computed: true, + }, "deployment_group_name": { Type: schema.TypeString, Required: true, - ForceNew: true, ValidateFunc: validation.StringLenBetween(0, 100), }, + "deployment_group_id": { + Type: schema.TypeString, + Computed: true, + }, "deployment_style": { Type: schema.TypeList, @@ -81,22 +92,16 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "deployment_option": { - Type: schema.TypeString, - Optional: true, - Default: codedeploy.DeploymentOptionWithoutTrafficControl, - ValidateFunc: validation.StringInSlice([]string{ - codedeploy.DeploymentOptionWithTrafficControl, - codedeploy.DeploymentOptionWithoutTrafficControl, - }, false), + Type: schema.TypeString, + Optional: true, + Default: codedeploy.DeploymentOptionWithoutTrafficControl, + ValidateFunc: validation.StringInSlice(codedeploy.DeploymentOption_Values(), false), }, "deployment_type": { - Type: schema.TypeString, - Optional: true, - Default: codedeploy.DeploymentTypeInPlace, - ValidateFunc: validation.StringInSlice([]string{ - codedeploy.DeploymentTypeInPlace, - codedeploy.DeploymentTypeBlueGreen, - }, false), + Type: schema.TypeString, + Optional: true, + Default: codedeploy.DeploymentTypeInPlace, + ValidateFunc: validation.StringInSlice(codedeploy.DeploymentType_Values(), false), }, }, }, @@ -116,12 +121,9 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "action_on_timeout": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validation.StringInSlice([]string{ - codedeploy.DeploymentReadyActionContinueDeployment, - codedeploy.DeploymentReadyActionStopDeployment, - }, false), + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(codedeploy.DeploymentReadyAction_Values(), false), }, "wait_time_in_minutes": { Type: schema.TypeInt, @@ -139,12 +141,9 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "action": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validation.StringInSlice([]string{ - codedeploy.GreenFleetProvisioningActionDiscoverExisting, - codedeploy.GreenFleetProvisioningActionCopyAutoScalingGroup, - }, false), + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(codedeploy.GreenFleetProvisioningAction_Values(), false), }, }, }, @@ -157,16 +156,14 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "action": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validation.StringInSlice([]string{ - codedeploy.InstanceActionTerminate, - codedeploy.InstanceActionKeepAlive, - }, false), + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(codedeploy.InstanceAction_Values(), false), }, "termination_wait_time_in_minutes": { - Type: schema.TypeInt, - Optional: true, + Type: schema.TypeInt, + Optional: true, + ValidateFunc: validation.IntAtMost(2880), }, }, }, @@ -176,8 +173,9 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { }, "service_role_arn": { - Type: schema.TypeString, - Required: true, + Type: schema.TypeString, + Required: true, + ValidateFunc: validateArn, }, "alarm_configuration": { @@ -258,7 +256,10 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { "listener_arns": { Type: schema.TypeSet, Required: true, - Elem: &schema.Schema{Type: schema.TypeString}, + Elem: &schema.Schema{ + Type: schema.TypeString, + ValidateFunc: validateArn, + }, }, }, }, @@ -287,7 +288,10 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { "listener_arns": { Type: schema.TypeSet, Required: true, - Elem: &schema.Schema{Type: schema.TypeString}, + Elem: &schema.Schema{ + Type: schema.TypeString, + ValidateFunc: validateArn, + }, }, }, }, @@ -448,19 +452,8 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { Required: true, Set: schema.HashString, Elem: &schema.Schema{ - Type: schema.TypeString, - ValidateFunc: validation.StringInSlice([]string{ - codedeploy.TriggerEventTypeDeploymentStart, - codedeploy.TriggerEventTypeDeploymentSuccess, - codedeploy.TriggerEventTypeDeploymentFailure, - codedeploy.TriggerEventTypeDeploymentStop, - codedeploy.TriggerEventTypeDeploymentRollback, - codedeploy.TriggerEventTypeDeploymentReady, - codedeploy.TriggerEventTypeInstanceStart, - codedeploy.TriggerEventTypeInstanceSuccess, - codedeploy.TriggerEventTypeInstanceFailure, - codedeploy.TriggerEventTypeInstanceReady, - }, false), + Type: schema.TypeString, + ValidateFunc: validation.StringInSlice(codedeploy.TriggerEventType_Values(), false), }, }, @@ -470,13 +463,15 @@ func resourceAwsCodeDeployDeploymentGroup() *schema.Resource { }, "trigger_target_arn": { - Type: schema.TypeString, - Required: true, + Type: schema.TypeString, + Required: true, + ValidateFunc: validateArn, }, }, }, Set: resourceAwsCodeDeployTriggerConfigHash, }, + "tags": tagsSchema(), }, } } @@ -493,6 +488,7 @@ func resourceAwsCodeDeployDeploymentGroupCreate(d *schema.ResourceData, meta int ApplicationName: aws.String(applicationName), DeploymentGroupName: aws.String(deploymentGroupName), ServiceRoleArn: aws.String(serviceRoleArn), + Tags: keyvaluetags.New(d.Get("tags").(map[string]interface{})).IgnoreAws().CodedeployTags(), } if attr, ok := d.GetOk("deployment_style"); ok { @@ -571,7 +567,7 @@ func resourceAwsCodeDeployDeploymentGroupCreate(d *schema.ResourceData, meta int resp, err = conn.CreateDeploymentGroup(&input) } if err != nil { - return fmt.Errorf("Error creating CodeDeploy deployment group: %s", err) + return fmt.Errorf("Error creating CodeDeploy deployment group: %w", err) } d.SetId(aws.StringValue(resp.DeploymentGroupId)) @@ -581,75 +577,102 @@ func resourceAwsCodeDeployDeploymentGroupCreate(d *schema.ResourceData, meta int func resourceAwsCodeDeployDeploymentGroupRead(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).codedeployconn + ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig log.Printf("[DEBUG] Reading CodeDeploy DeploymentGroup %s", d.Id()) + deploymentGroupName := d.Get("deployment_group_name").(string) resp, err := conn.GetDeploymentGroup(&codedeploy.GetDeploymentGroupInput{ ApplicationName: aws.String(d.Get("app_name").(string)), - DeploymentGroupName: aws.String(d.Get("deployment_group_name").(string)), + DeploymentGroupName: aws.String(deploymentGroupName), }) if err != nil { - if ec2err, ok := err.(awserr.Error); ok && ec2err.Code() == "DeploymentGroupDoesNotExistException" { - log.Printf("[INFO] CodeDeployment DeploymentGroup %s not found", d.Get("deployment_group_name").(string)) + if isAWSErr(err, codedeploy.ErrCodeDeploymentGroupDoesNotExistException, "") || + isAWSErr(err, codedeploy.ErrCodeApplicationDoesNotExistException, "") { + log.Printf("[INFO] CodeDeployment DeploymentGroup %s not found", deploymentGroupName) d.SetId("") return nil } - return err - } - - d.Set("app_name", resp.DeploymentGroupInfo.ApplicationName) - d.Set("deployment_config_name", resp.DeploymentGroupInfo.DeploymentConfigName) - d.Set("deployment_group_name", resp.DeploymentGroupInfo.DeploymentGroupName) - d.Set("service_role_arn", resp.DeploymentGroupInfo.ServiceRoleArn) - - autoScalingGroups := make([]string, len(resp.DeploymentGroupInfo.AutoScalingGroups)) - for i, autoScalingGroup := range resp.DeploymentGroupInfo.AutoScalingGroups { + return fmt.Errorf("Error reading CodeDeploy deployment group (%s): %w", d.Id(), err) + } + + group := resp.DeploymentGroupInfo + appName := aws.StringValue(group.ApplicationName) + groupName := aws.StringValue(group.DeploymentGroupName) + groupArn := arn.ARN{ + Partition: meta.(*AWSClient).partition, + Service: "codedeploy", + Region: meta.(*AWSClient).region, + AccountID: meta.(*AWSClient).accountid, + Resource: fmt.Sprintf("deploymentgroup:%s/%s", appName, groupName), + }.String() + + d.Set("arn", groupArn) + d.Set("app_name", appName) + d.Set("deployment_config_name", group.DeploymentConfigName) + d.Set("deployment_group_name", group.DeploymentGroupName) + d.Set("deployment_group_id", group.DeploymentGroupId) + d.Set("compute_platform", group.ComputePlatform) + d.Set("service_role_arn", group.ServiceRoleArn) + + autoScalingGroups := make([]string, len(group.AutoScalingGroups)) + for i, autoScalingGroup := range group.AutoScalingGroups { autoScalingGroups[i] = aws.StringValue(autoScalingGroup.Name) } if err := d.Set("autoscaling_groups", autoScalingGroups); err != nil { - return fmt.Errorf("error setting autoscaling_groups: %s", err) + return fmt.Errorf("error setting autoscaling_groups: %w", err) } - if err := d.Set("deployment_style", flattenDeploymentStyle(resp.DeploymentGroupInfo.DeploymentStyle)); err != nil { - return err + if err := d.Set("deployment_style", flattenDeploymentStyle(group.DeploymentStyle)); err != nil { + return fmt.Errorf("error setting deployment_style: %w", err) } - if err := d.Set("ec2_tag_set", ec2TagSetToMap(resp.DeploymentGroupInfo.Ec2TagSet)); err != nil { - return err + if err := d.Set("ec2_tag_set", ec2TagSetToMap(group.Ec2TagSet)); err != nil { + return fmt.Errorf("error setting ec2_tag_set: %w", err) } - if err := d.Set("ec2_tag_filter", ec2TagFiltersToMap(resp.DeploymentGroupInfo.Ec2TagFilters)); err != nil { - return err + if err := d.Set("ec2_tag_filter", ec2TagFiltersToMap(group.Ec2TagFilters)); err != nil { + return fmt.Errorf("error setting ec2_tag_filter: %w", err) } - if err := d.Set("ecs_service", flattenCodeDeployEcsServices(resp.DeploymentGroupInfo.EcsServices)); err != nil { - return fmt.Errorf("error setting ecs_service: %s", err) + if err := d.Set("ecs_service", flattenCodeDeployEcsServices(group.EcsServices)); err != nil { + return fmt.Errorf("error setting ecs_service: %w", err) } - if err := d.Set("on_premises_instance_tag_filter", onPremisesTagFiltersToMap(resp.DeploymentGroupInfo.OnPremisesInstanceTagFilters)); err != nil { - return err + if err := d.Set("on_premises_instance_tag_filter", onPremisesTagFiltersToMap(group.OnPremisesInstanceTagFilters)); err != nil { + return fmt.Errorf("error setting on_premises_instance_tag_filter: %w", err) } - if err := d.Set("trigger_configuration", triggerConfigsToMap(resp.DeploymentGroupInfo.TriggerConfigurations)); err != nil { - return err + if err := d.Set("trigger_configuration", triggerConfigsToMap(group.TriggerConfigurations)); err != nil { + return fmt.Errorf("error setting trigger_configuration: %w", err) } - if err := d.Set("auto_rollback_configuration", autoRollbackConfigToMap(resp.DeploymentGroupInfo.AutoRollbackConfiguration)); err != nil { - return err + if err := d.Set("auto_rollback_configuration", autoRollbackConfigToMap(group.AutoRollbackConfiguration)); err != nil { + return fmt.Errorf("error setting auto_rollback_configuration: %w", err) } - if err := d.Set("alarm_configuration", alarmConfigToMap(resp.DeploymentGroupInfo.AlarmConfiguration)); err != nil { - return err + if err := d.Set("alarm_configuration", alarmConfigToMap(group.AlarmConfiguration)); err != nil { + return fmt.Errorf("error setting alarm_configuration: %w", err) } - if err := d.Set("load_balancer_info", flattenLoadBalancerInfo(resp.DeploymentGroupInfo.LoadBalancerInfo)); err != nil { - return err + if err := d.Set("load_balancer_info", flattenLoadBalancerInfo(group.LoadBalancerInfo)); err != nil { + return fmt.Errorf("error setting load_balancer_info: %w", err) } - if err := d.Set("blue_green_deployment_config", flattenBlueGreenDeploymentConfig(resp.DeploymentGroupInfo.BlueGreenDeploymentConfiguration)); err != nil { - return err + if err := d.Set("blue_green_deployment_config", flattenBlueGreenDeploymentConfig(group.BlueGreenDeploymentConfiguration)); err != nil { + return fmt.Errorf("error setting blue_green_deployment_config: %w", err) + } + + tags, err := keyvaluetags.CodedeployListTags(conn, groupArn) + + if err != nil { + return fmt.Errorf("error listing tags for CodeDeploy Deployment Group (%s): %w", d.Id(), err) + } + + if err := d.Set("tags", tags.IgnoreAws().IgnoreConfig(ignoreTagsConfig).Map()); err != nil { + return fmt.Errorf("error setting tags: %w", err) } return nil @@ -658,113 +681,123 @@ func resourceAwsCodeDeployDeploymentGroupRead(d *schema.ResourceData, meta inter func resourceAwsCodeDeployDeploymentGroupUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).codedeployconn - // required fields - applicationName := d.Get("app_name").(string) - deploymentGroupName := d.Get("deployment_group_name").(string) - serviceRoleArn := d.Get("service_role_arn").(string) + if d.HasChangeExcept("tags") { + // required fields + applicationName := d.Get("app_name").(string) + deploymentGroupName := d.Get("deployment_group_name").(string) + serviceRoleArn := d.Get("service_role_arn").(string) - input := codedeploy.UpdateDeploymentGroupInput{ - ApplicationName: aws.String(applicationName), - CurrentDeploymentGroupName: aws.String(deploymentGroupName), - ServiceRoleArn: aws.String(serviceRoleArn), - } + input := codedeploy.UpdateDeploymentGroupInput{ + ApplicationName: aws.String(applicationName), + CurrentDeploymentGroupName: aws.String(deploymentGroupName), + ServiceRoleArn: aws.String(serviceRoleArn), + } - if d.HasChange("deployment_group_name") { - _, n := d.GetChange("deployment_group_name") - input.NewDeploymentGroupName = aws.String(n.(string)) - } + if d.HasChange("deployment_group_name") { + _, n := d.GetChange("deployment_group_name") + input.NewDeploymentGroupName = aws.String(n.(string)) + } - if d.HasChange("deployment_style") { - _, n := d.GetChange("deployment_style") - input.DeploymentStyle = expandDeploymentStyle(n.([]interface{})) - } + if d.HasChange("deployment_style") { + _, n := d.GetChange("deployment_style") + input.DeploymentStyle = expandDeploymentStyle(n.([]interface{})) + } - if d.HasChange("deployment_config_name") { - _, n := d.GetChange("deployment_config_name") - input.DeploymentConfigName = aws.String(n.(string)) - } + if d.HasChange("deployment_config_name") { + _, n := d.GetChange("deployment_config_name") + input.DeploymentConfigName = aws.String(n.(string)) + } - // include (original or new) autoscaling groups when blue_green_deployment_config changes except for ECS - if _, isEcs := d.GetOk("ecs_service"); d.HasChange("autoscaling_groups") || (d.HasChange("blue_green_deployment_config") && !isEcs) { - _, n := d.GetChange("autoscaling_groups") - input.AutoScalingGroups = expandStringSet(n.(*schema.Set)) - } + // include (original or new) autoscaling groups when blue_green_deployment_config changes except for ECS + if _, isEcs := d.GetOk("ecs_service"); d.HasChange("autoscaling_groups") || (d.HasChange("blue_green_deployment_config") && !isEcs) { + _, n := d.GetChange("autoscaling_groups") + input.AutoScalingGroups = expandStringSet(n.(*schema.Set)) + } - // TagFilters aren't like tags. They don't append. They simply replace. - if d.HasChange("on_premises_instance_tag_filter") { - _, n := d.GetChange("on_premises_instance_tag_filter") - onPremFilters := buildOnPremTagFilters(n.(*schema.Set).List()) - input.OnPremisesInstanceTagFilters = onPremFilters - } + // TagFilters aren't like tags. They don't append. They simply replace. + if d.HasChange("on_premises_instance_tag_filter") { + _, n := d.GetChange("on_premises_instance_tag_filter") + onPremFilters := buildOnPremTagFilters(n.(*schema.Set).List()) + input.OnPremisesInstanceTagFilters = onPremFilters + } - if d.HasChange("ec2_tag_set") { - _, n := d.GetChange("ec2_tag_set") - ec2TagSet := buildEC2TagSet(n.(*schema.Set).List()) - input.Ec2TagSet = ec2TagSet - } + if d.HasChange("ec2_tag_set") { + _, n := d.GetChange("ec2_tag_set") + ec2TagSet := buildEC2TagSet(n.(*schema.Set).List()) + input.Ec2TagSet = ec2TagSet + } - if d.HasChange("ec2_tag_filter") { - _, n := d.GetChange("ec2_tag_filter") - ec2Filters := buildEC2TagFilters(n.(*schema.Set).List()) - input.Ec2TagFilters = ec2Filters - } + if d.HasChange("ec2_tag_filter") { + _, n := d.GetChange("ec2_tag_filter") + ec2Filters := buildEC2TagFilters(n.(*schema.Set).List()) + input.Ec2TagFilters = ec2Filters + } - if d.HasChange("ecs_service") { - input.EcsServices = expandCodeDeployEcsServices(d.Get("ecs_service").([]interface{})) - } + if d.HasChange("ecs_service") { + input.EcsServices = expandCodeDeployEcsServices(d.Get("ecs_service").([]interface{})) + } - if d.HasChange("trigger_configuration") { - _, n := d.GetChange("trigger_configuration") - triggerConfigs := buildTriggerConfigs(n.(*schema.Set).List()) - input.TriggerConfigurations = triggerConfigs - } + if d.HasChange("trigger_configuration") { + _, n := d.GetChange("trigger_configuration") + triggerConfigs := buildTriggerConfigs(n.(*schema.Set).List()) + input.TriggerConfigurations = triggerConfigs + } - if d.HasChange("auto_rollback_configuration") { - _, n := d.GetChange("auto_rollback_configuration") - input.AutoRollbackConfiguration = buildAutoRollbackConfig(n.([]interface{})) - } + if d.HasChange("auto_rollback_configuration") { + _, n := d.GetChange("auto_rollback_configuration") + input.AutoRollbackConfiguration = buildAutoRollbackConfig(n.([]interface{})) + } - if d.HasChange("alarm_configuration") { - _, n := d.GetChange("alarm_configuration") - input.AlarmConfiguration = buildAlarmConfig(n.([]interface{})) - } + if d.HasChange("alarm_configuration") { + _, n := d.GetChange("alarm_configuration") + input.AlarmConfiguration = buildAlarmConfig(n.([]interface{})) + } - if d.HasChange("load_balancer_info") { - _, n := d.GetChange("load_balancer_info") - input.LoadBalancerInfo = expandLoadBalancerInfo(n.([]interface{})) - } + if d.HasChange("load_balancer_info") { + _, n := d.GetChange("load_balancer_info") + input.LoadBalancerInfo = expandLoadBalancerInfo(n.([]interface{})) + } - if d.HasChange("blue_green_deployment_config") { - _, n := d.GetChange("blue_green_deployment_config") - input.BlueGreenDeploymentConfiguration = expandBlueGreenDeploymentConfig(n.([]interface{})) - } + if d.HasChange("blue_green_deployment_config") { + _, n := d.GetChange("blue_green_deployment_config") + input.BlueGreenDeploymentConfiguration = expandBlueGreenDeploymentConfig(n.([]interface{})) + } - log.Printf("[DEBUG] Updating CodeDeploy DeploymentGroup %s", d.Id()) + log.Printf("[DEBUG] Updating CodeDeploy DeploymentGroup %s", d.Id()) - var err error - err = resource.Retry(5*time.Minute, func() *resource.RetryError { - _, err = conn.UpdateDeploymentGroup(&input) + var err error + err = resource.Retry(5*time.Minute, func() *resource.RetryError { + _, err = conn.UpdateDeploymentGroup(&input) - if isAWSErr(err, codedeploy.ErrCodeInvalidRoleException, "") { - return resource.RetryableError(err) - } + if isAWSErr(err, codedeploy.ErrCodeInvalidRoleException, "") { + return resource.RetryableError(err) + } - if isAWSErr(err, codedeploy.ErrCodeInvalidTriggerConfigException, "Topic ARN") { - return resource.RetryableError(err) - } + if isAWSErr(err, codedeploy.ErrCodeInvalidTriggerConfigException, "Topic ARN") { + return resource.RetryableError(err) + } + + if err != nil { + return resource.NonRetryableError(err) + } + + return nil + }) + if isResourceTimeoutError(err) { + _, err = conn.UpdateDeploymentGroup(&input) + } if err != nil { - return resource.NonRetryableError(err) + return fmt.Errorf("Error updating CodeDeploy deployment group: %w", err) } + } - return nil - }) + if d.HasChange("tags") { + o, n := d.GetChange("tags") - if isResourceTimeoutError(err) { - _, err = conn.UpdateDeploymentGroup(&input) - } - if err != nil { - return fmt.Errorf("Error updating CodeDeploy deployment group: %s", err) + if err := keyvaluetags.CodedeployUpdateTags(conn, d.Get("arn").(string), o, n); err != nil { + return fmt.Errorf("error updating CodeDeploy Deployment Group (%s) tags: %w", d.Get("arn").(string), err) + } } return resourceAwsCodeDeployDeploymentGroupRead(d, meta) @@ -779,7 +812,14 @@ func resourceAwsCodeDeployDeploymentGroupDelete(d *schema.ResourceData, meta int DeploymentGroupName: aws.String(d.Get("deployment_group_name").(string)), }) - return err + if err != nil { + if isAWSErr(err, codedeploy.ErrCodeDeploymentGroupDoesNotExistException, "") { + return nil + } + return err + } + + return nil } // buildOnPremTagFilters converts raw schema lists into a list of diff --git a/aws/resource_aws_codedeploy_deployment_group_test.go b/aws/resource_aws_codedeploy_deployment_group_test.go index e91633029dbe..2177495980f8 100644 --- a/aws/resource_aws_codedeploy_deployment_group_test.go +++ b/aws/resource_aws_codedeploy_deployment_group_test.go @@ -6,7 +6,6 @@ import ( "regexp" "sort" "testing" - "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" @@ -33,6 +32,7 @@ func TestAccAWSCodeDeployDeploymentGroup_basic(t *testing.T) { Config: testAccAWSCodeDeployDeploymentGroup(rName, false), Check: resource.ComposeTestCheckFunc( testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), + testAccCheckResourceAttrRegionalARN(resourceName, "arn", "codedeploy", fmt.Sprintf(`deploymentgroup:%s/%s`, "tf-acc-test-"+rName, "tf-acc-test-"+rName)), resource.TestCheckResourceAttr(resourceName, "app_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr(resourceName, "deployment_group_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr(resourceName, "deployment_config_name", "CodeDeployDefault.OneAtATime"), @@ -51,12 +51,16 @@ func TestAccAWSCodeDeployDeploymentGroup_basic(t *testing.T) { resource.TestCheckResourceAttr(resourceName, "alarm_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "auto_rollback_configuration.#", "0"), resource.TestCheckResourceAttr(resourceName, "trigger_configuration.#", "0"), + resource.TestCheckResourceAttr(resourceName, "compute_platform", "Server"), + resource.TestCheckResourceAttrSet(resourceName, "deployment_group_id"), + resource.TestCheckResourceAttr(resourceName, "tags.%", "0"), ), }, { Config: testAccAWSCodeDeployDeploymentGroupModified(rName, false), Check: resource.ComposeTestCheckFunc( testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), + testAccCheckResourceAttrRegionalARN(resourceName, "arn", "codedeploy", fmt.Sprintf(`deploymentgroup:%s/%s`, "tf-acc-test-"+rName, "tf-acc-test-updated-"+rName)), resource.TestCheckResourceAttr(resourceName, "app_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr(resourceName, "deployment_group_name", "tf-acc-test-updated-"+rName), resource.TestCheckResourceAttr(resourceName, "deployment_config_name", "CodeDeployDefault.OneAtATime"), @@ -159,7 +163,7 @@ func TestAccAWSCodeDeployDeploymentGroup_basic_tagSet(t *testing.T) { func TestAccAWSCodeDeployDeploymentGroup_onPremiseTag(t *testing.T) { var group codedeploy.DeploymentGroupInfo - + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) resource.ParallelTest(t, resource.TestCase{ @@ -171,17 +175,17 @@ func TestAccAWSCodeDeployDeploymentGroup_onPremiseTag(t *testing.T) { { Config: testAccAWSCodeDeployDeploymentGroupOnPremiseTags(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "app_name", "tf-acc-test-"+rName), + resourceName, "app_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_group_name", "tf-acc-test-"+rName), + resourceName, "deployment_group_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_config_name", "CodeDeployDefault.OneAtATime"), + resourceName, "deployment_config_name", "CodeDeployDefault.OneAtATime"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "on_premises_instance_tag_filter.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "on_premises_instance_tag_filter.*", map[string]string{ + resourceName, "on_premises_instance_tag_filter.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "on_premises_instance_tag_filter.*", map[string]string{ "key": "filterkey", "type": "KEY_AND_VALUE", "value": "filtervalue", @@ -189,9 +193,9 @@ func TestAccAWSCodeDeployDeploymentGroup_onPremiseTag(t *testing.T) { ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -200,6 +204,30 @@ func TestAccAWSCodeDeployDeploymentGroup_onPremiseTag(t *testing.T) { func TestAccAWSCodeDeployDeploymentGroup_disappears(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" + rName := acctest.RandString(5) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ErrorCheck: testAccErrorCheck(t, codedeploy.EndpointsID), + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSCodeDeployDeploymentGroupDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSCodeDeployDeploymentGroup(rName, false), + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), + testAccCheckResourceDisappears(testAccProvider, resourceAwsCodeDeployDeploymentGroup(), resourceName), + ), + ExpectNonEmptyPlan: true, + }, + }, + }) +} + +func TestAccAWSCodeDeployDeploymentGroup_disappears_app(t *testing.T) { + var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) resource.ParallelTest(t, resource.TestCase{ @@ -211,8 +239,8 @@ func TestAccAWSCodeDeployDeploymentGroup_disappears(t *testing.T) { { Config: testAccAWSCodeDeployDeploymentGroup(rName, false), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), - testAccAWSCodeDeployDeploymentGroupDisappears(&group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), + testAccCheckResourceDisappears(testAccProvider, resourceAwsCodeDeployApp(), "aws_codedeploy_app.test"), ), ExpectNonEmptyPlan: true, }, @@ -220,8 +248,56 @@ func TestAccAWSCodeDeployDeploymentGroup_disappears(t *testing.T) { }) } +func TestAccAWSCodeDeployDeploymentGroup_tags(t *testing.T) { + var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" + + rName := acctest.RandString(5) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ErrorCheck: testAccErrorCheck(t, codedeploy.EndpointsID), + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSCodeDeployDeploymentGroupDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSCodeDeployDeploymentGroupConfigTags1(rName, "key1", "value1"), + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), + resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), + resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), + ImportStateVerify: true, + }, + { + Config: testAccAWSCodeDeployDeploymentGroupConfigTags2(rName, "key1", "value1updated", "key2", "value2"), + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), + resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), + resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1updated"), + resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), + ), + }, + { + Config: testAccAWSCodeDeployDeploymentGroupConfigTags1(rName, "key2", "value2"), + Check: resource.ComposeTestCheckFunc( + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), + resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), + resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), + ), + }, + }, + }) +} + func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_basic(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -234,11 +310,11 @@ func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_basic(t *testing.T { Config: testAccAWSCodeDeployDeploymentGroup_triggerConfiguration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "app_name", "tf-acc-test-"+rName), + resourceName, "app_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_group_name", "tf-acc-test-"+rName), + resourceName, "deployment_group_name", "tf-acc-test-"+rName), testAccCheckCodeDeployDeploymentGroupTriggerEvents(&group, "test-trigger", []string{ "DeploymentFailure", }), @@ -247,11 +323,11 @@ func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_basic(t *testing.T { Config: testAccAWSCodeDeployDeploymentGroup_triggerConfiguration_update(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "app_name", "tf-acc-test-"+rName), + resourceName, "app_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_group_name", "tf-acc-test-"+rName), + resourceName, "deployment_group_name", "tf-acc-test-"+rName), testAccCheckCodeDeployDeploymentGroupTriggerEvents(&group, "test-trigger", []string{ "DeploymentFailure", "DeploymentSuccess", @@ -259,9 +335,9 @@ func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_basic(t *testing.T ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -270,6 +346,7 @@ func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_basic(t *testing.T func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_multiple(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -282,11 +359,11 @@ func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_multiple(t *testin { Config: testAccAWSCodeDeployDeploymentGroup_triggerConfiguration_createMultiple(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "app_name", "tf-acc-test-"+rName), + resourceName, "app_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_group_name", "tf-acc-test-"+rName), + resourceName, "deployment_group_name", "tf-acc-test-"+rName), testAccCheckCodeDeployDeploymentGroupTriggerEvents(&group, "test-trigger-1", []string{ "DeploymentFailure", }), @@ -300,11 +377,11 @@ func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_multiple(t *testin { Config: testAccAWSCodeDeployDeploymentGroup_triggerConfiguration_updateMultiple(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "app_name", "tf-acc-test-"+rName), + resourceName, "app_name", "tf-acc-test-"+rName), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_group_name", "tf-acc-test-"+rName), + resourceName, "deployment_group_name", "tf-acc-test-"+rName), testAccCheckCodeDeployDeploymentGroupTriggerEvents(&group, "test-trigger-1", []string{ "DeploymentFailure", "DeploymentStart", @@ -319,9 +396,9 @@ func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_multiple(t *testin ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -330,6 +407,7 @@ func TestAccAWSCodeDeployDeploymentGroup_triggerConfiguration_multiple(t *testin func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_create(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -342,20 +420,20 @@ func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_create(t *tes { Config: test_config_auto_rollback_configuration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.#", "1"), + resourceName, "auto_rollback_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.enabled", "true"), + resourceName, "auto_rollback_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), + resourceName, "auto_rollback_configuration.0.events.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -364,6 +442,7 @@ func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_create(t *tes func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_update(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -376,34 +455,34 @@ func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_update(t *tes { Config: test_config_auto_rollback_configuration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.#", "1"), + resourceName, "auto_rollback_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.enabled", "true"), + resourceName, "auto_rollback_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), + resourceName, "auto_rollback_configuration.0.events.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), ), }, { Config: test_config_auto_rollback_configuration_update(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.#", "1"), + resourceName, "auto_rollback_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.enabled", "true"), + resourceName, "auto_rollback_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.#", "2"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.*", "DEPLOYMENT_STOP_ON_ALARM"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), + resourceName, "auto_rollback_configuration.0.events.#", "2"), + resource.TestCheckTypeSetElemAttr(resourceName, "auto_rollback_configuration.0.events.*", "DEPLOYMENT_STOP_ON_ALARM"), + resource.TestCheckTypeSetElemAttr(resourceName, "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -412,6 +491,7 @@ func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_update(t *tes func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_delete(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -424,28 +504,28 @@ func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_delete(t *tes { Config: test_config_auto_rollback_configuration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.#", "1"), + resourceName, "auto_rollback_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.enabled", "true"), + resourceName, "auto_rollback_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), + resourceName, "auto_rollback_configuration.0.events.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), ), }, { Config: test_config_auto_rollback_configuration_none(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.#", "0"), + resourceName, "auto_rollback_configuration.#", "0"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -454,6 +534,7 @@ func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_delete(t *tes func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_disable(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -466,33 +547,33 @@ func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_disable(t *te { Config: test_config_auto_rollback_configuration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.#", "1"), + resourceName, "auto_rollback_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.enabled", "true"), + resourceName, "auto_rollback_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), + resourceName, "auto_rollback_configuration.0.events.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), ), }, { Config: test_config_auto_rollback_configuration_disable(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.#", "1"), + resourceName, "auto_rollback_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.enabled", "false"), + resourceName, "auto_rollback_configuration.0.enabled", "false"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), + resourceName, "auto_rollback_configuration.0.events.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "auto_rollback_configuration.0.events.*", "DEPLOYMENT_FAILURE"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -501,6 +582,7 @@ func TestAccAWSCodeDeployDeploymentGroup_autoRollbackConfiguration_disable(t *te func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_create(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -513,22 +595,22 @@ func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_create(t *testing.T) { Config: test_config_alarm_configuration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.#", "1"), + resourceName, "alarm_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.enabled", "true"), + resourceName, "alarm_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.*", "test-alarm"), + resourceName, "alarm_configuration.0.alarms.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "alarm_configuration.0.alarms.*", "test-alarm"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.ignore_poll_alarm_failure", "false"), + resourceName, "alarm_configuration.0.ignore_poll_alarm_failure", "false"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -537,6 +619,7 @@ func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_create(t *testing.T) func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_update(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -549,38 +632,38 @@ func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_update(t *testing.T) { Config: test_config_alarm_configuration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.#", "1"), + resourceName, "alarm_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.enabled", "true"), + resourceName, "alarm_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.*", "test-alarm"), + resourceName, "alarm_configuration.0.alarms.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "alarm_configuration.0.alarms.*", "test-alarm"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.ignore_poll_alarm_failure", "false"), + resourceName, "alarm_configuration.0.ignore_poll_alarm_failure", "false"), ), }, { Config: test_config_alarm_configuration_update(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.#", "1"), + resourceName, "alarm_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.enabled", "true"), + resourceName, "alarm_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.#", "2"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.*", "test-alarm"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.*", "test-alarm-2"), + resourceName, "alarm_configuration.0.alarms.#", "2"), + resource.TestCheckTypeSetElemAttr(resourceName, "alarm_configuration.0.alarms.*", "test-alarm"), + resource.TestCheckTypeSetElemAttr(resourceName, "alarm_configuration.0.alarms.*", "test-alarm-2"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.ignore_poll_alarm_failure", "true"), + resourceName, "alarm_configuration.0.ignore_poll_alarm_failure", "true"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -589,6 +672,7 @@ func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_update(t *testing.T) func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_delete(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -601,30 +685,30 @@ func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_delete(t *testing.T) { Config: test_config_alarm_configuration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.#", "1"), + resourceName, "alarm_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.enabled", "true"), + resourceName, "alarm_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.*", "test-alarm"), + resourceName, "alarm_configuration.0.alarms.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "alarm_configuration.0.alarms.*", "test-alarm"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.ignore_poll_alarm_failure", "false"), + resourceName, "alarm_configuration.0.ignore_poll_alarm_failure", "false"), ), }, { Config: test_config_alarm_configuration_none(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.#", "0"), + resourceName, "alarm_configuration.#", "0"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -633,6 +717,7 @@ func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_delete(t *testing.T) func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_disable(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -645,37 +730,37 @@ func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_disable(t *testing.T { Config: test_config_alarm_configuration_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.#", "1"), + resourceName, "alarm_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.enabled", "true"), + resourceName, "alarm_configuration.0.enabled", "true"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.*", "test-alarm"), + resourceName, "alarm_configuration.0.alarms.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "alarm_configuration.0.alarms.*", "test-alarm"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.ignore_poll_alarm_failure", "false"), + resourceName, "alarm_configuration.0.ignore_poll_alarm_failure", "false"), ), }, { Config: test_config_alarm_configuration_disable(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.#", "1"), + resourceName, "alarm_configuration.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.enabled", "false"), + resourceName, "alarm_configuration.0.enabled", "false"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.#", "1"), - resource.TestCheckTypeSetElemAttr("aws_codedeploy_deployment_group.test", "alarm_configuration.0.alarms.*", "test-alarm"), + resourceName, "alarm_configuration.0.alarms.#", "1"), + resource.TestCheckTypeSetElemAttr(resourceName, "alarm_configuration.0.alarms.*", "test-alarm"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "alarm_configuration.0.ignore_poll_alarm_failure", "false"), + resourceName, "alarm_configuration.0.ignore_poll_alarm_failure", "false"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -685,6 +770,7 @@ func TestAccAWSCodeDeployDeploymentGroup_alarmConfiguration_disable(t *testing.T // When no configuration is provided, a deploymentStyle object with default values is computed func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_default(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -697,19 +783,19 @@ func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_default(t *testing.T) { { Config: test_config_deployment_style_default(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttrSet( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option"), + resourceName, "deployment_style.0.deployment_option"), resource.TestCheckResourceAttrSet( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type"), + resourceName, "deployment_style.0.deployment_type"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -718,6 +804,7 @@ func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_default(t *testing.T) { func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_create(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -730,27 +817,27 @@ func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_create(t *testing.T) { { Config: test_config_deployment_style_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -759,6 +846,7 @@ func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_create(t *testing.T) { func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_update(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -771,31 +859,31 @@ func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_update(t *testing.T) { { Config: test_config_deployment_style_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), ), }, { Config: test_config_deployment_style_update(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITHOUT_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITHOUT_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "IN_PLACE"), + resourceName, "deployment_style.0.deployment_type", "IN_PLACE"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -805,6 +893,7 @@ func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_update(t *testing.T) { // Delete reverts to default configuration. It does not remove the deployment_style block func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_delete(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -817,31 +906,31 @@ func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_delete(t *testing.T) { { Config: test_config_deployment_style_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), ), }, { Config: test_config_deployment_style_default(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITHOUT_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITHOUT_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "IN_PLACE"), + resourceName, "deployment_style.0.deployment_type", "IN_PLACE"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -850,6 +939,7 @@ func TestAccAWSCodeDeployDeploymentGroup_deploymentStyle_delete(t *testing.T) { func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_create(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -862,20 +952,20 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_create(t *testing.T) { { Config: test_config_load_balancer_info_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -884,6 +974,7 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_create(t *testing.T) { func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_update(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -896,12 +987,12 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_update(t *testing.T) { { Config: test_config_load_balancer_info_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), @@ -909,20 +1000,20 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_update(t *testing.T) { { Config: test_config_load_balancer_info_update(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group-2", }), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -931,6 +1022,7 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_update(t *testing.T) { func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_delete(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -943,12 +1035,12 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_delete(t *testing.T) { { Config: test_config_load_balancer_info_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), @@ -956,15 +1048,15 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_delete(t *testing.T) { { Config: test_config_load_balancer_info_none(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "0"), + resourceName, "load_balancer_info.#", "0"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -973,6 +1065,7 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_delete(t *testing.T) { func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_create(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -985,21 +1078,21 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_create { Config: test_config_load_balancer_info_target_group_info_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.target_group_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.target_group_info.*", map[string]string{ + resourceName, "load_balancer_info.0.target_group_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.target_group_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -1008,6 +1101,7 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_create func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_update(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1020,12 +1114,12 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_update { Config: test_config_load_balancer_info_target_group_info_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.target_group_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.target_group_info.*", map[string]string{ + resourceName, "load_balancer_info.0.target_group_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.target_group_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), @@ -1033,20 +1127,20 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_update { Config: test_config_load_balancer_info_target_group_info_update(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.target_group_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.target_group_info.*", map[string]string{ + resourceName, "load_balancer_info.0.target_group_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.target_group_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group-2", }), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -1055,6 +1149,7 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_update func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_delete(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1067,12 +1162,12 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_delete { Config: test_config_load_balancer_info_target_group_info_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.target_group_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.target_group_info.*", map[string]string{ + resourceName, "load_balancer_info.0.target_group_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.target_group_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), @@ -1080,15 +1175,15 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_delete { Config: test_config_load_balancer_info_target_group_info_delete(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "0"), + resourceName, "load_balancer_info.#", "0"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -1097,6 +1192,7 @@ func TestAccAWSCodeDeployDeploymentGroup_loadBalancerInfo_targetGroupInfo_delete func TestAccAWSCodeDeployDeploymentGroup_inPlaceDeploymentWithTrafficControl_create(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1109,27 +1205,27 @@ func TestAccAWSCodeDeployDeploymentGroup_inPlaceDeploymentWithTrafficControl_cre { Config: test_config_in_place_deployment_with_traffic_control_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "IN_PLACE"), + resourceName, "deployment_style.0.deployment_type", "IN_PLACE"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -1138,6 +1234,7 @@ func TestAccAWSCodeDeployDeploymentGroup_inPlaceDeploymentWithTrafficControl_cre func TestAccAWSCodeDeployDeploymentGroup_inPlaceDeploymentWithTrafficControl_update(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1150,19 +1247,19 @@ func TestAccAWSCodeDeployDeploymentGroup_inPlaceDeploymentWithTrafficControl_upd { Config: test_config_in_place_deployment_with_traffic_control_create(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "IN_PLACE"), + resourceName, "deployment_style.0.deployment_type", "IN_PLACE"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), ), @@ -1170,41 +1267,41 @@ func TestAccAWSCodeDeployDeploymentGroup_inPlaceDeploymentWithTrafficControl_upd { Config: test_config_in_place_deployment_with_traffic_control_update(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "CONTINUE_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "CONTINUE_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -1213,6 +1310,7 @@ func TestAccAWSCodeDeployDeploymentGroup_inPlaceDeploymentWithTrafficControl_upd func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_create(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1225,41 +1323,41 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_create { Config: test_config_blue_green_deployment_config_create_with_asg(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "COPY_AUTO_SCALING_GROUP"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "COPY_AUTO_SCALING_GROUP"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "120"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "120"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -1268,6 +1366,7 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_create func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_update_with_asg(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1280,53 +1379,53 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_update { Config: test_config_blue_green_deployment_config_create_with_asg(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "COPY_AUTO_SCALING_GROUP"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "COPY_AUTO_SCALING_GROUP"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "120"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "120"), ), }, { Config: test_config_blue_green_deployment_config_update_with_asg(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "COPY_AUTO_SCALING_GROUP"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "COPY_AUTO_SCALING_GROUP"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), ), }, }, @@ -1335,6 +1434,7 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_update func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_update(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1347,65 +1447,65 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_update { Config: test_config_blue_green_deployment_config_create_no_asg(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "120"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "120"), ), }, { Config: test_config_blue_green_deployment_config_update_no_asg(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "CONTINUE_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "CONTINUE_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), ), }, }, @@ -1416,6 +1516,7 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_update // from configuration causes an error, because the remote resource still exists. func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_delete(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1428,53 +1529,53 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_delete { Config: test_config_blue_green_deployment_config_create_no_asg(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "120"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "120"), ), }, { Config: test_config_blue_green_deployment_config_delete(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "IN_PLACE"), + resourceName, "deployment_style.0.deployment_type", "IN_PLACE"), // The state is preserved, but AWS ignores it resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -1483,6 +1584,7 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeploymentConfiguration_delete func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeployment_complete(t *testing.T) { var group codedeploy.DeploymentGroupInfo + resourceName := "aws_codedeploy_deployment_group.test" rName := acctest.RandString(5) @@ -1495,89 +1597,89 @@ func TestAccAWSCodeDeployDeploymentGroup_blueGreenDeployment_complete(t *testing { Config: test_config_blue_green_deployment_complete(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "60"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "0"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "0"), ), }, { Config: test_config_blue_green_deployment_complete_updated(rName), Check: resource.ComposeTestCheckFunc( - testAccCheckAWSCodeDeployDeploymentGroupExists("aws_codedeploy_deployment_group.test", &group), + testAccCheckAWSCodeDeployDeploymentGroupExists(resourceName, &group), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.#", "1"), + resourceName, "deployment_style.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), + resourceName, "deployment_style.0.deployment_option", "WITH_TRAFFIC_CONTROL"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "deployment_style.0.deployment_type", "BLUE_GREEN"), + resourceName, "deployment_style.0.deployment_type", "BLUE_GREEN"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.#", "1"), + resourceName, "load_balancer_info.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.#", "1"), - resource.TestCheckTypeSetElemNestedAttrs("aws_codedeploy_deployment_group.test", "load_balancer_info.0.elb_info.*", map[string]string{ + resourceName, "load_balancer_info.0.elb_info.#", "1"), + resource.TestCheckTypeSetElemNestedAttrs(resourceName, "load_balancer_info.0.elb_info.*", map[string]string{ "name": "acc-test-codedeploy-dep-group", }), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.#", "1"), + resourceName, "blue_green_deployment_config.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.#", "1"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "CONTINUE_DEPLOYMENT"), + resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "CONTINUE_DEPLOYMENT"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), + resourceName, "blue_green_deployment_config.0.green_fleet_provisioning_option.0.action", "DISCOVER_EXISTING"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.#", "1"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "KEEP_ALIVE"), resource.TestCheckResourceAttr( - "aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "0"), + resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "0"), ), }, { - ResourceName: "aws_codedeploy_deployment_group.test", + ResourceName: resourceName, ImportState: true, - ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc("aws_codedeploy_deployment_group.test"), + ImportStateIdFunc: testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName), ImportStateVerify: true, }, }, @@ -1634,10 +1736,10 @@ func TestAccAWSCodeDeployDeploymentGroup_ECS_BlueGreen(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "load_balancer_info.0.target_group_pair_info.0.target_group.0.name", lbTargetGroupBlueResourceName, "name"), resource.TestCheckResourceAttrPair(resourceName, "load_balancer_info.0.target_group_pair_info.0.target_group.1.name", lbTargetGroupGreenResourceName, "name"), resource.TestCheckResourceAttr(resourceName, "load_balancer_info.0.target_group_pair_info.0.test_traffic_route.#", "0"), - resource.TestCheckResourceAttr("aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), - resource.TestCheckResourceAttr("aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "30"), - resource.TestCheckResourceAttr("aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), - resource.TestCheckResourceAttr("aws_codedeploy_deployment_group.test", "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "60"), + resource.TestCheckResourceAttr(resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.action_on_timeout", "STOP_DEPLOYMENT"), + resource.TestCheckResourceAttr(resourceName, "blue_green_deployment_config.0.deployment_ready_option.0.wait_time_in_minutes", "30"), + resource.TestCheckResourceAttr(resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.action", "TERMINATE"), + resource.TestCheckResourceAttr(resourceName, "blue_green_deployment_config.0.terminate_blue_instances_on_deployment_success.0.termination_wait_time_in_minutes", "60"), ), }, { @@ -2200,36 +2302,6 @@ func testAccCheckAWSCodeDeployDeploymentGroupDestroy(s *terraform.State) error { return nil } -func testAccAWSCodeDeployDeploymentGroupDisappears(group *codedeploy.DeploymentGroupInfo) resource.TestCheckFunc { - return func(s *terraform.State) error { - conn := testAccProvider.Meta().(*AWSClient).codedeployconn - opts := &codedeploy.DeleteDeploymentGroupInput{ - ApplicationName: group.ApplicationName, - DeploymentGroupName: group.DeploymentGroupName, - } - if _, err := conn.DeleteDeploymentGroup(opts); err != nil { - return err - } - return resource.Retry(40*time.Minute, func() *resource.RetryError { - opts := &codedeploy.GetDeploymentGroupInput{ - ApplicationName: group.ApplicationName, - DeploymentGroupName: group.DeploymentGroupName, - } - _, err := conn.GetDeploymentGroup(opts) - if err != nil { - codedeploy, ok := err.(awserr.Error) - if ok && codedeploy.Code() == "DeploymentGroupDoesNotExistException" { - return nil - } - return resource.NonRetryableError( - fmt.Errorf("Error retrieving CodeDeploy Deployment Group: %s", err)) - } - return resource.RetryableError(fmt.Errorf( - "Waiting for CodeDeploy Deployment Group: %v", group.DeploymentGroupName)) - }) - } -} - func testAccCheckAWSCodeDeployDeploymentGroupExists(name string, group *codedeploy.DeploymentGroupInfo) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[name] @@ -2265,38 +2337,8 @@ func testAccAWSCodeDeployDeploymentGroupImportStateIdFunc(resourceName string) r } } -func testAccAWSCodeDeployDeploymentGroup(rName string, tagGroup bool) string { - var tagGroupOrFilter string - if tagGroup { - tagGroupOrFilter = ` -ec2_tag_set { - ec2_tag_filter { - key = "filterkey" - type = "KEY_AND_VALUE" - value = "filtervalue" - } -} -` - - } else { - tagGroupOrFilter = ` -ec2_tag_filter { - key = "filterkey" - type = "KEY_AND_VALUE" - value = "filtervalue" -} -` - - } - +func testAccAWSCodeDeployDeploymentGroupConfigBase(rName string) string { return fmt.Sprintf(` -resource "aws_codedeploy_deployment_group" "test" { - app_name = aws_codedeploy_app.test.name - deployment_group_name = "tf-acc-test-%[1]s" - service_role_arn = aws_iam_role.test.arn - %[2]s -} - resource "aws_codedeploy_app" "test" { name = "tf-acc-test-%[1]s" } @@ -2353,6 +2395,40 @@ resource "aws_iam_role" "test" { } EOF } +`, rName) +} + +func testAccAWSCodeDeployDeploymentGroup(rName string, tagGroup bool) string { + var tagGroupOrFilter string + if tagGroup { + tagGroupOrFilter = ` +ec2_tag_set { + ec2_tag_filter { + key = "filterkey" + type = "KEY_AND_VALUE" + value = "filtervalue" + } +} +` + + } else { + tagGroupOrFilter = ` +ec2_tag_filter { + key = "filterkey" + type = "KEY_AND_VALUE" + value = "filtervalue" +} +` + + } + + return testAccAWSCodeDeployDeploymentGroupConfigBase(rName) + fmt.Sprintf(` +resource "aws_codedeploy_deployment_group" "test" { + app_name = aws_codedeploy_app.test.name + deployment_group_name = "tf-acc-test-%[1]s" + service_role_arn = aws_iam_role.test.arn + %[2]s +} `, rName, tagGroupOrFilter) } @@ -2380,7 +2456,7 @@ ec2_tag_filter { } - return fmt.Sprintf(` + return testAccAWSCodeDeployDeploymentGroupConfigBase(rName) + fmt.Sprintf(` resource "aws_codedeploy_deployment_group" "test" { app_name = aws_codedeploy_app.test.name deployment_group_name = "tf-acc-test-updated-%[1]s" @@ -2388,11 +2464,7 @@ resource "aws_codedeploy_deployment_group" "test" { %[2]s } -resource "aws_codedeploy_app" "test" { - name = "tf-acc-test-%[1]s" -} - -resource "aws_iam_role_policy" "test" { +resource "aws_iam_role_policy" "test_updated" { name = "tf-acc-test-%[1]s" role = aws_iam_role.test_updated.id @@ -2421,8 +2493,6 @@ resource "aws_iam_role_policy" "test" { EOF } -data "aws_partition" "current" {} - resource "aws_iam_role" "test_updated" { name = "tf-acc-test-updated-%[1]s" @@ -2448,64 +2518,7 @@ EOF } func testAccAWSCodeDeployDeploymentGroupOnPremiseTags(rName string) string { - return fmt.Sprintf(` -resource "aws_codedeploy_app" "test" { - name = "tf-acc-test-%[1]s" -} - -resource "aws_iam_role_policy" "test" { - name = "tf-acc-test-%[1]s" - role = aws_iam_role.test.id - - policy = <