@@ -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