Skip to content

Commit 4f6196b

Browse files
authored
feat/privatezone (#2391)
* feat/privatezone * feat/privatezone * feat/privatezone * feat/privatezone * feat/privatezone * feat/privatezone
1 parent 3a6acf5 commit 4f6196b

File tree

9 files changed

+256
-10
lines changed

9 files changed

+256
-10
lines changed

.changelog/2391.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_private_dns_zone_vpc_attachment: Asynchronous operation adaptation.
3+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.693
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.711
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.814
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.815
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692
@@ -71,7 +71,7 @@ require (
7171
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.777
7272
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.770
7373
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.814
74-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.814
74+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.815
7575
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762
7676
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.657
7777
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.744

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -925,6 +925,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.811/go.mod
925925
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.812/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
926926
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.814 h1:U1BAjbwmFNg5d9K5syyZh/ELL/70yTNPYQgTuCEmuxk=
927927
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.814/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
928+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.815 h1:j8p8E8JRFNhMQK4S6hbQBrv16VRiJ8AjmW6dxwscC6E=
929+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.815/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
928930
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
929931
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
930932
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762 h1:2egy69SP/wPsmnfozcQVZ6tUY6F6N/TpEe/7xtXrc/8=
@@ -983,6 +985,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.751 h1:
983985
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.751/go.mod h1:PsIFaoUYRjgVGiG9fUFgs1x/ewUsvBtPeIXDHjh8ABw=
984986
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.814 h1:9bK2bKOy6FAs+GwtL273zrtSJ/T+nuTdhbLmoGx07LU=
985987
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.814/go.mod h1:PeiIuM/rMyPi7P95qKO4W535VOnnV4XOfsMBQO3jPgA=
988+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.815 h1:zuOoiF957eIqonXgMW1qtsMnlYGIrgTSMM+yk+OHuWE=
989+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.815/go.mod h1:OdeqTfzG3sujkAUJySJQU9rXu+1P8JT/8AnX14aQyRI=
986990
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762 h1:rZDKucVVtTnmnbZFDyh6t47dHswkb2oSuOxOHTTkygA=
987991
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762/go.mod h1:QB/XcdVZ8mhRgk90XuXd+2Smfo8emTo0wHIUsygEaKs=
988992
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.657 h1:9p/4/qXtnBIYkz5b5mYAhp1XhnIn5jUkxxfllF8hMMM=

tencentcloud/resource_tc_private_dns_zone_vpc_attachment.go

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,12 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate(d *schema.ResourceDat
9090
defer inconsistentCheck(d, meta)()
9191

9292
var (
93-
logId = getLogId(contextNil)
94-
request = privatedns.NewAddSpecifyPrivateZoneVpcRequest()
95-
zoneId string
96-
uniqVpcId string
93+
logId = getLogId(contextNil)
94+
request = privatedns.NewAddSpecifyPrivateZoneVpcRequest()
95+
asyncRequest = privatedns.NewQueryAsyncBindVpcStatusRequest()
96+
zoneId string
97+
uniqVpcId string
98+
uniqId string
9799
)
98100

99101
if v, ok := d.GetOk("zone_id"); ok {
@@ -135,10 +137,13 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate(d *schema.ResourceDat
135137
accountVpcInfo.Uin = helper.String(v.(string))
136138
}
137139

140+
accountVpcInfo.VpcName = helper.String("")
141+
138142
request.AccountVpcSet = append(request.AccountVpcSet, accountVpcInfo)
139143
}
140144
}
141145

146+
request.Sync = helper.Bool(false)
142147
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
143148
result, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().AddSpecifyPrivateZoneVpc(request)
144149
if e != nil {
@@ -147,6 +152,12 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate(d *schema.ResourceDat
147152
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
148153
}
149154

155+
if result == nil || result.Response.UniqId == nil {
156+
e = fmt.Errorf("PrivateDns ZoneVpcAttachment not exists")
157+
return resource.NonRetryableError(e)
158+
}
159+
160+
uniqId = *result.Response.UniqId
150161
return nil
151162
})
152163

@@ -157,6 +168,28 @@ func resourceTencentCloudPrivateDnsZoneVpcAttachmentCreate(d *schema.ResourceDat
157168

158169
d.SetId(strings.Join([]string{zoneId, uniqVpcId}, FILED_SP))
159170

171+
// wait
172+
asyncRequest.UniqId = &uniqId
173+
err = resource.Retry(readRetryTimeout*5, func() *resource.RetryError {
174+
result, e := meta.(*TencentCloudClient).apiV3Conn.UsePrivateDnsClient().QueryAsyncBindVpcStatus(asyncRequest)
175+
if e != nil {
176+
return retryError(e)
177+
} else {
178+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, asyncRequest.GetAction(), asyncRequest.ToJsonString(), asyncRequest.ToJsonString())
179+
}
180+
181+
if *result.Response.Status == "success" {
182+
return nil
183+
}
184+
185+
return resource.RetryableError(fmt.Errorf("query async bind vpc status is %s.", *result.Response.Status))
186+
})
187+
188+
if err != nil {
189+
log.Printf("[CRITAL]%s query async bind vpc status failed, reason:%+v", logId, err)
190+
return err
191+
}
192+
160193
return resourceTencentCloudPrivateDnsZoneVpcAttachmentRead(d, meta)
161194
}
162195

tencentcloud/service_tencentcloud_private_dns.go

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package tencentcloud
22

33
import (
44
"context"
5+
"fmt"
56
"log"
67

78
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
@@ -110,10 +111,15 @@ func (me *PrivateDnsService) DescribePrivateDnsZoneVpcAttachmentById(ctx context
110111
}
111112

112113
func (me *PrivateDnsService) DeletePrivateDnsZoneVpcAttachmentById(ctx context.Context, zoneId, uniqVpcId, region, uin string) (errRet error) {
113-
logId := getLogId(ctx)
114+
var (
115+
logId = getLogId(ctx)
116+
asyncRequest = privatedns.NewQueryAsyncBindVpcStatusRequest()
117+
uniqId string
118+
)
114119

115120
request := privatedns.NewDeleteSpecifyPrivateZoneVpcRequest()
116121
request.ZoneId = &zoneId
122+
request.Sync = common.BoolPtr(false)
117123
if uin == "" {
118124
request.VpcSet = []*privatedns.VpcInfo{
119125
{
@@ -127,6 +133,7 @@ func (me *PrivateDnsService) DeletePrivateDnsZoneVpcAttachmentById(ctx context.C
127133
UniqVpcId: common.StringPtr(uniqVpcId),
128134
Region: common.StringPtr(region),
129135
Uin: common.StringPtr(uin),
136+
VpcName: common.StringPtr(""),
130137
},
131138
}
132139
}
@@ -147,5 +154,33 @@ func (me *PrivateDnsService) DeletePrivateDnsZoneVpcAttachmentById(ctx context.C
147154

148155
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
149156

157+
if response == nil || response.Response.UniqId == nil {
158+
return fmt.Errorf("Delete specify private zone vpc failed.")
159+
}
160+
161+
uniqId = *response.Response.UniqId
162+
163+
// wait
164+
asyncRequest.UniqId = &uniqId
165+
err = resource.Retry(readRetryTimeout*5, func() *resource.RetryError {
166+
result, e := me.client.UsePrivateDnsClient().QueryAsyncBindVpcStatus(asyncRequest)
167+
if e != nil {
168+
return retryError(e)
169+
} else {
170+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, asyncRequest.GetAction(), asyncRequest.ToJsonString(), asyncRequest.ToJsonString())
171+
}
172+
173+
if *result.Response.Status == "success" {
174+
return nil
175+
}
176+
177+
return resource.RetryableError(fmt.Errorf("query async bind vpc status is %s.", *result.Response.Status))
178+
})
179+
180+
if err != nil {
181+
log.Printf("[CRITAL]%s query async bind vpc status failed, reason:%+v", logId, err)
182+
return err
183+
}
184+
150185
return
151186
}

vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028/client.go

Lines changed: 109 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028/models.go

Lines changed: 62 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1157,7 +1157,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit/v20190319
11571157
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.711
11581158
## explicit; go 1.14
11591159
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016
1160-
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.814
1160+
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.815
11611161
## explicit; go 1.11
11621162
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common
11631163
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors
@@ -1243,7 +1243,7 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization/v20210331
12431243
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.814
12441244
## explicit; go 1.14
12451245
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres/v20170312
1246-
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.814
1246+
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.815
12471247
## explicit; go 1.14
12481248
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028
12491249
# github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762

0 commit comments

Comments
 (0)