Skip to content

Commit 85de77a

Browse files
tongyimingmikatong
and
mikatong
authored
fix(cdwch): [120871088]cdwch support secondary_zone_info (#3253)
* cdwch support secondary_zone_info * add changelog * update * update * update vendor --------- Co-authored-by: mikatong <[email protected]>
1 parent e8f7a1e commit 85de77a

File tree

11 files changed

+921
-605
lines changed

11 files changed

+921
-605
lines changed

.changelog/3253.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_clickhouse_instance: support secondary_zone_info
3+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ require (
3737
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.591
3838
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.944
3939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1010
40-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.843
40+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.1129
4141
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.627
4242
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfw v1.0.1018
4343
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/chdfs v1.0.600
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1107
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1078
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1133
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1128
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1111

go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -844,6 +844,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1010 h1:sO0vW6
844844
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.1010/go.mod h1:/UDEkf2UhUud19VVMGMTpyiI7HoE3U/c23uoAqDgIWA=
845845
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.843 h1:3Xr3UPscUfi5jAzCtwQjDfDf4TPsbUxsCrDdHo6xIRI=
846846
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.843/go.mod h1:XTZXr3hF0pPTd3jD/vm90FhJEOvILL3d2u43Q52xZX8=
847+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.1129 h1:jtcy2K2S8jaZzA+S8TEyvPyJw9mMpgt2yllNNW5oezI=
848+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.1129/go.mod h1:6Zv06z4PQySXoV/5Cl08AGJ85+Qks2d1hVNlu8r6ukk=
847849
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwdoris v1.0.993 h1:b4EFXmAFslKvrFLogWXNQCAVDKG1/IZsR/L4sDmEbr8=
848850
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwdoris v1.0.993/go.mod h1:uH80xTlhZC7HR4OjsUo/ZgD5h5MYo45WyW/msUFkXqU=
849851
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwpg v1.0.1126 h1:DnjwVXbDFcdreCDn6US+UoP6pEeMHcWNlz74fWaNffQ=
@@ -931,8 +933,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1122/go.mod
931933
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1126/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
932934
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
933935
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1129/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
934-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130 h1:pjtrqJUaidq1fFWwPvBorq7FScq0LXiQ7pZjJZx3Jsc=
935-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
936+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1133 h1:S+ZHcAfI8+ii4MfsCr41R3CdhlTsc5OddGsCfeYJdl8=
937+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1133/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
936938
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
937939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
938940
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=

tencentcloud/services/cdwch/resource_tc_clickhouse_instance.go

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cdwch
22

33
import (
44
"context"
5+
"encoding/json"
56
"fmt"
67
"log"
78
"strconv"
@@ -158,6 +159,28 @@ func ResourceTencentCloudClickhouseInstance() *schema.Resource {
158159
Computed: true,
159160
Description: "Tag description list.",
160161
},
162+
"secondary_zone_info": {
163+
Optional: true,
164+
Computed: true,
165+
Type: schema.TypeList,
166+
Description: "Secondary zone info.",
167+
Elem: &schema.Resource{
168+
Schema: map[string]*schema.Schema{
169+
"secondary_zone": {
170+
Type: schema.TypeString,
171+
Optional: true,
172+
Computed: true,
173+
Description: "Secondary zone.",
174+
},
175+
"secondary_subnet": {
176+
Type: schema.TypeString,
177+
Optional: true,
178+
Computed: true,
179+
Description: "Secondary subnet.",
180+
},
181+
},
182+
},
183+
},
161184
"expire_time": {
162185
Type: schema.TypeString,
163186
Computed: true,
@@ -226,6 +249,23 @@ func resourceTencentCloudClickhouseInstanceRead(d *schema.ResourceData, meta int
226249
_ = d.Set("common_spec", []map[string]interface{}{commonSpec})
227250
}
228251

252+
if instanceInfo.SecondaryZoneInfo != nil {
253+
254+
data := make([]secondaryZoneInfo, 0)
255+
err := json.Unmarshal([]byte(*instanceInfo.SecondaryZoneInfo), &data)
256+
if err != nil {
257+
return err
258+
}
259+
secondaryZoneInfoList := make([]interface{}, 0)
260+
for _, item := range data {
261+
secondaryZoneInfoList = append(secondaryZoneInfoList, map[string]interface{}{
262+
"secondary_zone": item.SecondaryZone,
263+
"secondary_subnet": item.SecondarySubnet,
264+
})
265+
}
266+
267+
_ = d.Set("secondary_zone_info", secondaryZoneInfoList)
268+
}
229269
tcClient := meta.(tccommon.ProviderMeta).GetAPIV3Conn()
230270
tagService := svctag.NewTagService(tcClient)
231271
tags, err := tagService.DescribeResourceTags(ctx, "cdwch", "cdwchInstance", tcClient.Region, d.Id())
@@ -328,6 +368,18 @@ func resourceTencentCloudClickhouseInstanceCreate(d *schema.ResourceData, meta i
328368
request.CommonSpec = &nodeSpec
329369
}
330370

371+
if v, ok := d.GetOk("secondary_zone_info"); ok {
372+
secondaryZoneInfo := make([]*cdwch.SecondaryZoneInfo, 0)
373+
for _, item := range v.([]interface{}) {
374+
itemMap := item.(map[string]interface{})
375+
secondaryZoneInfo = append(secondaryZoneInfo, &cdwch.SecondaryZoneInfo{
376+
SecondaryZone: helper.String(itemMap["secondary_zone"].(string)),
377+
SecondarySubnet: helper.String(itemMap["secondary_subnet"].(string)),
378+
})
379+
}
380+
request.SecondaryZoneInfo = secondaryZoneInfo
381+
}
382+
331383
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
332384
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseCdwchClient().CreateInstanceNew(request)
333385
if e != nil {
@@ -392,7 +444,7 @@ func resourceTencentCloudClickhouseInstanceUpdate(d *schema.ResourceData, meta i
392444
}
393445
}
394446

395-
immutableArgs := []string{"zone", "ha_flag", "vpc_id", "subnet_id", "product_version", "instance_name", "charge_type", "renew_flag", "time_span", "data_spec", "cls_log_set_id", "cos_bucket_name", "mount_disk_type", "ha_zk", "common_spec"}
447+
immutableArgs := []string{"zone", "ha_flag", "vpc_id", "subnet_id", "product_version", "instance_name", "charge_type", "renew_flag", "time_span", "data_spec", "cls_log_set_id", "cos_bucket_name", "mount_disk_type", "ha_zk", "common_spec", "secondary_zone_info"}
396448

397449
for _, v := range immutableArgs {
398450
if d.HasChange(v) {
@@ -451,3 +503,8 @@ func resourceTencentCloudClickhouseInstanceDelete(d *schema.ResourceData, meta i
451503
}
452504
return nil
453505
}
506+
507+
type secondaryZoneInfo struct {
508+
SecondaryZone string `json:"SecondaryZone"`
509+
SecondarySubnet string `json:"SecondarySubnet"`
510+
}

tencentcloud/services/cdwch/resource_tc_clickhouse_instance_test.go

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,26 @@ func TestAccTencentCloudClickhouseInstanceResource_prepaid(t *testing.T) {
4848
})
4949
}
5050

51+
func TestAccTencentCloudClickhouseInstanceResource_withSecondaryZoneInfo(t *testing.T) {
52+
t.Parallel()
53+
resource.Test(t, resource.TestCase{
54+
PreCheck: func() { tcacctest.AccPreCheck(t) },
55+
Providers: tcacctest.AccProviders,
56+
Steps: []resource.TestStep{
57+
{
58+
Config: testAccClickhouseInstanceWithSecondaryZoneInfo,
59+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_clickhouse_instance.cdwch_instance_secondary_zone", "id")),
60+
},
61+
{
62+
ResourceName: "tencentcloud_clickhouse_instance.cdwch_instance_secondary_zone",
63+
ImportState: true,
64+
ImportStateVerify: true,
65+
ImportStateVerifyIgnore: []string{"time_span"},
66+
},
67+
},
68+
})
69+
}
70+
5171
const testAccClickhouseInstanceBasic = `
5272
variable "availability_zone" {
5373
default = "ap-guangzhou-6"
@@ -153,3 +173,61 @@ resource "tencentcloud_clickhouse_instance" "cdwch_instance_prepaid" {
153173
instance_name = "tf-test-clickhouse-prepaid"
154174
}
155175
`
176+
177+
const testAccClickhouseInstanceWithSecondaryZoneInfo = `
178+
resource "tencentcloud_vpc" "vpc" {
179+
name = "cdwch-vpc"
180+
cidr_block = "10.0.0.0/16"
181+
}
182+
183+
resource "tencentcloud_subnet" "subnet" {
184+
vpc_id = tencentcloud_vpc.vpc.id
185+
name = "cdwch-subnet"
186+
cidr_block = "10.0.1.0/24"
187+
availability_zone = "ap-guangzhou-6"
188+
is_multicast = false
189+
}
190+
resource "tencentcloud_subnet" "subnet1" {
191+
vpc_id = tencentcloud_vpc.vpc.id
192+
name = "cdwch-subnet1"
193+
cidr_block = "10.0.2.0/24"
194+
availability_zone = "ap-guangzhou-3"
195+
is_multicast = false
196+
}
197+
resource "tencentcloud_subnet" "subnet2" {
198+
vpc_id = tencentcloud_vpc.vpc.id
199+
name = "cdwch-subnet2"
200+
cidr_block = "10.0.3.0/24"
201+
availability_zone = "ap-guangzhou-4"
202+
is_multicast = false
203+
}
204+
205+
resource "tencentcloud_clickhouse_instance" "cdwch_instance_secondary_zone" {
206+
zone = "ap-guangzhou-6"
207+
ha_flag = true
208+
vpc_id = tencentcloud_vpc.vpc.id
209+
subnet_id = tencentcloud_subnet.subnet.id
210+
product_version = "21.8.12.29"
211+
data_spec {
212+
spec_name = "S_4_16_S"
213+
count = 4
214+
disk_size = 300
215+
}
216+
common_spec {
217+
spec_name = "S_4_16_S"
218+
count = 3
219+
disk_size = 300
220+
}
221+
charge_type = "POSTPAID_BY_HOUR"
222+
instance_name = "tf-test"
223+
secondary_zone_info {
224+
secondary_zone = "ap-guangzhou-4"
225+
secondary_subnet = tencentcloud_subnet.subnet2.id
226+
}
227+
secondary_zone_info {
228+
secondary_zone = "ap-guangzhou-3"
229+
secondary_subnet = tencentcloud_subnet.subnet1.id
230+
}
231+
ha_zk = true
232+
}
233+
`

0 commit comments

Comments
 (0)