Retry on gateway not found
This commit is contained in:
parent
48685fefe1
commit
39bc60c3dc
|
@ -249,24 +249,28 @@ func resourceAwsInternetGatewayDetach(d *schema.ResourceData, meta interface{})
|
||||||
|
|
||||||
// InstanceStateRefreshFunc returns a resource.StateRefreshFunc that is used to watch
|
// InstanceStateRefreshFunc returns a resource.StateRefreshFunc that is used to watch
|
||||||
// an EC2 instance.
|
// an EC2 instance.
|
||||||
func detachIGStateRefreshFunc(conn *ec2.EC2, instanceID, vpcID string) resource.StateRefreshFunc {
|
func detachIGStateRefreshFunc(conn *ec2.EC2, gatewayID, vpcID string) resource.StateRefreshFunc {
|
||||||
return func() (interface{}, string, error) {
|
return func() (interface{}, string, error) {
|
||||||
_, err := conn.DetachInternetGateway(&ec2.DetachInternetGatewayInput{
|
_, err := conn.DetachInternetGateway(&ec2.DetachInternetGatewayInput{
|
||||||
InternetGatewayId: aws.String(instanceID),
|
InternetGatewayId: aws.String(gatewayID),
|
||||||
VpcId: aws.String(vpcID),
|
VpcId: aws.String(vpcID),
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ec2err, ok := err.(awserr.Error)
|
if ec2err, ok := err.(awserr.Error); ok {
|
||||||
if ok {
|
switch ec2err.Code() {
|
||||||
if ec2err.Code() == "InvalidInternetGatewayID.NotFound" {
|
case "InvalidInternetGatewayID.NotFound":
|
||||||
return nil, "Not Found", err
|
log.Printf("[TRACE] Error detaching Internet Gateway '%s' from VPC '%s': %s", gatewayID, vpcID, err)
|
||||||
} else if ec2err.Code() == "Gateway.NotAttached" {
|
return nil, "Not Found", nil
|
||||||
|
|
||||||
|
case "Gateway.NotAttached":
|
||||||
return "detached", "detached", nil
|
return "detached", "detached", nil
|
||||||
} else if ec2err.Code() == "DependencyViolation" {
|
|
||||||
|
case "DependencyViolation":
|
||||||
return nil, "detaching", nil
|
return nil, "detaching", nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// DetachInternetGateway only returns an error, so if it's nil, assume we're
|
// DetachInternetGateway only returns an error, so if it's nil, assume we're
|
||||||
// detached
|
// detached
|
||||||
return "detached", "detached", nil
|
return "detached", "detached", nil
|
||||||
|
|
Loading…
Reference in New Issue