Skip to content

Commit 12ed922

Browse files
committed
fix: add eip task retry
1 parent 5d7dd0b commit 12ed922

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

tencentcloud/services/cvm/resource_tc_eip.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package cvm
22

33
import (
44
"context"
5+
"errors"
56
"fmt"
67
"log"
8+
"strconv"
79

810
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
911
svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag"
@@ -197,6 +199,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
197199
}
198200

199201
eipId := ""
202+
taskId := ""
200203
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
201204
ratelimit.Check(request.GetAction())
202205
response, err := client.UseVpcClient().AllocateAddresses(request)
@@ -212,6 +215,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
212215
return resource.RetryableError(fmt.Errorf("eip id is nil"))
213216
}
214217
eipId = *response.Response.AddressSet[0]
218+
taskId = *response.Response.TaskId
215219
return nil
216220
})
217221
if err != nil {
@@ -228,6 +232,27 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
228232
}
229233

230234
// wait for status
235+
taskIdUint64, err := strconv.ParseUint(taskId, 10, 64)
236+
if err != nil {
237+
return err
238+
}
239+
taskRequest := vpc.NewDescribeTaskResultRequest()
240+
taskRequest.TaskId = &taskIdUint64
241+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
242+
ratelimit.Check(taskRequest.GetAction())
243+
taskResponse, err := client.UseVpcClient().DescribeTaskResult(taskRequest)
244+
if err != nil {
245+
return tccommon.RetryError(err)
246+
}
247+
if taskResponse.Response.Result != nil && *taskResponse.Response.Result == "RUNNING" {
248+
return resource.RetryableError(errors.New("eip task is running"))
249+
}
250+
return nil
251+
})
252+
if err != nil {
253+
return err
254+
}
255+
231256
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
232257
eip, errRet := vpcService.DescribeEipById(ctx, eipId, cdcId)
233258
if errRet != nil {

0 commit comments

Comments
 (0)