Skip to content

Commit 8ea1e1a

Browse files
committed
fix: add sg_orderly field for node pool
1 parent 297937f commit 8ea1e1a

File tree

3 files changed

+37
-11
lines changed

3 files changed

+37
-11
lines changed

tencentcloud/resource_tc_kubernetes_node_pool.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -331,10 +331,19 @@ func composedKubernetesAsScalingConfigPara() map[string]*schema.Schema {
331331
Description: "ID list of keys.",
332332
},
333333
"security_group_ids": {
334-
Type: schema.TypeSet,
335-
Optional: true,
336-
Elem: &schema.Schema{Type: schema.TypeString},
337-
Description: "Security groups to which a CVM instance belongs.",
334+
Type: schema.TypeSet,
335+
Optional: true,
336+
Elem: &schema.Schema{Type: schema.TypeString},
337+
ConflictsWith: []string{"auto_scaling_config.0.security_group_ids_orderly"},
338+
Deprecated: "This field of order cannot be guaranteed. Use `security_group_ids_orderly` instead.",
339+
Description: "Security groups to which a CVM instance belongs.",
340+
},
341+
"security_group_ids_orderly": {
342+
Type: schema.TypeList,
343+
Optional: true,
344+
Elem: &schema.Schema{Type: schema.TypeString},
345+
ConflictsWith: []string{"auto_scaling_config.0.security_group_ids"},
346+
Description: "An ordered security groups to which a CVM instance belongs.",
338347
},
339348
"enhanced_security_service": {
340349
Type: schema.TypeBool,
@@ -767,6 +776,10 @@ func composedKubernetesAsScalingConfigParaSerial(dMap map[string]interface{}, me
767776
request.SecurityGroupIds = helper.InterfacesStringsPoint(v.(*schema.Set).List())
768777
}
769778

779+
if v, ok := dMap["security_group_ids_orderly"]; ok {
780+
request.SecurityGroupIds = helper.InterfacesStringsPoint(v.([]interface{}))
781+
}
782+
770783
request.EnhancedService = &as.EnhancedService{}
771784

772785
if v, ok := dMap["enhanced_security_service"]; ok {
@@ -914,6 +927,10 @@ func composeAsLaunchConfigModifyRequest(d *schema.ResourceData, launchConfigId s
914927
request.SecurityGroupIds = helper.InterfacesStringsPoint(v.(*schema.Set).List())
915928
}
916929

930+
if v, ok := dMap["security_group_ids_orderly"]; ok {
931+
request.SecurityGroupIds = helper.InterfacesStringsPoint(v.([]interface{}))
932+
}
933+
917934
chargeType, ok := dMap["instance_charge_type"].(string)
918935

919936
if !ok || chargeType == "" {
@@ -1186,7 +1203,11 @@ func resourceKubernetesNodePoolRead(d *schema.ResourceData, meta interface{}) er
11861203
if v, ok := d.GetOk("auto_scaling_config.0.password"); ok {
11871204
launchConfig["password"] = v.(string)
11881205
}
1189-
launchConfig["security_group_ids"] = helper.StringsInterfaces(launchCfg.SecurityGroupIds)
1206+
1207+
if launchCfg.SecurityGroupIds != nil {
1208+
launchConfig["security_group_ids"] = helper.StringsInterfaces(launchCfg.SecurityGroupIds)
1209+
launchConfig["security_group_ids_orderly"] = helper.StringsInterfaces(launchCfg.SecurityGroupIds)
1210+
}
11901211

11911212
enableSecurity := launchCfg.EnhancedService.SecurityService.Enabled
11921213
enableMonitor := launchCfg.EnhancedService.MonitorService.Enabled

tencentcloud/resource_tc_kubernetes_node_pool_test.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func TestAccTencentCloudKubernetesNodePoolResource_basic(t *testing.T) {
103103
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "manually_added_total", "0"),
104104
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "tags.keep-test-np1", "test1"),
105105
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "tags.keep-test-np2", "test2"),
106-
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.security_group_ids.#", "1"),
106+
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.security_group_ids_orderly.#", "2"),
107107
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.host_name", "12.123.0.0"),
108108
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.host_name_style", "ORIGINAL"),
109109
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.enhanced_security_service", "false"),
@@ -138,7 +138,7 @@ func TestAccTencentCloudKubernetesNodePoolResource_basic(t *testing.T) {
138138
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "termination_policies.0", "NEWEST_INSTANCE"),
139139
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "tags.keep-test-np1", "testI"),
140140
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "tags.keep-test-np3", "testIII"),
141-
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.security_group_ids.#", "2"),
141+
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.security_group_ids_orderly.#", "4"),
142142
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.host_name", "12.123.1.1"),
143143
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.host_name_style", "UNIQUE"),
144144
resource.TestCheckResourceAttr(testTkeClusterNodePoolResourceKey, "auto_scaling_config.0.enhanced_security_service", "true"),
@@ -276,6 +276,10 @@ data "tencentcloud_security_groups" "sg" {
276276
data "tencentcloud_security_groups" "sg_as" {
277277
name = "keep-for-as"
278278
}
279+
280+
data "tencentcloud_security_groups" "sg_keep" {
281+
name = "keep-"
282+
}
279283
`
280284

281285
const testAccTkeNodePoolCluster string = testAccTkeNodePoolClusterBasic + `
@@ -300,7 +304,7 @@ resource "tencentcloud_kubernetes_node_pool" "np_test" {
300304
instance_type = var.ins_type
301305
system_disk_type = "CLOUD_PREMIUM"
302306
system_disk_size = "50"
303-
security_group_ids = [data.tencentcloud_security_groups.sg.security_groups[0].security_group_id]
307+
security_group_ids_orderly = [data.tencentcloud_security_groups.sg.security_groups[0].security_group_id, data.tencentcloud_security_groups.sg_keep.security_groups[0].security_group_id]
304308
cam_role_name = "TCB_QcsRole"
305309
data_disk {
306310
disk_type = "CLOUD_PREMIUM"
@@ -364,7 +368,7 @@ resource "tencentcloud_kubernetes_node_pool" "np_test" {
364368
instance_type = var.ins_type
365369
system_disk_type = "CLOUD_PREMIUM"
366370
system_disk_size = "100"
367-
security_group_ids = [data.tencentcloud_security_groups.sg.security_groups[0].security_group_id, data.tencentcloud_security_groups.sg_as.security_groups[0].security_group_id]
371+
security_group_ids_orderly = [data.tencentcloud_security_groups.sg.security_groups[0].security_group_id, data.tencentcloud_security_groups.sg_as.security_groups[0].security_group_id, data.tencentcloud_security_groups.sg_keep.security_groups[0].security_group_id, data.tencentcloud_security_groups.sg_keep.security_groups[1].security_group_id]
368372
instance_charge_type = "SPOTPAID"
369373
spot_instance_type = "one-time"
370374
spot_max_price = "1000"
@@ -439,7 +443,7 @@ resource "tencentcloud_kubernetes_node_pool" "np_test" {
439443
cam_role_name = "TCB_QcsRole"
440444
system_disk_type = "CLOUD_PREMIUM"
441445
system_disk_size = "50"
442-
security_group_ids = [data.tencentcloud_security_groups.sg.security_groups[0].security_group_id]
446+
security_group_ids_orderly = [data.tencentcloud_security_groups.sg.security_groups[0].security_group_id]
443447
444448
data_disk {
445449
disk_type = "CLOUD_PREMIUM"
@@ -479,7 +483,7 @@ resource "tencentcloud_kubernetes_node_pool" "np_test" {
479483
instance_type = "GN6S.LARGE20"
480484
system_disk_type = "CLOUD_PREMIUM"
481485
system_disk_size = "100"
482-
security_group_ids = [data.tencentcloud_security_groups.sg.security_groups[0].security_group_id, data.tencentcloud_security_groups.sg_as.security_groups[0].security_group_id]
486+
security_group_ids_orderly = [data.tencentcloud_security_groups.sg.security_groups[0].security_group_id, data.tencentcloud_security_groups.sg_as.security_groups[0].security_group_id]
483487
instance_charge_type = "SPOTPAID"
484488
spot_instance_type = "one-time"
485489
spot_max_price = "1000"

website/docs/r/kubernetes_node_pool.html.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ The `auto_scaling_config` object supports the following:
203203
* `key_ids` - (Optional, List, ForceNew) ID list of keys.
204204
* `password` - (Optional, String, ForceNew) Password to access.
205205
* `public_ip_assigned` - (Optional, Bool) Specify whether to assign an Internet IP address.
206+
* `security_group_ids_orderly` - (Optional, List) An ordered security groups to which a CVM instance belongs.
206207
* `security_group_ids` - (Optional, Set) Security groups to which a CVM instance belongs.
207208
* `spot_instance_type` - (Optional, String) Type of spot instance, only support `one-time` now. Note: it only works when instance_charge_type is set to `SPOTPAID`.
208209
* `spot_max_price` - (Optional, String) Max price of a spot instance, is the format of decimal string, for example "0.50". Note: it only works when instance_charge_type is set to `SPOTPAID`.

0 commit comments

Comments
 (0)