Skip to content

Commit 22537d6

Browse files
compute: fixed google_compute_firewall_policy_rule staying disabled after apply with disabled = false (#14182) (#23329)
[upstream:810619d5071fe7dc82f2ccf7db3130da7ebb3ca3] Signed-off-by: Modular Magician <[email protected]>
1 parent 8c2563c commit 22537d6

File tree

3 files changed

+78
-2
lines changed

3 files changed

+78
-2
lines changed

.changelog/14182.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
compute: fixed `google_compute_firewall_policy_rule` staying disabled after apply with `disabled = false`
3+
```

google/services/compute/resource_compute_firewall_policy_rule.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ func resourceComputeFirewallPolicyRuleCreate(d *schema.ResourceData, meta interf
339339
disabledProp, err := expandComputeFirewallPolicyRuleDisabled(d.Get("disabled"), d, config)
340340
if err != nil {
341341
return err
342-
} else if v, ok := d.GetOkExists("disabled"); !tpgresource.IsEmptyValue(reflect.ValueOf(disabledProp)) && (ok || !reflect.DeepEqual(v, disabledProp)) {
342+
} else if v, ok := d.GetOkExists("disabled"); ok || !reflect.DeepEqual(v, disabledProp) {
343343
obj["disabled"] = disabledProp
344344
}
345345
firewallPolicyProp, err := expandComputeFirewallPolicyRuleFirewallPolicy(d.Get("firewall_policy"), d, config)
@@ -552,7 +552,7 @@ func resourceComputeFirewallPolicyRuleUpdate(d *schema.ResourceData, meta interf
552552
disabledProp, err := expandComputeFirewallPolicyRuleDisabled(d.Get("disabled"), d, config)
553553
if err != nil {
554554
return err
555-
} else if v, ok := d.GetOkExists("disabled"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, disabledProp)) {
555+
} else if v, ok := d.GetOkExists("disabled"); ok || !reflect.DeepEqual(v, disabledProp) {
556556
obj["disabled"] = disabledProp
557557
}
558558
firewallPolicyProp, err := expandComputeFirewallPolicyRuleFirewallPolicy(d.Get("firewall_policy"), d, config)

google/services/compute/resource_compute_firewall_policy_rule_test.go

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,43 @@ func TestAccComputeFirewallPolicyRule_basic(t *testing.T) {
189189
})
190190
}
191191

192+
func TestAccComputeFirewallPolicyRule_disabled_enabled(t *testing.T) {
193+
t.Parallel()
194+
195+
context := map[string]interface{}{
196+
"random_suffix": acctest.RandString(t, 10),
197+
"org_name": fmt.Sprintf("organizations/%s", envvar.GetTestOrgFromEnv(t)),
198+
}
199+
200+
acctest.VcrTest(t, resource.TestCase{
201+
PreCheck: func() { acctest.AccTestPreCheck(t) },
202+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
203+
Steps: []resource.TestStep{
204+
{
205+
Config: testAccComputeFirewallPolicyRule_disabled(context, true),
206+
},
207+
{
208+
ResourceName: "google_compute_firewall_policy_rule.default",
209+
ImportState: true,
210+
ImportStateVerify: true,
211+
ImportStateVerifyIgnore: []string{"firewall_policy"},
212+
},
213+
{
214+
Config: testAccComputeFirewallPolicyRule_disabled(context, false),
215+
Check: resource.ComposeTestCheckFunc(
216+
resource.TestCheckResourceAttr("google_compute_firewall_policy_rule.default", "disabled", "false"),
217+
),
218+
},
219+
{
220+
ResourceName: "google_compute_firewall_policy_rule.default",
221+
ImportState: true,
222+
ImportStateVerify: true,
223+
ImportStateVerifyIgnore: []string{"firewall_policy"},
224+
},
225+
},
226+
})
227+
}
228+
192229
func testAccComputeFirewallPolicyRule_basic(context map[string]interface{}) string {
193230
return acctest.Nprintf(`
194231
resource "google_folder" "folder" {
@@ -794,3 +831,39 @@ resource "google_compute_firewall_policy_rule" "fw_policy_rule3" {
794831
}
795832
`, context)
796833
}
834+
835+
func testAccComputeFirewallPolicyRule_disabled(context map[string]interface{}, disabled bool) string {
836+
context["disabled"] = fmt.Sprintf("%t", disabled)
837+
return acctest.Nprintf(`
838+
resource "google_folder" "default" {
839+
display_name = "tf-test-folder-%{random_suffix}"
840+
parent = "%{org_name}"
841+
deletion_protection = false
842+
}
843+
844+
resource "google_compute_firewall_policy" "default" {
845+
parent = google_folder.default.name
846+
short_name = "tf-test-policy-%{random_suffix}"
847+
description = "Resource created for Terraform acceptance testing"
848+
}
849+
850+
resource "google_compute_firewall_policy_rule" "default" {
851+
firewall_policy = google_compute_firewall_policy.default.name
852+
description = "Resource created for Terraform acceptance testing"
853+
priority = 9000
854+
enable_logging = true
855+
action = "allow"
856+
direction = "EGRESS"
857+
disabled = %{disabled}
858+
859+
match {
860+
dest_ip_ranges = ["35.235.240.0/20"]
861+
862+
layer4_configs {
863+
ip_protocol = "tcp"
864+
ports = [22]
865+
}
866+
}
867+
}
868+
`, context)
869+
}

0 commit comments

Comments
 (0)