Skip to content

Commit 41f599f

Browse files
authored
fix(eip): [137763127] tencentcloud_eip fix of creating BANDWIDTH_PREPAID_BY_MONTH eip (#3111)
* add * add * add
1 parent cd6c47c commit 41f599f

File tree

2 files changed

+31
-21
lines changed

2 files changed

+31
-21
lines changed

.changelog/3111.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_eip: fix of creating `BANDWIDTH_PREPAID_BY_MONTH` eip
3+
```

tencentcloud/services/cvm/resource_tc_eip.go

Lines changed: 28 additions & 21 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,28 +224,30 @@ 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(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

247253
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
@@ -252,11 +258,12 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
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)