Skip to content

Commit d2436a1

Browse files
authored
fix(vpc): [123705166] tencentcloud_vpc_ipv6_cidr_block support address_type (#3328)
* add * add * add
1 parent 9174476 commit d2436a1

File tree

12 files changed

+1686
-359
lines changed

12 files changed

+1686
-359
lines changed

.changelog/3328.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_vpc_ipv6_cidr_block: support `address_type`
3+
```

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.1107
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1135
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1148
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
@@ -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.1122
99+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1148
100100
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1037
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
@@ -945,6 +945,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1136/go.mod
945945
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1142/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
946946
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145 h1:DETyir/MtG+GLOD0OatzjrQTTXRguFSJo1ZtPXtbIQw=
947947
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1145/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
948+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1148 h1:+2jHvXzO0ljzTtqdnZ6ug0wMLYSaMwyr1zJa0z/DqyE=
949+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1148/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
948950
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
949951
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
950952
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
@@ -1071,6 +1073,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860 h1:vW2NgAH
10711073
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.860/go.mod h1:uCkDh/AW/tb8JGq5b2kqLjqZuhCFR+6oTsq1SrrvT44=
10721074
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1122 h1:K9uRaby+EqZdqZHcTsRRIxgyaCWomFHPqQMZDrsiTM0=
10731075
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1122/go.mod h1:8xCo14lGkAvl5EhpYpmLk5ztoFcHdpBLzLzAawxjl+Y=
1076+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1148 h1:qtzL3QscVftBw9ZVKI7fmebCkc6zL+3zSkRFtj77HpI=
1077+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.1148/go.mod h1:NHVGgF5BAXq5emdefxsC+P1/MsL3ryr5s2jHpxDTYJM=
10741078
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1037 h1:sgHOHqVFcO266dnoh0KJ0CoxrRglRZYKW78iBh41Giw=
10751079
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/waf v1.0.1037/go.mod h1:QM5m6aZ65kaxaES0D44BNKmemn+9WBf5vr3HDDPrh8U=
10761080
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wedata v1.0.792 h1:NLgKNOIHWa38AmW7dyfI9Jlcp2Kr9VRD94f48pPNmxM=

tencentcloud/services/vpc/resource_tc_vpc_ipv6_cidr_block.go

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,20 @@ func ResourceTencentCloudVpcIpv6CidrBlock() *schema.Resource {
2323
},
2424
Schema: map[string]*schema.Schema{
2525
"vpc_id": {
26-
Required: true,
2726
Type: schema.TypeString,
27+
Required: true,
2828
ForceNew: true,
2929
Description: "`VPC` instance `ID`, in the form of `vpc-f49l6u0z`.",
3030
},
31+
32+
"address_type": {
33+
Type: schema.TypeString,
34+
Optional: true,
35+
Computed: true,
36+
ForceNew: true,
37+
Description: "Apply for the type of IPv6 Cidr, GUA (Global Unicast Address), ULA (Unique Local Address).",
38+
},
39+
3140
"ipv6_cidr_block": {
3241
Type: schema.TypeString,
3342
Computed: true,
@@ -41,26 +50,32 @@ func resourceTencentCloudVpcIpv6CidrBlockCreate(d *schema.ResourceData, meta int
4150
defer tccommon.LogElapsed("resource.tencentcloud_vpc_ipv6_cidr_block.create")()
4251
defer tccommon.InconsistentCheck(d, meta)()
4352

44-
logId := tccommon.GetLogId(tccommon.ContextNil)
45-
4653
var (
54+
logId = tccommon.GetLogId(tccommon.ContextNil)
4755
request = vpc.NewAssignIpv6CidrBlockRequest()
4856
vpcId string
4957
)
58+
5059
if v, ok := d.GetOk("vpc_id"); ok {
5160
vpcId = v.(string)
5261
request.VpcId = helper.String(vpcId)
5362
}
5463

64+
if v, ok := d.GetOk("address_type"); ok {
65+
request.AddressType = helper.String(v.(string))
66+
}
67+
5568
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
5669
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseVpcClient().AssignIpv6CidrBlock(request)
5770
if e != nil {
5871
return tccommon.RetryError(e)
5972
} else {
6073
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
6174
}
75+
6276
return nil
6377
})
78+
6479
if err != nil {
6580
log.Printf("[CRITAL]%s create vpc ipv6CidrBlock failed, reason:%+v", logId, err)
6681
return err
@@ -75,13 +90,12 @@ func resourceTencentCloudVpcIpv6CidrBlockRead(d *schema.ResourceData, meta inter
7590
defer tccommon.LogElapsed("resource.tencentcloud_vpc_ipv6_cidr_block.read")()
7691
defer tccommon.InconsistentCheck(d, meta)()
7792

78-
logId := tccommon.GetLogId(tccommon.ContextNil)
79-
80-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
81-
82-
service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
83-
84-
vpcId := d.Id()
93+
var (
94+
logId = tccommon.GetLogId(tccommon.ContextNil)
95+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
96+
service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
97+
vpcId = d.Id()
98+
)
8599

86100
instance, err := service.DescribeVpcById(ctx, vpcId)
87101
if err != nil {
@@ -98,6 +112,10 @@ func resourceTencentCloudVpcIpv6CidrBlockRead(d *schema.ResourceData, meta inter
98112
_ = d.Set("vpc_id", instance.VpcId)
99113
}
100114

115+
if instance.Ipv6CidrBlockSet != nil && len(instance.Ipv6CidrBlockSet) != 0 {
116+
_ = d.Set("address_type", instance.Ipv6CidrBlockSet[0].AddressType)
117+
}
118+
101119
if instance.Ipv6CidrBlock != nil {
102120
_ = d.Set("ipv6_cidr_block", instance.Ipv6CidrBlock)
103121
}
@@ -109,11 +127,12 @@ func resourceTencentCloudVpcIpv6CidrBlockDelete(d *schema.ResourceData, meta int
109127
defer tccommon.LogElapsed("resource.tencentcloud_vpc_ipv6_cidr_block.delete")()
110128
defer tccommon.InconsistentCheck(d, meta)()
111129

112-
logId := tccommon.GetLogId(tccommon.ContextNil)
113-
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
114-
115-
service := VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
116-
vpcId := d.Id()
130+
var (
131+
logId = tccommon.GetLogId(tccommon.ContextNil)
132+
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
133+
service = VpcService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
134+
vpcId = d.Id()
135+
)
117136

118137
if err := service.DeleteVpcIpv6CidrBlockById(ctx, vpcId); err != nil {
119138
return err

tencentcloud/services/vpc/resource_tc_vpc_ipv6_cidr_block.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Provides a resource to create a vpc ipv6_cidr_block
1+
Provides a resource to create a VPC ipv6 cidr block
22

33
Example Usage
44

@@ -13,10 +13,19 @@ resource "tencentcloud_vpc_ipv6_cidr_block" "example" {
1313
}
1414
```
1515

16+
Or
17+
18+
```hcl
19+
resource "tencentcloud_vpc_ipv6_cidr_block" "example" {
20+
vpc_id = tencentcloud_vpc.vpc.id
21+
address_type = "ULA"
22+
}
23+
```
24+
1625
Import
1726

1827
vpc ipv6_cidr_block can be imported using the id, e.g.
1928

2029
```
21-
terraform import tencentcloud_vpc_ipv6_cidr_block.ipv6_cidr_block vpc_id
22-
```
30+
terraform import tencentcloud_vpc_ipv6_cidr_block.example vpc-826mi3hd
31+
```

tencentcloud/services/vpc/service_tencentcloud_vpc.go

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6842,6 +6842,7 @@ func (me *VpcService) DescribeVpcById(ctx context.Context, vpcId string) (instan
68426842
logId := tccommon.GetLogId(ctx)
68436843

68446844
request := vpc.NewDescribeVpcsRequest()
6845+
response := vpc.NewDescribeVpcsResponse()
68456846
request.VpcIds = []*string{&vpcId}
68466847

68476848
defer func() {
@@ -6860,16 +6861,27 @@ func (me *VpcService) DescribeVpcById(ctx context.Context, vpcId string) (instan
68606861
for {
68616862
request.Offset = helper.Int64ToStrPoint(offset)
68626863
request.Limit = helper.Int64ToStrPoint(limit)
6863-
response, err := me.client.UseVpcClient().DescribeVpcs(request)
6864+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
6865+
result, e := me.client.UseVpcClient().DescribeVpcs(request)
6866+
if e != nil {
6867+
return tccommon.RetryError(e)
6868+
} else {
6869+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
6870+
}
6871+
6872+
response = result
6873+
return nil
6874+
})
6875+
68646876
if err != nil {
68656877
errRet = err
68666878
return
68676879
}
6868-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
68696880

68706881
if response == nil || len(response.Response.VpcSet) < 1 {
68716882
break
68726883
}
6884+
68736885
instances = append(instances, response.Response.VpcSet...)
68746886
if len(response.Response.VpcSet) < int(limit) {
68756887
break
@@ -6897,14 +6909,22 @@ func (me *VpcService) DeleteVpcIpv6CidrBlockById(ctx context.Context, vpcId stri
68976909
}
68986910
}()
68996911

6900-
ratelimit.Check(request.GetAction())
6912+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
6913+
ratelimit.Check(request.GetAction())
6914+
result, e := me.client.UseVpcClient().UnassignIpv6CidrBlock(request)
6915+
if e != nil {
6916+
return tccommon.RetryError(e)
6917+
} else {
6918+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
6919+
}
6920+
6921+
return nil
6922+
})
69016923

6902-
response, err := me.client.UseVpcClient().UnassignIpv6CidrBlock(request)
69036924
if err != nil {
69046925
errRet = err
69056926
return
69066927
}
6907-
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
69086928

69096929
return
69106930
}

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)