Merge pull request #448 from pmoust/gateway-destroy-retry

providers/aws: retry destroying internet gateway for some time [GH-447]
This commit is contained in:
Mitchell Hashimoto 2014-10-18 10:55:18 -07:00
commit 4d2ecab674
2 changed files with 20 additions and 5 deletions

View File

@ -14,6 +14,9 @@ BUG FIXES:
the correct data and don't incorrectly recreate themselves. [GH-425] the correct data and don't incorrectly recreate themselves. [GH-425]
* providers/aws: Fix case where ELB would incorrectly plan to modify * providers/aws: Fix case where ELB would incorrectly plan to modify
listeners (with the same data) in some cases. listeners (with the same data) in some cases.
* providers/aws: Retry destroying internet gateway for some amount of time
if there is a dependency violation since it is probably just eventual
consistency (public facing resources being destroyed). [GH-447]
* providers/aws: Retry deleting security groups for some amount of time * providers/aws: Retry deleting security groups for some amount of time
if there is a dependency violation since it is probably just eventual if there is a dependency violation since it is probably just eventual
consistency. [GH-436] consistency. [GH-436]

View File

@ -81,14 +81,26 @@ func resource_aws_internet_gateway_destroy(
} }
log.Printf("[INFO] Deleting Internet Gateway: %s", s.ID) log.Printf("[INFO] Deleting Internet Gateway: %s", s.ID)
if _, err := ec2conn.DeleteInternetGateway(s.ID); err != nil { return resource.Retry(5*time.Minute, func() error {
ec2err, ok := err.(*ec2.Error) _, err := ec2conn.DeleteInternetGateway(s.ID)
if ok && ec2err.Code == "InvalidInternetGatewayID.NotFound" { if err != nil {
return nil ec2err, ok := err.(*ec2.Error)
if !ok {
return err
}
switch ec2err.Code {
case "InvalidInternetGatewayID.NotFound":
return nil
case "DependencyViolation":
return err // retry
default:
return resource.RetryError{err}
}
} }
return fmt.Errorf("Error deleting internet gateway: %s", err) return fmt.Errorf("Error deleting internet gateway: %s", err)
} })
// Wait for the internet gateway to actually delete // Wait for the internet gateway to actually delete
log.Printf("[DEBUG] Waiting for internet gateway (%s) to delete", s.ID) log.Printf("[DEBUG] Waiting for internet gateway (%s) to delete", s.ID)