Skip to content

Commit 5af0d2f

Browse files
authored
feat(tke): [116205708]optimize the change problem of cluster_internet_security_group and cl… (#2533)
* optimize the change problem of cluster_internet_security_group and cluster_intranet_subnet_id fields * add changelog 2533.txt * add network enablement check when exporting kubeConfig * update getClusterNetworkStatus * update test TestAccTencentCloudKubernetesClusterResourceLogsAddons * update kubernetes cluster test
1 parent 9c1b568 commit 5af0d2f

File tree

5 files changed

+65
-18
lines changed

5 files changed

+65
-18
lines changed

.changelog/2533.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_kubernetes_cluster: Optimize the change problem of `cluster_internet_security_group` and `cluster_intranet_subnet_id` fields
3+
```

tencentcloud/common/common.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"log"
1010
"os"
1111
"os/user"
12+
"path/filepath"
1213
"reflect"
1314
"strconv"
1415
"strings"
@@ -333,6 +334,11 @@ func WriteToFile(filePath string, data interface{}) error {
333334
}
334335
}
335336

337+
dir := filepath.Dir(filePath)
338+
if err := os.MkdirAll(dir, 0755); err != nil {
339+
return fmt.Errorf("create directory error, reason: %s", err.Error())
340+
}
341+
336342
if IsString(data) {
337343
return ioutil.WriteFile(filePath, []byte(data.(string)), 0422)
338344
}

tencentcloud/services/tke/data_source_tc_kubernetes_clusters.go

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -422,14 +422,29 @@ LOOP:
422422
infoMap["kube_config"] = config
423423
infoMap["kube_config_intranet"] = intranetConfig
424424

425+
clusterInternet, err := getClusterNetworkStatus(ctx, &service, info.ClusterId, true)
426+
if err != nil {
427+
log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters get cluster internet status fail, reason:%s\n ", logId, err.Error())
428+
return err
429+
}
430+
clusterIntranet, err := getClusterNetworkStatus(ctx, &service, info.ClusterId, false)
431+
if err != nil {
432+
log.Printf("[CRITAL]%s tencentcloud_kubernetes_clusters get cluster intranet status fail, reason:%s\n ", logId, err.Error())
433+
return err
434+
}
435+
425436
if kubeConfigFilePrefix != "" {
426-
kubeConfigFile := kubeConfigFilePrefix + fmt.Sprintf("-%s-kubeconfig", info.ClusterId)
427-
if err = tccommon.WriteToFile(kubeConfigFile, config); err != nil {
428-
return err
437+
if clusterInternet {
438+
kubeConfigFile := kubeConfigFilePrefix + fmt.Sprintf("-%s-kubeconfig", info.ClusterId)
439+
if err = tccommon.WriteToFile(kubeConfigFile, config); err != nil {
440+
return err
441+
}
429442
}
430-
kubeConfigIntranetFile := kubeConfigFilePrefix + fmt.Sprintf("-%s-kubeconfig-intranet", info.ClusterId)
431-
if err = tccommon.WriteToFile(kubeConfigIntranetFile, intranetConfig); err != nil {
432-
return err
443+
if clusterIntranet {
444+
kubeConfigIntranetFile := kubeConfigFilePrefix + fmt.Sprintf("-%s-kubeconfig-intranet", info.ClusterId)
445+
if err = tccommon.WriteToFile(kubeConfigIntranetFile, intranetConfig); err != nil {
446+
return err
447+
}
433448
}
434449
}
435450

@@ -451,3 +466,32 @@ LOOP:
451466
}
452467
return nil
453468
}
469+
470+
func getClusterNetworkStatus(ctx context.Context, service *TkeService, clusterId string, isInternet bool) (networkStatus bool, err error) {
471+
var status string
472+
var isOpened bool
473+
var errRet error
474+
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
475+
status, _, errRet = service.DescribeClusterEndpointStatus(ctx, clusterId, isInternet)
476+
if errRet != nil {
477+
return tccommon.RetryError(errRet, tccommon.InternalError)
478+
}
479+
if status == TkeInternetStatusCreating || status == TkeInternetStatusDeleting {
480+
return resource.RetryableError(
481+
fmt.Errorf("%s create cluster internet endpoint status still is %s", clusterId, status))
482+
}
483+
return nil
484+
})
485+
if err != nil {
486+
return false, err
487+
}
488+
if status == TkeInternetStatusNotfound || status == TkeInternetStatusDeleted {
489+
isOpened = false
490+
}
491+
if status == TkeInternetStatusCreated {
492+
isOpened = true
493+
}
494+
networkStatus = isOpened
495+
496+
return networkStatus, nil
497+
}

tencentcloud/services/tke/resource_tc_kubernetes_cluster.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,7 @@ func ResourceTencentCloudTkeCluster() *schema.Resource {
682682
"cluster_internet_security_group": {
683683
Type: schema.TypeString,
684684
Optional: true,
685+
Computed: true,
685686
Description: "Specify security group, NOTE: This argument must not be empty if cluster internet enabled.",
686687
},
687688
"managed_cluster_internet_security_policies": {
@@ -696,6 +697,7 @@ func ResourceTencentCloudTkeCluster() *schema.Resource {
696697
"cluster_intranet_subnet_id": {
697698
Type: schema.TypeString,
698699
Optional: true,
700+
Computed: true,
699701
Description: "Subnet id who can access this independent cluster, this field must and can only set when `cluster_intranet` is true." +
700702
" `cluster_intranet_subnet_id` can not modify once be set.",
701703
},
@@ -2614,7 +2616,7 @@ func resourceTencentCloudTkeClusterUpdate(d *schema.ResourceData, meta interface
26142616
return err
26152617
}
26162618
time.Sleep(3 * time.Second)
2617-
err = resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
2619+
err = resource.Retry(3*tccommon.ReadRetryTimeout, func() *resource.RetryError {
26182620
ipamdResp, inErr := tkeService.DescribeIPAMD(ctx, id)
26192621
enableIPAMD := *ipamdResp.EnableIPAMD
26202622
disableVpcCniMode := *ipamdResp.DisableVpcCniMode

tencentcloud/services/tke/resource_tc_kubernetes_cluster_test.go

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ func TestAccTencentCloudKubernetesClusterResourceLogsAddons(t *testing.T) {
194194
{
195195
PreConfig: func() {
196196
// do not update so fast
197-
time.Sleep(10 * time.Second)
197+
time.Sleep(10 * time.Minute)
198198
},
199199
Config: testAccTkeClusterLogsAddonsUpdate,
200200
Check: resource.ComposeTestCheckFunc(
@@ -512,17 +512,9 @@ resource "tencentcloud_security_group" "example" {
512512
description = "sg test"
513513
}
514514
515-
data "tencentcloud_security_groups" "internal" {
516-
name = tencentcloud_security_group.example.name
517-
}
518-
519-
data "tencentcloud_security_groups" "exclusive" {
520-
name = tencentcloud_security_group.example.name
521-
}
522-
523515
locals {
524-
sg_id = data.tencentcloud_security_groups.internal.security_groups.0.security_group_id
525-
sg_id2 = data.tencentcloud_security_groups.exclusive.security_groups.0.security_group_id
516+
sg_id = tencentcloud_security_group.example.id
517+
sg_id2 = tencentcloud_security_group.example.id
526518
}
527519
`
528520

0 commit comments

Comments
 (0)