diff --git a/.changelog/2965.txt b/.changelog/2965.txt new file mode 100644 index 0000000000..072f61199e --- /dev/null +++ b/.changelog/2965.txt @@ -0,0 +1,7 @@ +```release-note:new-resource +tencentcloud_private_dns_account +``` + +```release-note:new-datasource +tencentcloud_private_dns_accounts +``` \ No newline at end of file diff --git a/tencentcloud/provider.go b/tencentcloud/provider.go index eaa04bdb48..098e57117e 100644 --- a/tencentcloud/provider.go +++ b/tencentcloud/provider.go @@ -1064,6 +1064,7 @@ func Provider() *schema.Provider { "tencentcloud_private_dns_private_zone_list": privatedns.DataSourceTencentCloudPrivateDnsPrivateZoneList(), "tencentcloud_private_dns_forward_rules": privatedns.DataSourceTencentCloudPrivateDnsForwardRules(), "tencentcloud_private_dns_end_points": privatedns.DataSourceTencentCloudPrivateDnsEndPoints(), + "tencentcloud_private_dns_accounts": privatedns.DataSourceTencentCloudPrivateDnsAccounts(), "tencentcloud_waf_ciphers": waf.DataSourceTencentCloudWafCiphers(), "tencentcloud_waf_tls_versions": waf.DataSourceTencentCloudWafTlsVersions(), "tencentcloud_waf_domains": waf.DataSourceTencentCloudWafDomains(), @@ -1688,6 +1689,7 @@ func Provider() *schema.Provider { "tencentcloud_subscribe_private_zone_service": privatedns.ResourceTencentCloudSubscribePrivateZoneService(), "tencentcloud_private_dns_forward_rule": privatedns.ResourceTencentCloudPrivateDnsForwardRule(), "tencentcloud_private_dns_end_point": privatedns.ResourceTencentCloudPrivateDnsEndPoint(), + "tencentcloud_private_dns_account": privatedns.ResourceTencentCloudPrivateDnsAccount(), "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 f4330e30b0..1ba0578680 100644 --- a/tencentcloud/provider.md +++ b/tencentcloud/provider.md @@ -1353,11 +1353,13 @@ PrivateDNS tencentcloud_subscribe_private_zone_service tencentcloud_private_dns_forward_rule tencentcloud_private_dns_end_point + tencentcloud_private_dns_account Data Source tencentcloud_private_dns_records tencentcloud_private_dns_private_zone_list tencentcloud_private_dns_forward_rules tencentcloud_private_dns_end_points + tencentcloud_private_dns_accounts Cloud Log Service(CLS) Resource diff --git a/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts.go b/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts.go new file mode 100644 index 0000000000..420ba77ec1 --- /dev/null +++ b/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts.go @@ -0,0 +1,157 @@ +// Code generated by iacg; DO NOT EDIT. +package privatedns + +import ( + "context" + + "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 DataSourceTencentCloudPrivateDnsAccounts() *schema.Resource { + return &schema.Resource{ + Read: dataSourceTencentCloudPrivateDnsAccountsRead, + Schema: map[string]*schema.Schema{ + "filters": { + Type: schema.TypeList, + Optional: true, + Description: "Filter parameters.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "name": { + Type: schema.TypeString, + Required: true, + Description: "Parameter name.", + }, + "values": { + Type: schema.TypeSet, + Required: true, + Description: "Array of parameter values.", + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + }, + }, + }, + + "account_set": { + Type: schema.TypeList, + Computed: true, + Description: "List of Private DNS accounts.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "uin": { + Type: schema.TypeString, + Required: true, + Description: "Root account UIN.", + }, + "account": { + Type: schema.TypeString, + Optional: true, + Description: "Root account name.", + }, + "nickname": { + Type: schema.TypeString, + Optional: true, + Description: "Account name.", + }, + }, + }, + }, + + "result_output_file": { + Type: schema.TypeString, + Optional: true, + Description: "Used to save results.", + }, + }, + } +} + +func dataSourceTencentCloudPrivateDnsAccountsRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("data_source.tencentcloud_private_dns_accounts.read")() + defer tccommon.InconsistentCheck(d, meta)() + + logId := tccommon.GetLogId(nil) + ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + + service := PrivatednsService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()} + + paramMap := make(map[string]interface{}) + if v, ok := d.GetOk("filters"); ok { + filtersSet := v.([]interface{}) + tmpSet := make([]*privatednsv20201028.Filter, 0, len(filtersSet)) + for _, item := range filtersSet { + filtersMap := item.(map[string]interface{}) + filter := privatednsv20201028.Filter{} + if v, ok := filtersMap["name"]; ok { + filter.Name = helper.String(v.(string)) + } + if v, ok := filtersMap["values"]; ok { + valuesSet := v.(*schema.Set).List() + for i := range valuesSet { + values := valuesSet[i].(string) + filter.Values = append(filter.Values, helper.String(values)) + } + } + tmpSet = append(tmpSet, &filter) + } + paramMap["Filters"] = tmpSet + } + + var respData []*privatednsv20201028.PrivateDNSAccount + err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError { + result, e := service.DescribePrivateDnsAccountsByFilter(ctx, paramMap) + if e != nil { + return tccommon.RetryError(e) + } + respData = result + return nil + }) + if err != nil { + return err + } + + var ids []string + accountSetList := make([]map[string]interface{}, 0, len(respData)) + if respData != nil { + for _, accountSet := range respData { + accountSetMap := map[string]interface{}{} + + var uin string + if accountSet.Uin != nil { + accountSetMap["uin"] = accountSet.Uin + uin = *accountSet.Uin + } + + if accountSet.Account != nil { + accountSetMap["account"] = accountSet.Account + } + + if accountSet.Nickname != nil { + accountSetMap["nickname"] = accountSet.Nickname + } + + ids = append(ids, uin) + accountSetList = append(accountSetList, accountSetMap) + } + + _ = d.Set("account_set", accountSetList) + } + + d.SetId(helper.DataResourceIdsHash(ids)) + + output, ok := d.GetOk("result_output_file") + if ok && output.(string) != "" { + if e := tccommon.WriteToFile(output.(string), accountSetList); e != nil { + return e + } + } + + return nil +} diff --git a/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts.md b/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts.md new file mode 100644 index 0000000000..902543c09b --- /dev/null +++ b/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts.md @@ -0,0 +1,20 @@ +Use this data source to query detailed information of privatedns accounts + +Example Usage + +Query all accounts + +```hcl +data "tencentcloud_private_dns_accounts" "example" {} +``` + +Query accounts by filters + +```hcl +data "tencentcloud_private_dns_accounts" "example" { + filters { + name = "AccountUin" + values = ["100022770160"] + } +} +``` \ No newline at end of file diff --git a/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts_extension.go b/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts_extension.go new file mode 100644 index 0000000000..963429795a --- /dev/null +++ b/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts_extension.go @@ -0,0 +1 @@ +package privatedns diff --git a/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts_test.go b/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts_test.go new file mode 100644 index 0000000000..271221db7a --- /dev/null +++ b/tencentcloud/services/privatedns/data_source_tc_private_dns_accounts_test.go @@ -0,0 +1,30 @@ +package privatedns_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +// go test -i; go test -test.run TestAccTencentCloudPrivateDnsAccountsDataSource_basic -v +func TestAccTencentCloudPrivateDnsAccountsDataSource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{{ + Config: testAccPrivateDnsAccountsDataSource, + Check: resource.ComposeTestCheckFunc( + tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_private_dns_accounts.example"), + ), + }}, + }) +} + +const testAccPrivateDnsAccountsDataSource = ` +data "tencentcloud_private_dns_accounts" "example" {} +` diff --git a/tencentcloud/services/privatedns/data_source_tc_private_dns_end_points.go b/tencentcloud/services/privatedns/data_source_tc_private_dns_end_points.go index 428c83baca..89efa79f47 100644 --- a/tencentcloud/services/privatedns/data_source_tc_private_dns_end_points.go +++ b/tencentcloud/services/privatedns/data_source_tc_private_dns_end_points.go @@ -155,8 +155,10 @@ func dataSourceTencentCloudPrivateDnsEndPointsRead(d *schema.ResourceData, meta for _, endPointSet := range respData { endPointSetMap := map[string]interface{}{} + var endPointId string if endPointSet.EndPointId != nil { endPointSetMap["end_point_id"] = endPointSet.EndPointId + endPointId = *endPointSet.EndPointId } if endPointSet.EndPointName != nil { @@ -193,6 +195,7 @@ func dataSourceTencentCloudPrivateDnsEndPointsRead(d *schema.ResourceData, meta endPointSetMap["tags"] = tagsList } + ids = append(ids, endPointId) endPointSetList = append(endPointSetList, endPointSetMap) } diff --git a/tencentcloud/services/privatedns/data_source_tc_private_dns_forward_rules.go b/tencentcloud/services/privatedns/data_source_tc_private_dns_forward_rules.go index 299fb7d7a5..f0061c8d4d 100644 --- a/tencentcloud/services/privatedns/data_source_tc_private_dns_forward_rules.go +++ b/tencentcloud/services/privatedns/data_source_tc_private_dns_forward_rules.go @@ -210,6 +210,7 @@ func dataSourceTencentCloudPrivateDnsForwardRulesRead(d *schema.ResourceData, me if forwardRuleSet.RuleId != nil { forwardRuleSetMap["rule_id"] = forwardRuleSet.RuleId + ruleId = *forwardRuleSet.RuleId } if forwardRuleSet.RuleType != nil { diff --git a/tencentcloud/services/privatedns/resource_tc_private_dns_account.go b/tencentcloud/services/privatedns/resource_tc_private_dns_account.go new file mode 100644 index 0000000000..61e0e0c6fc --- /dev/null +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_account.go @@ -0,0 +1,185 @@ +package privatedns + +import ( + "context" + "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 ResourceTencentCloudPrivateDnsAccount() *schema.Resource { + return &schema.Resource{ + Create: resourceTencentCloudPrivateDnsAccountCreate, + Read: resourceTencentCloudPrivateDnsAccountRead, + Delete: resourceTencentCloudPrivateDnsAccountDelete, + Importer: &schema.ResourceImporter{ + State: schema.ImportStatePassthrough, + }, + Schema: map[string]*schema.Schema{ + "account": { + Type: schema.TypeList, + Required: true, + ForceNew: true, + MaxItems: 1, + Description: "Private DNS account.", + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "uin": { + Type: schema.TypeString, + Required: true, + ForceNew: true, + Description: "Root account UIN.", + }, + "account": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Computed: true, + Description: "Root account name.", + }, + "nickname": { + Type: schema.TypeString, + Optional: true, + ForceNew: true, + Computed: true, + Description: "Account name.", + }, + }, + }, + }, + }, + } +} + +func resourceTencentCloudPrivateDnsAccountCreate(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_account.create")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + request = privatednsv20201028.NewCreatePrivateDNSAccountRequest() + uin string + ) + + if accountMap, ok := helper.InterfacesHeadMap(d, "account"); ok { + privateDNSAccount := privatednsv20201028.PrivateDNSAccount{} + if v, ok := accountMap["uin"]; ok { + privateDNSAccount.Uin = helper.String(v.(string)) + uin = v.(string) + } + + if v, ok := accountMap["account"]; ok { + privateDNSAccount.Account = helper.String(v.(string)) + } + + if v, ok := accountMap["nickname"]; ok { + privateDNSAccount.Nickname = helper.String(v.(string)) + } + + request.Account = &privateDNSAccount + } + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivatednsV20201028Client().CreatePrivateDNSAccountWithContext(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()) + } + + _ = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s create private dns account failed, reason:%+v", logId, err) + return err + } + + d.SetId(uin) + + return resourceTencentCloudPrivateDnsAccountRead(d, meta) +} + +func resourceTencentCloudPrivateDnsAccountRead(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_account.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()} + uin = d.Id() + ) + + respData, err := service.DescribePrivateDnsAccountById(ctx, uin) + if err != nil { + return err + } + + if respData == nil { + d.SetId("") + log.Printf("[WARN]%s resource `private_dns_account` [%s] not found, please check if it has been deleted.\n", logId, d.Id()) + return nil + } + + tmpList := make([]map[string]interface{}, 0) + tmpMap := map[string]interface{}{} + if respData.Uin != nil { + tmpMap["uin"] = respData.Uin + } + + if respData.Account != nil { + tmpMap["account"] = respData.Account + } + + if respData.Nickname != nil { + tmpMap["nickname"] = respData.Nickname + } + + tmpList = append(tmpList, tmpMap) + _ = d.Set("account", tmpList) + + return nil +} + +func resourceTencentCloudPrivateDnsAccountDelete(d *schema.ResourceData, meta interface{}) error { + defer tccommon.LogElapsed("resource.tencentcloud_private_dns_account.delete")() + defer tccommon.InconsistentCheck(d, meta)() + + var ( + logId = tccommon.GetLogId(tccommon.ContextNil) + ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta) + request = privatednsv20201028.NewDeletePrivateDNSAccountRequest() + uin = d.Id() + ) + + privateDNSAccount := privatednsv20201028.PrivateDNSAccount{} + privateDNSAccount.Uin = helper.String(uin) + request.Account = &privateDNSAccount + + err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError { + result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UsePrivatednsV20201028Client().DeletePrivateDNSAccountWithContext(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()) + } + + _ = result + return nil + }) + + if err != nil { + log.Printf("[CRITAL]%s delete private dns account failed, reason:%+v", logId, err) + return err + } + + return nil +} diff --git a/tencentcloud/services/privatedns/resource_tc_private_dns_account.md b/tencentcloud/services/privatedns/resource_tc_private_dns_account.md new file mode 100644 index 0000000000..e843325072 --- /dev/null +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_account.md @@ -0,0 +1,31 @@ +Provides a resource to create a privatedns account + +Example Usage + +```hcl +resource "tencentcloud_private_dns_account" "example" { + account { + uin = "100022770160" + } +} +``` + +Or + +```hcl +resource "tencentcloud_private_dns_account" "example" { + account { + uin = "100022770160" + account = "example@tencent.com" + nickname = "tf-example" + } +} +``` + +Import + +privatedns account can be imported using the id, e.g. + +``` +terraform import tencentcloud_private_dns_account.example 100022770160 +``` diff --git a/tencentcloud/services/privatedns/resource_tc_private_dns_account_test.go b/tencentcloud/services/privatedns/resource_tc_private_dns_account_test.go new file mode 100644 index 0000000000..10c046cc9d --- /dev/null +++ b/tencentcloud/services/privatedns/resource_tc_private_dns_account_test.go @@ -0,0 +1,41 @@ +package privatedns_test + +import ( + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" + + tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest" +) + +// go test -i; go test -test.run TestAccTencentCloudNeedFixPrivateDnsAccountResource_basic -v +func TestAccTencentCloudNeedFixPrivateDnsAccountResource_basic(t *testing.T) { + t.Parallel() + resource.Test(t, resource.TestCase{ + PreCheck: func() { + tcacctest.AccPreCheck(t) + }, + Providers: tcacctest.AccProviders, + Steps: []resource.TestStep{ + { + Config: testAccPrivateDnsAccount, + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet("tencentcloud_private_dns_account.example", "id"), + ), + }, + { + ResourceName: "tencentcloud_private_dns_account.example", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + +const testAccPrivateDnsAccount = ` +resource "tencentcloud_private_dns_account" "example" { + account { + uin = "100022770164" + } +} +` diff --git a/tencentcloud/services/privatedns/service_tencentcloud_private_dns.go b/tencentcloud/services/privatedns/service_tencentcloud_private_dns.go index 577c8841ae..e39ce450e5 100644 --- a/tencentcloud/services/privatedns/service_tencentcloud_private_dns.go +++ b/tencentcloud/services/privatedns/service_tencentcloud_private_dns.go @@ -381,3 +381,89 @@ func (me *PrivatednsService) DescribePrivateDnsEndPointsByFilter(ctx context.Con return } + +func (me *PrivatednsService) DescribePrivateDnsAccountById(ctx context.Context, uin string) (ret *privatedns.PrivateDNSAccount, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = privatedns.NewDescribePrivateDNSAccountListRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + request.Offset = common.Int64Ptr(0) + request.Limit = common.Int64Ptr(20) + request.Filters = []*privatedns.Filter{ + { + Name: common.StringPtr("AccountUin"), + Values: common.StringPtrs([]string{uin}), + }, + } + + ratelimit.Check(request.GetAction()) + response, err := me.client.UsePrivatednsV20201028Client().DescribePrivateDNSAccountList(request) + if err != nil { + errRet = err + return + } + + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if len(response.Response.AccountSet) < 1 { + return + } + + ret = response.Response.AccountSet[0] + return +} + +func (me *PrivatednsService) DescribePrivateDnsAccountsByFilter(ctx context.Context, param map[string]interface{}) (ret []*privatedns.PrivateDNSAccount, errRet error) { + var ( + logId = tccommon.GetLogId(ctx) + request = privatedns.NewDescribePrivateDNSAccountListRequest() + ) + + defer func() { + if errRet != nil { + log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error()) + } + }() + + for k, v := range param { + if k == "Filters" { + request.Filters = v.([]*privatedns.Filter) + } + } + + ratelimit.Check(request.GetAction()) + + var ( + offset int64 = 0 + limit int64 = 100 + ) + for { + request.Offset = &offset + request.Limit = &limit + response, err := me.client.UsePrivatednsV20201028Client().DescribePrivateDNSAccountList(request) + if err != nil { + errRet = err + return + } + log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString()) + + if response == nil || len(response.Response.AccountSet) < 1 { + break + } + ret = append(ret, response.Response.AccountSet...) + if len(response.Response.AccountSet) < int(limit) { + break + } + + offset += limit + } + + return +} diff --git a/website/docs/d/private_dns_accounts.html.markdown b/website/docs/d/private_dns_accounts.html.markdown new file mode 100644 index 0000000000..46918359f8 --- /dev/null +++ b/website/docs/d/private_dns_accounts.html.markdown @@ -0,0 +1,51 @@ +--- +subcategory: "PrivateDNS" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_private_dns_accounts" +sidebar_current: "docs-tencentcloud-datasource-private_dns_accounts" +description: |- + Use this data source to query detailed information of privatedns accounts +--- + +# tencentcloud_private_dns_accounts + +Use this data source to query detailed information of privatedns accounts + +## Example Usage + +### Query all accounts + +```hcl +data "tencentcloud_private_dns_accounts" "example" {} +``` + +### Query accounts by filters + +```hcl +data "tencentcloud_private_dns_accounts" "example" { + filters { + name = "AccountUin" + values = ["100022770160"] + } +} +``` + +## Argument Reference + +The following arguments are supported: + +* `filters` - (Optional, List) Filter parameters. +* `result_output_file` - (Optional, String) Used to save results. + +The `filters` object supports the following: + +* `name` - (Required, String) Parameter name. +* `values` - (Required, Set) Array of parameter values. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `account_set` - List of Private DNS accounts. + + diff --git a/website/docs/r/private_dns_account.html.markdown b/website/docs/r/private_dns_account.html.markdown new file mode 100644 index 0000000000..d83f46d963 --- /dev/null +++ b/website/docs/r/private_dns_account.html.markdown @@ -0,0 +1,63 @@ +--- +subcategory: "PrivateDNS" +layout: "tencentcloud" +page_title: "TencentCloud: tencentcloud_private_dns_account" +sidebar_current: "docs-tencentcloud-resource-private_dns_account" +description: |- + Provides a resource to create a privatedns account +--- + +# tencentcloud_private_dns_account + +Provides a resource to create a privatedns account + +## Example Usage + +```hcl +resource "tencentcloud_private_dns_account" "example" { + account { + uin = "100022770160" + } +} +``` + +### Or + +```hcl +resource "tencentcloud_private_dns_account" "example" { + account { + uin = "100022770160" + account = "example@tencent.com" + nickname = "tf-example" + } +} +``` + +## Argument Reference + +The following arguments are supported: + +* `account` - (Required, List, ForceNew) Private DNS account. + +The `account` object supports the following: + +* `uin` - (Required, String, ForceNew) Root account UIN. +* `account` - (Optional, String, ForceNew) Root account name. +* `nickname` - (Optional, String, ForceNew) Account name. + +## Attributes Reference + +In addition to all arguments above, the following attributes are exported: + +* `id` - ID of the resource. + + + +## Import + +privatedns account can be imported using the id, e.g. + +``` +terraform import tencentcloud_private_dns_account.example 100022770160 +``` + diff --git a/website/tencentcloud.erb b/website/tencentcloud.erb index 6034e9e5e6..f581ab79a9 100644 --- a/website/tencentcloud.erb +++ b/website/tencentcloud.erb @@ -3165,6 +3165,9 @@
  • Data Sources