Skip to content

Commit 560c522

Browse files
author
hellertang
authored
clb support log (#735)
* clb support log * modify description
1 parent 20595b1 commit 560c522

File tree

15 files changed

+374
-114
lines changed

15 files changed

+374
-114
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ require (
3838
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.199
3939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.199
4040
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.199
41-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.256
41+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.291
4242
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.199
4343
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.199
4444
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.275

go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -468,10 +468,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283 h1:8pML0Ut
468468
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283/go.mod h1:zgARzAnsLzpLhdpAHrHTUilOXytH9aEJy5ssCdizVV0=
469469
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199 h1:o41qFAFJGPDTLNWXs7nLw4fsDxFUCe5gkO2YXI9Ye6Q=
470470
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199/go.mod h1:b7dNjabPys0/iLwRFd8MVE5EkJTNAh4qtaHQOOLchx4=
471-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.291 h1:r7GSk4v8od8srrBrpnsHz9Hxrq0fLNO2u1m4ABQVX5g=
472-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.291/go.mod h1:O5PQ2JoBWhmSNVils3vZyS1GPeRdXA8Lu23ZEjiUfZ8=
473471
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.290 h1:PJ/XwIXHUVIi/OwvtUKOSWB+x5qn42oJettG6bhHfNQ=
474472
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.290/go.mod h1:O5PQ2JoBWhmSNVils3vZyS1GPeRdXA8Lu23ZEjiUfZ8=
473+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.291 h1:r7GSk4v8od8srrBrpnsHz9Hxrq0fLNO2u1m4ABQVX5g=
474+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.291/go.mod h1:O5PQ2JoBWhmSNVils3vZyS1GPeRdXA8Lu23ZEjiUfZ8=
475475
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.194/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
476476
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.264 h1:USf7I8ohzoqCwAcCHz5rz0hD57mmNXZgrLfxFLx1WmA=
477477
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.264/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
@@ -494,6 +494,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.199 h1:2js
494494
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.199/go.mod h1:f5GhbJyuYQBzRaDHGe3I4U9utb0Pmx2NlI+XcqSQRp0=
495495
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.256 h1:ZuLw+tA9BunYh68AZ1c4tuRJOwsSRKgyf5HYRWyp2gA=
496496
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.256/go.mod h1:aMwrB/fRSIS8IFabcF0hfRC89y76DptUknUjAf1jlHE=
497+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.291 h1:EIUXql9I6+B9OH3ieDwA2SO/+qO35UrqA5TTToQ5Kc4=
498+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.291/go.mod h1:aMwrB/fRSIS8IFabcF0hfRC89y76DptUknUjAf1jlHE=
497499
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.199 h1:Opze570l6JbOc+/nYftYmheyCU9omz+emNJpDUBYYFQ=
498500
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.199/go.mod h1:Rh/4NXBd0aqmaRGDYcW4gL2Zi8JShGZiB23zrfVaS90=
499501
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.199 h1:lXCng7HQqvubF7uwa7x5COsDZlJEjEJ/RBpaeYGc0+I=

tencentcloud/provider.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,6 @@ Cloud Load Balancer(CLB)
206206
207207
Resource
208208
tencentcloud_clb_instance
209-
tencentcloud_clb_log_topic
210209
tencentcloud_clb_listener
211210
tencentcloud_clb_listener_rule
212211
tencentcloud_clb_attachment
@@ -216,7 +215,8 @@ Cloud Load Balancer(CLB)
216215
tencentcloud_clb_target_group
217216
tencentcloud_clb_target_group_instance_attachment
218217
tencentcloud_clb_target_group_attachment
219-
tencentcloud_clb_logset
218+
tencentcloud_clb_log_set
219+
tencentcloud_clb_log_topic
220220
221221
Cloud Object Storage(COS)
222222
Data Source
@@ -861,15 +861,15 @@ func Provider() terraform.ResourceProvider {
861861
"tencentcloud_lb": resourceTencentCloudLB(),
862862
"tencentcloud_alb_server_attachment": resourceTencentCloudAlbServerAttachment(),
863863
"tencentcloud_clb_instance": resourceTencentCloudClbInstance(),
864-
"tencentcloud_clb_log_topic": resourceTencentCloudClbLogTopic(),
865864
"tencentcloud_clb_listener": resourceTencentCloudClbListener(),
866865
"tencentcloud_clb_listener_rule": resourceTencentCloudClbListenerRule(),
867866
"tencentcloud_clb_attachment": resourceTencentCloudClbServerAttachment(),
868867
"tencentcloud_clb_redirection": resourceTencentCloudClbRedirection(),
869868
"tencentcloud_clb_target_group": resourceTencentCloudClbTargetGroup(),
870869
"tencentcloud_clb_target_group_instance_attachment": resourceTencentCloudClbTGAttachmentInstance(),
871870
"tencentcloud_clb_target_group_attachment": resourceTencentCloudClbTargetGroupAttachment(),
872-
"tencentcloud_clb_logset": resourceTencentCloudClbLogSet(),
871+
"tencentcloud_clb_log_set": resourceTencentCloudClbLogSet(),
872+
"tencentcloud_clb_log_topic": resourceTencentCloudClbLogTopic(),
873873
"tencentcloud_container_cluster": resourceTencentCloudContainerCluster(),
874874
"tencentcloud_container_cluster_instance": resourceTencentCloudContainerClusterInstance(),
875875
"tencentcloud_kubernetes_cluster": resourceTencentCloudTkeCluster(),

tencentcloud/resource_tc_clb_instance.go

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,52 @@ resource "tencentcloud_clb_instance" "open_clb1" {
9191
~
9292
```
9393
94+
CREATE instance with log
95+
```hcl
96+
resource "tencentcloud_vpc" "vpc_test" {
97+
name = "clb-test"
98+
cidr_block = "10.0.0.0/16"
99+
}
100+
101+
resource "tencentcloud_route_table" "rtb_test" {
102+
name = "clb-test"
103+
vpc_id = "${tencentcloud_vpc.vpc_test.id}"
104+
}
105+
106+
resource "tencentcloud_subnet" "subnet_test" {
107+
name = "clb-test"
108+
cidr_block = "10.0.1.0/24"
109+
availability_zone = "ap-guangzhou-3"
110+
vpc_id = "${tencentcloud_vpc.vpc_test.id}"
111+
route_table_id = "${tencentcloud_route_table.rtb_test.id}"
112+
}
113+
114+
resource "tencentcloud_clb_log_set" "set" {
115+
period = 7
116+
}
117+
118+
resource "tencentcloud_clb_log_topic" "topic" {
119+
log_set_id = "${tencentcloud_clb_log_set.set.id}"
120+
topic_name = "clb-topic"
121+
}
122+
123+
resource "tencentcloud_clb_instance" "internal_clb" {
124+
network_type = "INTERNAL"
125+
clb_name = "myclb"
126+
project_id = 0
127+
vpc_id = "${tencentcloud_vpc.vpc_test.id}"
128+
subnet_id = "${tencentcloud_subnet.subnet_test.id}"
129+
load_balancer_pass_to_target = true
130+
log_set_id = "${tencentcloud_clb_log_set.set.id}"
131+
log_topic_id = "${tencentcloud_clb_log_topic.topic.id}"
132+
133+
tags = {
134+
test = "tf"
135+
}
136+
}
137+
138+
```
139+
94140
Import
95141
96142
CLB instance can be imported using the id, e.g.
@@ -239,6 +285,16 @@ func resourceTencentCloudClbInstance() *schema.Resource {
239285
Optional: true,
240286
Description: "Setting slave zone id of cross available zone disaster recovery, only applicable to open CLB. this zone will undertake traffic when the master is down.",
241287
},
288+
"log_set_id": {
289+
Type: schema.TypeString,
290+
Optional: true,
291+
Description: "The id of log set.",
292+
},
293+
"log_topic_id": {
294+
Type: schema.TypeString,
295+
Optional: true,
296+
Description: "The id of log topic.",
297+
},
242298
},
243299
}
244300
}
@@ -422,6 +478,38 @@ func resourceTencentCloudClbInstanceCreate(d *schema.ResourceData, meta interfac
422478
}
423479
}
424480

481+
if v, ok := d.GetOk("log_set_id"); ok {
482+
if u, ok := d.GetOk("log_topic_id"); ok {
483+
logRequest := clb.NewSetLoadBalancerClsLogRequest()
484+
logRequest.LoadBalancerId = helper.String(clbId)
485+
logRequest.LogSetId = helper.String(v.(string))
486+
logRequest.LogTopicId = helper.String(u.(string))
487+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
488+
logResponse, e := meta.(*TencentCloudClient).apiV3Conn.UseClbClient().SetLoadBalancerClsLog(logRequest)
489+
if e != nil {
490+
return retryError(e)
491+
} else {
492+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
493+
logId, logRequest.GetAction(), logRequest.ToJsonString(), logResponse.ToJsonString())
494+
requestId := *logResponse.Response.RequestId
495+
496+
retryErr := waitForTaskFinish(requestId, meta.(*TencentCloudClient).apiV3Conn.UseClbClient())
497+
if retryErr != nil {
498+
return retryError(errors.WithStack(retryErr))
499+
}
500+
}
501+
return nil
502+
})
503+
if err != nil {
504+
log.Printf("[CRITAL]%s set CLB instance log failed, reason:%+v", logId, err)
505+
return err
506+
}
507+
508+
} else {
509+
return fmt.Errorf("log_topic_id and log_set_id must be set together.")
510+
}
511+
}
512+
425513
if targetRegionInfoRegion != "" {
426514
isLoadBalancePassToTgt := d.Get("load_balancer_pass_to_target").(bool)
427515
targetRegionInfo := clb.TargetRegionInfo{
@@ -504,6 +592,7 @@ func resourceTencentCloudClbInstanceRead(d *schema.ResourceData, meta interface{
504592
_ = d.Set("target_region_info_vpc_id", instance.TargetRegionInfo.VpcId)
505593
_ = d.Set("project_id", instance.ProjectId)
506594
_ = d.Set("security_groups", helper.StringsInterfaces(instance.SecureGroups))
595+
507596
if instance.VipIsp != nil {
508597
_ = d.Set("vip_isp", instance.VipIsp)
509598
}
@@ -519,6 +608,8 @@ func resourceTencentCloudClbInstanceRead(d *schema.ResourceData, meta interface{
519608
_ = d.Set("master_zone_id", instance.MasterZone)
520609
_ = d.Set("zone_id", instance.MasterZone)
521610
_ = d.Set("slave_zone_id", instance.MasterZone)
611+
_ = d.Set("log_set_id", instance.LogSetId)
612+
_ = d.Set("log_topic_id", instance.LogTopicId)
522613

523614
tcClient := meta.(*TencentCloudClient).apiV3Conn
524615
tagService := &TagService{client: tcClient}
@@ -672,6 +763,35 @@ func resourceTencentCloudClbInstanceUpdate(d *schema.ResourceData, meta interfac
672763
}
673764
d.SetPartial("security_groups")
674765
}
766+
767+
if d.HasChange("log_set_id") || d.HasChange("log_topic_id") {
768+
logSetId := d.Get("log_set_id")
769+
logTopicId := d.Get("log_topic_id")
770+
logRequest := clb.NewSetLoadBalancerClsLogRequest()
771+
logRequest.LoadBalancerId = helper.String(clbId)
772+
logRequest.LogSetId = helper.String(logSetId.(string))
773+
logRequest.LogTopicId = helper.String(logTopicId.(string))
774+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
775+
logResponse, e := meta.(*TencentCloudClient).apiV3Conn.UseClbClient().SetLoadBalancerClsLog(logRequest)
776+
if e != nil {
777+
return retryError(e)
778+
} else {
779+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
780+
logId, logRequest.GetAction(), logRequest.ToJsonString(), logResponse.ToJsonString())
781+
requestId := *logResponse.Response.RequestId
782+
783+
retryErr := waitForTaskFinish(requestId, meta.(*TencentCloudClient).apiV3Conn.UseClbClient())
784+
if retryErr != nil {
785+
return retryError(errors.WithStack(retryErr))
786+
}
787+
}
788+
return nil
789+
})
790+
if err != nil {
791+
log.Printf("[CRITAL]%s set CLB instance log failed, reason:%+v", logId, err)
792+
return err
793+
}
794+
}
675795
ctx := context.WithValue(context.TODO(), logIdKey, logId)
676796
if d.HasChange("tags") {
677797

tencentcloud/resource_tc_clb_logset.go renamed to tencentcloud/resource_tc_clb_log_set.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,14 @@ Provides a resource to create an exclusive CLB Logset.
44
Example Usage
55
66
```hcl
7-
resource "tencentcloud_clb_logset" "foo" {
8-
name = "clb_logset"
7+
resource "tencentcloud_clb_log_set" "foo" {
98
perioid = 7
109
}
1110
```
1211
1312
Import
1413
15-
CLB attachment can be imported using the id, e.g.
14+
CLB log set can be imported using the id, e.g.
1615
1716
```
1817
$ terraform import tencentcloud_clb_logset.foo 4eb9e3a8-9c42-4b32-9ddf-e215e9c92764
@@ -26,6 +25,7 @@ import (
2625
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
2726
cls "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls/v20201016"
2827
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
28+
"time"
2929
)
3030

3131
func resourceTencentCloudClbLogSet() *schema.Resource {
@@ -115,7 +115,8 @@ func resourceTencentCloudClbLogSetCreate(d *schema.ResourceData, meta interface{
115115
if err != nil {
116116
return err
117117
}
118-
118+
//加一个创建保护
119+
time.Sleep(3)
119120
d.SetId(id)
120121

121122
return resourceTencentCloudClbLogSetRead(d, meta)

0 commit comments

Comments
 (0)