55 "fmt"
66 "log"
77 "testing"
8+ "time"
89
910 "github.com/hashicorp/terraform-plugin-sdk/helper/resource"
1011 "github.com/hashicorp/terraform-plugin-sdk/terraform"
@@ -13,6 +14,38 @@ import (
1314var testTkeClusterName = "tencentcloud_kubernetes_cluster"
1415var testTkeClusterResourceKey = testTkeClusterName + ".managed_cluster"
1516
17+ func init () {
18+ // go test -v ./tencentcloud -sweep=ap-guangzhou -sweep-run=tencentcloud_kubernetes_cluster
19+ resource .AddTestSweepers ("tencentcloud_kubernetes_cluster" , & resource.Sweeper {
20+ Name : "tencentcloud_kubernetes_cluster" ,
21+ F : func (r string ) error {
22+ logId := getLogId (contextNil )
23+ ctx := context .WithValue (context .TODO (), logIdKey , logId )
24+ cli , _ := sharedClientForRegion (r )
25+ client := cli .(* TencentCloudClient ).apiV3Conn
26+ service := TkeService {client : client }
27+ clusters , err := service .DescribeClusters (ctx , "" , "" )
28+ if err != nil {
29+ return err
30+ }
31+
32+ for _ , v := range clusters {
33+ id := v .ClusterId
34+ name := v .ClusterName
35+ createdTime , _ := time .Parse (time .RFC3339 , v .CreatedTime )
36+ if isResourcePersist (name , & createdTime ) {
37+ continue
38+ }
39+ if err := service .DeleteCluster (ctx , id ); err != nil {
40+ return err
41+ }
42+ }
43+
44+ return nil
45+ },
46+ })
47+ }
48+
1649func TestAccTencentCloudTkeResource (t * testing.T ) {
1750 t .Parallel ()
1851 resource .Test (t , resource.TestCase {
@@ -53,6 +86,38 @@ func TestAccTencentCloudTkeResource(t *testing.T) {
5386 })
5487}
5588
89+ func TestAccTencentCloudTkeResourceClusterLevel (t * testing.T ) {
90+ t .Parallel ()
91+ resource .Test (t , resource.TestCase {
92+ PreCheck : func () { testAccPreCheck (t ) },
93+ Providers : testAccProviders ,
94+ CheckDestroy : testAccCheckTkeDestroy ,
95+ Steps : []resource.TestStep {
96+ {
97+ Config : testAccTkeClusterLevel ,
98+ Check : resource .ComposeTestCheckFunc (
99+ testAccCheckTkeExists (testTkeClusterResourceKey ),
100+ resource .TestCheckResourceAttr (testTkeClusterResourceKey , "cluster_cidr" , "10.31.0.0/16" ),
101+ resource .TestCheckResourceAttr (testTkeClusterResourceKey , "cluster_max_pod_num" , "32" ),
102+ resource .TestCheckResourceAttr (testTkeClusterResourceKey , "cluster_name" , "test" ),
103+ resource .TestCheckResourceAttr (testTkeClusterResourceKey , "cluster_level" , "L5" ),
104+ resource .TestCheckResourceAttr (testTkeClusterResourceKey , "auto_upgrade_cluster_level" , "true" ),
105+ resource .TestCheckResourceAttr (testTkeClusterResourceKey , "worker_instances_list.#" , "1" ),
106+ resource .TestCheckResourceAttrSet (testTkeClusterResourceKey , "worker_instances_list.0.instance_id" ),
107+ ),
108+ },
109+ {
110+ Config : testAccTkeClusterLevelUpdate ,
111+ Check : resource .ComposeTestCheckFunc (
112+ testAccCheckTkeExists (testTkeClusterResourceKey ),
113+ resource .TestCheckResourceAttr (testTkeClusterResourceKey , "cluster_level" , "L20" ),
114+ resource .TestCheckResourceAttr (testTkeClusterResourceKey , "auto_upgrade_cluster_level" , "false" ),
115+ ),
116+ },
117+ },
118+ })
119+ }
120+
56121func testAccCheckTkeDestroy (s * terraform.State ) error {
57122 logId := getLogId (contextNil )
58123 ctx := context .WithValue (context .TODO (), logIdKey , logId )
@@ -154,7 +219,7 @@ data "tencentcloud_vpc_subnets" "vpc" {
154219}
155220
156221resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
157- vpc_id = " vpc-rkojp4kn"
222+ vpc_id = data.tencentcloud_vpc_subnets. vpc.instance_list.0.vpc_id
158223 cluster_cidr = var.cluster_cidr
159224 cluster_max_pod_num = 32
160225 cluster_name = "test"
@@ -173,8 +238,8 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
173238 internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
174239 internet_max_bandwidth_out = 100
175240 public_ip_assigned = true
176- subnet_id = "subnet-fmcdf57e"
177- img_id = "img-rkiynh11 "
241+ subnet_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.subnet_id
242+ img_id = "` + defaultTkeOSImageId + ` "
178243
179244 data_disk {
180245 disk_type = "CLOUD_PREMIUM"
@@ -189,7 +254,6 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
189254 enhanced_monitor_service = false
190255 user_data = "dGVzdA=="
191256 password = "ZZXXccvv1212"
192- cam_role_name = "TKE_TEST"
193257 }
194258
195259 cluster_deploy_type = "MANAGED_CLUSTER"
@@ -211,3 +275,109 @@ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
211275` , key , value ,
212276 )
213277}
278+
279+ const testAccTkeClusterLevel = `
280+ variable "availability_zone" {
281+ default = "ap-guangzhou-3"
282+ }
283+
284+ variable "cluster_cidr" {
285+ default = "10.31.0.0/16"
286+ }
287+
288+ variable "default_instance_type" {
289+ default = "S1.SMALL1"
290+ }
291+
292+ data "tencentcloud_vpc_subnets" "vpc" {
293+ is_default = true
294+ availability_zone = var.availability_zone
295+ }
296+
297+ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
298+ vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id
299+ cluster_cidr = var.cluster_cidr
300+ cluster_max_pod_num = 32
301+ cluster_name = "test"
302+ cluster_desc = "test cluster desc"
303+ cluster_max_service_num = 32
304+ cluster_version = "1.18.4"
305+ cluster_os = "tlinux2.2(tkernel3)x86_64"
306+ cluster_level = "L5"
307+ auto_upgrade_cluster_level = true
308+ worker_config {
309+ count = 1
310+ availability_zone = var.availability_zone
311+ instance_type = var.default_instance_type
312+ system_disk_type = "CLOUD_SSD"
313+ system_disk_size = 60
314+ internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
315+ internet_max_bandwidth_out = 100
316+ public_ip_assigned = true
317+ subnet_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.subnet_id
318+ img_id = "` + defaultTkeOSImageId + `"
319+
320+ enhanced_security_service = false
321+ enhanced_monitor_service = false
322+ user_data = "dGVzdA=="
323+ password = "ZZXXccvv1212"
324+ }
325+
326+ cluster_deploy_type = "MANAGED_CLUSTER"
327+
328+ unschedulable = 0
329+ }
330+ `
331+
332+ const testAccTkeClusterLevelUpdate = `
333+ variable "availability_zone" {
334+ default = "ap-guangzhou-3"
335+ }
336+
337+ variable "cluster_cidr" {
338+ default = "10.31.0.0/16"
339+ }
340+
341+ variable "default_instance_type" {
342+ default = "S1.SMALL1"
343+ }
344+
345+ data "tencentcloud_vpc_subnets" "vpc" {
346+ is_default = true
347+ availability_zone = var.availability_zone
348+ }
349+
350+ resource "tencentcloud_kubernetes_cluster" "managed_cluster" {
351+ vpc_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.vpc_id
352+ cluster_cidr = var.cluster_cidr
353+ cluster_max_pod_num = 32
354+ cluster_name = "test"
355+ cluster_desc = "test cluster desc"
356+ cluster_max_service_num = 32
357+ cluster_version = "1.18.4"
358+ cluster_os = "tlinux2.2(tkernel3)x86_64"
359+ cluster_level = "L20"
360+ auto_upgrade_cluster_level = false
361+ worker_config {
362+ count = 1
363+ availability_zone = var.availability_zone
364+ instance_type = var.default_instance_type
365+ system_disk_type = "CLOUD_SSD"
366+ system_disk_size = 60
367+ internet_charge_type = "TRAFFIC_POSTPAID_BY_HOUR"
368+ internet_max_bandwidth_out = 100
369+ public_ip_assigned = true
370+ subnet_id = data.tencentcloud_vpc_subnets.vpc.instance_list.0.subnet_id
371+ img_id = "` + defaultTkeOSImageId + `"
372+
373+ enhanced_security_service = false
374+ enhanced_monitor_service = false
375+ user_data = "dGVzdA=="
376+ password = "ZZXXccvv1212"
377+ }
378+
379+ cluster_deploy_type = "MANAGED_CLUSTER"
380+
381+ unschedulable = 0
382+ }
383+ `
0 commit comments