provider/aws: Poll to confirm delete of resource_aws_customer_gateway
This commit is contained in:
parent
7c179ba256
commit
b2b886db43
|
@ -200,5 +200,40 @@ func resourceAwsCustomerGatewayDelete(d *schema.ResourceData, meta interface{})
|
|||
}
|
||||
}
|
||||
|
||||
gatewayFilter := &ec2.Filter{
|
||||
Name: aws.String("customer-gateway-id"),
|
||||
Values: []*string{aws.String(d.Id())},
|
||||
}
|
||||
|
||||
err = resource.Retry(5*time.Minute, func() *resource.RetryError {
|
||||
resp, err := conn.DescribeCustomerGateways(&ec2.DescribeCustomerGatewaysInput{
|
||||
Filters: []*ec2.Filter{gatewayFilter},
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
if awserr, ok := err.(awserr.Error); ok && awserr.Code() == "InvalidCustomerGatewayID.NotFound" {
|
||||
return nil
|
||||
}
|
||||
return resource.NonRetryableError(err)
|
||||
}
|
||||
|
||||
if len(resp.CustomerGateways) != 1 {
|
||||
return resource.RetryableError(fmt.Errorf("[ERROR] Error finding CustomerGateway for delete: %s", d.Id()))
|
||||
}
|
||||
|
||||
switch *resp.CustomerGateways[0].State {
|
||||
case "pending", "available", "deleting":
|
||||
return resource.RetryableError(fmt.Errorf("[DEBUG] Gateway (%s) in state (%s), retrying", d.Id(), *resp.CustomerGateways[0].State))
|
||||
case "deleted":
|
||||
return nil
|
||||
default:
|
||||
return resource.RetryableError(fmt.Errorf("[DEBUG] Unrecognized state (%s) for Customer Gateway delete on (%s)", *resp.CustomerGateways[0].State, d.Id()))
|
||||
}
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue