Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
resource/aws_cloudwatch_event_target: Prevent potential panic and pas…
…sthrough custom event_bus_name in v0 state upgrade Reference: #16394 If a configuration was applied with version 3.14.0, the `event_bus_name` attribute could have a custom value and the state upgrader function would previously not pass it through. Previous output from new unit test: ``` --- FAIL: TestResourceAwsCloudWatchEventTargetStateUpgradeV0EventBusName (0.00s) resource_aws_cloudwatch_event_target_migrate_test.go:66: expected: map[string]interface {}{"arn":"arn:aws:test:us-east-1:123456789012:test", "event_bus_name":"testbus", "rule":"testrule", "target_id":"testtargetid"} got: map[string]interface {}{"arn":"arn:aws:test:us-east-1:123456789012:test", "event_bus_name":"default", "rule":"testrule", "target_id":"testtargetid"} ``` Given this configuration: ```terraform terraform { required_providers { aws = "3.14.0" } required_version = "0.12.29" } provider "aws" { region = "us-east-2" } resource "aws_cloudwatch_event_bus" "test" { name = "16394-test" } resource "aws_cloudwatch_event_rule" "test" { event_bus_name = aws_cloudwatch_event_bus.test.name event_pattern = jsonencode({ source = ["aws.ec2"] }) name = "16394-test" } resource "aws_cloudwatch_event_target" "test" { arn = aws_sns_topic.test.arn event_bus_name = aws_cloudwatch_event_bus.test.name rule = aws_cloudwatch_event_rule.test.name target_id = "16394-test" } resource "aws_sns_topic" "test" { name = "16394-test" } ``` Output from console: ```console $ terraform init ... $ terraform apply ... Apply complete! Resources: 4 added, 0 changed, 0 destroyed. # edit provider version to 3.18.0 $ terraform init ... $ terraform apply ... An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # aws_cloudwatch_event_target.test will be created + resource "aws_cloudwatch_event_target" "test" { + arn = "arn:aws:sns:us-east-2:--OMITTED--:16394-test" + event_bus_name = "16394-test" + id = (known after apply) + rule = "16394-test" + target_id = "16394-test" } Plan: 1 to add, 0 to change, 0 to destroy. # swap in built Terraform AWS Provider binary $ terraform apply ... Apply complete! Resources: 0 added, 0 changed, 0 destroyed. ``` Output from acceptance testing: ``` --- PASS: TestAccAWSCloudWatchEventTarget_basic (35.74s) --- PASS: TestAccAWSCloudWatchEventTarget_batch (140.33s) --- PASS: TestAccAWSCloudWatchEventTarget_disappears (17.51s) --- PASS: TestAccAWSCloudWatchEventTarget_ecs (28.63s) --- PASS: TestAccAWSCloudWatchEventTarget_ecsWithBlankTaskCount (31.25s) --- PASS: TestAccAWSCloudWatchEventTarget_EventBusName (32.01s) --- PASS: TestAccAWSCloudWatchEventTarget_full (59.07s) --- PASS: TestAccAWSCloudWatchEventTarget_GeneratedTargetId (16.62s) --- PASS: TestAccAWSCloudWatchEventTarget_input_transformer (47.34s) --- PASS: TestAccAWSCloudWatchEventTarget_inputTransformerJsonString (38.99s) --- PASS: TestAccAWSCloudWatchEventTarget_kinesis (59.09s) --- PASS: TestAccAWSCloudWatchEventTarget_sqs (16.71s) --- PASS: TestAccAWSCloudWatchEventTarget_ssmDocument (18.77s) ```
- Loading branch information