Skip to content

Commit b760e2c

Browse files
authored
feat: wait createTunnel (#2460)
* feat: wait createTunnel * feat: wait createTunnel * feat: changelog * feat: changelog
1 parent 7de1f52 commit b760e2c

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

.changelog/2460.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_dcx: Add waiting tunnel ready logic
3+
```

tencentcloud/services/dc/resource_tc_dcx.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,11 @@ func resourceTencentCloudDcxInstanceCreate(d *schema.ResourceData, meta interfac
227227
if err != nil {
228228
return err
229229
}
230+
231+
err = service.waitCreateDirectConnectTunnelAvailable(ctx, dcxId)
232+
if err != nil {
233+
return err
234+
}
230235
d.SetId(dcxId)
231236

232237
return resourceTencentCloudDcxInstanceRead(d, meta)

tencentcloud/services/dc/service_tencentcloud_dc.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"fmt"
66
"log"
77

8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
810
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
911

1012
dc "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc/v20180410"
@@ -618,3 +620,25 @@ func (me *DcService) DescribeDcAccessPointsByFilter(ctx context.Context, param m
618620

619621
return
620622
}
623+
func (me *DcService) waitCreateDirectConnectTunnelAvailable(ctx context.Context, dcxId string) (err error) {
624+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
625+
item, has, e := me.DescribeDirectConnectTunnel(ctx, dcxId)
626+
if e != nil {
627+
return tccommon.RetryError(e)
628+
}
629+
if has == 0 {
630+
return resource.NonRetryableError(fmt.Errorf("tunnel not found"))
631+
}
632+
if item.State == nil {
633+
return resource.NonRetryableError(fmt.Errorf("tunnel state is nil"))
634+
}
635+
if *item.State != "AVAILABLE" {
636+
return resource.RetryableError(fmt.Errorf("tunnel status is not ready, status is %s ", *item.State))
637+
}
638+
return nil
639+
})
640+
if err != nil {
641+
return
642+
}
643+
return
644+
}

0 commit comments

Comments
 (0)