Skip to content

Commit 4ac35c5

Browse files
committed
add mount_target and docker_graph_path with TKE. add delete_all_auto_rewrite with CLB redirection
1 parent 40d0c19 commit 4ac35c5

13 files changed

+251
-36
lines changed

tencentcloud/data_source_tc_availability_regions.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ func dataSourceTencentCloudAvailabilityRegionsRead(d *schema.ResourceData, meta
8585
if v, ok := d.GetOk("name"); ok {
8686
name = v.(string)
8787
}
88+
if name == "default" {
89+
name = meta.(*TencentCloudClient).apiV3Conn.Region
90+
}
8891
if v, ok := d.GetOkExists("include_unavailable"); ok {
8992
includeUnavailable = v.(bool)
9093
}

tencentcloud/data_source_tc_kubernetes_clusters.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ func tkeClusterInfo() map[string]*schema.Schema {
144144
Computed: true,
145145
Description: "Cluster kube-proxy mode.",
146146
},
147+
147148
"service_cidr": {
148149
Type: schema.TypeString,
149150
Computed: true,
@@ -183,6 +184,11 @@ func tkeClusterInfo() map[string]*schema.Schema {
183184
Computed: true,
184185
Description: "Tags of the cluster.",
185186
},
187+
"kube_config": {
188+
Type: schema.TypeString,
189+
Computed: true,
190+
Description: "kubernetes_config.",
191+
},
186192
}
187193

188194
for k, v := range tkeSecurityInfo() {
@@ -367,6 +373,16 @@ LOOP:
367373
infoMap["pgw_endpoint"] = emptyStrFunc(securityRet.Response.PgwEndpoint)
368374
infoMap["security_policy"] = policies
369375

376+
config, err := service.DescribeClusterConfig(ctx, info.ClusterId)
377+
if err != nil {
378+
config, err = service.DescribeClusterConfig(ctx, info.ClusterId)
379+
}
380+
if err != nil {
381+
log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters DescribeClusterInstances fail, reason:%s\n ", logId, err.Error())
382+
return err
383+
}
384+
385+
infoMap["kube_config"] = config
370386
list = append(list, infoMap)
371387
}
372388

tencentcloud/extension_tke.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ const (
55
TKE_CLUSTER_OS_CENTOS76 = "centos7.6x86_64"
66
TKE_CLUSTER_OS_UBUNTU16 = "ubuntu16.04.1 LTSx86_64"
77
TKE_CLUSTER_OS_UBUNTU18 = "ubuntu18.04.1 LTSx86_64"
8+
TKE_CLUSTER_OS_LINUX24 = "tlinux2.4x86_64"
89
)
910

10-
var TKE_CLUSTER_OS = []string{TKE_CLUSTER_OS_CENTOS72, TKE_CLUSTER_OS_CENTOS76, TKE_CLUSTER_OS_UBUNTU16, TKE_CLUSTER_OS_UBUNTU18}
11+
var TKE_CLUSTER_OS = []string{TKE_CLUSTER_OS_CENTOS72, TKE_CLUSTER_OS_CENTOS76, TKE_CLUSTER_OS_UBUNTU16, TKE_CLUSTER_OS_UBUNTU18, TKE_CLUSTER_OS_LINUX24}
1112

1213
var tkeClusterOsMap = map[string]string{TKE_CLUSTER_OS_CENTOS72: TKE_CLUSTER_OS_CENTOS72,
1314
TKE_CLUSTER_OS_CENTOS76: "centos7.6.0_x64",
1415
TKE_CLUSTER_OS_UBUNTU16: TKE_CLUSTER_OS_UBUNTU16,
1516
TKE_CLUSTER_OS_UBUNTU18: "ubuntu18.04.1x86_64",
17+
TKE_CLUSTER_OS_LINUX24: "tlinux2.4x86_64",
1618
}
1719

1820
func tkeToShowClusterOs(apiOs string) string {

tencentcloud/resource_tc_clb_listener_rule.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,9 @@ func resourceTencentCloudClbListenerRuleCreate(d *schema.ResourceData, meta inte
197197
if e != nil {
198198
return retryError(e)
199199
}
200-
protocol = *(instance.Protocol)
200+
if instance != nil {
201+
protocol = *(instance.Protocol)
202+
}
201203
return nil
202204
})
203205
if err != nil {

tencentcloud/resource_tc_clb_redirection.go

Lines changed: 62 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func resourceTencentCloudClbRedirection() *schema.Resource {
5252
return &schema.Resource{
5353
Create: resourceTencentCloudClbRedirectionCreate,
5454
Read: resourceTencentCloudClbRedirectionRead,
55+
Update: resourceTencentCloudClbRedirectionUpdate,
5556
Delete: resourceTencentCloudClbRedirectionDelete,
5657
Importer: &schema.ResourceImporter{
5758
State: schema.ImportStatePassthrough,
@@ -98,6 +99,12 @@ func resourceTencentCloudClbRedirection() *schema.Resource {
9899
Optional: true,
99100
Description: "Indicates whether automatic forwarding is enable, default is false. If enabled, the source listener and location should be empty, the target listener must be https protocol and port is 443.",
100101
},
102+
"delete_all_auto_rewrite": {
103+
Type: schema.TypeBool,
104+
Default: false,
105+
Optional: true,
106+
Description: "Indicates whether delete all auto redirection. Default is false. It will take effect only when this redirection is auto-rewrite and this auto-rewrite auto redirected more than one rules. All the auto-rewrite relations will be deleted when this parameter set true.",
107+
},
101108
},
102109
}
103110
}
@@ -333,6 +340,13 @@ func resourceTencentCloudClbRedirectionRead(d *schema.ResourceData, meta interfa
333340
return nil
334341
}
335342

343+
func resourceTencentCloudClbRedirectionUpdate(d *schema.ResourceData, meta interface{}) error {
344+
defer logElapsed("resource.tencentcloud_clb_redirection.update")()
345+
defer inconsistentCheck(d, meta)()
346+
// this nil update method works for the only filed `delete_all_auto_rewrite`
347+
return nil
348+
}
349+
336350
func resourceTencentCloudClbRedirectionDelete(d *schema.ResourceData, meta interface{}) error {
337351
defer logElapsed("resource.tencentcloud_clb_redirection.delete")()
338352

@@ -342,20 +356,58 @@ func resourceTencentCloudClbRedirectionDelete(d *schema.ResourceData, meta inter
342356
logId := getLogId(contextNil)
343357
ctx := context.WithValue(context.TODO(), logIdKey, logId)
344358

345-
clbId := d.Id()
359+
id := d.Id()
346360
clbService := ClbService{
347361
client: meta.(*TencentCloudClient).apiV3Conn,
348362
}
349-
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
350-
e := clbService.DeleteRedirectionById(ctx, clbId)
351-
if e != nil {
352-
return retryError(e)
363+
364+
deleteAll := d.Get("delete_all_auto_rewrite").(bool)
365+
isAutoRewrite := d.Get("is_auto_rewrite").(bool)
366+
if deleteAll && isAutoRewrite {
367+
//delete all the auto rewrite
368+
var rewrites []*map[string]string
369+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
370+
result, inErr := clbService.DescribeAllAutoRedirections(ctx, id)
371+
if inErr != nil {
372+
return retryError(inErr)
373+
}
374+
rewrites = result
375+
return nil
376+
})
377+
if err != nil {
378+
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
379+
return err
380+
}
381+
382+
for _, rewrite := range rewrites {
383+
if rewrite == nil {
384+
continue
385+
}
386+
rewriteId := (*rewrite)["source_rule_id"] + FILED_SP + (*rewrite)["target_rule_id"] + FILED_SP + (*rewrite)["source_listener_id"] + FILED_SP + (*rewrite)["target_listener_id"] + FILED_SP + (*rewrite)["clb_id"]
387+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
388+
e := clbService.DeleteRedirectionById(ctx, rewriteId)
389+
if e != nil {
390+
return retryError(e)
391+
}
392+
return nil
393+
})
394+
if err != nil {
395+
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
396+
return err
397+
}
398+
}
399+
} else {
400+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
401+
e := clbService.DeleteRedirectionById(ctx, id)
402+
if e != nil {
403+
return retryError(e)
404+
}
405+
return nil
406+
})
407+
if err != nil {
408+
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
409+
return err
353410
}
354-
return nil
355-
})
356-
if err != nil {
357-
log.Printf("[CRITAL]%s delete CLB redirection failed, reason:%+v", logId, err)
358-
return err
359411
}
360412
return nil
361413
}

tencentcloud/resource_tc_kubernetes_cluster.go

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -471,11 +471,10 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
471471
Description: "Description of the cluster.",
472472
},
473473
"cluster_os": {
474-
Type: schema.TypeString,
475-
ForceNew: true,
476-
Optional: true,
477-
Default: TKE_CLUSTER_OS_UBUNTU16,
478-
ValidateFunc: validateAllowedStringValue(TKE_CLUSTER_OS),
474+
Type: schema.TypeString,
475+
ForceNew: true,
476+
Optional: true,
477+
Default: TKE_CLUSTER_OS_UBUNTU16,
479478
Description: "Operating system of the cluster, the available values include: '" + strings.Join(TKE_CLUSTER_OS, "','") +
480479
"'. Default is '" + TKE_CLUSTER_OS_UBUNTU16 + "'.",
481480
},
@@ -517,7 +516,7 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
517516
ForceNew: true,
518517
Optional: true,
519518
Default: true,
520-
Description: "Indicates whether ipvs is enabled. Default is true.",
519+
Description: "Indicates whether `ipvs` is enabled. Default is true. False means `iptables` is enabled.",
521520
},
522521
"cluster_as_enabled": {
523522
Type: schema.TypeBool,
@@ -588,10 +587,9 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
588587
Description: "Indicates whether cluster deletion protection is enabled. Default is false.",
589588
},
590589
"kube_proxy_mode": {
591-
Type: schema.TypeString,
592-
Optional: true,
593-
Default: "",
594-
ValidateFunc: validateAllowedStringValue(TKE_CLUSTER_KUBE_PROXY_MODE),
590+
Type: schema.TypeString,
591+
Optional: true,
592+
Default: "",
595593
Description: "Cluster kube-proxy mode, the available values include: 'kube-proxy-bpf'. Default is not set." +
596594
"When set to kube-proxy-bpf, cluster version greater than 1.14 and with TKE-optimized kernel is required.",
597595
},
@@ -821,13 +819,31 @@ func resourceTencentCloudTkeCluster() *schema.Resource {
821819
ForceNew: true,
822820
Description: "Labels of tke cluster nodes.",
823821
},
822+
"mount_target": {
823+
Type: schema.TypeString,
824+
Optional: true,
825+
ForceNew: true,
826+
Description: "Mount target. Default is not mounting.",
827+
},
828+
"docker_graph_path": {
829+
Type: schema.TypeString,
830+
Optional: true,
831+
ForceNew: true,
832+
Default: "/var/lib/docker",
833+
Description: "Docker graph path. Default is `/var/lib/docker`.",
834+
},
824835
"extra_args": {
825836
Type: schema.TypeList,
826837
Optional: true,
827838
ForceNew: true,
828839
Elem: &schema.Schema{Type: schema.TypeString},
829840
Description: "Custom parameter information related to the node.",
830841
},
842+
"kube_config": {
843+
Type: schema.TypeString,
844+
Computed: true,
845+
Description: "kubernetes_config.",
846+
},
831847
}
832848

833849
for k, v := range tkeSecurityInfo() {
@@ -1238,6 +1254,13 @@ func resourceTencentCloudTkeClusterCreate(d *schema.ResourceData, meta interface
12381254
}
12391255
}
12401256

1257+
if temp, ok := d.GetOk("docker_graph_path"); ok {
1258+
iAdvanced.DockerGraphPath = temp.(string)
1259+
}
1260+
if temp, ok := d.GetOk("mount_target"); ok {
1261+
iAdvanced.MountTarget = temp.(string)
1262+
}
1263+
12411264
service := TkeService{client: meta.(*TencentCloudClient).apiV3Conn}
12421265

12431266
id, err := service.CreateCluster(ctx, basic, advanced, cvms, iAdvanced, cidrSet, tags)
@@ -1417,6 +1440,23 @@ func resourceTencentCloudTkeClusterRead(d *schema.ResourceData, meta interface{}
14171440
_ = d.Set("cluster_node_num", info.ClusterNodeNum)
14181441
_ = d.Set("tags", info.Tags)
14191442

1443+
config, err := service.DescribeClusterConfig(ctx, d.Id())
1444+
if err != nil {
1445+
err = resource.Retry(readRetryTimeout, func() *resource.RetryError {
1446+
config, err = service.DescribeClusterConfig(ctx, d.Id())
1447+
if err != nil {
1448+
return retryError(err)
1449+
}
1450+
return nil
1451+
})
1452+
}
1453+
1454+
if err != nil {
1455+
return nil
1456+
}
1457+
1458+
_ = d.Set("kube_config", config)
1459+
14201460
_, workers, err := service.DescribeClusterInstances(ctx, d.Id())
14211461
if err != nil {
14221462
err = resource.Retry(10*readRetryTimeout, func() *resource.RetryError {

tencentcloud/resource_tc_redis_instance.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,9 @@ func resourceTencentCloudRedisInstanceUpdate(d *schema.ResourceData, meta interf
532532
if newMemSize < 1 {
533533
return fmt.Errorf("redis mem_size value cannot be set to less than 1")
534534
}
535-
_, err := redisService.UpgradeInstance(ctx, id, int64(newMemSize))
535+
redisShardNum := d.Get("redis_shard_num").(int)
536+
redisReplicasNum := d.Get("redis_replicas_num").(int)
537+
_, err := redisService.UpgradeInstance(ctx, id, int64(newMemSize), int64(redisShardNum), int64(redisReplicasNum))
536538

537539
if err != nil {
538540
log.Printf("[CRITAL]%s redis update mem size error, reason:%s\n", logId, err.Error())

tencentcloud/service_tencentcloud_clb.go

Lines changed: 69 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -559,21 +559,81 @@ func (me *ClbService) DescribeRedirectionById(ctx context.Context, rewriteId str
559559
return
560560
}
561561

562-
ruleOutput := response.Response.RewriteSet[0]
563-
if ruleOutput.RewriteTarget != nil {
564-
if *ruleOutput.RewriteTarget.TargetListenerId == targetListenerId && *ruleOutput.RewriteTarget.TargetLocationId == targetLocId {
565-
result["source_rule_id"] = sourceLocId
566-
result["target_rule_id"] = targetLocId
567-
result["source_listener_id"] = sourceListenerId
568-
result["target_listener_id"] = targetListenerId
569-
result["clb_id"] = clbId
570-
rewriteInfo = &result
562+
for _, v := range response.Response.RewriteSet {
563+
//sometimes the response returns all the rules under a certain url, so filter again in the code
564+
if v.RewriteTarget != nil {
565+
if *v.RewriteTarget.TargetListenerId == targetListenerId && *v.RewriteTarget.TargetLocationId == targetLocId {
566+
result["source_rule_id"] = sourceLocId
567+
result["target_rule_id"] = targetLocId
568+
result["source_listener_id"] = sourceListenerId
569+
result["target_listener_id"] = targetListenerId
570+
result["clb_id"] = clbId
571+
rewriteInfo = &result
572+
return
573+
}
571574
}
572575
}
573576

574577
return
575578
}
576579

580+
func (me *ClbService) DescribeAllAutoRedirections(ctx context.Context, rewriteId string) (rewriteInfos []*map[string]string, errRet error) {
581+
logId := getLogId(ctx)
582+
items := strings.Split(rewriteId, "#")
583+
if len(items) != 5 {
584+
errRet = fmt.Errorf("[TECENT_TERRAFORM_CHECK][CLB redirection][Describe] check: redirection id %s is not with format loc-xxx#loc-xxx#lbl-xxx#lbl-xxx#lb-xxx", rewriteId)
585+
errRet = errors.WithStack(errRet)
586+
return
587+
}
588+
sourceLocationId := items[0]
589+
sourceListenerId := items[2]
590+
clbId := items[4]
591+
request := clb.NewDescribeRewriteRequest()
592+
request.LoadBalancerId = &clbId
593+
request.SourceListenerIds = []*string{&sourceListenerId}
594+
ratelimit.Check(request.GetAction())
595+
response, err := me.client.UseClbClient().DescribeRewrite(request)
596+
if err != nil {
597+
//in case that the lb is not exist, return empty
598+
if e, ok := err.(*sdkErrors.TencentCloudSDKError); ok {
599+
if e.GetCode() == "InvalidParameter.LBIdNotFound" {
600+
return
601+
}
602+
}
603+
errRet = errors.WithStack(err)
604+
return
605+
}
606+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
607+
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
608+
609+
if len(response.Response.RewriteSet) < 1 {
610+
return
611+
}
612+
613+
//get listener id and domain
614+
domain := ""
615+
for _, v := range response.Response.RewriteSet {
616+
if v.RewriteTarget != nil && sourceListenerId == *v.ListenerId && sourceLocationId == *v.LocationId {
617+
domain = *v.Domain
618+
break
619+
}
620+
}
621+
622+
for _, v := range response.Response.RewriteSet {
623+
//auto rewrite will associate all the url under the domain
624+
if v.RewriteTarget != nil && sourceListenerId == *v.ListenerId && domain == *v.Domain {
625+
result := make(map[string]string)
626+
result["source_rule_id"] = *v.LocationId
627+
result["target_rule_id"] = *v.RewriteTarget.TargetLocationId
628+
result["source_listener_id"] = *v.ListenerId
629+
result["target_listener_id"] = *v.RewriteTarget.TargetListenerId
630+
result["clb_id"] = clbId
631+
rewriteInfos = append(rewriteInfos, &result)
632+
}
633+
}
634+
return
635+
}
636+
577637
func (me *ClbService) DescribeRedirectionsByFilter(ctx context.Context, params map[string]string) (rewriteInfos []*map[string]string, errRet error) {
578638
logId := getLogId(ctx)
579639
clbId := ""

0 commit comments

Comments
 (0)