Skip to content

Commit 888be0a

Browse files
authored
feat: organization add datasource (#2520)
* feat: add datasource * feat: add datasource * feat: add datasource
1 parent cdf1faf commit 888be0a

File tree

13 files changed

+2231
-219
lines changed

13 files changed

+2231
-219
lines changed

.changelog/2520.txt

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

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ require (
6969
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.651
7070
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.844
7171
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.777
72-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.770
72+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.856
7373
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.814
7474
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.815
7575
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1010,6 +1010,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831 h1:oya
10101010
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831/go.mod h1:2WuTlTnKCnZoa6l0JxY9GNfo0UG6nU7AEsljF8rMMsM=
10111011
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.770 h1:Ksu947uY/fafnlILemfMuyKqL/RxHh9dfVowWX8paeQ=
10121012
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.770/go.mod h1:Ew8jug2Kq03q9Kkjzov7IMYgugGLEw3FGYPofuRqzKw=
1013+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.856 h1:W1FLC178fBj5HigbNkAUIBGPPTit20RVycuXQ6u2lSg=
1014+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.856/go.mod h1:Ln9igPci1mCEe4gzekGpMMn/x9im6XlDh2bqvWnUMDo=
10131015
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.814 h1:1XlGrQHRBJv419m64yWRNRWVUTvqBi3Go4ahndnZz9w=
10141016
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.814/go.mod h1:ch9ZDGEWZXIpzOffmFMgCDKX5uL6x2NLJBiSG94WWEE=
10151017
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.815 h1:zuOoiF957eIqonXgMW1qtsMnlYGIrgTSMM+yk+OHuWE=

tencentcloud/provider.go

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,38 +10,10 @@ import (
1010
"strconv"
1111
"strings"
1212

13-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/wedata"
14-
15-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tmp"
16-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tpulsar"
17-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/trabbit"
18-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/trocket"
19-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tse"
20-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tsf"
21-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/vod"
22-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/vpc"
23-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/vpn"
24-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/waf"
25-
26-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tco"
27-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcr"
28-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tdcpg"
29-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tem"
30-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/teo"
31-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tke"
32-
33-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag"
34-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tat"
35-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcaplusdb"
36-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcm"
37-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcmg"
38-
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcmq"
39-
4013
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
4114
"github.com/mitchellh/go-homedir"
4215
sdkcommon "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
4316
sdksts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sts/v20180813"
44-
4517
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
4618
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/connectivity"
4719
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
@@ -113,6 +85,29 @@ import (
11385
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/ssl"
11486
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/ssm"
11587
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/sts"
88+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tag"
89+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tat"
90+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcaplusdb"
91+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcm"
92+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcmg"
93+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcmq"
94+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tco"
95+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tcr"
96+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tdcpg"
97+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tem"
98+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/teo"
99+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tke"
100+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tmp"
101+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tpulsar"
102+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/trabbit"
103+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/trocket"
104+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tse"
105+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/tsf"
106+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/vod"
107+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/vpc"
108+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/vpn"
109+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/waf"
110+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/services/wedata"
116111
)
117112

118113
const (
@@ -982,6 +977,7 @@ func Provider() *schema.Provider {
982977
"tencentcloud_clickhouse_spec": cdwch.DataSourceTencentCloudClickhouseSpec(),
983978
"tencentcloud_clickhouse_instance_shards": cdwch.DataSourceTencentCloudClickhouseInstanceShards(),
984979
"tencentcloud_clickhouse_instance_nodes": cdwch.DataSourceTencentCloudClickhouseInstanceNodes(),
980+
"tencentcloud_organization_org_share_area": tco.DataSourceTencentCloudOrganizationOrgShareArea(),
985981
},
986982

987983
ResourcesMap: map[string]*schema.Resource{

tencentcloud/provider.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1630,6 +1630,7 @@ Tencent Cloud Organization (TCO)
16301630
tencentcloud_organization_org_financial_by_member
16311631
tencentcloud_organization_org_financial_by_month
16321632
tencentcloud_organization_org_financial_by_product
1633+
tencentcloud_organization_org_share_area
16331634
Resource
16341635
tencentcloud_organization_instance
16351636
tencentcloud_organization_org_node
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
package tco
2+
3+
import (
4+
"context"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8+
organization "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization/v20210331"
9+
10+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
11+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
12+
)
13+
14+
func DataSourceTencentCloudOrganizationOrgShareArea() *schema.Resource {
15+
return &schema.Resource{
16+
Read: dataSourceTencentCloudOrganizationOrgShareAreaRead,
17+
Schema: map[string]*schema.Schema{
18+
"lang": {
19+
Optional: true,
20+
Type: schema.TypeString,
21+
Description: "Language.default zh.\nValid values:\n - `zh`: Chinese.\n - `en`: English.",
22+
},
23+
24+
"items": {
25+
Computed: true,
26+
Type: schema.TypeList,
27+
Description: "Area list.",
28+
Elem: &schema.Resource{
29+
Schema: map[string]*schema.Schema{
30+
"name": {
31+
Type: schema.TypeString,
32+
Computed: true,
33+
Description: "Region name.",
34+
},
35+
"area": {
36+
Type: schema.TypeString,
37+
Computed: true,
38+
Description: "Region identifier.",
39+
},
40+
"area_id": {
41+
Type: schema.TypeInt,
42+
Computed: true,
43+
Description: "Region ID.",
44+
},
45+
},
46+
},
47+
},
48+
49+
"result_output_file": {
50+
Type: schema.TypeString,
51+
Optional: true,
52+
Description: "Used to save results.",
53+
},
54+
},
55+
}
56+
}
57+
58+
func dataSourceTencentCloudOrganizationOrgShareAreaRead(d *schema.ResourceData, meta interface{}) error {
59+
defer tccommon.LogElapsed("data_source.tencentcloud_organization_org_share_area.read")()
60+
defer tccommon.InconsistentCheck(d, meta)()
61+
62+
logId := tccommon.GetLogId(tccommon.ContextNil)
63+
64+
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
65+
66+
paramMap := make(map[string]interface{})
67+
if v, ok := d.GetOk("lang"); ok {
68+
paramMap["Lang"] = helper.String(v.(string))
69+
}
70+
71+
service := OrganizationService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
72+
73+
var items []*organization.ShareArea
74+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
75+
result, e := service.DescribeOrganizationOrgShareAreaByFilter(ctx, paramMap)
76+
if e != nil {
77+
return tccommon.RetryError(e)
78+
}
79+
items = result
80+
return nil
81+
})
82+
if err != nil {
83+
return err
84+
}
85+
86+
ids := make([]string, 0, len(items))
87+
tmpList := make([]map[string]interface{}, 0, len(items))
88+
89+
if items != nil {
90+
for _, shareArea := range items {
91+
shareAreaMap := map[string]interface{}{}
92+
93+
if shareArea.Name != nil {
94+
shareAreaMap["name"] = shareArea.Name
95+
}
96+
97+
if shareArea.Area != nil {
98+
shareAreaMap["area"] = shareArea.Area
99+
}
100+
101+
if shareArea.AreaId != nil {
102+
shareAreaMap["area_id"] = shareArea.AreaId
103+
}
104+
105+
ids = append(ids, *shareArea.Area)
106+
tmpList = append(tmpList, shareAreaMap)
107+
}
108+
109+
_ = d.Set("items", tmpList)
110+
}
111+
112+
d.SetId(helper.DataResourceIdsHash(ids))
113+
output, ok := d.GetOk("result_output_file")
114+
if ok && output.(string) != "" {
115+
if e := tccommon.WriteToFile(output.(string), tmpList); e != nil {
116+
return e
117+
}
118+
}
119+
return nil
120+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Use this data source to query detailed information of organization org_share_area
2+
3+
Example Usage
4+
5+
```hcl
6+
data "tencentcloud_organization_org_share_area" "org_share_area" {
7+
lang = "zh"
8+
}
9+
```
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package tco_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
8+
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
9+
)
10+
11+
func TestAccTencentCloudOrganizationOrgShareAreaDataSource_basic(t *testing.T) {
12+
t.Parallel()
13+
resource.Test(t, resource.TestCase{
14+
PreCheck: func() {
15+
tcacctest.AccPreCheck(t)
16+
},
17+
Providers: tcacctest.AccProviders,
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccOrganizationOrgShareAreaDataSource,
21+
Check: resource.ComposeTestCheckFunc(tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_organization_org_share_area.org_share_area")),
22+
},
23+
},
24+
})
25+
}
26+
27+
const testAccOrganizationOrgShareAreaDataSource = `
28+
29+
data "tencentcloud_organization_org_share_area" "org_share_area" {
30+
lang = "zh"
31+
}
32+
33+
`

tencentcloud/services/tco/service_tencentcloud_organization.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,3 +769,38 @@ func (me *OrganizationService) DescribeOrganizationMembersByFilter(ctx context.C
769769

770770
return
771771
}
772+
773+
func (me *OrganizationService) DescribeOrganizationOrgShareAreaByFilter(ctx context.Context, param map[string]interface{}) (orgShareArea []*organization.ShareArea, errRet error) {
774+
var (
775+
logId = tccommon.GetLogId(ctx)
776+
request = organization.NewDescribeShareAreasRequest()
777+
)
778+
779+
defer func() {
780+
if errRet != nil {
781+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
782+
}
783+
}()
784+
785+
for k, v := range param {
786+
if k == "Lang" {
787+
request.Lang = v.(*string)
788+
}
789+
}
790+
791+
ratelimit.Check(request.GetAction())
792+
793+
response, err := me.client.UseOrganizationClient().DescribeShareAreas(request)
794+
if err != nil {
795+
errRet = err
796+
return
797+
}
798+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
799+
800+
if len(response.Response.Items) < 1 {
801+
return
802+
}
803+
804+
orgShareArea = response.Response.Items
805+
return
806+
}

0 commit comments

Comments
 (0)