Skip to content

Commit 22e2b01

Browse files
committed
add
1 parent 882eb6c commit 22e2b01

File tree

11 files changed

+7201
-4247
lines changed

11 files changed

+7201
-4247
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.860
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.952
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.955
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.958
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692
@@ -96,7 +96,7 @@ require (
9696
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tse v1.0.857
9797
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf v1.0.674
9898
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860
99-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.845
99+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.958
100100
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833
101101
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792
102102
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -942,6 +942,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.952 h1:fqO7
942942
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.952/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
943943
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.955 h1:kr5Kx0zMcPkO9f/ao0xhk0f6V8TxziFGo+AGa5BW5QY=
944944
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.955/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
945+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.958 h1:WoN2lhvQVTFnY4woYvpQKRzdHeEiB+m9lsHC3TOFdXQ=
946+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.958/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
945947
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
946948
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860/go.mod h1:NZo1WplQcC314kMlCRUoy8NQju2BnolIJj7NAWgsuhY=
947949
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
@@ -1068,6 +1070,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860 h1:vW2NgAH
10681070
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860/go.mod h1:uCkDh/AW/tb8JGq5b2kqLjqZuhCFR+6oTsq1SrrvT44=
10691071
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.845 h1:c9TSh+kuEwxAuPndCMI7QeERfY/XWkZWRniFI1Gak60=
10701072
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.845/go.mod h1:sz+RI5GLDNIQMKJAR2N93fyxFv/FQo322xq/iAg2Z/g=
1073+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.958 h1:PbvPRXdfCSPON+OLA2/HRZhzrMrGadUV1BCiptAx3Jk=
1074+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.958/go.mod h1:EzkGUZh/Tjzu1ZMsxsC3F0JqXc4GAvpXwsSdd15/xOM=
10711075
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833 h1:avaBlZ+Qqv7bfMg/u0jlRsbEBbE18CfqKWbfGc84PLg=
10721076
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.833/go.mod h1:fUWG217b//46Oa3VXxC5mgeYeewVAbF+lc81uET89EM=
10731077
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 h1:NLgKNOIHWa38AmW7dyfI9Jlcp2Kr9VRD94f48pPNmxM=

tencentcloud/services/vpc/resource_tc_subnet.go

Lines changed: 49 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ func ResourceTencentCloudVpcSubnet() *schema.Resource {
5757
Default: true,
5858
Description: "Indicates whether multicast is enabled. The default value is 'true'.",
5959
},
60+
"cdc_id": {
61+
Type: schema.TypeString,
62+
Optional: true,
63+
ForceNew: true,
64+
Description: "ID of CDC instance.",
65+
},
6066
"route_table_id": {
6167
Type: schema.TypeString,
6268
Optional: true,
@@ -92,35 +98,38 @@ func ResourceTencentCloudVpcSubnet() *schema.Resource {
9298
func resourceTencentCloudVpcSubnetCreate(d *schema.ResourceData, meta interface{}) error {
9399
defer tccommon.LogElapsed("resource.tencentcloud_subnet.create")()
94100

95-
logId := tccommon.GetLogId(tccommon.ContextNil)
96-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
97-
98-
vpcService := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
99-
100101
var (
102+
logId = tccommon.GetLogId(tccommon.ContextNil)
103+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
104+
vpcService = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
101105
vpcId string
102106
availabilityZone string
103107
name string
104108
cidrBlock string
105109
isMulticast bool
106110
routeTableId string
111+
cdcId string
107112
tags map[string]string
108113
)
114+
109115
if temp, ok := d.GetOk("vpc_id"); ok {
110116
vpcId = temp.(string)
111117
if len(vpcId) < 1 {
112118
return fmt.Errorf("vpc_id should be not empty string")
113119
}
114120
}
121+
115122
if temp, ok := d.GetOk("availability_zone"); ok {
116123
availabilityZone = temp.(string)
117124
if len(availabilityZone) < 1 {
118125
return fmt.Errorf("availability_zone should be not empty string")
119126
}
120127
}
128+
121129
if temp, ok := d.GetOk("name"); ok {
122130
name = temp.(string)
123131
}
132+
124133
if temp, ok := d.GetOk("cidr_block"); ok {
125134
cidrBlock = temp.(string)
126135
}
@@ -134,11 +143,16 @@ func resourceTencentCloudVpcSubnetCreate(d *schema.ResourceData, meta interface{
134143
}
135144
}
136145

146+
if temp, ok := d.GetOk("cdc_id"); ok {
147+
cdcId = temp.(string)
148+
}
149+
137150
if routeTableId != "" {
138151
_, has, err := vpcService.IsRouteTableInVpc(ctx, routeTableId, vpcId)
139152
if err != nil {
140153
return err
141154
}
155+
142156
if has != 1 {
143157
err = fmt.Errorf("error,route_table [%s] not found in vpc [%s]", routeTableId, vpcId)
144158
log.Printf("[CRITAL]%s %s", logId, err.Error())
@@ -150,10 +164,11 @@ func resourceTencentCloudVpcSubnetCreate(d *schema.ResourceData, meta interface{
150164
tags = temp
151165
}
152166

153-
subnetId, err := vpcService.CreateSubnet(ctx, vpcId, name, cidrBlock, availabilityZone, tags)
167+
subnetId, err := vpcService.CreateSubnet(ctx, vpcId, name, cidrBlock, availabilityZone, cdcId, tags)
154168
if err != nil {
155169
return err
156170
}
171+
157172
d.SetId(subnetId)
158173

159174
err = vpcService.ModifySubnetAttribute(ctx, subnetId, name, isMulticast)
@@ -170,10 +185,8 @@ func resourceTencentCloudVpcSubnetCreate(d *schema.ResourceData, meta interface{
170185

171186
if tags := helper.GetTags(d, "tags"); len(tags) > 0 {
172187
tagService := svctag.NewTagService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
173-
174188
region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region
175189
resourceName := fmt.Sprintf("qcs::vpc:%s:uin/:subnet/%s", region, subnetId)
176-
177190
if err := tagService.ModifyTags(ctx, resourceName, tags, nil); err != nil {
178191
return err
179192
}
@@ -186,19 +199,18 @@ func resourceTencentCloudVpcSubnetRead(d *schema.ResourceData, meta interface{})
186199
defer tccommon.LogElapsed("resource.tencentcloud_subnet.read")()
187200
defer tccommon.InconsistentCheck(d, meta)()
188201

189-
logId := tccommon.GetLogId(tccommon.ContextNil)
190-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
191-
192-
id := d.Id()
193-
194-
vpcService := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
195-
tagService := svctag.NewTagService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
196-
region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region
197202
var (
198-
info VpcSubnetBasicInfo
199-
has int
200-
e error
203+
logId = tccommon.GetLogId(tccommon.ContextNil)
204+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
205+
vpcService = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
206+
tagService = svctag.NewTagService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
207+
region = meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region
208+
id = d.Id()
209+
info VpcSubnetBasicInfo
210+
has int
211+
e error
201212
)
213+
202214
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
203215
info, has, e = vpcService.DescribeSubnet(ctx, id, nil, "", "")
204216
if e != nil {
@@ -216,14 +228,18 @@ func resourceTencentCloudVpcSubnetRead(d *schema.ResourceData, meta interface{})
216228
log.Printf("[CRITAL]%s %s", logId, errRet.Error())
217229
return resource.NonRetryableError(errRet)
218230
}
231+
219232
return nil
220233
})
234+
221235
if err != nil {
222236
return err
223237
}
238+
224239
if has == 0 {
225240
return nil
226241
}
242+
227243
tags, err := tagService.DescribeResourceTags(ctx, "vpc", "subnet", region, id)
228244
if err != nil {
229245
return err
@@ -235,6 +251,7 @@ func resourceTencentCloudVpcSubnetRead(d *schema.ResourceData, meta interface{})
235251
_ = d.Set("cidr_block", info.cidr)
236252
_ = d.Set("is_multicast", info.isMulticast)
237253
_ = d.Set("route_table_id", info.routeTableId)
254+
_ = d.Set("cdc_id", info.cdcId)
238255
_ = d.Set("is_default", info.isDefault)
239256
_ = d.Set("available_ip_count", info.availableIpCount)
240257
_ = d.Set("create_time", info.createTime)
@@ -246,17 +263,15 @@ func resourceTencentCloudVpcSubnetRead(d *schema.ResourceData, meta interface{})
246263
func resourceTencentCloudVpcSubnetUpdate(d *schema.ResourceData, meta interface{}) error {
247264
defer tccommon.LogElapsed("resource.tencentcloud_subnet.update")()
248265

249-
logId := tccommon.GetLogId(tccommon.ContextNil)
250-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
251-
252-
id := d.Id()
253-
254-
service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
255-
256266
var (
267+
logId = tccommon.GetLogId(tccommon.ContextNil)
268+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
269+
service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
270+
id = d.Id()
257271
name string
258272
isMulticast bool
259273
)
274+
260275
old, now := d.GetChange("name")
261276
if d.HasChange("name") {
262277
name = now.(string)
@@ -287,6 +302,7 @@ func resourceTencentCloudVpcSubnetUpdate(d *schema.ResourceData, meta interface{
287302
if err != nil {
288303
return err
289304
}
305+
290306
if has != 1 {
291307
err = fmt.Errorf("error,route_table [%s] not found in vpc [%s]", routeTableId, d.Get("vpc_id").(string))
292308
log.Printf("[CRITAL]%s %s", logId, err.Error())
@@ -301,16 +317,12 @@ func resourceTencentCloudVpcSubnetUpdate(d *schema.ResourceData, meta interface{
301317
if d.HasChange("tags") {
302318
oldTags, newTags := d.GetChange("tags")
303319
replaceTags, deleteTags := svctag.DiffTags(oldTags.(map[string]interface{}), newTags.(map[string]interface{}))
304-
305320
tagService := svctag.NewTagService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
306-
307321
region := meta.(tccommon.ProviderMeta).GetAPIV3Conn().Region
308322
resourceName := fmt.Sprintf("qcs::vpc:%s:uin/:subnet/%s", region, id)
309-
310323
if err := tagService.ModifyTags(ctx, resourceName, replaceTags, deleteTags); err != nil {
311324
return err
312325
}
313-
314326
}
315327

316328
d.Partial(false)
@@ -321,10 +333,11 @@ func resourceTencentCloudVpcSubnetUpdate(d *schema.ResourceData, meta interface{
321333
func resourceTencentCloudVpcSubnetDelete(d *schema.ResourceData, meta interface{}) error {
322334
defer tccommon.LogElapsed("resource.tencentcloud_subnet.delete")()
323335

324-
logId := tccommon.GetLogId(tccommon.ContextNil)
325-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
326-
327-
service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
336+
var (
337+
logId = tccommon.GetLogId(tccommon.ContextNil)
338+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
339+
service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
340+
)
328341

329342
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
330343
if err := service.DeleteSubnet(ctx, d.Id()); err != nil {
@@ -333,8 +346,10 @@ func resourceTencentCloudVpcSubnetDelete(d *schema.ResourceData, meta interface{
333346
return nil
334347
}
335348
}
349+
336350
return resource.RetryableError(err)
337351
}
352+
338353
return nil
339354
})
340355

tencentcloud/services/vpc/resource_tc_subnet.md

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,27 @@ Provide a resource to create a VPC subnet.
22

33
Example Usage
44

5+
Create a normal VPC subnet
6+
7+
```hcl
8+
data "tencentcloud_availability_zones" "zones" {}
9+
10+
resource "tencentcloud_vpc" "vpc" {
11+
name = "vpc-example"
12+
cidr_block = "10.0.0.0/16"
13+
}
14+
15+
resource "tencentcloud_subnet" "subnet" {
16+
vpc_id = tencentcloud_vpc.vpc.id
17+
name = "subnet-example"
18+
cidr_block = "10.0.0.0/16"
19+
availability_zone = data.tencentcloud_availability_zones.zones.zones.0.name
20+
is_multicast = false
21+
}
22+
```
23+
24+
Create a CDC instance VPC subnet
25+
526
```hcl
627
data "tencentcloud_availability_zones" "zones" {}
728
@@ -14,6 +35,7 @@ resource "tencentcloud_subnet" "subnet" {
1435
vpc_id = tencentcloud_vpc.vpc.id
1536
name = "subnet-example"
1637
cidr_block = "10.0.0.0/16"
38+
cdc_id = "cluster-lchwgxhs"
1739
availability_zone = data.tencentcloud_availability_zones.zones.zones.0.name
1840
is_multicast = false
1941
}
@@ -24,5 +46,5 @@ Import
2446
Vpc subnet instance can be imported, e.g.
2547

2648
```
27-
$ terraform import tencentcloud_subnet.test subnet_id
28-
```
49+
$ terraform import tencentcloud_subnet.subnet subnet-b8j03v0c
50+
```

tencentcloud/services/vpc/service_tencentcloud_vpc.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ type VpcSubnetBasicInfo struct {
6060
vpcId string
6161
subnetId string
6262
routeTableId string
63+
cdcId string
6364
name string
6465
cidr string
6566
isMulticast bool
@@ -604,6 +605,7 @@ getMoreData:
604605
basicInfo.vpcId = *item.VpcId
605606
basicInfo.subnetId = *item.SubnetId
606607
basicInfo.routeTableId = *item.RouteTableId
608+
basicInfo.cdcId = *item.CdcId
607609

608610
basicInfo.name = *item.SubnetName
609611
basicInfo.isDefault = *item.IsDefault
@@ -690,7 +692,7 @@ func (me *VpcService) DeleteVpc(ctx context.Context, vpcId string) (errRet error
690692

691693
}
692694

693-
func (me *VpcService) CreateSubnet(ctx context.Context, vpcId, name, cidr, zone string, tags map[string]string) (subnetId string, errRet error) {
695+
func (me *VpcService) CreateSubnet(ctx context.Context, vpcId, name, cidr, zone, cdcId string, tags map[string]string) (subnetId string, errRet error) {
694696
logId := tccommon.GetLogId(ctx)
695697
request := vpc.NewCreateSubnetRequest()
696698
defer func() {
@@ -704,11 +706,16 @@ func (me *VpcService) CreateSubnet(ctx context.Context, vpcId, name, cidr, zone
704706
errRet = fmt.Errorf("CreateSubnet can not invoke by empty vpc_id.")
705707
return
706708
}
709+
707710
request.VpcId = &vpcId
708711
request.SubnetName = &name
709712
request.CidrBlock = &cidr
710713
request.Zone = &zone
711714

715+
if cdcId != "" {
716+
request.CdcId = &cdcId
717+
}
718+
712719
if len(tags) > 0 {
713720
for tagKey, tagValue := range tags {
714721
tag := vpc.Tag{

vendor/github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/http/request.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)