@@ -2,8 +2,10 @@ package cvm
2
2
3
3
import (
4
4
"context"
5
+ "errors"
5
6
"fmt"
6
7
"log"
8
+ "strconv"
7
9
8
10
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
9
11
svctag "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag"
@@ -197,6 +199,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
197
199
}
198
200
199
201
eipId := ""
202
+ taskId := ""
200
203
err := resource .Retry (tccommon .WriteRetryTimeout , func () * resource.RetryError {
201
204
ratelimit .Check (request .GetAction ())
202
205
response , err := client .UseVpcClient ().AllocateAddresses (request )
@@ -212,6 +215,7 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
212
215
return resource .RetryableError (fmt .Errorf ("eip id is nil" ))
213
216
}
214
217
eipId = * response .Response .AddressSet [0 ]
218
+ taskId = * response .Response .TaskId
215
219
return nil
216
220
})
217
221
if err != nil {
@@ -228,6 +232,27 @@ func resourceTencentCloudEipCreate(d *schema.ResourceData, meta interface{}) err
228
232
}
229
233
230
234
// 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
+
231
256
err = resource .Retry (tccommon .ReadRetryTimeout , func () * resource.RetryError {
232
257
eip , errRet := vpcService .DescribeEipById (ctx , eipId , cdcId )
233
258
if errRet != nil {
0 commit comments