From 1a079e519a337e84232c39707b4fa0a103e33e8d Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Tue, 21 Jun 2022 10:37:52 -0400 Subject: [PATCH 01/10] add data source for aws_route53_resolver_firewall_rule_group --- internal/provider/provider.go | 7 +- .../firewall_rule_group_data_source.go | 95 +++++++++++++++++++ 2 files changed, 99 insertions(+), 3 deletions(-) create mode 100644 internal/service/route53resolver/firewall_rule_group_data_source.go diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 7e6200d9acbd..da7f1df2d925 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -820,9 +820,10 @@ func Provider() *schema.Provider { "aws_route53_traffic_policy_document": route53.DataSourceTrafficPolicyDocument(), "aws_route53_zone": route53.DataSourceZone(), - "aws_route53_resolver_endpoint": route53resolver.DataSourceEndpoint(), - "aws_route53_resolver_rule": route53resolver.DataSourceRule(), - "aws_route53_resolver_rules": route53resolver.DataSourceRules(), + "aws_route53_resolver_endpoint": route53resolver.DataSourceEndpoint(), + "aws_route53_resolver_firewall_rule_group": route53resolver.DataSourceResolverFirewallRuleGroup(), + "aws_route53_resolver_rule": route53resolver.DataSourceRule(), + "aws_route53_resolver_rules": route53resolver.DataSourceRules(), "aws_canonical_user_id": s3.DataSourceCanonicalUserID(), "aws_s3_bucket": s3.DataSourceBucket(), diff --git a/internal/service/route53resolver/firewall_rule_group_data_source.go b/internal/service/route53resolver/firewall_rule_group_data_source.go new file mode 100644 index 000000000000..adb0bb6e2ea7 --- /dev/null +++ b/internal/service/route53resolver/firewall_rule_group_data_source.go @@ -0,0 +1,95 @@ +package route53resolver + +import ( + "fmt" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/route53resolver" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-provider-aws/internal/conns" +) + +func DataSourceResolverFirewallRuleGroup() *schema.Resource { + return &schema.Resource{ + Read: dataSourceResolverFirewallFirewallRuleGroupRead, + + Schema: map[string]*schema.Schema{ + "id": { + Type: schema.TypeString, + Required: true, + }, + "arn": { + Type: schema.TypeString, + Computed: true, + }, + "name": { + Type: schema.TypeString, + Computed: true, + }, + "rule_count": { + Type: schema.TypeInt, + Computed: true, + }, + "status": { + Type: schema.TypeString, + Computed: true, + }, + "status_message": { + Type: schema.TypeString, + Computed: true, + }, + "owner_id": { + Type: schema.TypeString, + Computed: true, + }, + "creator_request_id": { + Type: schema.TypeString, + Computed: true, + }, + "share_status": { + Type: schema.TypeString, + Computed: true, + }, + "creation_time": { + Type: schema.TypeString, + Computed: true, + }, + "modification_time": { + Type: schema.TypeString, + Computed: true, + }, + }, + } +} + +func dataSourceResolverFirewallFirewallRuleGroupRead(d *schema.ResourceData, meta interface{}) error { + conn := meta.(*conns.AWSClient).Route53ResolverConn + + input := &route53resolver.GetFirewallRuleGroupInput{ + FirewallRuleGroupId: aws.String(d.Get("id").(string)), + } + + output, err := conn.GetFirewallRuleGroup(input) + + if err != nil { + return fmt.Errorf("error getting Route53 Firewall Rule Group: %w", err) + } + + if output == nil { + return fmt.Errorf("no Route53 Firewall Rule Group found matching criteria; try different search") + } + + d.SetId(aws.StringValue(output.FirewallRuleGroup.Id)) + d.Set("arn", output.FirewallRuleGroup.Arn) + d.Set("name", output.FirewallRuleGroup.Name) + d.Set("rule_count", output.FirewallRuleGroup.RuleCount) + d.Set("status", output.FirewallRuleGroup.Status) + d.Set("status_message", output.FirewallRuleGroup.StatusMessage) + d.Set("owner_id", output.FirewallRuleGroup.OwnerId) + d.Set("creator_request_id", output.FirewallRuleGroup.CreatorRequestId) + d.Set("share_status", output.FirewallRuleGroup.ShareStatus) + d.Set("creation_time", output.FirewallRuleGroup.CreationTime) + d.Set("modification_time", output.FirewallRuleGroup.ModificationTime) + + return nil +} From e3db718c3846922b7e833ff99977eb0e904513e0 Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Tue, 21 Jun 2022 10:52:21 -0400 Subject: [PATCH 02/10] add changelog --- .changelog/25511.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/25511.txt diff --git a/.changelog/25511.txt b/.changelog/25511.txt new file mode 100644 index 000000000000..c9de2512dbbb --- /dev/null +++ b/.changelog/25511.txt @@ -0,0 +1,3 @@ +```release-note:new-data-source +aws_route53_resolver_firewall_rule_group +``` \ No newline at end of file From d3e141db04bbaa5e8893111b5300571c9aa39a3f Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Tue, 21 Jun 2022 10:52:55 -0400 Subject: [PATCH 03/10] add data source testing for aws_route53_resolver_firewall_rule_group_data_source_test --- .../firewall_rule_group_data_source_test.go | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 internal/service/route53resolver/firewall_rule_group_data_source_test.go diff --git a/internal/service/route53resolver/firewall_rule_group_data_source_test.go b/internal/service/route53resolver/firewall_rule_group_data_source_test.go new file mode 100644 index 000000000000..11c2552d201d --- /dev/null +++ b/internal/service/route53resolver/firewall_rule_group_data_source_test.go @@ -0,0 +1,51 @@ +package route53resolver_test + +import ( + "regexp" + "testing" + + "github.com/aws/aws-sdk-go/service/route53resolver" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-provider-aws/internal/acctest" +) + +func TestAccRoute53ResolverFirewallDomainListDataSource_basic(t *testing.T) { + dataSourceName := "data.aws_route53_resolver_firewall_rule_group.test" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(t) }, + ErrorCheck: acctest.ErrorCheck(t, route53resolver.EndpointsID), + ProviderFactories: acctest.ProviderFactories, + Steps: []resource.TestStep{ + { + Config: testAccFirewallDomainListDataSourceConfig_basic(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(dataSourceName, "id"), + acctest.MatchResourceAttrRegionalARN(dataSourceName, "arn", "route53resolver", regexp.MustCompile(`firewall-rule-group/.+`)), + resource.TestCheckResourceAttrSet(dataSourceName, "creation_time"), + resource.TestCheckResourceAttrSet(dataSourceName, "creator_request_id"), + resource.TestCheckResourceAttrSet(dataSourceName, "modification_time"), + resource.TestCheckResourceAttrSet(dataSourceName, "name"), + resource.TestCheckResourceAttrSet(dataSourceName, "owner_id"), + resource.TestCheckResourceAttrSet(dataSourceName, "rule_count"), + resource.TestMatchResourceAttr(dataSourceName, "status", regexp.MustCompile(`COMPLETE|DELETING|UPDATING`)), + resource.TestMatchResourceAttr(dataSourceName, "share_status", regexp.MustCompile(`NOT_SHARED|SHARED_WITH_ME|SHARED_BY_ME`)), + resource.TestCheckResourceAttrSet(dataSourceName, "status_message"), + ), + }, + }, + }) +} + +func testAccFirewallDomainListDataSourceConfig_basic() string { + return ` +resource "aws_route53_resolver_firewall_rule_group" "test" { + name = "test" +} + +data "aws_route53_resolver_firewall_rule_group" "test" { + id = aws_route53_resolver_firewall_rule_group.test.id +} + +` +} From c0725b57efc6141e4c75fb73f8d9d867882c1cf7 Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Tue, 21 Jun 2022 10:53:15 -0400 Subject: [PATCH 04/10] alphabetize set statements --- .../route53resolver/firewall_rule_group_data_source.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/service/route53resolver/firewall_rule_group_data_source.go b/internal/service/route53resolver/firewall_rule_group_data_source.go index adb0bb6e2ea7..e659c56001ab 100644 --- a/internal/service/route53resolver/firewall_rule_group_data_source.go +++ b/internal/service/route53resolver/firewall_rule_group_data_source.go @@ -81,15 +81,15 @@ func dataSourceResolverFirewallFirewallRuleGroupRead(d *schema.ResourceData, met d.SetId(aws.StringValue(output.FirewallRuleGroup.Id)) d.Set("arn", output.FirewallRuleGroup.Arn) + d.Set("creation_time", output.FirewallRuleGroup.CreationTime) + d.Set("creator_request_id", output.FirewallRuleGroup.CreatorRequestId) + d.Set("modification_time", output.FirewallRuleGroup.ModificationTime) d.Set("name", output.FirewallRuleGroup.Name) + d.Set("owner_id", output.FirewallRuleGroup.OwnerId) d.Set("rule_count", output.FirewallRuleGroup.RuleCount) + d.Set("share_status", output.FirewallRuleGroup.ShareStatus) d.Set("status", output.FirewallRuleGroup.Status) d.Set("status_message", output.FirewallRuleGroup.StatusMessage) - d.Set("owner_id", output.FirewallRuleGroup.OwnerId) - d.Set("creator_request_id", output.FirewallRuleGroup.CreatorRequestId) - d.Set("share_status", output.FirewallRuleGroup.ShareStatus) - d.Set("creation_time", output.FirewallRuleGroup.CreationTime) - d.Set("modification_time", output.FirewallRuleGroup.ModificationTime) return nil } From 25d3c950930607f1fbc17f77c90a69f50aace69c Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Tue, 21 Jun 2022 10:59:38 -0400 Subject: [PATCH 05/10] add documentation for aws_route53_resolver_firewall_rule_group --- ...resolver_firewall_rule_group.html.markdown | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 website/docs/d/route53_resolver_firewall_rule_group.html.markdown diff --git a/website/docs/d/route53_resolver_firewall_rule_group.html.markdown b/website/docs/d/route53_resolver_firewall_rule_group.html.markdown new file mode 100644 index 000000000000..f5f3c34e98c2 --- /dev/null +++ b/website/docs/d/route53_resolver_firewall_rule_group.html.markdown @@ -0,0 +1,40 @@ +--- +subcategory: "Route 53 Resolver" +layout: "aws" +page_title: "AWS: aws_route53_resolver_firewall_rule_group" +description: |- + Retrieves the specified firewall rule group. +--- + +# Data Source: aws_route53_resolver_firewall_rule_group + +`aws_route53_resolver_firewall_rule_group` Retrieves the specified firewall rule group. + +This data source allows to retrieve details about a specific a Route 53 Resolver DNS Firewall rule group. + +## Example Usage + +The following example shows how to get a firewall domain list from its id. + +```terraform +data "aws_route53_resolver_firewall_rule_group" "example" { + id = "rslvr-frg-example" +} +``` + +## Argument Reference + +* `id` - (Required) The ID of the rule group. + +The following attribute is additionally exported: + +* `arn` - The ARN (Amazon Resource Name) of the rule group. +* `creation_time` - The date and time that the rule group was created, in Unix time format and Coordinated Universal Time (UTC). +* `creator_request_id` - A unique string defined by you to identify the request. +* `name` - The name of the rule group. +* `modification_time` - The date and time that the rule group was last modified, in Unix time format and Coordinated Universal Time (UTC). +* `owner_id` - The Amazon Web Services account ID for the account that created the rule group. When a rule group is shared with your account, this is the account that has shared the rule group with you. +* `rule_count` - The number of rules in the rule group. +* `share_status` - Whether the rule group is shared with other Amazon Web Services accounts, or was shared with the current account by another Amazon Web Services account. +* `status` - The status of the rule group. +* `status_message` - Additional information about the status of the rule group, if available. From 70b5e0a975e82f48aa0cfd37d8b6d9eee8a35fec Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Tue, 21 Jun 2022 12:11:35 -0400 Subject: [PATCH 06/10] fix typo in documentation --- .../docs/d/route53_resolver_firewall_rule_group.html.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/docs/d/route53_resolver_firewall_rule_group.html.markdown b/website/docs/d/route53_resolver_firewall_rule_group.html.markdown index f5f3c34e98c2..47211df916a4 100644 --- a/website/docs/d/route53_resolver_firewall_rule_group.html.markdown +++ b/website/docs/d/route53_resolver_firewall_rule_group.html.markdown @@ -14,7 +14,7 @@ This data source allows to retrieve details about a specific a Route 53 Resolver ## Example Usage -The following example shows how to get a firewall domain list from its id. +The following example shows how to get a firewall rule group from its id. ```terraform data "aws_route53_resolver_firewall_rule_group" "example" { From 5f0679b8c7e7a63f80c40124e2021631fffdb707 Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Wed, 22 Jun 2022 16:31:35 -0400 Subject: [PATCH 07/10] formatting + resource naming --- internal/provider/provider.go | 2 +- .../route53resolver/firewall_rule_group_data_source.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index da7f1df2d925..3a5b9c091054 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -821,7 +821,7 @@ func Provider() *schema.Provider { "aws_route53_zone": route53.DataSourceZone(), "aws_route53_resolver_endpoint": route53resolver.DataSourceEndpoint(), - "aws_route53_resolver_firewall_rule_group": route53resolver.DataSourceResolverFirewallRuleGroup(), + "aws_route53_resolver_firewall_rule_group": route53resolver.DataSourceFirewallRuleGroup(), "aws_route53_resolver_rule": route53resolver.DataSourceRule(), "aws_route53_resolver_rules": route53resolver.DataSourceRules(), diff --git a/internal/service/route53resolver/firewall_rule_group_data_source.go b/internal/service/route53resolver/firewall_rule_group_data_source.go index e659c56001ab..5ff8dfeac847 100644 --- a/internal/service/route53resolver/firewall_rule_group_data_source.go +++ b/internal/service/route53resolver/firewall_rule_group_data_source.go @@ -9,9 +9,9 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" ) -func DataSourceResolverFirewallRuleGroup() *schema.Resource { +func DataSourceFirewallRuleGroup() *schema.Resource { return &schema.Resource{ - Read: dataSourceResolverFirewallFirewallRuleGroupRead, + Read: dataSourceFirewallRuleGroupRead, Schema: map[string]*schema.Schema{ "id": { @@ -62,7 +62,7 @@ func DataSourceResolverFirewallRuleGroup() *schema.Resource { } } -func dataSourceResolverFirewallFirewallRuleGroupRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceFirewallRuleGroupRead(d *schema.ResourceData, meta interface{}) error { conn := meta.(*conns.AWSClient).Route53ResolverConn input := &route53resolver.GetFirewallRuleGroupInput{ From e5c57fa9ca34e334a7af213ccc7b54e8251118e3 Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Wed, 22 Jun 2022 19:31:53 -0400 Subject: [PATCH 08/10] fix function name --- .../route53resolver/firewall_rule_group_data_source_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/route53resolver/firewall_rule_group_data_source_test.go b/internal/service/route53resolver/firewall_rule_group_data_source_test.go index 11c2552d201d..4539dd9a429a 100644 --- a/internal/service/route53resolver/firewall_rule_group_data_source_test.go +++ b/internal/service/route53resolver/firewall_rule_group_data_source_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/acctest" ) -func TestAccRoute53ResolverFirewallDomainListDataSource_basic(t *testing.T) { +func TestAccFirewallRuleGroupDataSource_basic(t *testing.T) { dataSourceName := "data.aws_route53_resolver_firewall_rule_group.test" resource.Test(t, resource.TestCase{ @@ -18,7 +18,7 @@ func TestAccRoute53ResolverFirewallDomainListDataSource_basic(t *testing.T) { ProviderFactories: acctest.ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccFirewallDomainListDataSourceConfig_basic(), + Config: testAccFirewallRuleGroupDataSourceConfig_basic(), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttrSet(dataSourceName, "id"), acctest.MatchResourceAttrRegionalARN(dataSourceName, "arn", "route53resolver", regexp.MustCompile(`firewall-rule-group/.+`)), @@ -37,7 +37,7 @@ func TestAccRoute53ResolverFirewallDomainListDataSource_basic(t *testing.T) { }) } -func testAccFirewallDomainListDataSourceConfig_basic() string { +func testAccFirewallRuleGroupDataSourceConfig_basic() string { return ` resource "aws_route53_resolver_firewall_rule_group" "test" { name = "test" From 80abea9d4f6d305b668998e28eb1762913e1f34d Mon Sep 17 00:00:00 2001 From: Albert Silva Date: Wed, 22 Jun 2022 20:19:13 -0400 Subject: [PATCH 09/10] fix test name --- .../route53resolver/firewall_rule_group_data_source_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/route53resolver/firewall_rule_group_data_source_test.go b/internal/service/route53resolver/firewall_rule_group_data_source_test.go index 4539dd9a429a..14a9e7864f21 100644 --- a/internal/service/route53resolver/firewall_rule_group_data_source_test.go +++ b/internal/service/route53resolver/firewall_rule_group_data_source_test.go @@ -9,7 +9,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/acctest" ) -func TestAccFirewallRuleGroupDataSource_basic(t *testing.T) { +func TestAccRoute53ResolverFirewallRuleGroupDataSource_basic(t *testing.T) { dataSourceName := "data.aws_route53_resolver_firewall_rule_group.test" resource.Test(t, resource.TestCase{ From f05ebeaf8e5a2f6e54230d143dab8aca59dbb394 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Wed, 9 Nov 2022 14:44:13 -0500 Subject: [PATCH 10/10] d/aws_route53_resolver_firewall_rule_group: 'id' -> 'firewall_rule_group_id' and switch to 'WithoutTimeout' CRUD handlers (#15090). Acceptance test output: % make testacc TESTARGS='-run=TestAccRoute53ResolverFirewallRuleGroupDataSource_' PKG=route53resolver ACCTEST_PARALLELISM=2 ==> Checking that code complies with gofmt requirements... TF_ACC=1 go test ./internal/service/route53resolver/... -v -count 1 -parallel 2 -run=TestAccRoute53ResolverFirewallRuleGroupDataSource_ -timeout 180m === RUN TestAccRoute53ResolverFirewallRuleGroupDataSource_basic --- PASS: TestAccRoute53ResolverFirewallRuleGroupDataSource_basic (22.88s) PASS ok github.com/hashicorp/terraform-provider-aws/internal/service/route53resolver 30.541s --- .../firewall_rule_group_data_source.go | 70 +++++++++---------- .../firewall_rule_group_data_source_test.go | 34 ++++----- ...resolver_firewall_rule_group.html.markdown | 6 +- 3 files changed, 53 insertions(+), 57 deletions(-) diff --git a/internal/service/route53resolver/firewall_rule_group_data_source.go b/internal/service/route53resolver/firewall_rule_group_data_source.go index 5ff8dfeac847..47b78ad37452 100644 --- a/internal/service/route53resolver/firewall_rule_group_data_source.go +++ b/internal/service/route53resolver/firewall_rule_group_data_source.go @@ -1,40 +1,40 @@ package route53resolver import ( - "fmt" + "context" "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/route53resolver" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" ) func DataSourceFirewallRuleGroup() *schema.Resource { return &schema.Resource{ - Read: dataSourceFirewallRuleGroupRead, + ReadWithoutTimeout: dataSourceFirewallRuleGroupRead, Schema: map[string]*schema.Schema{ - "id": { - Type: schema.TypeString, - Required: true, - }, "arn": { Type: schema.TypeString, Computed: true, }, - "name": { + "creation_time": { Type: schema.TypeString, Computed: true, }, - "rule_count": { - Type: schema.TypeInt, + "creator_request_id": { + Type: schema.TypeString, Computed: true, }, - "status": { + "firewall_rule_group_id": { + Type: schema.TypeString, + Required: true, + }, + "modification_time": { Type: schema.TypeString, Computed: true, }, - "status_message": { + "name": { Type: schema.TypeString, Computed: true, }, @@ -42,19 +42,19 @@ func DataSourceFirewallRuleGroup() *schema.Resource { Type: schema.TypeString, Computed: true, }, - "creator_request_id": { - Type: schema.TypeString, + "rule_count": { + Type: schema.TypeInt, Computed: true, }, "share_status": { Type: schema.TypeString, Computed: true, }, - "creation_time": { + "status": { Type: schema.TypeString, Computed: true, }, - "modification_time": { + "status_message": { Type: schema.TypeString, Computed: true, }, @@ -62,34 +62,28 @@ func DataSourceFirewallRuleGroup() *schema.Resource { } } -func dataSourceFirewallRuleGroupRead(d *schema.ResourceData, meta interface{}) error { +func dataSourceFirewallRuleGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { conn := meta.(*conns.AWSClient).Route53ResolverConn - input := &route53resolver.GetFirewallRuleGroupInput{ - FirewallRuleGroupId: aws.String(d.Get("id").(string)), - } - - output, err := conn.GetFirewallRuleGroup(input) + id := d.Get("firewall_rule_group_id").(string) + ruleGroup, err := FindFirewallRuleGroupByID(ctx, conn, id) if err != nil { - return fmt.Errorf("error getting Route53 Firewall Rule Group: %w", err) - } - - if output == nil { - return fmt.Errorf("no Route53 Firewall Rule Group found matching criteria; try different search") + return diag.Errorf("reading Route53 Resolver Firewall Rule Group (%s): %s", id, err) } - d.SetId(aws.StringValue(output.FirewallRuleGroup.Id)) - d.Set("arn", output.FirewallRuleGroup.Arn) - d.Set("creation_time", output.FirewallRuleGroup.CreationTime) - d.Set("creator_request_id", output.FirewallRuleGroup.CreatorRequestId) - d.Set("modification_time", output.FirewallRuleGroup.ModificationTime) - d.Set("name", output.FirewallRuleGroup.Name) - d.Set("owner_id", output.FirewallRuleGroup.OwnerId) - d.Set("rule_count", output.FirewallRuleGroup.RuleCount) - d.Set("share_status", output.FirewallRuleGroup.ShareStatus) - d.Set("status", output.FirewallRuleGroup.Status) - d.Set("status_message", output.FirewallRuleGroup.StatusMessage) + d.SetId(aws.StringValue(ruleGroup.Id)) + d.Set("arn", ruleGroup.Arn) + d.Set("creation_time", ruleGroup.CreationTime) + d.Set("creator_request_id", ruleGroup.CreatorRequestId) + d.Set("firewall_rule_group_id", ruleGroup.Id) + d.Set("modification_time", ruleGroup.ModificationTime) + d.Set("name", ruleGroup.Name) + d.Set("owner_id", ruleGroup.OwnerId) + d.Set("rule_count", ruleGroup.RuleCount) + d.Set("share_status", ruleGroup.ShareStatus) + d.Set("status", ruleGroup.Status) + d.Set("status_message", ruleGroup.StatusMessage) return nil } diff --git a/internal/service/route53resolver/firewall_rule_group_data_source_test.go b/internal/service/route53resolver/firewall_rule_group_data_source_test.go index f32018ec0b63..1b1451b9affd 100644 --- a/internal/service/route53resolver/firewall_rule_group_data_source_test.go +++ b/internal/service/route53resolver/firewall_rule_group_data_source_test.go @@ -1,16 +1,19 @@ package route53resolver_test import ( - "regexp" + "fmt" "testing" "github.com/aws/aws-sdk-go/service/route53resolver" + sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-provider-aws/internal/acctest" ) func TestAccRoute53ResolverFirewallRuleGroupDataSource_basic(t *testing.T) { + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) dataSourceName := "data.aws_route53_resolver_firewall_rule_group.test" + resourceName := "aws_route53_resolver_firewall_rule_group.test" resource.Test(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(t); testAccPreCheck(t) }, @@ -18,18 +21,18 @@ func TestAccRoute53ResolverFirewallRuleGroupDataSource_basic(t *testing.T) { ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, Steps: []resource.TestStep{ { - Config: testAccFirewallRuleGroupDataSourceConfig_basic(), - Check: resource.ComposeTestCheckFunc( - resource.TestCheckResourceAttrSet(dataSourceName, "id"), - acctest.MatchResourceAttrRegionalARN(dataSourceName, "arn", "route53resolver", regexp.MustCompile(`firewall-rule-group/.+`)), + Config: testAccFirewallRuleGroupDataSourceConfig_basic(rName), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrPair(dataSourceName, "arn", resourceName, "arn"), + resource.TestCheckResourceAttrPair(dataSourceName, "firewall_rule_group_id", resourceName, "id"), resource.TestCheckResourceAttrSet(dataSourceName, "creation_time"), resource.TestCheckResourceAttrSet(dataSourceName, "creator_request_id"), resource.TestCheckResourceAttrSet(dataSourceName, "modification_time"), - resource.TestCheckResourceAttrSet(dataSourceName, "name"), - resource.TestCheckResourceAttrSet(dataSourceName, "owner_id"), - resource.TestCheckResourceAttrSet(dataSourceName, "rule_count"), - resource.TestMatchResourceAttr(dataSourceName, "status", regexp.MustCompile(`COMPLETE|DELETING|UPDATING`)), - resource.TestMatchResourceAttr(dataSourceName, "share_status", regexp.MustCompile(`NOT_SHARED|SHARED_WITH_ME|SHARED_BY_ME`)), + resource.TestCheckResourceAttrPair(dataSourceName, "name", resourceName, "name"), + resource.TestCheckResourceAttrPair(dataSourceName, "owner_id", resourceName, "owner_id"), + resource.TestCheckResourceAttr(dataSourceName, "rule_count", "0"), + resource.TestCheckResourceAttrPair(dataSourceName, "share_status", resourceName, "share_status"), + resource.TestCheckResourceAttrSet(dataSourceName, "status"), resource.TestCheckResourceAttrSet(dataSourceName, "status_message"), ), }, @@ -37,15 +40,14 @@ func TestAccRoute53ResolverFirewallRuleGroupDataSource_basic(t *testing.T) { }) } -func testAccFirewallRuleGroupDataSourceConfig_basic() string { - return ` +func testAccFirewallRuleGroupDataSourceConfig_basic(rName string) string { + return fmt.Sprintf(` resource "aws_route53_resolver_firewall_rule_group" "test" { - name = "test" + name = %[1]q } data "aws_route53_resolver_firewall_rule_group" "test" { - id = aws_route53_resolver_firewall_rule_group.test.id + firewall_rule_group_id = aws_route53_resolver_firewall_rule_group.test.id } - -` +`, rName) } diff --git a/website/docs/d/route53_resolver_firewall_rule_group.html.markdown b/website/docs/d/route53_resolver_firewall_rule_group.html.markdown index 47211df916a4..f5aca2f36a42 100644 --- a/website/docs/d/route53_resolver_firewall_rule_group.html.markdown +++ b/website/docs/d/route53_resolver_firewall_rule_group.html.markdown @@ -14,17 +14,17 @@ This data source allows to retrieve details about a specific a Route 53 Resolver ## Example Usage -The following example shows how to get a firewall rule group from its id. +The following example shows how to get a firewall rule group from its ID. ```terraform data "aws_route53_resolver_firewall_rule_group" "example" { - id = "rslvr-frg-example" + firewall_rule_group_id = "rslvr-frg-example" } ``` ## Argument Reference -* `id` - (Required) The ID of the rule group. +* `firewall_rule_group_id` - (Required) The ID of the rule group. The following attribute is additionally exported: