Skip to content

feat(clb): [118298169] support CDC #2720

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jul 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changelog/2720.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
```release-note:enhancement
resource/tencentcloud_clb_instance: add params `dedicated_cluster_id`
```

```release-note:enhancement
data_source/tencentcloud_clb_instances: add params `dedicated_cluster_id`
```
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/chdfs v1.0.600
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ciam v1.0.695
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.748
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.860
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.961
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.962
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.967
Expand Down
6 changes: 6 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -856,6 +856,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.748 h1:rVvR
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.748/go.mod h1:nvb4W+PgsAe8NFG1ZevZa9ZLfto3aeBcJqxzYCRI9V4=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.860 h1:P2TPFCB1oyJ6yOTgFDBdKByepog3iMg2fIUN/VHo9EM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.860/go.mod h1:eTGN2Qz4NxaYl+CwMpcj4vNImNOr74NC8WTCLSJN8Ks=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.960 h1:wiX0lViAGID1CRQBnoK8TqkgsA/qPm37AwPyy1TgVVo=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.960/go.mod h1:ge3NiZB+9eEL6gcnlX2CnyYq3Qvx1AW29aP8d9RiDxE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.961 h1:H8oPv420A7TtLsrKQv1VYaHHboI6YmYT/kNbgZXfO1Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.961/go.mod h1:iEXw9vSSrx7vJ2v+ird8vpjRPmF7kqTa2/VypAs8n64=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544 h1:ApY6rS7I9otgujOdAFy0+Epno1PNVCQmsOoWQxx724Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544/go.mod h1:c37rIdL3LrJXYwrfp9c8L4MabTqKIZUe1xvnWhN75oc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.860 h1:IU20AhNd0fEbgFzTTGB8cdMkUCrgB0FsLd0puC4QDzU=
Expand Down Expand Up @@ -958,6 +962,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.959 h1:GZUq
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.959/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960 h1:hde8uWA3624nGUvC8QPf9njcyBZ7A9weqscRrqyM1Rk=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.960/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.961 h1:UqinjIsO+Y48BQYSxrD6aHQe8SD+Wsbvj+jU9V9VvWM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.961/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860/go.mod h1:NZo1WplQcC314kMlCRUoy8NQju2BnolIJj7NAWgsuhY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
Expand Down
32 changes: 26 additions & 6 deletions tencentcloud/services/clb/data_source_tc_clb_instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@ func DataSourceTencentCloudClbInstances() *schema.Resource {
Computed: true,
Description: "ID of the project.",
},
"cluster_id": {
Type: schema.TypeString,
Computed: true,
Description: "ID of the cluster.",
},
"clb_vips": {
Type: schema.TypeList,
Computed: true,
Expand Down Expand Up @@ -182,42 +187,49 @@ func DataSourceTencentCloudClbInstances() *schema.Resource {
func dataSourceTencentCloudClbInstancesRead(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("data_source.tencentcloud_clb_instances.read")()

logId := tccommon.GetLogId(tccommon.ContextNil)
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
var (
logId = tccommon.GetLogId(tccommon.ContextNil)
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
clbService = ClbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
clbs []*clb.LoadBalancer
)

params := make(map[string]interface{})
if v, ok := d.GetOk("clb_id"); ok {
params["clb_id"] = v.(string)
}

if v, ok := d.GetOk("clb_name"); ok {
params["clb_name"] = v.(string)
}

if v, ok := d.GetOkExists("project_id"); ok {
params["project_id"] = v.(int)
}

if v, ok := d.GetOk("network_type"); ok {
params["network_type"] = v.(string)
}

if v, ok := d.GetOk("master_zone"); ok {
params["master_zone"] = v.(string)
}

clbService := ClbService{
client: meta.(tccommon.ProviderMeta).GetAPIV3Conn(),
}
var clbs []*clb.LoadBalancer
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
results, e := clbService.DescribeLoadBalancerByFilter(ctx, params)
if e != nil {
return tccommon.RetryError(e)
}

clbs = results
return nil
})

if err != nil {
log.Printf("[CRITAL]%s read CLB instances failed, reason:%+v", logId, err)
return err
}

clbList := make([]map[string]interface{}, 0, len(clbs))
ids := make([]string, 0, len(clbs))
for _, clbInstance := range clbs {
Expand All @@ -238,10 +250,16 @@ func dataSourceTencentCloudClbInstancesRead(d *schema.ResourceData, meta interfa
"vip_isp": clbInstance.VipIsp,
"security_groups": helper.StringsInterfaces(clbInstance.SecureGroups),
}

if clbInstance.ClusterIds != nil && len(clbInstance.ClusterIds) > 0 {
mapping["cluster_id"] = *clbInstance.ClusterIds[0]
}

if clbInstance.NetworkAttributes != nil {
mapping["internet_charge_type"] = *clbInstance.NetworkAttributes.InternetChargeType
mapping["internet_bandwidth_max_out"] = *clbInstance.NetworkAttributes.InternetMaxBandwidthOut
}

if clbInstance.MasterZone != nil {
mapping["zone_id"] = *clbInstance.MasterZone.ZoneId
mapping["zone"] = *clbInstance.MasterZone.Zone
Expand All @@ -255,8 +273,10 @@ func dataSourceTencentCloudClbInstancesRead(d *schema.ResourceData, meta interfa
for _, t := range clbInstance.Tags {
tags[*t.TagKey] = *t.TagValue
}

mapping["tags"] = tags
}

clbList = append(clbList, mapping)
ids = append(ids, *clbInstance.LoadBalancerId)
}
Expand Down
22 changes: 16 additions & 6 deletions tencentcloud/services/clb/resource_tc_clb_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ func ResourceTencentCloudClbInstance() *schema.Resource {
ValidateFunc: tccommon.ValidateStringLengthInRange(2, 60),
Description: "In the case of purchasing a `INTERNAL` clb instance, the subnet id must be specified. The VIP of the `INTERNAL` clb instance will be generated from this subnet.",
},
"cluster_id": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Description: "Cluster ID.",
},
"address_ip_version": {
Type: schema.TypeString,
Optional: true,
Expand Down Expand Up @@ -286,6 +292,10 @@ func resourceTencentCloudClbInstanceCreate(d *schema.ResourceData, meta interfac
request.SubnetId = helper.String(v.(string))
}

if v, ok := d.GetOk("cluster_id"); ok {
request.ClusterIds = []*string{helper.String(v.(string))}
}

//vip_isp
if v, ok := d.GetOk("vip_isp"); ok {
if networkType == CLB_NETWORK_TYPE_INTERNAL {
Expand Down Expand Up @@ -459,7 +469,6 @@ func resourceTencentCloudClbInstanceCreate(d *schema.ResourceData, meta interfac
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
logId, sgRequest.GetAction(), sgRequest.ToJsonString(), sgResponse.ToJsonString())
requestId := *sgResponse.Response.RequestId

retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
if retryErr != nil {
return tccommon.RetryError(errors.WithStack(retryErr))
Expand Down Expand Up @@ -489,7 +498,6 @@ func resourceTencentCloudClbInstanceCreate(d *schema.ResourceData, meta interfac
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
logId, logRequest.GetAction(), logRequest.ToJsonString(), logResponse.ToJsonString())
requestId := *logResponse.Response.RequestId

retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
if retryErr != nil {
return tccommon.RetryError(errors.WithStack(retryErr))
Expand All @@ -515,6 +523,7 @@ func resourceTencentCloudClbInstanceCreate(d *schema.ResourceData, meta interfac
Region: &targetRegionInfoRegion,
VpcId: &targetRegionInfoVpcId,
}

mRequest := clb.NewModifyLoadBalancerAttributesRequest()
mRequest.LoadBalancerId = helper.String(clbId)
mRequest.TargetRegionInfo = &targetRegionInfo
Expand Down Expand Up @@ -620,6 +629,10 @@ func resourceTencentCloudClbInstanceRead(d *schema.ResourceData, meta interface{
_ = d.Set("ipv6_mode", instance.IPv6Mode)
_ = d.Set("address_ipv6", instance.AddressIPv6)

if instance.ClusterIds != nil && len(instance.ClusterIds) > 0 {
_ = d.Set("cluster_id", instance.ClusterIds[0])
}

if instance.SlaType != nil {
_ = d.Set("sla_type", instance.SlaType)
}
Expand Down Expand Up @@ -686,7 +699,6 @@ func resourceTencentCloudClbInstanceUpdate(d *schema.ResourceData, meta interfac
)

immutableArgs := []string{"snat_ips", "dynamic_vip", "master_zone_id", "slave_zone_id", "vpc_id", "subnet_id", "address_ip_version", "bandwidth_package_id", "zone_id"}

for _, v := range immutableArgs {
if d.HasChange(v) {
return fmt.Errorf("argument `%s` cannot be changed", v)
Expand Down Expand Up @@ -801,7 +813,6 @@ func resourceTencentCloudClbInstanceUpdate(d *schema.ResourceData, meta interfac
param.LoadBalancerId = &clbId
param.SlaType = helper.String(d.Get("sla_type").(string))
slaRequest.LoadBalancerSla = []*clb.SlaUpdateParam{&param}

var taskId string
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient().ModifyLoadBalancerSla(slaRequest)
Expand Down Expand Up @@ -857,7 +868,6 @@ func resourceTencentCloudClbInstanceUpdate(d *schema.ResourceData, meta interfac
log.Printf("[CRITAL]%s update CLB instance security_group failed, reason:%+v", logId, err)
return err
}

}

if d.HasChange("log_set_id") || d.HasChange("log_topic_id") {
Expand All @@ -875,7 +885,6 @@ func resourceTencentCloudClbInstanceUpdate(d *schema.ResourceData, meta interfac
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
logId, logRequest.GetAction(), logRequest.ToJsonString(), logResponse.ToJsonString())
requestId := *logResponse.Response.RequestId

retryErr := waitForTaskFinish(requestId, meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseClbClient())
if retryErr != nil {
return tccommon.RetryError(errors.WithStack(retryErr))
Expand Down Expand Up @@ -976,6 +985,7 @@ func checkSameName(name string, meta interface{}) (flag bool, errRet error) {
clbService = ClbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
)

flag = false
params := make(map[string]interface{})
params["clb_name"] = name
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
Expand Down
Loading
Loading