diff --git a/.changelog/2929.txt b/.changelog/2929.txt new file mode 100644 index 0000000000..e7bbf6a09f --- /dev/null +++ b/.changelog/2929.txt @@ -0,0 +1,3 @@ +```release-note:new-resource +tencentcloud_subscribe_private_zone_service +``` \ No newline at end of file diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index 8c6a7436be..3edf36e6c7 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -1683,6 +1683,7 @@ func Provider() *schema.Provider { "tencentcloud_private_dns_zone": privatedns.ResourceTencentCloudPrivateDnsZone(), "tencentcloud_private_dns_record": privatedns.ResourceTencentCloudPrivateDnsRecord(), "tencentcloud_private_dns_zone_vpc_attachment": privatedns.ResourceTencentCloudPrivateDnsZoneVpcAttachment(), + "tencentcloud_subscribe_private_zone_service": privatedns.ResourceTencentCloudSubscribePrivateZoneService(), "tencentcloud_cls_logset": cls.ResourceTencentCloudClsLogset(), "tencentcloud_cls_topic": cls.ResourceTencentCloudClsTopic(), "tencentcloud_cls_config": cls.ResourceTencentCloudClsConfig(), diff --git a/tencentcloud/provider.md b/tencentcloud/provider.md index f0fd62eedc..0cd93894c7 100644 --- a/tencentcloud/provider.md +++ b/tencentcloud/provider.md @@ -1348,6 +1348,7 @@ PrivateDNS tencentcloud_private_dns_zone tencentcloud_private_dns_record tencentcloud_private_dns_zone_vpc_attachment + tencentcloud_subscribe_private_zone_service Data Source tencentcloud_private_dns_records tencentcloud_private_dns_private_zone_list diff --git a/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service.go b/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service.go new file mode 100644 index 0000000000..49d5051f0b --- /dev/null +++ b/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service.go @@ -0,0 +1,84 @@ +package privatedns + +import ( + "context" + "fmt" + "log" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028" + + tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common" +) + +func ResourceTencentCloudSubscribePrivateZoneService() *schema.Resource { + return &schema.Resource{ + Create: resourceTencentCloudSubscribePrivateZoneServiceCreate, + Read: resourceTencentCloudSubscribePrivateZoneServiceRead, + Delete: resourceTencentCloudSubscribePrivateZoneServiceDelete, + Schema: map[string]*schema.Schema{ + "service_status": { + Type: schema.TypeString, + Computed: true, + Description: "Private domain resolution service activation status.", + }, + }, + } +} + +func resourceTencentCloudSubscribePrivateZoneServiceCreate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_subscribe_private_zone_service.create")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + request = privatedns.NewSubscribePrivateZoneServiceRequest() + response = privatedns.NewSubscribePrivateZoneServiceResponse() + ) + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivateDnsClient().SubscribePrivateZoneServiceWithContext(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 { + e = fmt.Errorf("create subscribe private zone service failed.") + return resource.NonRetryableError(e) + } + + response = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create subscribe private zone service failed, reason:%+v", logId, err) + return err + } + + if response.Response.ServiceStatus != nil { + _ = d.Set("service_status", response.Response.ServiceStatus) + } + + d.SetId(*response.Response.RequestId) + + return resourceTencentCloudSubscribePrivateZoneServiceRead(d, meta) +} + +func resourceTencentCloudSubscribePrivateZoneServiceRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_subscribe_private_zone_service.read")() + defer tccommon.InconsistentCheck(d, meta)() + + return nil +} + +func resourceTencentCloudSubscribePrivateZoneServiceDelete(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_subscribe_private_zone_service.delete")() + defer tccommon.InconsistentCheck(d, meta)() + + return nil +} diff --git a/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service.md b/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service.md new file mode 100644 index 0000000000..6e89605140 --- /dev/null +++ b/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service.md @@ -0,0 +1,7 @@ +Provides a resource to create a privatedns subscribe private zone service + +Example Usage + +```hcl +resource "tencentcloud_subscribe_private_zone_service" "example" {} +``` diff --git a/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service_test.go b/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service_test.go new file mode 100644 index 0000000000..80e8f49b7f --- /dev/null +++ b/tencentcloud/services/privatedns/resource_tc_subscribe_private_zone_service_test.go @@ -0,0 +1,29 @@ +package privatedns_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +func TestAccTencentCloudSubscribePrivateZoneServiceResource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{{ + Config: testAccSubscribePrivateZoneService, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_subscribe_private_zone_service.example", "id"), + ), + }}, + }) +} + +const testAccSubscribePrivateZoneService = ` +resource "tencentcloud_subscribe_private_zone_service" "example" {} +` diff --git a/website/docs/r/subscribe_private_zone_service.html.markdown b/website/docs/r/subscribe_private_zone_service.html.markdown new file mode 100644 index 0000000000..3b3520dd94 --- /dev/null +++ b/website/docs/r/subscribe_private_zone_service.html.markdown @@ -0,0 +1,33 @@ +--- +subcategory: "PrivateDNS" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_subscribe_private_zone_service" +sidebar_current: "docs-tencentcloud-resource-subscribe_private_zone_service" +description: |- + Provides a resource to create a privatedns subscribe private zone service +--- + +# tencentcloud_subscribe_private_zone_service + +Provides a resource to create a privatedns subscribe private zone service + +## Example Usage + +```hcl +resource "tencentcloud_subscribe_private_zone_service" "example" {} +``` + +## Argument Reference + +The following arguments are supported: + + + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. +* `service_status` - Private domain resolution service activation status. + + diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb index ccb7f33745..11fe408d81 100644 --- a/website/tencentcloud.erb +++ b/website/tencentcloud.erb @@ -3185,6 +3185,9 @@