From 25e9da568b435d57d477b58f5346063caf81dff6 Mon Sep 17 00:00:00 2001 From: Kagashino Date: Wed, 24 Aug 2022 17:42:32 +0800 Subject: [PATCH] fix: tke - add worker and node sweeper --- ...resource_tc_kubernetes_addon_attachment.go | 3 +- .../resource_tc_kubernetes_node_pool_test.go | 5 +- ...esource_tc_kubernetes_scale_worker_test.go | 62 +++++++++++++++++++ ..._tc_monitor_tmp_tke_global_notification.go | 1 + tencentcloud/service_tencentcloud_tke.go | 8 +++ 5 files changed, 74 insertions(+), 5 deletions(-) diff --git a/tencentcloud/resource_tc_kubernetes_addon_attachment.go b/tencentcloud/resource_tc_kubernetes_addon_attachment.go index fed63925a2..44e4623245 100644 --- a/tencentcloud/resource_tc_kubernetes_addon_attachment.go +++ b/tencentcloud/resource_tc_kubernetes_addon_attachment.go @@ -80,10 +80,11 @@ package tencentcloud import ( "context" "fmt" - tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" "log" "strings" + tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" ) diff --git a/tencentcloud/resource_tc_kubernetes_node_pool_test.go b/tencentcloud/resource_tc_kubernetes_node_pool_test.go index 66c0813cee..f1f56080ad 100644 --- a/tencentcloud/resource_tc_kubernetes_node_pool_test.go +++ b/tencentcloud/resource_tc_kubernetes_node_pool_test.go @@ -19,6 +19,7 @@ var testTkeClusterNodePoolName = "tencentcloud_kubernetes_node_pool" var testTkeClusterNodePoolResourceKey = testTkeClusterNodePoolName + ".np_test" func init() { + // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_node_pool resource.AddTestSweepers("tencentcloud_node_pool", &resource.Sweeper{ Name: "tencentcloud_node_pool", F: testNodePoolSweep, @@ -36,10 +37,6 @@ func testNodePoolSweep(region string) error { client := cli.(*TencentCloudClient).apiV3Conn service := TkeService{client: client} - if err != nil { - return err - } - request := tke.NewDescribeClusterNodePoolsRequest() request.ClusterId = helper.String(defaultTkeClusterId) response, err := client.UseTkeClient().DescribeClusterNodePools(request) diff --git a/tencentcloud/resource_tc_kubernetes_scale_worker_test.go b/tencentcloud/resource_tc_kubernetes_scale_worker_test.go index fd7c354209..319caa824a 100644 --- a/tencentcloud/resource_tc_kubernetes_scale_worker_test.go +++ b/tencentcloud/resource_tc_kubernetes_scale_worker_test.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "testing" + "time" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/terraform" @@ -14,6 +15,67 @@ import ( var testTkeScaleWorkerResourceName = "tencentcloud_kubernetes_scale_worker" var testTkeScaleWorkerResourceKey = testTkeScaleWorkerResourceName + ".test_scale" +func init() { + // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_kubernetes_scale_worker + resource.AddTestSweepers("tencentcloud_kubernetes_scale_worker", &resource.Sweeper{ + Name: "tencentcloud_kubernetes_scale_worker", + F: func(r string) error { + logId := getLogId(contextNil) + ctx := context.WithValue(context.TODO(), logIdKey, logId) + cli, _ := sharedClientForRegion(r) + client := cli.(*TencentCloudClient).apiV3Conn + service := TkeService{client} + + clusters, err := service.DescribeClusters(ctx, "", defaultTkeClusterName) + + if err != nil { + return err + } + + if len(clusters) == 0 { + return fmt.Errorf("no cluster names %s", defaultTkeClusterName) + } + + clusterId := clusters[0].ClusterId + + _, workers, err := service.DescribeClusterInstances(ctx, clusterId) + + if err != nil { + return err + } + + cvmService := CvmService{client} + instanceIds := make([]string, 0) + for i := range workers { + worker := workers[i] + if worker.NodePoolId != "" { + continue + } + instance, err := cvmService.DescribeInstanceById(ctx, worker.InstanceId) + if err != nil { + continue + } + + created, err := time.Parse(TENCENTCLOUD_COMMON_TIME_LAYOUT, worker.CreatedTime) + if err != nil { + created = time.Time{} + } + if isResourcePersist(*instance.InstanceName, &created) { + continue + } + instanceIds = append(instanceIds, worker.InstanceId) + } + + err = service.DeleteClusterInstances(ctx, clusterId, instanceIds) + if err != nil { + return err + } + + return nil + }, + }) +} + func TestAccTencentCloudTkeScaleWorkerResource(t *testing.T) { t.Parallel() resource.Test(t, resource.TestCase{ diff --git a/tencentcloud/resource_tc_monitor_tmp_tke_global_notification.go b/tencentcloud/resource_tc_monitor_tmp_tke_global_notification.go index 5b59f03430..7e17c5ef13 100644 --- a/tencentcloud/resource_tc_monitor_tmp_tke_global_notification.go +++ b/tencentcloud/resource_tc_monitor_tmp_tke_global_notification.go @@ -34,6 +34,7 @@ package tencentcloud import ( "context" "fmt" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" tke "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke/v20180525" "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper" diff --git a/tencentcloud/service_tencentcloud_tke.go b/tencentcloud/service_tencentcloud_tke.go index 19cfdcdbd4..bfc3afc9c5 100644 --- a/tencentcloud/service_tencentcloud_tke.go +++ b/tencentcloud/service_tencentcloud_tke.go @@ -95,6 +95,8 @@ type InstanceInfo struct { InstanceRole string InstanceState string FailedReason string + NodePoolId string + CreatedTime string InstanceAdvancedSettings *tke.InstanceAdvancedSettings InstanceDataDiskMountSetting *tke.InstanceDataDiskMountSetting LanIp string @@ -165,6 +167,12 @@ getMoreData: FailedReason: *item.FailedReason, InstanceAdvancedSettings: item.InstanceAdvancedSettings, } + if item.CreatedTime != nil { + instanceInfo.CreatedTime = *item.CreatedTime + } + if item.NodePoolId != nil { + instanceInfo.NodePoolId = *item.NodePoolId + } if item.LanIP != nil { instanceInfo.LanIp = *item.LanIP }