From dab94dd9ffebdf0c717aa87e7101a5afd2e92186 Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Mon, 10 May 2021 01:07:53 +0300 Subject: [PATCH 1/9] add tagging support --- aws/resource_aws_lb_listener.go | 138 ++++++++++++++++------- aws/resource_aws_lb_listener_test.go | 157 +++++++++++++++++++++++++++ 2 files changed, 257 insertions(+), 38 deletions(-) diff --git a/aws/resource_aws_lb_listener.go b/aws/resource_aws_lb_listener.go index d09435ef6de..73abf450127 100644 --- a/aws/resource_aws_lb_listener.go +++ b/aws/resource_aws_lb_listener.go @@ -13,9 +13,11 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/elbv2" "github.com/hashicorp/aws-sdk-go-base/tfawserr" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff" "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/keyvaluetags" "github.com/terraform-providers/terraform-provider-aws/aws/internal/service/elbv2/finder" "github.com/terraform-providers/terraform-provider-aws/aws/internal/service/elbv2/waiter" "github.com/terraform-providers/terraform-provider-aws/aws/internal/tfresource" @@ -34,6 +36,9 @@ func resourceAwsLbListener() *schema.Resource { Timeouts: &schema.ResourceTimeout{ Read: schema.DefaultTimeout(10 * time.Minute), }, + CustomizeDiff: customdiff.Sequence( + SetTagsDiff, + ), Schema: map[string]*schema.Schema{ "alpn_policy": { @@ -355,6 +360,8 @@ func resourceAwsLbListener() *schema.Resource { Optional: true, Computed: true, }, + "tags": tagsSchema(), + "tags_all": tagsSchemaComputed(), }, } } @@ -376,6 +383,8 @@ func suppressIfDefaultActionTypeNot(t string) schema.SchemaDiffSuppressFunc { func resourceAwsLbListenerCreate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).elbv2conn + defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig + tags := defaultTagsConfig.MergeTags(keyvaluetags.New(d.Get("tags").(map[string]interface{}))) lbArn := d.Get("load_balancer_arn").(string) @@ -387,6 +396,10 @@ func resourceAwsLbListenerCreate(d *schema.ResourceData, meta interface{}) error params.Port = aws.Int64(int64(v.(int))) } + if len(tags) > 0 { + params.Tags = tags.IgnoreAws().Elbv2Tags() + } + if v, ok := d.GetOk("protocol"); ok { params.Protocol = aws.String(v.(string)) } else if strings.Contains(lbArn, "loadbalancer/app/") { @@ -455,6 +468,8 @@ func resourceAwsLbListenerCreate(d *schema.ResourceData, meta interface{}) error func resourceAwsLbListenerRead(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).elbv2conn + defaultTagsConfig := meta.(*AWSClient).DefaultTagsConfig + ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig var listener *elbv2.Listener @@ -518,67 +533,114 @@ func resourceAwsLbListenerRead(d *schema.ResourceData, meta interface{}) error { return fmt.Errorf("error setting default_action for ELBv2 listener (%s): %w", d.Id(), err) } + tags, err := keyvaluetags.Elbv2ListTags(conn, d.Id()) + + if err != nil { + return fmt.Errorf("error listing tags for (%s): %w", d.Id(), err) + } + + tags = tags.IgnoreAws().IgnoreConfig(ignoreTagsConfig) + + //lintignore:AWSR002 + if err := d.Set("tags", tags.RemoveDefaultConfig(defaultTagsConfig).Map()); err != nil { + return fmt.Errorf("error setting tags: %w", err) + } + + if err := d.Set("tags_all", tags.Map()); err != nil { + return fmt.Errorf("error setting tags_all: %w", err) + } + return nil } func resourceAwsLbListenerUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).elbv2conn - params := &elbv2.ModifyListenerInput{ - ListenerArn: aws.String(d.Id()), - } + if d.HasChangeExcept("tags_all") { + params := &elbv2.ModifyListenerInput{ + ListenerArn: aws.String(d.Id()), + } - if v, ok := d.GetOk("port"); ok { - params.Port = aws.Int64(int64(v.(int))) - } + if v, ok := d.GetOk("port"); ok { + params.Port = aws.Int64(int64(v.(int))) + } - if v, ok := d.GetOk("protocol"); ok { - params.Protocol = aws.String(v.(string)) - } + if v, ok := d.GetOk("protocol"); ok { + params.Protocol = aws.String(v.(string)) + } - if v, ok := d.GetOk("ssl_policy"); ok { - params.SslPolicy = aws.String(v.(string)) - } + if v, ok := d.GetOk("ssl_policy"); ok { + params.SslPolicy = aws.String(v.(string)) + } - if v, ok := d.GetOk("certificate_arn"); ok { - params.Certificates = make([]*elbv2.Certificate, 1) - params.Certificates[0] = &elbv2.Certificate{ - CertificateArn: aws.String(v.(string)), + if v, ok := d.GetOk("certificate_arn"); ok { + params.Certificates = make([]*elbv2.Certificate, 1) + params.Certificates[0] = &elbv2.Certificate{ + CertificateArn: aws.String(v.(string)), + } } - } - if v, ok := d.GetOk("alpn_policy"); ok { - params.AlpnPolicy = aws.StringSlice([]string{v.(string)}) - } + if v, ok := d.GetOk("alpn_policy"); ok { + params.AlpnPolicy = aws.StringSlice([]string{v.(string)}) + } - if d.HasChange("default_action") { - var err error - params.DefaultActions, err = expandLbListenerActions(d.Get("default_action").([]interface{})) - if err != nil { - return fmt.Errorf("error updating ELBv2 Listener (%s): %w", d.Id(), err) + if d.HasChange("default_action") { + var err error + params.DefaultActions, err = expandLbListenerActions(d.Get("default_action").([]interface{})) + if err != nil { + return fmt.Errorf("error updating ELBv2 Listener (%s): %w", d.Id(), err) + } } - } - err := resource.Retry(waiter.LoadBalancerListenerUpdateTimeout, func() *resource.RetryError { - _, err := conn.ModifyListener(params) + err := resource.Retry(waiter.LoadBalancerListenerUpdateTimeout, func() *resource.RetryError { + _, err := conn.ModifyListener(params) - if tfawserr.ErrCodeEquals(err, elbv2.ErrCodeCertificateNotFoundException) { - return resource.RetryableError(err) + if tfawserr.ErrCodeEquals(err, elbv2.ErrCodeCertificateNotFoundException) { + return resource.RetryableError(err) + } + + if err != nil { + return resource.NonRetryableError(err) + } + + return nil + }) + + if tfresource.TimedOut(err) { + _, err = conn.ModifyListener(params) } if err != nil { - return resource.NonRetryableError(err) + return fmt.Errorf("error modifying ELBv2 Listener (%s): %w", d.Id(), err) } + } - return nil - }) + if d.HasChange("tags_all") { + o, n := d.GetChange("tags_all") - if tfresource.TimedOut(err) { - _, err = conn.ModifyListener(params) - } + err := resource.Retry(waiter.LoadBalancerTagPropagationTimeout, func() *resource.RetryError { + err := keyvaluetags.Elbv2UpdateTags(conn, d.Id(), o, n) - if err != nil { - return fmt.Errorf("error modifying ELBv2 Listener (%s): %w", d.Id(), err) + if tfawserr.ErrCodeEquals(err, elbv2.ErrCodeLoadBalancerNotFoundException) || + tfawserr.ErrCodeEquals(err, elbv2.ErrCodeListenerNotFoundException) { + log.Printf("[DEBUG] Retrying tagging of LB (%s) after error: %s", d.Id(), err) + return resource.RetryableError(err) + } + + if err != nil { + return resource.NonRetryableError(err) + } + + return nil + }) + + if tfresource.TimedOut(err) { + err = keyvaluetags.Elbv2UpdateTags(conn, d.Id(), o, n) + } + + if err != nil { + return fmt.Errorf("error updating LB (%s) tags: %w", d.Id(), err) + } } return resourceAwsLbListenerRead(d, meta) diff --git a/aws/resource_aws_lb_listener_test.go b/aws/resource_aws_lb_listener_test.go index 286cbe95478..7818a08b0a2 100644 --- a/aws/resource_aws_lb_listener_test.go +++ b/aws/resource_aws_lb_listener_test.go @@ -40,6 +40,7 @@ func TestAccAWSLBListener_basic(t *testing.T) { resource.TestCheckResourceAttrPair(resourceName, "default_action.0.target_group_arn", "aws_lb_target_group.test", "arn"), resource.TestCheckResourceAttr(resourceName, "default_action.0.redirect.#", "0"), resource.TestCheckResourceAttr(resourceName, "default_action.0.fixed_response.#", "0"), + resource.TestCheckResourceAttr(resourceName, "tags.#", "0"), ), }, { @@ -51,6 +52,51 @@ func TestAccAWSLBListener_basic(t *testing.T) { }) } +func TestAccAWSLBListener_tags(t *testing.T) { + var conf elbv2.Listener + resourceName := "aws_lb_listener.test" + rName := acctest.RandomWithPrefix("tf-acc-test") + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + ErrorCheck: testAccErrorCheck(t, elbv2.EndpointsID), + Providers: testAccProviders, + CheckDestroy: testAccCheckAWSLBListenerDestroy, + Steps: []resource.TestStep{ + { + Config: testAccAWSLBListenerTagsConfig1(rName, "key1", "value1"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAWSLBListenerExists(resourceName, &conf), + resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), + resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1"), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccAWSLBListenerTagsConfig2(rName, "key1", "value1updated", "key2", "value2"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAWSLBListenerExists(resourceName, &conf), + resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), + resource.TestCheckResourceAttr(resourceName, "tags.key1", "value1updated"), + resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), + ), + }, + { + Config: testAccAWSLBListenerTagsConfig1(rName, "key2", "value2"), + Check: resource.ComposeAggregateTestCheckFunc( + testAccCheckAWSLBListenerExists(resourceName, &conf), + resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), + resource.TestCheckResourceAttr(resourceName, "tags.key2", "value2"), + ), + }, + }, + }) +} + func TestAccAWSLBListener_forwardWeighted(t *testing.T) { var conf elbv2.Listener resourceName := "aws_lb_listener.test" @@ -1579,3 +1625,114 @@ resource "aws_lb_target_group" "test" { } `, rName, tlsPemEscapeNewlines(certificate), tlsPemEscapeNewlines(key))) } + +func testAccAWSLBListenerTagsConfig1(rName, tagKey1, tagValue1 string) string { + return composeConfig(testAccAWSLBListenerConfigBase(rName), fmt.Sprintf(` +resource "aws_lb_listener" "test" { + load_balancer_arn = aws_lb.test.id + protocol = "HTTP" + port = "80" + + default_action { + target_group_arn = aws_lb_target_group.test.id + type = "forward" + } + + tags = { + %[2]q = %[3]q + } +} + +resource "aws_lb" "test" { + name = %[1]q + internal = true + security_groups = [aws_security_group.test.id] + subnets = aws_subnet.test[*].id + + idle_timeout = 30 + enable_deletion_protection = false + + tags = { + Name = %[1]q + } +} + +resource "aws_lb_target_group" "test" { + name = %[1]q + port = 8080 + protocol = "HTTP" + vpc_id = aws_vpc.test.id + + health_check { + path = "/health" + interval = 60 + port = 8081 + protocol = "HTTP" + timeout = 3 + healthy_threshold = 3 + unhealthy_threshold = 3 + matcher = "200-299" + } + + tags = { + Name = %[1]q + } +} +`, rName, tagKey1, tagValue1)) +} + +func testAccAWSLBListenerTagsConfig2(rName, tagKey1, tagValue1, tagKey2, tagValue2 string) string { + return composeConfig(testAccAWSLBListenerConfigBase(rName), fmt.Sprintf(` +resource "aws_lb_listener" "test" { + load_balancer_arn = aws_lb.test.id + protocol = "HTTP" + port = "80" + + default_action { + target_group_arn = aws_lb_target_group.test.id + type = "forward" + } + + tags = { + %[2]q = %[3]q + %[4]q = %[5]q + } +} + +resource "aws_lb" "test" { + name = %[1]q + internal = true + security_groups = [aws_security_group.test.id] + subnets = aws_subnet.test[*].id + + idle_timeout = 30 + enable_deletion_protection = false + + tags = { + Name = %[1]q + } +} + +resource "aws_lb_target_group" "test" { + name = %[1]q + port = 8080 + protocol = "HTTP" + vpc_id = aws_vpc.test.id + + health_check { + path = "/health" + interval = 60 + port = 8081 + protocol = "HTTP" + timeout = 3 + healthy_threshold = 3 + unhealthy_threshold = 3 + matcher = "200-299" + } + + tags = { + Name = %[1]q + } +} +`, rName, tagKey1, tagValue1, tagKey2, tagValue2)) +} From 1fb45c7d5611ea27e4a6e8be9cc46f5d0b0a6042 Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Mon, 10 May 2021 01:11:11 +0300 Subject: [PATCH 2/9] docs --- website/docs/r/lb_listener.html.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/website/docs/r/lb_listener.html.markdown b/website/docs/r/lb_listener.html.markdown index 0646125dff9..0e2e309169c 100644 --- a/website/docs/r/lb_listener.html.markdown +++ b/website/docs/r/lb_listener.html.markdown @@ -233,6 +233,7 @@ The following arguments are optional: * `port` - (Optional) Port on which the load balancer is listening. Not valid for Gateway Load Balancers. * `protocol` - (Optional) Protocol for connections from clients to the load balancer. For Application Load Balancers, valid values are `HTTP` and `HTTPS`, with a default of `HTTP`. For Network Load Balancers, valid values are `TCP`, `TLS`, `UDP`, and `TCP_UDP`. Not valid to use `UDP` or `TCP_UDP` if dual-stack mode is enabled. Not valid for Gateway Load Balancers. * `ssl_policy` - (Optional) Name of the SSL Policy for the listener. Required if `protocol` is `HTTPS` or `TLS`. +* `tags` - (Optional) A map of tags to assign to the resource. If configured with a provider [`default_tags` configuration block](/docs/providers/aws/index.html#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. ~> **NOTE::** Please note that listeners that are attached to Application Load Balancers must use either `HTTP` or `HTTPS` protocols while listeners that are attached to Network Load Balancers must use the `TCP` protocol. @@ -355,6 +356,7 @@ In addition to all arguments above, the following attributes are exported: * `arn` - ARN of the listener (matches `id`). * `id` - ARN of the listener (matches `arn`). +* `tags_all` - A map of tags assigned to the resource, including those inherited from the provider [`default_tags` configuration block](/docs/providers/aws/index.html#default_tags-configuration-block). ## Import From c83f34765322981215f84017304b1fa2b70b0beb Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Mon, 10 May 2021 01:13:20 +0300 Subject: [PATCH 3/9] changelog --- .changelog/19286.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/19286.txt diff --git a/.changelog/19286.txt b/.changelog/19286.txt new file mode 100644 index 00000000000..2eaa2075a17 --- /dev/null +++ b/.changelog/19286.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_lb_listener: Add tagging support. +``` From b9a922d89448ddb5d17aabf2d0be698af85ad272 Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Mon, 10 May 2021 01:15:01 +0300 Subject: [PATCH 4/9] update log --- aws/resource_aws_lb_listener.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws/resource_aws_lb_listener.go b/aws/resource_aws_lb_listener.go index 73abf450127..2cb4fedbb01 100644 --- a/aws/resource_aws_lb_listener.go +++ b/aws/resource_aws_lb_listener.go @@ -623,7 +623,7 @@ func resourceAwsLbListenerUpdate(d *schema.ResourceData, meta interface{}) error if tfawserr.ErrCodeEquals(err, elbv2.ErrCodeLoadBalancerNotFoundException) || tfawserr.ErrCodeEquals(err, elbv2.ErrCodeListenerNotFoundException) { - log.Printf("[DEBUG] Retrying tagging of LB (%s) after error: %s", d.Id(), err) + log.Printf("[DEBUG] Retrying tagging of LB Listener (%s) after error: %s", d.Id(), err) return resource.RetryableError(err) } From 80926b0f6221aeaa1af3358f98ce5fbdb2d216aa Mon Sep 17 00:00:00 2001 From: drfaust92 Date: Mon, 10 May 2021 01:42:59 +0300 Subject: [PATCH 5/9] data source tags --- .changelog/19286.txt | 6 +++++- aws/data_source_aws_lb_listener.go | 13 +++++++++++++ aws/data_source_aws_lb_listener_test.go | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/.changelog/19286.txt b/.changelog/19286.txt index 2eaa2075a17..3cd8ac1da2a 100644 --- a/.changelog/19286.txt +++ b/.changelog/19286.txt @@ -1,3 +1,7 @@ ```release-note:enhancement -resource/aws_lb_listener: Add tagging support. +resource/aws_lb_listener: Add `tags` argument. +``` + +```release-note:enhancement +data-source/aws_lb_listener: Add `tags` attribute. ``` diff --git a/aws/data_source_aws_lb_listener.go b/aws/data_source_aws_lb_listener.go index 8309a0713bb..239834b43b7 100644 --- a/aws/data_source_aws_lb_listener.go +++ b/aws/data_source_aws_lb_listener.go @@ -8,6 +8,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/elbv2" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags" ) func dataSourceAwsLbListener() *schema.Resource { @@ -256,12 +257,14 @@ func dataSourceAwsLbListener() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "tags": tagsSchemaComputed(), }, } } func dataSourceAwsLbListenerRead(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).elbv2conn + ignoreTagsConfig := meta.(*AWSClient).IgnoreTagsConfig input := &elbv2.DescribeListenersInput{} @@ -333,5 +336,15 @@ func dataSourceAwsLbListenerRead(d *schema.ResourceData, meta interface{}) error return fmt.Errorf("error setting default_action: %w", err) } + tags, err := keyvaluetags.Elbv2ListTags(conn, d.Id()) + + if err != nil { + return fmt.Errorf("error listing tags for (%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 } diff --git a/aws/data_source_aws_lb_listener_test.go b/aws/data_source_aws_lb_listener_test.go index e165e97007b..0ac4641253d 100644 --- a/aws/data_source_aws_lb_listener_test.go +++ b/aws/data_source_aws_lb_listener_test.go @@ -29,6 +29,7 @@ func TestAccDataSourceAWSLBListener_basic(t *testing.T) { resource.TestCheckResourceAttr(dataSourceName, "port", "80"), resource.TestCheckResourceAttr(dataSourceName, "default_action.#", "1"), resource.TestCheckResourceAttr(dataSourceName, "default_action.0.type", "forward"), + resource.TestCheckResourceAttr(dataSourceName, "tags.%", "0"), resource.TestCheckResourceAttrSet(dataSourceName2, "load_balancer_arn"), resource.TestCheckResourceAttrSet(dataSourceName2, "arn"), resource.TestCheckResourceAttrSet(dataSourceName2, "default_action.0.target_group_arn"), @@ -36,6 +37,7 @@ func TestAccDataSourceAWSLBListener_basic(t *testing.T) { resource.TestCheckResourceAttr(dataSourceName2, "port", "80"), resource.TestCheckResourceAttr(dataSourceName2, "default_action.#", "1"), resource.TestCheckResourceAttr(dataSourceName2, "default_action.0.type", "forward"), + resource.TestCheckResourceAttr(dataSourceName2, "tags.%", "0"), ), }, }, From b2e1d6731e7ffcde01f4596fefdc7c85eba9280d Mon Sep 17 00:00:00 2001 From: Ilia Lazebnik Date: Mon, 10 May 2021 09:34:43 +0300 Subject: [PATCH 6/9] Update 19286.txt --- .changelog/19286.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/19286.txt b/.changelog/19286.txt index 3cd8ac1da2a..8d739247703 100644 --- a/.changelog/19286.txt +++ b/.changelog/19286.txt @@ -1,5 +1,5 @@ ```release-note:enhancement -resource/aws_lb_listener: Add `tags` argument. +resource/aws_lb_listener: Add `tags` argument & `tags_all` attribute. ``` ```release-note:enhancement From 1323e733f32bc88830c89c84ee2c8d1dce8ac95a Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 10 May 2021 10:02:47 -0400 Subject: [PATCH 7/9] Fix terrafmt errors. --- aws/resource_aws_lb_listener_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aws/resource_aws_lb_listener_test.go b/aws/resource_aws_lb_listener_test.go index 7818a08b0a2..824d8609321 100644 --- a/aws/resource_aws_lb_listener_test.go +++ b/aws/resource_aws_lb_listener_test.go @@ -1640,7 +1640,7 @@ resource "aws_lb_listener" "test" { tags = { %[2]q = %[3]q - } + } } resource "aws_lb" "test" { @@ -1696,7 +1696,7 @@ resource "aws_lb_listener" "test" { tags = { %[2]q = %[3]q %[4]q = %[5]q - } + } } resource "aws_lb" "test" { From aa92f244df4828cad47263bf111e2909a129a965 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 10 May 2021 10:06:31 -0400 Subject: [PATCH 8/9] Check for changes in 'tags' and 'tags_all'. --- aws/resource_aws_lb_listener.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aws/resource_aws_lb_listener.go b/aws/resource_aws_lb_listener.go index 2cb4fedbb01..b9b9f56c9b2 100644 --- a/aws/resource_aws_lb_listener.go +++ b/aws/resource_aws_lb_listener.go @@ -556,7 +556,7 @@ func resourceAwsLbListenerRead(d *schema.ResourceData, meta interface{}) error { func resourceAwsLbListenerUpdate(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).elbv2conn - if d.HasChangeExcept("tags_all") { + if d.HasChangesExcept("tags", "tags_all") { params := &elbv2.ModifyListenerInput{ ListenerArn: aws.String(d.Id()), } From 819366782884f4a71d370f2e86e4f9adefebb71f Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 10 May 2021 10:40:50 -0400 Subject: [PATCH 9/9] Use 'testAccErrorCheckSkipMessagesContaining' for GovCloud errors. --- aws/resource_aws_lb_listener_rule_test.go | 4 ---- aws/resource_aws_lb_test.go | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/aws/resource_aws_lb_listener_rule_test.go b/aws/resource_aws_lb_listener_rule_test.go index 78afe17f3a4..5711ff6ac48 100644 --- a/aws/resource_aws_lb_listener_rule_test.go +++ b/aws/resource_aws_lb_listener_rule_test.go @@ -517,10 +517,6 @@ func TestAccAWSLBListenerRule_priority(t *testing.T) { } func TestAccAWSLBListenerRule_cognito(t *testing.T) { - if testAccGetPartition() == "aws-us-gov" { - t.Skip("LB Listener Rule action type 'authenticate-cognito' type is not supported in GovCloud partition") - } - var conf elbv2.Rule key := tlsRsaPrivateKeyPem(2048) certificate := tlsRsaX509SelfSignedCertificatePem(key, "example.com") diff --git a/aws/resource_aws_lb_test.go b/aws/resource_aws_lb_test.go index df9ebf31efb..122281d19d3 100644 --- a/aws/resource_aws_lb_test.go +++ b/aws/resource_aws_lb_test.go @@ -33,6 +33,7 @@ func init() { func testAccErrorCheckSkipELBv2(t *testing.T) resource.ErrorCheckFunc { return testAccErrorCheckSkipMessagesContaining(t, "ValidationError: Type must be one of: 'application, network'", + "ValidationError: Action type 'authenticate-cognito' must be one of 'redirect,fixed-response,forward,authenticate-oidc'", ) }