Skip to content

Commit a55c835

Browse files
authored
fix(clb): [137133785] tencentcloud_clb_customized_config update code (#3085)
* add * add
1 parent 093801f commit a55c835

File tree

4 files changed

+115
-70
lines changed

4 files changed

+115
-70
lines changed

.changelog/3085.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_clb_customized_config: update code
3+
```

tencentcloud/services/clb/resource_tc_clb_customized_config.go

Lines changed: 79 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package clb
22

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

78
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
@@ -58,79 +59,92 @@ func ResourceTencentCloudClbCustomizedConfig() *schema.Resource {
5859

5960
func resourceTencentCloudClbCustomizedConfigCreate(d *schema.ResourceData, meta interface{}) error {
6061
defer tccommon.LogElapsed("resource.tencentcloud_clb_customized_config.create")()
61-
logId := tccommon.GetLogId(tccommon.ContextNil)
62-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
62+
63+
var (
64+
logId = tccommon.GetLogId(tccommon.ContextNil)
65+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
66+
request = clb.NewSetCustomizedConfigForLoadBalancerRequest()
67+
response = clb.NewSetCustomizedConfigForLoadBalancerResponse()
68+
)
6369

6470
configName := d.Get("config_name").(string)
6571
configContent := d.Get("config_content").(string)
66-
67-
request := clb.NewSetCustomizedConfigForLoadBalancerRequest()
6872
request.OperationType = helper.String("ADD")
6973
request.ConfigName = helper.String(configName)
7074
request.ConfigContent = helper.String(configContent)
7175

72-
var response *clb.SetCustomizedConfigForLoadBalancerResponse
7376
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
7477
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient().SetCustomizedConfigForLoadBalancer(request)
7578
if e != nil {
7679
return tccommon.RetryError(e)
7780
} else {
78-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
79-
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
81+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
82+
if result == nil || result.Response == nil || result.Response.RequestId == nil {
83+
return resource.NonRetryableError(fmt.Errorf("Create CLB Customized Config Failed, Response is nil."))
84+
}
85+
8086
requestId := *result.Response.RequestId
8187
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
8288
if retryErr != nil {
8389
return tccommon.RetryError(errors.WithStack(retryErr))
8490
}
8591
}
92+
8693
response = result
8794
return nil
8895
})
96+
8997
if err != nil {
9098
log.Printf("[CRITAL]%s Create CLB Customized Config Failed, reason:%+v", logId, err)
9199
return err
92100
}
101+
102+
if response.Response.ConfigId == nil {
103+
return fmt.Errorf("ConfigId is nil.")
104+
}
105+
93106
d.SetId(*response.Response.ConfigId)
94107

95108
if v, ok := d.GetOk("load_balancer_ids"); ok {
96109
loadBalancerIds := v.(*schema.Set).List()
97-
clbService := ClbService{
98-
client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(),
99-
}
100-
err := clbService.BindOrUnBindCustomizedConfigWithLbId(ctx,
101-
"BIND", *response.Response.ConfigId, loadBalancerIds)
110+
clbService := ClbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
111+
err := clbService.BindOrUnBindCustomizedConfigWithLbId(ctx, "BIND", *response.Response.ConfigId, loadBalancerIds)
102112
if err != nil {
103113
log.Printf("[CRITAL]%s Binding LB Customized Config Failed, reason:%+v", logId, err)
104114
return err
105115
}
106116
}
117+
107118
return resourceTencentCloudClbCustomizedConfigRead(d, meta)
108119
}
109120

110121
func resourceTencentCloudClbCustomizedConfigRead(d *schema.ResourceData, meta interface{}) error {
111122
defer tccommon.LogElapsed("resource.tencentcloud_clb_customized_config.read")()
112123
defer tccommon.InconsistentCheck(d, meta)()
113124

114-
logId := tccommon.GetLogId(tccommon.ContextNil)
115-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
125+
var (
126+
logId = tccommon.GetLogId(tccommon.ContextNil)
127+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
128+
clbService = ClbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
129+
configId = d.Id()
130+
)
116131

117-
configId := d.Id()
118-
clbService := ClbService{
119-
client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(),
120-
}
121132
var config *clb.ConfigListItem
122133
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
123134
result, e := clbService.DescribeLbCustomizedConfigById(ctx, configId)
124135
if e != nil {
125136
return tccommon.RetryError(e)
126137
}
138+
127139
config = result
128140
return nil
129141
})
142+
130143
if err != nil {
131144
log.Printf("[CRITAL]%s read CLB customized config failed, reason:%+v", logId, err)
132145
return err
133146
}
147+
134148
if config == nil {
135149
d.SetId("")
136150
return nil
@@ -152,13 +166,16 @@ func resourceTencentCloudClbCustomizedConfigRead(d *schema.ResourceData, meta in
152166
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
153167
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
154168
}
169+
155170
response = result
156171
return nil
157172
})
173+
158174
if assErr != nil {
159175
log.Printf("[CRITAL]%s Describe CLB Customized Config Associate List Failed, reason:%+v", logId, assErr)
160176
return err
161177
}
178+
162179
_ = d.Set("load_balancer_ids", extractBindClbList(response.Response.BindList))
163180

164181
return nil
@@ -167,93 +184,95 @@ func resourceTencentCloudClbCustomizedConfigRead(d *schema.ResourceData, meta in
167184
func resourceTencentCloudClbCustomizedConfigUpdate(d *schema.ResourceData, meta interface{}) error {
168185
defer tccommon.LogElapsed("resource.tencentcloud_clb_customized_config.update")()
169186

170-
logId := tccommon.GetLogId(tccommon.ContextNil)
187+
var (
188+
logId = tccommon.GetLogId(tccommon.ContextNil)
189+
configId = d.Id()
190+
)
171191

172192
d.Partial(true)
173193

174-
configId := d.Id()
175-
request := clb.NewSetCustomizedConfigForLoadBalancerRequest()
176-
request.UconfigId = &configId
177-
request.OperationType = helper.String("UPDATE")
178-
179-
if d.HasChange("config_name") {
194+
if d.HasChange("config_name") || d.HasChange("config_content") {
195+
request := clb.NewSetCustomizedConfigForLoadBalancerRequest()
196+
request.UconfigId = &configId
197+
request.OperationType = helper.String("UPDATE")
180198
configName := d.Get("config_name").(string)
181-
request.ConfigName = &configName
182-
}
183-
184-
if d.HasChange("config_content") {
185199
configContent := d.Get("config_content").(string)
200+
request.ConfigName = &configName
186201
request.ConfigContent = &configContent
187-
}
188202

189-
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
190-
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient().SetCustomizedConfigForLoadBalancer(request)
191-
if e != nil {
192-
return tccommon.RetryError(e)
193-
} else {
194-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
195-
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
196-
requestId := *result.Response.RequestId
197-
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
198-
if retryErr != nil {
199-
return tccommon.RetryError(errors.WithStack(retryErr))
203+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
204+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient().SetCustomizedConfigForLoadBalancer(request)
205+
if e != nil {
206+
return tccommon.RetryError(e)
207+
} else {
208+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
209+
if result == nil || result.Response == nil || result.Response.RequestId == nil {
210+
return resource.NonRetryableError(fmt.Errorf("Update CLB Customized Config Failed, Response is nil."))
211+
}
212+
213+
requestId := *result.Response.RequestId
214+
retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
215+
if retryErr != nil {
216+
return tccommon.RetryError(errors.WithStack(retryErr))
217+
}
200218
}
219+
220+
return nil
221+
})
222+
223+
if err != nil {
224+
log.Printf("[CRITAL]%s Update CLB Customized Config Failed, reason:%+v", logId, err)
225+
return err
201226
}
202-
return nil
203-
})
204-
if err != nil {
205-
log.Printf("[CRITAL]%s Update CLB Customized Config Failed, reason:%+v", logId, err)
206-
return err
207227
}
208228

209229
if d.HasChange("load_balancer_ids") {
210230
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
211-
clbService := ClbService{
212-
client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(),
213-
}
231+
clbService := ClbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
214232
old, new := d.GetChange("load_balancer_ids")
215233
olds := old.(*schema.Set)
216234
news := new.(*schema.Set)
217235
add := news.Difference(olds).List()
218236
remove := olds.Difference(news).List()
219237
if len(remove) > 0 {
220-
err := clbService.BindOrUnBindCustomizedConfigWithLbId(ctx,
221-
"UNBIND", configId, remove)
238+
err := clbService.BindOrUnBindCustomizedConfigWithLbId(ctx, "UNBIND", configId, remove)
222239
if err != nil {
223240
log.Printf("[CRITAL]%s UnBinding LB Customized Config Failed, reason:%+v", logId, err)
224241
return err
225242
}
226243
}
244+
227245
if len(add) > 0 {
228-
err := clbService.BindOrUnBindCustomizedConfigWithLbId(ctx,
229-
"BIND", configId, add)
246+
err := clbService.BindOrUnBindCustomizedConfigWithLbId(ctx, "BIND", configId, add)
230247
if err != nil {
231248
log.Printf("[CRITAL]%s Binding LB Customized Config Failed, reason:%+v", logId, err)
232249
return err
233250
}
234251
}
235252
}
253+
236254
return nil
237255
}
238256

239257
func resourceTencentCloudClbCustomizedConfigDelete(d *schema.ResourceData, meta interface{}) error {
240258
defer tccommon.LogElapsed("resource.tencentcloud_clb_customized_config.delete")()
241259

242-
logId := tccommon.GetLogId(tccommon.ContextNil)
243-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
244-
245-
configId := d.Id()
246-
clbService := ClbService{
247-
client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(),
248-
}
260+
var (
261+
logId = tccommon.GetLogId(tccommon.ContextNil)
262+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
263+
clbService = ClbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
264+
configId = d.Id()
265+
)
249266

250267
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
251268
e := clbService.DeleteLbCustomizedConfigById(ctx, configId)
252269
if e != nil {
253270
return tccommon.RetryError(e)
254271
}
272+
255273
return nil
256274
})
275+
257276
if err != nil {
258277
log.Printf("[CRITAL]%s delete CLB customized config failed, reason:%+v", logId, err)
259278
return err

tencentcloud/services/clb/resource_tc_clb_customized_config.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,32 @@ Provides a resource to create a CLB customized config.
22

33
Example Usage
44

5+
Create clb customized config without CLB instance
6+
7+
```hcl
8+
resource "tencentcloud_clb_customized_config" "example" {
9+
config_name = "tf-example"
10+
config_content = "client_max_body_size 224M;\r\nclient_body_timeout 60s;"
11+
}
12+
```
13+
14+
Create clb customized config with CLB instances
15+
516
```hcl
6-
resource "tencentcloud_clb_customized_config" "foo" {
17+
resource "tencentcloud_clb_customized_config" "example" {
18+
config_name = "tf-example"
719
config_content = "client_max_body_size 224M;\r\nclient_body_timeout 60s;"
8-
config_name = "helloWorld"
920
load_balancer_ids = [
10-
"${tencentcloud_clb_instance.internal_clb.id}",
11-
"${tencentcloud_clb_instance.internal_clb2.id}",
21+
"lb-l6cp6jt4",
22+
"lb-muk4zzxi",
1223
]
1324
}
1425
```
26+
1527
Import
1628

1729
CLB customized config can be imported using the id, e.g.
1830

1931
```
20-
$ terraform import tencentcloud_clb_customized_config.foo pz-diowqstq
32+
$ terraform import tencentcloud_clb_customized_config.example pz-diowqstq
2133
```

website/docs/r/clb_customized_config.html.markdown

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,24 @@ Provides a resource to create a CLB customized config.
1313

1414
## Example Usage
1515

16+
### Create clb customized config without CLB instance
17+
18+
```hcl
19+
resource "tencentcloud_clb_customized_config" "example" {
20+
config_name = "tf-example"
21+
config_content = "client_max_body_size 224M;\r\nclient_body_timeout 60s;"
22+
}
23+
```
24+
25+
### Create clb customized config with CLB instances
26+
1627
```hcl
17-
resource "tencentcloud_clb_customized_config" "foo" {
28+
resource "tencentcloud_clb_customized_config" "example" {
29+
config_name = "tf-example"
1830
config_content = "client_max_body_size 224M;\r\nclient_body_timeout 60s;"
19-
config_name = "helloWorld"
2031
load_balancer_ids = [
21-
"${tencentcloud_clb_instance.internal_clb.id}",
22-
"${tencentcloud_clb_instance.internal_clb2.id}",
32+
"lb-l6cp6jt4",
33+
"lb-muk4zzxi",
2334
]
2435
}
2536
```
@@ -46,6 +57,6 @@ In addition to all arguments above, the following attributes are exported:
4657
CLB customized config can be imported using the id, e.g.
4758

4859
```
49-
$ terraform import tencentcloud_clb_customized_config.foo pz-diowqstq
60+
$ terraform import tencentcloud_clb_customized_config.example pz-diowqstq
5061
```
5162

0 commit comments

Comments
 (0)