Skip to content

Commit c4ac917

Browse files
authored
feat(privateDns): [128236179] add new resource (#3583)
* add * add * add
1 parent e2fd8e0 commit c4ac917

File tree

16 files changed

+1299
-532
lines changed

16 files changed

+1299
-532
lines changed

.changelog/3583.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-resource
2+
tencentcloud_private_dns_inbound_endpoint
3+
```

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ require (
7171
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.853
7272
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.1.14
7373
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1156
74-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.1038
74+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.1.42
7575
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762
7676
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.1008
7777
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.744

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,6 +1045,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1156 h1:z
10451045
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1156/go.mod h1:B1+7f2z0qF8G2EjFzPXtqHK3tPbzqb2y725eW1wIkaM=
10461046
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.1038 h1:4rzyVxkDB27v73jDXPr5eGAwjN859R7SsqniCt+46XE=
10471047
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.1038/go.mod h1:TAHhxxDVV36Pe4P4Gel3dgX4kHUfQO7f27GzRf8DAro=
1048+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.1.42 h1:iTpAHqJrenwbFF1kE4DqYeuOMcm50L0YEoVTOQ3n/Ck=
1049+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.1.42/go.mod h1:nhF6hHhT7CJZC03MMwL1/QYDI/0q9rAcW/4tf0nhfFc=
10481050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762 h1:rZDKucVVtTnmnbZFDyh6t47dHswkb2oSuOxOHTTkygA=
10491051
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762/go.mod h1:QB/XcdVZ8mhRgk90XuXd+2Smfo8emTo0wHIUsygEaKs=
10501052
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.1008 h1:Mo0njOK81dsBe6FBOieaGeHAVpo/PsYzDTeHovc57bA=

tencentcloud/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1895,6 +1895,7 @@ func Provider() *schema.Provider {
18951895
"tencentcloud_private_dns_forward_rule": privatedns.ResourceTencentCloudPrivateDnsForwardRule(),
18961896
"tencentcloud_private_dns_end_point": privatedns.ResourceTencentCloudPrivateDnsEndPoint(),
18971897
"tencentcloud_private_dns_extend_end_point": privatedns.ResourceTencentCloudPrivateDnsExtendEndPoint(),
1898+
"tencentcloud_private_dns_inbound_endpoint": privatedns.ResourceTencentCloudPrivateDnsInboundEndpoint(),
18981899
"tencentcloud_cls_logset": cls.ResourceTencentCloudClsLogset(),
18991900
"tencentcloud_cls_topic": cls.ResourceTencentCloudClsTopic(),
19001901
"tencentcloud_cls_config": cls.ResourceTencentCloudClsConfig(),

tencentcloud/provider.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1401,6 +1401,7 @@ tencentcloud_subscribe_private_zone_service
14011401
tencentcloud_private_dns_forward_rule
14021402
tencentcloud_private_dns_end_point
14031403
tencentcloud_private_dns_extend_end_point
1404+
tencentcloud_private_dns_inbound_endpoint
14041405

14051406
Data Source
14061407
tencentcloud_private_dns_records

tencentcloud/services/privatedns/data_source_tc_private_dns_end_points.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55

66
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
77
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8-
privatednsv20201028 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028"
8+
privatednsIntlv20201028 "github.com/tencentcloud/tencentcloud-sdk-go-intl-en/tencentcloud/privatedns/v20201028"
99

1010
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
1111
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
@@ -117,10 +117,10 @@ func dataSourceTencentCloudPrivateDnsEndPointsRead(d *schema.ResourceData, meta
117117
paramMap := make(map[string]interface{})
118118
if v, ok := d.GetOk("filters"); ok {
119119
filtersSet := v.([]interface{})
120-
tmpSet := make([]*privatednsv20201028.Filter, 0, len(filtersSet))
120+
tmpSet := make([]*privatednsIntlv20201028.Filter, 0, len(filtersSet))
121121
for _, item := range filtersSet {
122122
filtersMap := item.(map[string]interface{})
123-
filter := privatednsv20201028.Filter{}
123+
filter := privatednsIntlv20201028.Filter{}
124124
if v, ok := filtersMap["name"]; ok {
125125
filter.Name = helper.String(v.(string))
126126
}
@@ -139,7 +139,7 @@ func dataSourceTencentCloudPrivateDnsEndPointsRead(d *schema.ResourceData, meta
139139
paramMap["Filters"] = tmpSet
140140
}
141141

142-
var respData []*privatednsv20201028.EndPointInfo
142+
var respData []*privatednsIntlv20201028.EndPointInfo
143143
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
144144
result, e := service.DescribePrivateDnsEndPointsByFilter(ctx, paramMap)
145145
if e != nil {
Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
package privatedns
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"log"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
privatednsv20201028 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028"
11+
12+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
13+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
14+
)
15+
16+
func ResourceTencentCloudPrivateDnsInboundEndpoint() *schema.Resource {
17+
return &schema.Resource{
18+
Create: resourceTencentCloudPrivateDnsInboundEndpointCreate,
19+
Read: resourceTencentCloudPrivateDnsInboundEndpointRead,
20+
Update: resourceTencentCloudPrivateDnsInboundEndpointUpdate,
21+
Delete: resourceTencentCloudPrivateDnsInboundEndpointDelete,
22+
Schema: map[string]*schema.Schema{
23+
"endpoint_name": {
24+
Type: schema.TypeString,
25+
Required: true,
26+
Description: "Name.",
27+
},
28+
29+
"endpoint_region": {
30+
Type: schema.TypeString,
31+
Required: true,
32+
ForceNew: true,
33+
Description: "Region.",
34+
},
35+
36+
"endpoint_vpc": {
37+
Type: schema.TypeString,
38+
Required: true,
39+
ForceNew: true,
40+
Description: "VPC ID.",
41+
},
42+
43+
"subnet_ip": {
44+
Type: schema.TypeList,
45+
Required: true,
46+
ForceNew: true,
47+
Description: "Subnet information.",
48+
Elem: &schema.Resource{
49+
Schema: map[string]*schema.Schema{
50+
"subnet_id": {
51+
Type: schema.TypeString,
52+
Required: true,
53+
ForceNew: true,
54+
Description: "Subnet ID.",
55+
},
56+
"subnet_vip": {
57+
Type: schema.TypeString,
58+
Optional: true,
59+
ForceNew: true,
60+
Computed: true,
61+
Description: "IP address.",
62+
},
63+
},
64+
},
65+
},
66+
},
67+
}
68+
}
69+
70+
func resourceTencentCloudPrivateDnsInboundEndpointCreate(d *schema.ResourceData, meta interface{}) error {
71+
defer tccommon.LogElapsed("resource.tencentcloud_private_dns_inbound_endpoint.create")()
72+
defer tccommon.InconsistentCheck(d, meta)()
73+
74+
var (
75+
logId = tccommon.GetLogId(tccommon.ContextNil)
76+
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
77+
request = privatednsv20201028.NewCreateInboundEndpointRequest()
78+
response = privatednsv20201028.NewCreateInboundEndpointResponse()
79+
endpointId string
80+
)
81+
82+
if v, ok := d.GetOk("endpoint_name"); ok {
83+
request.EndpointName = helper.String(v.(string))
84+
}
85+
86+
if v, ok := d.GetOk("endpoint_region"); ok {
87+
request.EndpointRegion = helper.String(v.(string))
88+
}
89+
90+
if v, ok := d.GetOk("endpoint_vpc"); ok {
91+
request.EndpointVpc = helper.String(v.(string))
92+
}
93+
94+
if v, ok := d.GetOk("subnet_ip"); ok {
95+
for _, item := range v.([]interface{}) {
96+
subnetIpMap := item.(map[string]interface{})
97+
subnetIpInfo := privatednsv20201028.SubnetIpInfo{}
98+
if v, ok := subnetIpMap["subnet_id"].(string); ok && v != "" {
99+
subnetIpInfo.SubnetId = helper.String(v)
100+
}
101+
102+
if v, ok := subnetIpMap["subnet_vip"].(string); ok && v != "" {
103+
subnetIpInfo.SubnetVip = helper.String(v)
104+
}
105+
106+
request.SubnetIp = append(request.SubnetIp, &subnetIpInfo)
107+
}
108+
}
109+
110+
reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
111+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivatednsV20201028Client().CreateInboundEndpointWithContext(ctx, request)
112+
if e != nil {
113+
return tccommon.RetryError(e)
114+
} else {
115+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
116+
}
117+
118+
if result == nil || result.Response == nil {
119+
return resource.NonRetryableError(fmt.Errorf("Create private dns inbound endpoint failed, Response is nil."))
120+
}
121+
122+
response = result
123+
return nil
124+
})
125+
126+
if reqErr != nil {
127+
log.Printf("[CRITAL]%s create private dns inbound endpoint failed, reason:%+v", logId, reqErr)
128+
return reqErr
129+
}
130+
131+
if response.Response.EndpointId == nil {
132+
return fmt.Errorf("EndpointId is nil.")
133+
}
134+
135+
endpointId = *response.Response.EndpointId
136+
d.SetId(endpointId)
137+
return resourceTencentCloudPrivateDnsInboundEndpointRead(d, meta)
138+
}
139+
140+
func resourceTencentCloudPrivateDnsInboundEndpointRead(d *schema.ResourceData, meta interface{}) error {
141+
defer tccommon.LogElapsed("resource.tencentcloud_private_dns_inbound_endpoint.read")()
142+
defer tccommon.InconsistentCheck(d, meta)()
143+
144+
var (
145+
logId = tccommon.GetLogId(tccommon.ContextNil)
146+
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
147+
service = PrivatednsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
148+
endpointId = d.Id()
149+
)
150+
151+
respData, err := service.DescribePrivateDnsInboundEndpointById(ctx, endpointId)
152+
if err != nil {
153+
return err
154+
}
155+
156+
if respData == nil {
157+
log.Printf("[WARN]%s resource `tencentcloud_private_dns_inbound_endpoint` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
158+
d.SetId("")
159+
return nil
160+
}
161+
162+
if respData.EndPointName != nil {
163+
_ = d.Set("endpoint_name", respData.EndPointName)
164+
}
165+
166+
if respData.UniqVpcId != nil {
167+
_ = d.Set("endpoint_vpc", respData.UniqVpcId)
168+
}
169+
170+
if respData.EndPointService != nil {
171+
tmpList := make([]map[string]interface{}, 0, len(respData.EndPointService))
172+
for _, item := range respData.EndPointService {
173+
dMap := make(map[string]interface{}, 0)
174+
if item.UniqSubnetId != nil {
175+
dMap["subnet_id"] = item.UniqSubnetId
176+
}
177+
178+
if item.EndPointVip != nil {
179+
dMap["subnet_vip"] = item.EndPointVip
180+
}
181+
182+
tmpList = append(tmpList, dMap)
183+
}
184+
185+
_ = d.Set("subnet_ip", tmpList)
186+
}
187+
188+
return nil
189+
}
190+
191+
func resourceTencentCloudPrivateDnsInboundEndpointUpdate(d *schema.ResourceData, meta interface{}) error {
192+
defer tccommon.LogElapsed("resource.tencentcloud_private_dns_inbound_endpoint.update")()
193+
defer tccommon.InconsistentCheck(d, meta)()
194+
195+
var (
196+
logId = tccommon.GetLogId(tccommon.ContextNil)
197+
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
198+
endpointId = d.Id()
199+
)
200+
201+
if d.HasChange("endpoint_name") {
202+
request := privatednsv20201028.NewModifyInboundEndpointRequest()
203+
if v, ok := d.GetOk("endpoint_name"); ok {
204+
request.EndpointName = helper.String(v.(string))
205+
}
206+
207+
request.EndpointId = &endpointId
208+
reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
209+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivatednsV20201028Client().ModifyInboundEndpointWithContext(ctx, request)
210+
if e != nil {
211+
return tccommon.RetryError(e)
212+
} else {
213+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
214+
}
215+
216+
return nil
217+
})
218+
219+
if reqErr != nil {
220+
log.Printf("[CRITAL]%s update private dns inbound endpoint failed, reason:%+v", logId, reqErr)
221+
return reqErr
222+
}
223+
}
224+
225+
return resourceTencentCloudPrivateDnsInboundEndpointRead(d, meta)
226+
}
227+
228+
func resourceTencentCloudPrivateDnsInboundEndpointDelete(d *schema.ResourceData, meta interface{}) error {
229+
defer tccommon.LogElapsed("resource.tencentcloud_private_dns_inbound_endpoint.delete")()
230+
defer tccommon.InconsistentCheck(d, meta)()
231+
232+
var (
233+
logId = tccommon.GetLogId(tccommon.ContextNil)
234+
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
235+
request = privatednsv20201028.NewDeleteInboundEndpointRequest()
236+
endpointId = d.Id()
237+
)
238+
239+
request.EndpointId = &endpointId
240+
reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
241+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivatednsV20201028Client().DeleteInboundEndpointWithContext(ctx, request)
242+
if e != nil {
243+
return tccommon.RetryError(e)
244+
} else {
245+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
246+
}
247+
248+
return nil
249+
})
250+
251+
if reqErr != nil {
252+
log.Printf("[CRITAL]%s delete private dns inbound endpoint failed, reason:%+v", logId, reqErr)
253+
return reqErr
254+
}
255+
256+
return nil
257+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Provides a resource to create a Private Dns inbound endpoint
2+
3+
Example Usage
4+
5+
```hcl
6+
resource "tencentcloud_private_dns_inbound_endpoint" "example" {
7+
endpoint_name = "tf-example"
8+
endpoint_region = "ap-guangzhou"
9+
endpoint_vpc = "vpc-i5yyodl9"
10+
subnet_ip {
11+
subnet_id = "subnet-hhi88a58"
12+
subnet_vip = "10.0.30.2"
13+
}
14+
15+
subnet_ip {
16+
subnet_id = "subnet-5rrirqyc"
17+
subnet_vip = "10.0.0.11"
18+
}
19+
20+
subnet_ip {
21+
subnet_id = "subnet-60ut6n10"
22+
}
23+
}
24+
```

0 commit comments

Comments
 (0)