Skip to content

Commit 6a7d3d5

Browse files
authored
Merge pull request #494 from crab21/fix
remove parameter and optimize cdn data source.
2 parents 2b0fe89 + 6a4cdd7 commit 6a7d3d5

File tree

4 files changed

+51
-62
lines changed

4 files changed

+51
-62
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ FEATURES:
1010
* **New Data Source**: `tencentcloud_sqlserver_instance`
1111
* **New Data Source**: `tencentcloud_sqlserver_readonly_groups`
1212

13+
DEPRECATED:
14+
15+
* Data Source: `tencentcloud_cdn_domains` optional argument `offset` is no longer supported.
16+
1317
## 1.40.3 (August 11, 2020)
1418

1519
ENHANCEMENTS:

tencentcloud/data_source_tc_cdn_domains.go

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"context"
2020
"log"
2121

22-
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
2322
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
2423
cdn "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn/v20180606"
2524
"github.com/terraform-providers/terraform-provider-tencentcloud/tencentcloud/internal/helper"
@@ -57,13 +56,6 @@ func dataSourceTencentCloudCdnDomains() *schema.Resource {
5756
ValidateFunc: validateAllowedStringValue(CDN_HTTPS_SWITCH),
5857
Description: "HTTPS configuration. The available value include `on`, `off` and `processing`.",
5958
},
60-
"offset": {
61-
Type: schema.TypeInt,
62-
Optional: true,
63-
Default: 10,
64-
ValidateFunc: validateIntegerInRange(1, 10000),
65-
Description: "Record offset. Default is 10.",
66-
},
6759
"result_output_file": {
6860
Type: schema.TypeString,
6961
Optional: true,
@@ -224,16 +216,18 @@ func dataSourceTencentCloudCdnDomains() *schema.Resource {
224216

225217
func dataSourceTencentCloudCdnDomainsRead(d *schema.ResourceData, meta interface{}) error {
226218
defer logElapsed("data_source.tencentcloud_cdn_domain.read")()
219+
var (
220+
logId = getLogId(contextNil)
221+
ctx = context.WithValue(context.TODO(), logIdKey, logId)
222+
domainConfigs []*cdn.DetailDomain
223+
err error
227224

228-
logId := getLogId(contextNil)
229-
ctx := context.WithValue(context.TODO(), logIdKey, logId)
230-
231-
client := meta.(*TencentCloudClient).apiV3Conn
232-
region := client.Region
233-
cdnService := CdnService{client: client}
234-
tagService := TagService{client: client}
225+
client = meta.(*TencentCloudClient).apiV3Conn
226+
region = client.Region
227+
cdnService = CdnService{client: client}
228+
tagService = TagService{client: client}
229+
)
235230

236-
offset, _ := d.Get("offset").(int)
237231
var domainFilterMap = make(map[string]interface{}, 5)
238232
if v, ok := d.GetOk("domain"); ok {
239233
domainFilterMap["domain"] = v.(string)
@@ -258,18 +252,9 @@ func dataSourceTencentCloudCdnDomainsRead(d *schema.ResourceData, meta interface
258252
domainFilterMap["fullUrlCache"] = value
259253
}
260254

261-
var domainConfigs []*cdn.DetailDomain
262-
var errRet error
263-
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
264-
domainConfigs, errRet = cdnService.DescribeDomainsConfigByFilters(ctx, domainFilterMap, int64(offset))
265-
if errRet != nil {
266-
return retryError(errRet, InternalError)
267-
}
268-
return nil
269-
})
270-
255+
domainConfigs, err = cdnService.DescribeDomainsConfigByFilters(ctx, domainFilterMap)
271256
if err != nil {
272-
log.Printf("[CRITAL]%s describeDomainsConfigByFilters fail, reason:%s\n ", logId, err.Error())
257+
log.Printf("[CRITAL]%s describeDomainsConfigByFilters fail, reason:%v ", logId, err)
273258
return err
274259
}
275260

@@ -332,7 +317,7 @@ func dataSourceTencentCloudCdnDomainsRead(d *schema.ResourceData, meta interface
332317
d.SetId(helper.DataResourceIdsHash(ids))
333318
err = d.Set("domain_list", cdnDomainList)
334319
if err != nil {
335-
log.Printf("[CRITAL]%s provider set cdn domain list fail, reason:%s\n ", logId, err.Error())
320+
log.Printf("[CRITAL]%s provider set cdn domain list fail, reason:%v ", logId, err)
336321
return err
337322
}
338323
output, ok := d.GetOk("result_output_file")

tencentcloud/service_tencentcloud_cdn.go

Lines changed: 34 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"log"
66

7+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
78
cdn "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn/v20180606"
89
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors"
910
"github.com/terraform-providers/terraform-provider-tencentcloud/tencentcloud/connectivity"
@@ -90,11 +91,16 @@ func (me *CdnService) StartDomain(ctx context.Context, domain string) error {
9091
}
9192

9293
func (me *CdnService) DescribeDomainsConfigByFilters(ctx context.Context,
93-
filterMap map[string]interface{},
94-
leftNumber int64) (domainConfig []*cdn.DetailDomain, errRet error) {
94+
filterMap map[string]interface{}) (domainConfig []*cdn.DetailDomain, errRet error) {
95+
96+
var (
97+
logId = getLogId(ctx)
98+
request = cdn.NewDescribeDomainsConfigRequest()
99+
err error
100+
offset, limit int64 = 0, 100
101+
response *cdn.DescribeDomainsConfigResponse
102+
)
95103

96-
logId := getLogId(ctx)
97-
request := cdn.NewDescribeDomainsConfigRequest()
98104
request.Filters = make([]*cdn.DomainFilter, 0, len(filterMap))
99105

100106
for k, v := range filterMap {
@@ -106,42 +112,37 @@ func (me *CdnService) DescribeDomainsConfigByFilters(ctx context.Context,
106112
request.Filters = append(request.Filters, filter)
107113
}
108114

109-
var offset, limit int64 = 0, 100
110-
needMoreDomains:
111-
if leftNumber <= 0 {
112-
return
113-
}
114-
if leftNumber < limit {
115-
limit = leftNumber
116-
}
117-
118115
request.Limit = &limit
119116
request.Offset = &offset
120117

121-
ratelimit.Check(request.GetAction())
122-
response, err := me.client.UseCdnClient().DescribeDomainsConfig(request)
123-
if err != nil {
124-
if sdkErr, ok := err.(*errors.TencentCloudSDKError); ok {
125-
if sdkErr.Code == CDN_HOST_NOT_FOUND {
126-
return
118+
for {
119+
err = resource.Retry(readRetryTimeout, func() *resource.RetryError {
120+
ratelimit.Check(request.GetAction())
121+
response, err = me.client.UseCdnClient().DescribeDomainsConfig(request)
122+
123+
if err != nil {
124+
if sdkErr, ok := err.(*errors.TencentCloudSDKError); ok {
125+
if sdkErr.Code == CDN_HOST_NOT_FOUND {
126+
return nil
127+
}
128+
}
129+
return retryError(err, InternalError)
127130
}
131+
return nil
132+
})
133+
134+
if err != nil {
135+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%v]",
136+
logId, request.GetAction(), request.ToJsonString(), err)
137+
errRet = err
138+
return
128139
}
129-
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n",
130-
logId, request.GetAction(), request.ToJsonString(), err.Error())
131-
errRet = err
132-
return
133-
}
134140

135-
totalCount := *response.Response.TotalNumber
136-
leftNumber = leftNumber - limit
137-
offset += limit
138-
139-
if len(response.Response.Domains) > 0 {
140141
domainConfig = append(domainConfig, response.Response.Domains...)
141-
}
142-
143-
if leftNumber > 0 && totalCount-offset > 0 {
144-
goto needMoreDomains
142+
if len(response.Response.Domains) < int(limit) {
143+
break
144+
}
145+
offset += limit
145146
}
146147
return
147148
}

website/docs/d/cdn_domains.html.markdown

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ The following arguments are supported:
2929
* `domain` - (Optional) Acceleration domain name.
3030
* `full_url_cache` - (Optional) Whether to enable full-path cache.
3131
* `https_switch` - (Optional) HTTPS configuration. The available value include `on`, `off` and `processing`.
32-
* `offset` - (Optional) Record offset. Default is 10.
3332
* `origin_pull_protocol` - (Optional) Origin-pull protocol configuration. The available value include `http`, `https` and `follow`.
3433
* `result_output_file` - (Optional) Used to save results.
3534
* `service_type` - (Optional) Service type of acceleration domain name. The available value include `web`, `download` and `media`.

0 commit comments

Comments
 (0)