Skip to content

Commit

Permalink
Merge pull request #31089 from dancorne/fix-fw-policy-data-override
Browse files Browse the repository at this point in the history
Correctly fetch overridden actions in the Network Firewall policy data source
  • Loading branch information
ewbankkit authored May 2, 2023
2 parents 2c34ff6 + da3572d commit 5ab4c5a
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .changelog/31089.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
data-source/aws_networkfirewall_firewall_policy: Add `firewall_policy.stateful_rule_group_reference.override` attribute, fixing `setting firewall_policy: Invalid address to set` error
```
12 changes: 12 additions & 0 deletions internal/service/networkfirewall/firewall_policy_data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,18 @@ func DataSourceFirewallPolicy() *schema.Resource {
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"override": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"action": {
Type: schema.TypeString,
Optional: true,
},
},
},
},
"priority": {
Type: schema.TypeInt,
Computed: true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,39 @@ func TestAccNetworkFirewallFirewallPolicyDataSource_nameAndARN(t *testing.T) {
})
}

func TestAccNetworkFirewallFirewallPolicyDataSource_withOverriddenManagedRuleGroup(t *testing.T) {
ctx := acctest.Context(t)
var firewallPolicy networkfirewall.DescribeFirewallPolicyOutput
rName := sdkacctest.RandomWithPrefix("resource-test-terraform")
resourceName := "aws_networkfirewall_firewall_policy.test"
datasourceName := "data.aws_networkfirewall_firewall_policy.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) },
ErrorCheck: acctest.ErrorCheck(t, networkfirewall.EndpointsID),
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
Steps: []resource.TestStep{
{
Config: testAccFirewallPolicyDataSourceConfig_withOverriddenManagedRuleGroup(rName),
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckFirewallPolicyExists(ctx, resourceName, &firewallPolicy),
resource.TestCheckResourceAttrPair(datasourceName, "arn", resourceName, "arn"), resource.TestCheckResourceAttrPair(datasourceName, "description", resourceName, "description"),
resource.TestCheckResourceAttrPair(datasourceName, "firewall_policy.#", resourceName, "firewall_policy.#"),
resource.TestCheckResourceAttrPair(datasourceName, "firewall_policy.0.stateless_fragment_default_actions.#", resourceName, "firewall_policy.0.stateless_fragment_default_actions.#"),
resource.TestCheckResourceAttrPair(datasourceName, "firewall_policy.0.stateless_fragment_default_actions.0", resourceName, "firewall_policy.0.stateless_fragment_default_actions.0"),
resource.TestCheckResourceAttrPair(datasourceName, "firewall_policy.0.stateless_default_actions.#", resourceName, "firewall_policy.0.stateless_default_actions.#"),
resource.TestCheckResourceAttrPair(datasourceName, "firewall_policy.0.stateless_default_actions.0", resourceName, "firewall_policy.0.stateless_default_actions.0"),
resource.TestCheckResourceAttrPair(datasourceName, "firewall_policy.0.stateful_rule_group_reference.#", resourceName, "firewall_policy.0.stateful_rule_group_reference.#"),
resource.TestCheckResourceAttrPair(datasourceName, "firewall_policy.0.stateful_rule_group_reference.0", resourceName, "firewall_policy.0.stateful_rule_group_reference.0"),
resource.TestCheckResourceAttrPair(datasourceName, "firewall_policy.0.stateful_rule_group_reference.override.action", resourceName, "firewall_policy.0.stateful_rule_group_reference.override.action"),
resource.TestCheckResourceAttrPair(datasourceName, "name", resourceName, "name"),
resource.TestCheckResourceAttrPair(datasourceName, "tags.%", resourceName, "tags.%"),
),
},
},
})
}

func testAccFirewallPolicyDataSourceConfig_basic(rName string) string {
return fmt.Sprintf(`
resource "aws_networkfirewall_firewall_policy" "test" {
Expand Down Expand Up @@ -142,3 +175,31 @@ data "aws_networkfirewall_firewall_policy" "test" {
name = aws_networkfirewall_firewall_policy.test.name
}`)
}

func testAccFirewallPolicyDataSourceConfig_withOverriddenManagedRuleGroup(rName string) string {
return fmt.Sprintf(`
data "aws_region" "current" {}
data "aws_partition" "current" {}
resource "aws_networkfirewall_firewall_policy" "test" {
name = %[1]q
firewall_policy {
stateless_default_actions = ["aws:forward_to_sfe"]
stateless_fragment_default_actions = ["aws:forward_to_sfe"]
# Managed rule group required for override block.
stateful_rule_group_reference {
resource_arn = "arn:${data.aws_partition.current.partition}:network-firewall:${data.aws_region.current.name}:aws-managed:stateful-rulegroup/MalwareDomainsActionOrder"
override {
action = "DROP_TO_ALERT"
}
}
}
}
data "aws_networkfirewall_firewall_policy" "test" {
arn = aws_networkfirewall_firewall_policy.test.arn
}`, rName)
}

0 comments on commit 5ab4c5a

Please sign in to comment.