@@ -211,7 +211,11 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
211
211
return resource .RetryableError (fmt .Errorf ("eip id is nil" ))
212
212
}
213
213
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
+
215
219
return nil
216
220
})
217
221
if err != nil {
@@ -220,28 +224,30 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
220
224
d .SetId (eipId )
221
225
222
226
// 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 )
232
229
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
237
231
}
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
240
250
}
241
- return nil
242
- })
243
- if err != nil {
244
- return err
245
251
}
246
252
247
253
err = resource .Retry (tccommon .ReadRetryTimeout , func () * resource.RetryError {
@@ -252,11 +258,12 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
252
258
if eip == nil {
253
259
return resource .NonRetryableError (errors .New ("eip is nil" ))
254
260
}
255
- if eip != nil && * eip .AddressStatus == svcvpc .EIP_STATUS_CREATING {
261
+ if eip . AddressStatus != nil && * eip .AddressStatus == svcvpc .EIP_STATUS_CREATING {
256
262
return resource .RetryableError (fmt .Errorf ("eip is still creating" ))
257
263
}
258
264
return nil
259
265
})
266
+
260
267
if err != nil {
261
268
return err
262
269
}
0 commit comments