Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/3583.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:new-resource
tencentcloud_private_dns_inbound_endpoint
```
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.853
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.1.14
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1156
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.1038
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.1.42
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.1008
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.744
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1045,6 +1045,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1156 h1:z
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1156/go.mod h1:B1+7f2z0qF8G2EjFzPXtqHK3tPbzqb2y725eW1wIkaM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.1038 h1:4rzyVxkDB27v73jDXPr5eGAwjN859R7SsqniCt+46XE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.1038/go.mod h1:TAHhxxDVV36Pe4P4Gel3dgX4kHUfQO7f27GzRf8DAro=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.1.42 h1:iTpAHqJrenwbFF1kE4DqYeuOMcm50L0YEoVTOQ3n/Ck=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.1.42/go.mod h1:nhF6hHhT7CJZC03MMwL1/QYDI/0q9rAcW/4tf0nhfFc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762 h1:rZDKucVVtTnmnbZFDyh6t47dHswkb2oSuOxOHTTkygA=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762/go.mod h1:QB/XcdVZ8mhRgk90XuXd+2Smfo8emTo0wHIUsygEaKs=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.1008 h1:Mo0njOK81dsBe6FBOieaGeHAVpo/PsYzDTeHovc57bA=
Expand Down
1 change: 1 addition & 0 deletions tencentcloud/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -1895,6 +1895,7 @@ func Provider() *schema.Provider {
"tencentcloud_private_dns_forward_rule": privatedns.ResourceTencentCloudPrivateDnsForwardRule(),
"tencentcloud_private_dns_end_point": privatedns.ResourceTencentCloudPrivateDnsEndPoint(),
"tencentcloud_private_dns_extend_end_point": privatedns.ResourceTencentCloudPrivateDnsExtendEndPoint(),
"tencentcloud_private_dns_inbound_endpoint": privatedns.ResourceTencentCloudPrivateDnsInboundEndpoint(),
"tencentcloud_cls_logset": cls.ResourceTencentCloudClsLogset(),
"tencentcloud_cls_topic": cls.ResourceTencentCloudClsTopic(),
"tencentcloud_cls_config": cls.ResourceTencentCloudClsConfig(),
Expand Down
1 change: 1 addition & 0 deletions tencentcloud/provider.md
Original file line number Diff line number Diff line change
Expand Up @@ -1401,6 +1401,7 @@ tencentcloud_subscribe_private_zone_service
tencentcloud_private_dns_forward_rule
tencentcloud_private_dns_end_point
tencentcloud_private_dns_extend_end_point
tencentcloud_private_dns_inbound_endpoint

Data Source
tencentcloud_private_dns_records
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (

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

tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
Expand Down Expand Up @@ -117,10 +117,10 @@ func dataSourceTencentCloudPrivateDnsEndPointsRead(d *schema.ResourceData, meta
paramMap := make(map[string]interface{})
if v, ok := d.GetOk("filters"); ok {
filtersSet := v.([]interface{})
tmpSet := make([]*privatednsv20201028.Filter, 0, len(filtersSet))
tmpSet := make([]*privatednsIntlv20201028.Filter, 0, len(filtersSet))
for _, item := range filtersSet {
filtersMap := item.(map[string]interface{})
filter := privatednsv20201028.Filter{}
filter := privatednsIntlv20201028.Filter{}
if v, ok := filtersMap["name"]; ok {
filter.Name = helper.String(v.(string))
}
Expand All @@ -139,7 +139,7 @@ func dataSourceTencentCloudPrivateDnsEndPointsRead(d *schema.ResourceData, meta
paramMap["Filters"] = tmpSet
}

var respData []*privatednsv20201028.EndPointInfo
var respData []*privatednsIntlv20201028.EndPointInfo
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
result, e := service.DescribePrivateDnsEndPointsByFilter(ctx, paramMap)
if e != nil {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,257 @@
package privatedns

import (
"context"
"fmt"
"log"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
privatednsv20201028 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028"

tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
)

func ResourceTencentCloudPrivateDnsInboundEndpoint() *schema.Resource {
return &schema.Resource{
Create: resourceTencentCloudPrivateDnsInboundEndpointCreate,
Read: resourceTencentCloudPrivateDnsInboundEndpointRead,
Update: resourceTencentCloudPrivateDnsInboundEndpointUpdate,
Delete: resourceTencentCloudPrivateDnsInboundEndpointDelete,
Schema: map[string]*schema.Schema{
"endpoint_name": {
Type: schema.TypeString,
Required: true,
Description: "Name.",
},

"endpoint_region": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Region.",
},

"endpoint_vpc": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "VPC ID.",
},

"subnet_ip": {
Type: schema.TypeList,
Required: true,
ForceNew: true,
Description: "Subnet information.",
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"subnet_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Subnet ID.",
},
"subnet_vip": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
Computed: true,
Description: "IP address.",
},
},
},
},
},
}
}

func resourceTencentCloudPrivateDnsInboundEndpointCreate(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("resource.tencentcloud_private_dns_inbound_endpoint.create")()
defer tccommon.InconsistentCheck(d, meta)()

var (
logId = tccommon.GetLogId(tccommon.ContextNil)
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
request = privatednsv20201028.NewCreateInboundEndpointRequest()
response = privatednsv20201028.NewCreateInboundEndpointResponse()
endpointId string
)

if v, ok := d.GetOk("endpoint_name"); ok {
request.EndpointName = helper.String(v.(string))
}

if v, ok := d.GetOk("endpoint_region"); ok {
request.EndpointRegion = helper.String(v.(string))
}

if v, ok := d.GetOk("endpoint_vpc"); ok {
request.EndpointVpc = helper.String(v.(string))
}

if v, ok := d.GetOk("subnet_ip"); ok {
for _, item := range v.([]interface{}) {
subnetIpMap := item.(map[string]interface{})
subnetIpInfo := privatednsv20201028.SubnetIpInfo{}
if v, ok := subnetIpMap["subnet_id"].(string); ok && v != "" {
subnetIpInfo.SubnetId = helper.String(v)
}

if v, ok := subnetIpMap["subnet_vip"].(string); ok && v != "" {
subnetIpInfo.SubnetVip = helper.String(v)
}

request.SubnetIp = append(request.SubnetIp, &subnetIpInfo)
}
}

reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivatednsV20201028Client().CreateInboundEndpointWithContext(ctx, request)
if e != nil {
return tccommon.RetryError(e)
} else {
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}

if result == nil || result.Response == nil {
return resource.NonRetryableError(fmt.Errorf("Create private dns inbound endpoint failed, Response is nil."))
}

response = result
return nil
})

if reqErr != nil {
log.Printf("[CRITAL]%s create private dns inbound endpoint failed, reason:%+v", logId, reqErr)
return reqErr
}

if response.Response.EndpointId == nil {
return fmt.Errorf("EndpointId is nil.")
}

endpointId = *response.Response.EndpointId
d.SetId(endpointId)
return resourceTencentCloudPrivateDnsInboundEndpointRead(d, meta)
}

func resourceTencentCloudPrivateDnsInboundEndpointRead(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("resource.tencentcloud_private_dns_inbound_endpoint.read")()
defer tccommon.InconsistentCheck(d, meta)()

var (
logId = tccommon.GetLogId(tccommon.ContextNil)
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
service = PrivatednsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
endpointId = d.Id()
)

respData, err := service.DescribePrivateDnsInboundEndpointById(ctx, endpointId)
if err != nil {
return err
}

if respData == nil {
log.Printf("[WARN]%s resource `tencentcloud_private_dns_inbound_endpoint` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
d.SetId("")
return nil
}

if respData.EndPointName != nil {
_ = d.Set("endpoint_name", respData.EndPointName)
}

if respData.UniqVpcId != nil {
_ = d.Set("endpoint_vpc", respData.UniqVpcId)
}

if respData.EndPointService != nil {
tmpList := make([]map[string]interface{}, 0, len(respData.EndPointService))
for _, item := range respData.EndPointService {
dMap := make(map[string]interface{}, 0)
if item.UniqSubnetId != nil {
dMap["subnet_id"] = item.UniqSubnetId
}

if item.EndPointVip != nil {
dMap["subnet_vip"] = item.EndPointVip
}

tmpList = append(tmpList, dMap)
}

_ = d.Set("subnet_ip", tmpList)
}

return nil
}

func resourceTencentCloudPrivateDnsInboundEndpointUpdate(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("resource.tencentcloud_private_dns_inbound_endpoint.update")()
defer tccommon.InconsistentCheck(d, meta)()

var (
logId = tccommon.GetLogId(tccommon.ContextNil)
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
endpointId = d.Id()
)

if d.HasChange("endpoint_name") {
request := privatednsv20201028.NewModifyInboundEndpointRequest()
if v, ok := d.GetOk("endpoint_name"); ok {
request.EndpointName = helper.String(v.(string))
}

request.EndpointId = &endpointId
reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivatednsV20201028Client().ModifyInboundEndpointWithContext(ctx, request)
if e != nil {
return tccommon.RetryError(e)
} else {
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}

return nil
})

if reqErr != nil {
log.Printf("[CRITAL]%s update private dns inbound endpoint failed, reason:%+v", logId, reqErr)
return reqErr
}
}

return resourceTencentCloudPrivateDnsInboundEndpointRead(d, meta)
}

func resourceTencentCloudPrivateDnsInboundEndpointDelete(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("resource.tencentcloud_private_dns_inbound_endpoint.delete")()
defer tccommon.InconsistentCheck(d, meta)()

var (
logId = tccommon.GetLogId(tccommon.ContextNil)
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
request = privatednsv20201028.NewDeleteInboundEndpointRequest()
endpointId = d.Id()
)

request.EndpointId = &endpointId
reqErr := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivatednsV20201028Client().DeleteInboundEndpointWithContext(ctx, request)
if e != nil {
return tccommon.RetryError(e)
} else {
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}

return nil
})

if reqErr != nil {
log.Printf("[CRITAL]%s delete private dns inbound endpoint failed, reason:%+v", logId, reqErr)
return reqErr
}

return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Provides a resource to create a Private Dns inbound endpoint

Example Usage

```hcl
resource "tencentcloud_private_dns_inbound_endpoint" "example" {
endpoint_name = "tf-example"
endpoint_region = "ap-guangzhou"
endpoint_vpc = "vpc-i5yyodl9"
subnet_ip {
subnet_id = "subnet-hhi88a58"
subnet_vip = "10.0.30.2"
}

subnet_ip {
subnet_id = "subnet-5rrirqyc"
subnet_vip = "10.0.0.11"
}

subnet_ip {
subnet_id = "subnet-60ut6n10"
}
}
```
Loading
Loading