Skip to content

Commit 21a7559

Browse files
committed
add
1 parent 79525ad commit 21a7559

File tree

1 file changed

+29
-22
lines changed

1 file changed

+29
-22
lines changed

tencentcloud/services/cvm/resource_tc_eip.go

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,11 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
211211
return resource.RetryableError(fmt.Errorf("eip id is nil"))
212212
}
213213
eipId = *response.Response.AddressSet[0]
214-
taskId = *response.Response.TaskId
214+
// taskId maybe nil
215+
if response.Response.TaskId != nil {
216+
taskId = *response.Response.TaskId
217+
}
218+
215219
return nil
216220
})
217221
if err != nil {
@@ -220,43 +224,46 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
220224
d.SetId(eipId)
221225

222226
// wait for status
223-
taskIdUint64, err := strconv.ParseUint(taskId, 10, 64)
224-
if err != nil {
225-
return err
226-
}
227-
taskRequest := vpc.NewDescribeTaskResultRequest()
228-
taskRequest.TaskId = &taskIdUint64
229-
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
230-
ratelimit.Check(taskRequest.GetAction())
231-
taskResponse, err := client.UseVpcClient().DescribeTaskResult(taskRequest)
227+
if taskId != "" {
228+
taskIdUint64, err := strconv.ParseUint(taskId, 10, 64)
232229
if err != nil {
233-
return tccommon.RetryError(err)
234-
}
235-
if taskResponse.Response.Result != nil && *taskResponse.Response.Result == svcvpc.VPN_TASK_STATUS_RUNNING {
236-
return resource.RetryableError(errors.New("eip task is running"))
230+
return err
237231
}
238-
if taskResponse.Response.Result != nil && *taskResponse.Response.Result == svcvpc.VPN_TASK_STATUS_FAILED {
239-
return resource.NonRetryableError(errors.New("eip task is failed"))
232+
taskRequest := vpc.NewDescribeTaskResultRequest()
233+
taskRequest.TaskId = &taskIdUint64
234+
err = resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError {
235+
ratelimit.Check(taskRequest.GetAction())
236+
taskResponse, err := client.UseVpcClient().DescribeTaskResult(taskRequest)
237+
if err != nil {
238+
return tccommon.RetryError(err)
239+
}
240+
if taskResponse.Response.Result != nil && *taskResponse.Response.Result == svcvpc.VPN_TASK_STATUS_RUNNING {
241+
return resource.RetryableError(errors.New("eip task is running"))
242+
}
243+
if taskResponse.Response.Result != nil && *taskResponse.Response.Result == svcvpc.VPN_TASK_STATUS_FAILED {
244+
return resource.NonRetryableError(errors.New("eip task is failed"))
245+
}
246+
return nil
247+
})
248+
if err != nil {
249+
return err
240250
}
241-
return nil
242-
})
243-
if err != nil {
244-
return err
245251
}
246252

247-
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
253+
err = resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError {
248254
eip, errRet := vpcService.DescribeEipById(ctx, eipId)
249255
if errRet != nil {
250256
return tccommon.RetryError(errRet)
251257
}
252258
if eip == nil {
253259
return resource.NonRetryableError(errors.New("eip is nil"))
254260
}
255-
if eip != nil && *eip.AddressStatus == svcvpc.EIP_STATUS_CREATING {
261+
if eip.AddressStatus != nil && *eip.AddressStatus == svcvpc.EIP_STATUS_CREATING {
256262
return resource.RetryableError(fmt.Errorf("eip is still creating"))
257263
}
258264
return nil
259265
})
266+
260267
if err != nil {
261268
return err
262269
}

0 commit comments

Comments
 (0)