Skip to content

Commit

Permalink
resource/aws_network_acl_rule: Remove resource from Terraform state o…
Browse files Browse the repository at this point in the history
…n `InvalidNetworkAclID.NotFound` errors

 Reference: #2291

Before code update:

```
--- FAIL: TestAccAWSNetworkAclRule_disappears_NetworkAcl (24.71s)
    testing.go:568: Step 0 error: errors during follow-up refresh:

        Error: Error Finding Network Acl Rule 400: InvalidNetworkAclID.NotFound: The networkAcl ID 'acl-0d709bc679c758a63' does not exist
          status code: 400, request id: 52adcd9e-3bba-42a0-bff1-1a345a20f084

        Error: Error Finding Network Acl Rule 200: InvalidNetworkAclID.NotFound: The networkAcl ID 'acl-0d709bc679c758a63' does not exist
          status code: 400, request id: b9e489d1-0610-4534-8df8-fcecd5217e1f

        Error: Error Finding Network Acl Rule 300: InvalidNetworkAclID.NotFound: The networkAcl ID 'acl-0d709bc679c758a63' does not exist
          status code: 400, request id: cdb09484-2cd0-4b3d-a3f0-759db25037b6
```

Output from acceptance testing:

```
--- PASS: TestAccAWSNetworkAcl_disappears (28.17s)

--- PASS: TestAccAWSNetworkAclRule_disappears_NetworkAcl (25.67s)
--- PASS: TestAccAWSNetworkAclRule_disappears (28.40s)
```
  • Loading branch information
bflad committed Aug 9, 2019
1 parent cc3dba0 commit 69cd052
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 20 deletions.
5 changes: 5 additions & 0 deletions aws/resource_aws_network_acl_rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,11 @@ func findNetworkAclRule(d *schema.ResourceData, meta interface{}) (*ec2.NetworkA
log.Printf("[INFO] Describing Network Acl: %s", d.Get("network_acl_id").(string))
log.Printf("[INFO] Describing Network Acl with the Filters %#v", params)
resp, err := conn.DescribeNetworkAcls(params)

if isAWSErr(err, "InvalidNetworkAclID.NotFound", "") {
return nil, nil
}

if err != nil {
return nil, fmt.Errorf("Error Finding Network Acl Rule %d: %s", d.Get("rule_number").(int), err.Error())
}
Expand Down
61 changes: 41 additions & 20 deletions aws/resource_aws_network_acl_rule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,47 @@ func TestAccAWSNetworkAclRule_basic(t *testing.T) {
})
}

func TestAccAWSNetworkAclRule_disappears(t *testing.T) {
var networkAcl ec2.NetworkAcl

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSNetworkAclRuleDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSNetworkAclRuleBasicConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSNetworkAclRuleExists("aws_network_acl_rule.baz", &networkAcl),
testAccCheckAWSNetworkAclRuleDelete("aws_network_acl_rule.baz"),
),
ExpectNonEmptyPlan: true,
},
},
})
}

func TestAccAWSNetworkAclRule_disappears_NetworkAcl(t *testing.T) {
var networkAcl ec2.NetworkAcl
resourceName := "aws_network_acl.bar"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSNetworkAclRuleDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSNetworkAclRuleBasicConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSNetworkAclExists(resourceName, &networkAcl),
testAccCheckAWSNetworkAclDisappears(&networkAcl),
),
ExpectNonEmptyPlan: true,
},
},
})
}

func TestAccAWSNetworkAclRule_missingParam(t *testing.T) {

resource.ParallelTest(t, resource.TestCase{
Expand Down Expand Up @@ -210,26 +251,6 @@ func TestResourceAWSNetworkAclRule_validateICMPArgumentValue(t *testing.T) {

}

func TestAccAWSNetworkAclRule_deleteRule(t *testing.T) {
var networkAcl ec2.NetworkAcl

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSNetworkAclRuleDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSNetworkAclRuleBasicConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckAWSNetworkAclRuleExists("aws_network_acl_rule.baz", &networkAcl),
testAccCheckAWSNetworkAclRuleDelete("aws_network_acl_rule.baz"),
),
ExpectNonEmptyPlan: true,
},
},
})
}

func testAccCheckAWSNetworkAclRuleDestroy(s *terraform.State) error {

for _, rs := range s.RootModule().Resources {
Expand Down
35 changes: 35 additions & 0 deletions aws/resource_aws_network_acl_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,27 @@ func TestAccAWSNetworkAcl_importBasic(t *testing.T) {
})
}

func TestAccAWSNetworkAcl_disappears(t *testing.T) {
var networkAcl ec2.NetworkAcl
resourceName := "aws_network_acl.bar"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckAWSNetworkAclDestroy,
Steps: []resource.TestStep{
{
Config: testAccAWSNetworkAclEgressNIngressConfig,
Check: resource.ComposeAggregateTestCheckFunc(
testAccCheckAWSNetworkAclExists(resourceName, &networkAcl),
testAccCheckAWSNetworkAclDisappears(&networkAcl),
),
ExpectNonEmptyPlan: true,
},
},
})
}

func TestAccAWSNetworkAcl_Egress_ConfigMode(t *testing.T) {
var networkAcl1, networkAcl2, networkAcl3 ec2.NetworkAcl
resourceName := "aws_network_acl.test"
Expand Down Expand Up @@ -638,6 +659,20 @@ func testAccCheckAWSNetworkAclDestroy(s *terraform.State) error {
return nil
}

func testAccCheckAWSNetworkAclDisappears(networkAcl *ec2.NetworkAcl) resource.TestCheckFunc {
return func(s *terraform.State) error {
conn := testAccProvider.Meta().(*AWSClient).ec2conn

input := &ec2.DeleteNetworkAclInput{
NetworkAclId: networkAcl.NetworkAclId,
}

_, err := conn.DeleteNetworkAcl(input)

return err
}
}

func testAccCheckAWSNetworkAclExists(n string, networkAcl *ec2.NetworkAcl) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
Expand Down

0 comments on commit 69cd052

Please sign in to comment.