mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
aws/r53: Refactoring - decouple waiters into functions
This commit is contained in:
parent
945de8e57f
commit
cc239439fc
@ -269,13 +269,38 @@ func resourceAwsRoute53RecordCreate(d *schema.ResourceData, meta interface{}) er
|
|||||||
log.Printf("[DEBUG] Creating resource records for zone: %s, name: %s\n\n%s",
|
log.Printf("[DEBUG] Creating resource records for zone: %s, name: %s\n\n%s",
|
||||||
zone, *rec.Name, req)
|
zone, *rec.Name, req)
|
||||||
|
|
||||||
|
respRaw, err := changeRoute53RecordSet(conn, req)
|
||||||
|
|
||||||
|
changeInfo := respRaw.(*route53.ChangeResourceRecordSetsOutput).ChangeInfo
|
||||||
|
|
||||||
|
// Generate an ID
|
||||||
|
vars := []string{
|
||||||
|
zone,
|
||||||
|
strings.ToLower(d.Get("name").(string)),
|
||||||
|
d.Get("type").(string),
|
||||||
|
}
|
||||||
|
if v, ok := d.GetOk("set_identifier"); ok {
|
||||||
|
vars = append(vars, v.(string))
|
||||||
|
}
|
||||||
|
|
||||||
|
d.SetId(strings.Join(vars, "_"))
|
||||||
|
|
||||||
|
err = waitForRoute53RecordSetToSync(conn, cleanChangeID(*changeInfo.Id))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return resourceAwsRoute53RecordRead(d, meta)
|
||||||
|
}
|
||||||
|
|
||||||
|
func changeRoute53RecordSet(conn *route53.Route53, input *route53.ChangeResourceRecordSetsInput) (interface{}, error) {
|
||||||
wait := resource.StateChangeConf{
|
wait := resource.StateChangeConf{
|
||||||
Pending: []string{"rejected"},
|
Pending: []string{"rejected"},
|
||||||
Target: []string{"accepted"},
|
Target: []string{"accepted"},
|
||||||
Timeout: 5 * time.Minute,
|
Timeout: 5 * time.Minute,
|
||||||
MinTimeout: 1 * time.Second,
|
MinTimeout: 1 * time.Second,
|
||||||
Refresh: func() (interface{}, string, error) {
|
Refresh: func() (interface{}, string, error) {
|
||||||
resp, err := conn.ChangeResourceRecordSets(req)
|
resp, err := conn.ChangeResourceRecordSets(input)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if r53err, ok := err.(awserr.Error); ok {
|
if r53err, ok := err.(awserr.Error); ok {
|
||||||
if r53err.Code() == "PriorRequestNotComplete" {
|
if r53err.Code() == "PriorRequestNotComplete" {
|
||||||
@ -292,26 +317,11 @@ func resourceAwsRoute53RecordCreate(d *schema.ResourceData, meta interface{}) er
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
respRaw, err := wait.WaitForState()
|
return wait.WaitForState()
|
||||||
if err != nil {
|
}
|
||||||
return err
|
|
||||||
}
|
|
||||||
changeInfo := respRaw.(*route53.ChangeResourceRecordSetsOutput).ChangeInfo
|
|
||||||
|
|
||||||
// Generate an ID
|
func waitForRoute53RecordSetToSync(conn *route53.Route53, requestId string) error {
|
||||||
vars := []string{
|
wait := resource.StateChangeConf{
|
||||||
zone,
|
|
||||||
strings.ToLower(d.Get("name").(string)),
|
|
||||||
d.Get("type").(string),
|
|
||||||
}
|
|
||||||
if v, ok := d.GetOk("set_identifier"); ok {
|
|
||||||
vars = append(vars, v.(string))
|
|
||||||
}
|
|
||||||
|
|
||||||
d.SetId(strings.Join(vars, "_"))
|
|
||||||
|
|
||||||
// Wait until we are done
|
|
||||||
wait = resource.StateChangeConf{
|
|
||||||
Delay: 30 * time.Second,
|
Delay: 30 * time.Second,
|
||||||
Pending: []string{"PENDING"},
|
Pending: []string{"PENDING"},
|
||||||
Target: []string{"INSYNC"},
|
Target: []string{"INSYNC"},
|
||||||
@ -319,17 +329,13 @@ func resourceAwsRoute53RecordCreate(d *schema.ResourceData, meta interface{}) er
|
|||||||
MinTimeout: 5 * time.Second,
|
MinTimeout: 5 * time.Second,
|
||||||
Refresh: func() (result interface{}, state string, err error) {
|
Refresh: func() (result interface{}, state string, err error) {
|
||||||
changeRequest := &route53.GetChangeInput{
|
changeRequest := &route53.GetChangeInput{
|
||||||
Id: aws.String(cleanChangeID(*changeInfo.Id)),
|
Id: aws.String(requestId),
|
||||||
}
|
}
|
||||||
return resourceAwsGoRoute53Wait(conn, changeRequest)
|
return resourceAwsGoRoute53Wait(conn, changeRequest)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err = wait.WaitForState()
|
_, err := wait.WaitForState()
|
||||||
if err != nil {
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return resourceAwsRoute53RecordRead(d, meta)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceAwsRoute53RecordRead(d *schema.ResourceData, meta interface{}) error {
|
func resourceAwsRoute53RecordRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
@ -518,13 +524,18 @@ func resourceAwsRoute53RecordDelete(d *schema.ResourceData, meta interface{}) er
|
|||||||
ChangeBatch: changeBatch,
|
ChangeBatch: changeBatch,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_, err = deleteRoute53RecordSet(conn, req)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func deleteRoute53RecordSet(conn *route53.Route53, input *route53.ChangeResourceRecordSetsInput) (interface{}, error) {
|
||||||
wait := resource.StateChangeConf{
|
wait := resource.StateChangeConf{
|
||||||
Pending: []string{"rejected"},
|
Pending: []string{"rejected"},
|
||||||
Target: []string{"accepted"},
|
Target: []string{"accepted"},
|
||||||
Timeout: 5 * time.Minute,
|
Timeout: 5 * time.Minute,
|
||||||
MinTimeout: 1 * time.Second,
|
MinTimeout: 1 * time.Second,
|
||||||
Refresh: func() (interface{}, string, error) {
|
Refresh: func() (interface{}, string, error) {
|
||||||
_, err := conn.ChangeResourceRecordSets(req)
|
resp, err := conn.ChangeResourceRecordSets(input)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if r53err, ok := err.(awserr.Error); ok {
|
if r53err, ok := err.(awserr.Error); ok {
|
||||||
if r53err.Code() == "PriorRequestNotComplete" {
|
if r53err.Code() == "PriorRequestNotComplete" {
|
||||||
@ -535,22 +546,18 @@ func resourceAwsRoute53RecordDelete(d *schema.ResourceData, meta interface{}) er
|
|||||||
|
|
||||||
if r53err.Code() == "InvalidChangeBatch" {
|
if r53err.Code() == "InvalidChangeBatch" {
|
||||||
// This means that the record is already gone.
|
// This means that the record is already gone.
|
||||||
return 42, "accepted", nil
|
return resp, "accepted", nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 42, "failure", err
|
return 42, "failure", err
|
||||||
}
|
}
|
||||||
|
|
||||||
return 42, "accepted", nil
|
return resp, "accepted", nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err := wait.WaitForState(); err != nil {
|
return wait.WaitForState()
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceAwsRoute53RecordBuildSet(d *schema.ResourceData, zoneName string) (*route53.ResourceRecordSet, error) {
|
func resourceAwsRoute53RecordBuildSet(d *schema.ResourceData, zoneName string) (*route53.ResourceRecordSet, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user