Skip to content

Commit 0ae5bc7

Browse files
tongyimingmikatong
and
mikatong
authored
feat(tco): [121226730] support organization share (#3029)
* support organization share * add changelog --------- Co-authored-by: mikatong <[email protected]>
1 parent 39632b5 commit 0ae5bc7

29 files changed

+1793
-0
lines changed

.changelog/3029.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
```release-note:new-resource
2+
tencentcloud_organization_org_share_unit_resource
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_accept_join_share_unit_invitation_operation
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_reject_join_share_unit_invitation_operation
11+
```
12+
13+
```release-note:new-data-source
14+
tencentcloud_organization_org_share_unit_resources
15+
```
16+
17+
```release-note:new-data-source
18+
tencentcloud_organization_org_share_units
19+
```
20+
21+
```release-note:new-data-source
22+
tencentcloud_organization_org_share_unit_members
23+
```

tencentcloud/provider.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,6 +1117,9 @@ func Provider() *schema.Provider {
11171117
"tencentcloud_identity_center_role_configurations": tco.DataSourceTencentCloudIdentityCenterRoleConfigurations(),
11181118
"tencentcloud_identity_center_users": tco.DataSourceTencentCloudIdentityCenterUsers(),
11191119
"tencentcloud_organization_nodes": tco.DataSourceTencentCloudOrganizationNodes(),
1120+
"tencentcloud_organization_org_share_unit_resources": tco.DataSourceTencentCloudOrganizationOrgShareUnitResources(),
1121+
"tencentcloud_organization_org_share_units": tco.DataSourceTencentCloudOrganizationOrgShareUnits(),
1122+
"tencentcloud_organization_org_share_unit_members": tco.DataSourceTencentCloudOrganizationOrgShareUnitMembers(),
11201123
"tencentcloud_pts_scenario_with_jobs": pts.DataSourceTencentCloudPtsScenarioWithJobs(),
11211124
"tencentcloud_cam_list_attached_user_policy": cam.DataSourceTencentCloudCamListAttachedUserPolicy(),
11221125
"tencentcloud_cam_secret_last_used_time": cam.DataSourceTencentCloudCamSecretLastUsedTime(),
@@ -2193,6 +2196,9 @@ func Provider() *schema.Provider {
21932196
"tencentcloud_csip_risk_center": csip.ResourceTencentCloudCsipRiskCenter(),
21942197
"tencentcloud_organization_org_share_unit_member": tco.ResourceTencentCloudOrganizationOrgShareUnitMember(),
21952198
"tencentcloud_organization_org_share_unit": tco.ResourceTencentCloudOrganizationOrgShareUnit(),
2199+
"tencentcloud_organization_org_share_unit_resource": tco.ResourceTencentCloudOrganizationOrgShareUnitResource(),
2200+
"tencentcloud_accept_join_share_unit_invitation_operation": tco.ResourceTencentCloudAcceptJoinShareUnitInvitationOperation(),
2201+
"tencentcloud_reject_join_share_unit_invitation_operation": tco.ResourceTencentCloudRejectJoinShareUnitInvitationOperation(),
21962202
"tencentcloud_kubernetes_addon": tke.ResourceTencentCloudKubernetesAddon(),
21972203
"tencentcloud_kubernetes_addon_config": tke.ResourceTencentCloudKubernetesAddonConfig(),
21982204
"tencentcloud_kubernetes_native_node_pool": tke.ResourceTencentCloudKubernetesNativeNodePool(),

tencentcloud/provider.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,6 +1706,9 @@ Tencent Cloud Organization (TCO)
17061706
tencentcloud_identity_center_role_configurations
17071707
tencentcloud_identity_center_users
17081708
tencentcloud_organization_nodes
1709+
tencentcloud_organization_org_share_unit_resources
1710+
tencentcloud_organization_org_share_units
1711+
tencentcloud_organization_org_share_unit_members
17091712
Resource
17101713
tencentcloud_organization_instance
17111714
tencentcloud_organization_org_node
@@ -1737,6 +1740,9 @@ Tencent Cloud Organization (TCO)
17371740
tencentcloud_identity_center_scim_credential_status
17381741
tencentcloud_identity_center_scim_credential
17391742
tencentcloud_identity_center_scim_synchronization_status
1743+
tencentcloud_organization_org_share_unit_resource
1744+
tencentcloud_accept_join_share_unit_invitation_operation
1745+
tencentcloud_reject_join_share_unit_invitation_operation
17401746

17411747
TDSQL-C for PostgreSQL(TDCPG)
17421748
Data Source
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
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 DataSourceTencentCloudOrganizationOrgShareUnitMembers() *schema.Resource {
15+
return &schema.Resource{
16+
Read: dataSourceTencentCloudOrganizationOrgShareUnitMembersRead,
17+
Schema: map[string]*schema.Schema{
18+
"unit_id": {
19+
Type: schema.TypeString,
20+
Required: true,
21+
Description: "Shared unit ID.",
22+
},
23+
24+
"area": {
25+
Type: schema.TypeString,
26+
Required: true,
27+
Description: "Shared unit area.",
28+
},
29+
30+
"search_key": {
31+
Type: schema.TypeString,
32+
Optional: true,
33+
Description: "Search for keywords. Support member Uin searches.",
34+
},
35+
36+
"items": {
37+
Type: schema.TypeList,
38+
Computed: true,
39+
Description: "Shared unit member list.",
40+
Elem: &schema.Resource{
41+
Schema: map[string]*schema.Schema{
42+
"share_member_uin": {
43+
Type: schema.TypeInt,
44+
Required: true,
45+
Description: "Shared member Uin.",
46+
},
47+
"create_time": {
48+
Type: schema.TypeString,
49+
Required: true,
50+
Description: "Creation time.",
51+
},
52+
},
53+
},
54+
},
55+
56+
"result_output_file": {
57+
Type: schema.TypeString,
58+
Optional: true,
59+
Description: "Used to save results.",
60+
},
61+
},
62+
}
63+
}
64+
65+
func dataSourceTencentCloudOrganizationOrgShareUnitMembersRead(d *schema.ResourceData, meta interface{}) error {
66+
defer tccommon.LogElapsed("data_source.tencentcloud_organization_org_share_unit_members.read")()
67+
defer tccommon.InconsistentCheck(d, meta)()
68+
69+
logId := tccommon.GetLogId(tccommon.ContextNil)
70+
ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
71+
72+
service := OrganizationService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
73+
74+
paramMap := make(map[string]interface{})
75+
if v, ok := d.GetOk("unit_id"); ok {
76+
paramMap["UnitId"] = helper.String(v.(string))
77+
}
78+
79+
if v, ok := d.GetOk("area"); ok {
80+
paramMap["Area"] = helper.String(v.(string))
81+
}
82+
83+
if v, ok := d.GetOk("search_key"); ok {
84+
paramMap["SearchKey"] = helper.String(v.(string))
85+
}
86+
87+
var respData []*organization.ShareUnitMember
88+
err := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
89+
result, e := service.DescribeOrganizationOrgShareUnitMembersByFilter(ctx, paramMap)
90+
if e != nil {
91+
return tccommon.RetryError(e)
92+
}
93+
respData = result
94+
return nil
95+
})
96+
if err != nil {
97+
return err
98+
}
99+
100+
var ids []string
101+
itemsList := make([]map[string]interface{}, 0, len(respData))
102+
if respData != nil {
103+
for _, items := range respData {
104+
itemsMap := map[string]interface{}{}
105+
106+
var shareMemberUin int64
107+
if items.ShareMemberUin != nil {
108+
itemsMap["share_member_uin"] = items.ShareMemberUin
109+
shareMemberUin = *items.ShareMemberUin
110+
}
111+
112+
if items.CreateTime != nil {
113+
itemsMap["create_time"] = items.CreateTime
114+
}
115+
116+
ids = append(ids, helper.Int64ToStr(shareMemberUin))
117+
itemsList = append(itemsList, itemsMap)
118+
}
119+
120+
_ = d.Set("items", itemsList)
121+
}
122+
123+
d.SetId(helper.DataResourceIdsHash(ids))
124+
125+
output, ok := d.GetOk("result_output_file")
126+
if ok && output.(string) != "" {
127+
if e := tccommon.WriteToFile(output.(string), itemsList); e != nil {
128+
return e
129+
}
130+
}
131+
132+
return nil
133+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Use this data source to query detailed information of organization organization_org_share_unit_members
2+
3+
Example Usage
4+
5+
```hcl
6+
data "tencentcloud_organization_org_share_unit_members" "organization_org_share_unit_members" {
7+
unit_id = "xxxxxx"
8+
area = "ap-guangzhou"
9+
search_key = "xxxxxx"
10+
}
11+
```
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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 TestAccTencentCloudOrganizationOrgShareUnitMembersDataSource_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: testAccOrganizationOrgShareUnitMembersDataSource,
21+
Check: resource.ComposeTestCheckFunc(
22+
tcacctest.AccCheckTencentCloudDataSourceID("data.tencentcloud_organization_org_share_unit_members.organization_org_share_unit_members"),
23+
resource.TestCheckResourceAttr("data.tencentcloud_organization_org_share_unit_members.organization_org_share_unit_members", "items.#", "1"),
24+
),
25+
},
26+
},
27+
})
28+
}
29+
30+
const testAccOrganizationOrgShareUnitMembersDataSource = `
31+
resource "tencentcloud_organization_org_share_unit" "org_share_unit" {
32+
name = "iac-test"
33+
area = "ap-guangzhou"
34+
description = "iac-test"
35+
}
36+
37+
resource "tencentcloud_organization_org_share_unit_member" "org_share_unit_member" {
38+
unit_id = tencentcloud_organization_org_share_unit.org_share_unit.unit_id
39+
area = tencentcloud_organization_org_share_unit.org_share_unit.area
40+
members {
41+
share_member_uin=100038074517
42+
}
43+
}
44+
45+
data "tencentcloud_organization_org_share_unit_members" "organization_org_share_unit_members" {
46+
unit_id = split("#", tencentcloud_organization_org_share_unit.org_share_unit.id)[1]
47+
area = "ap-guangzhou"
48+
search_key = "100038074517"
49+
depends_on = [ tencentcloud_organization_org_share_unit_member.org_share_unit_member ]
50+
}
51+
`

0 commit comments

Comments
 (0)