Skip to content

Commit ce1c030

Browse files
tongyimingmikatong
and
mikatong
authored
feat(tco): [120508627] support tco scim (#2950)
* support tco scim * update --------- Co-authored-by: mikatong <[email protected]>
1 parent d4a5e7f commit ce1c030

23 files changed

+1827
-9
lines changed

.changelog/2950.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```release-note:new-resource
2+
tencentcloud_identity_center_scim_credential_status
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_identity_center_scim_credential
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_identity_center_scim_synchronization_status
11+
```

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.949
7070
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.844
7171
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.853
72-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008
72+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1038
7373
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010
7474
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.1038
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
@@ -984,6 +984,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831 h1:oya
984984
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831/go.mod h1:2WuTlTnKCnZoa6l0JxY9GNfo0UG6nU7AEsljF8rMMsM=
985985
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008 h1:bdUSSq3Y7OWZgrTBxhd7hvolu01zACD5GYdK/YePH/Q=
986986
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008/go.mod h1:wyPjTCtmxGUaR99fm3V4Fh53zi/oTy55l0+ZSQhsOog=
987+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1038 h1:BJqvIa+Z7bt1Y2VN9wZSye7Bq2RaVrRw1Rt50TwsgsM=
988+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1038/go.mod h1:ZcauOIKWXstNwe6IlD3iBBxzljEWdQjZbTc6PfwsPxQ=
987989
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010 h1:lx554ZfB++mge+/Gk7LnDUI5Dwm9r+DgGNN9C/DqhE4=
988990
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010/go.mod h1:GGhAf2ehV2/jwKf3Sezr2x/soJ3nDuefJFlcoZnlflA=
989991
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.859 h1:VrE3qzwzWB5mV/ejTJuwZbqZ/CNYLoc8X+uFbWEEOnY=

tencentcloud/provider.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1842,6 +1842,9 @@ func Provider() *schema.Provider {
18421842
"tencentcloud_identity_center_role_assignment": tco.ResourceTencentCloudIdentityCenterRoleAssignment(),
18431843
"tencentcloud_invite_organization_member_operation": tco.ResourceTencentCloudInviteOrganizationMemberOperation(),
18441844
"tencentcloud_open_identity_center_operation": tco.ResourceTencentCloudOpenIdentityCenterOperation(),
1845+
"tencentcloud_identity_center_scim_credential_status": tco.ResourceTencentCloudIdentityCenterScimCredentialStatus(),
1846+
"tencentcloud_identity_center_scim_credential": tco.ResourceTencentCloudIdentityCenterScimCredential(),
1847+
"tencentcloud_identity_center_scim_synchronization_status": tco.ResourceTencentCloudIdentityCenterScimSynchronizationStatus(),
18451848
"tencentcloud_dbbrain_sql_filter": dbbrain.ResourceTencentCloudDbbrainSqlFilter(),
18461849
"tencentcloud_dbbrain_security_audit_log_export_task": dbbrain.ResourceTencentCloudDbbrainSecurityAuditLogExportTask(),
18471850
"tencentcloud_dbbrain_db_diag_report_task": dbbrain.ResourceTencentCloudDbbrainDbDiagReportTask(),

tencentcloud/provider.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1719,6 +1719,9 @@ Tencent Cloud Organization (TCO)
17191719
tencentcloud_identity_center_role_assignment
17201720
tencentcloud_invite_organization_member_operation
17211721
tencentcloud_open_identity_center_operation
1722+
tencentcloud_identity_center_scim_credential_status
1723+
tencentcloud_identity_center_scim_credential
1724+
tencentcloud_identity_center_scim_synchronization_status
17221725

17231726
TDSQL-C for PostgreSQL(TDCPG)
17241727
Data Source
Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
package tco
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"log"
7+
"strings"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
11+
organization "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization/v20210331"
12+
13+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
14+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
15+
)
16+
17+
func ResourceTencentCloudIdentityCenterScimCredential() *schema.Resource {
18+
return &schema.Resource{
19+
Create: resourceTencentCloudIdentityCenterScimCredentialCreate,
20+
Read: resourceTencentCloudIdentityCenterScimCredentialRead,
21+
Delete: resourceTencentCloudIdentityCenterScimCredentialDelete,
22+
Importer: &schema.ResourceImporter{
23+
State: schema.ImportStatePassthrough,
24+
},
25+
Schema: map[string]*schema.Schema{
26+
"zone_id": {
27+
Type: schema.TypeString,
28+
Required: true,
29+
ForceNew: true,
30+
Description: "Space ID. z-prefix starts with 12 random digits/lowercase letters.",
31+
},
32+
33+
"status": {
34+
Type: schema.TypeString,
35+
Computed: true,
36+
Description: "SCIM key status, Enabled-On, Disabled-Closed.",
37+
},
38+
39+
"credential_id": {
40+
Type: schema.TypeString,
41+
Computed: true,
42+
Description: "SCIM key ID. scimcred-prefix and followed by 12 random digits/lowercase letters.",
43+
},
44+
45+
"credential_type": {
46+
Type: schema.TypeString,
47+
Computed: true,
48+
Description: "SCIM credential type.",
49+
},
50+
51+
"create_time": {
52+
Type: schema.TypeString,
53+
Computed: true,
54+
Description: "SCIM create time.",
55+
},
56+
57+
"expire_time": {
58+
Type: schema.TypeString,
59+
Computed: true,
60+
Description: "SCIM expire time.",
61+
},
62+
},
63+
}
64+
}
65+
66+
func resourceTencentCloudIdentityCenterScimCredentialCreate(d *schema.ResourceData, meta interface{}) error {
67+
defer tccommon.LogElapsed("resource.tencentcloud_identity_center_scim_credential.create")()
68+
defer tccommon.InconsistentCheck(d, meta)()
69+
70+
logId := tccommon.GetLogId(tccommon.ContextNil)
71+
72+
ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
73+
74+
var (
75+
zoneId string
76+
credentialId string
77+
)
78+
var (
79+
request = organization.NewCreateSCIMCredentialRequest()
80+
response = organization.NewCreateSCIMCredentialResponse()
81+
)
82+
83+
if v, ok := d.GetOk("zone_id"); ok {
84+
zoneId = v.(string)
85+
}
86+
87+
request.ZoneId = helper.String(zoneId)
88+
89+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
90+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOrganizationClient().CreateSCIMCredentialWithContext(ctx, request)
91+
if e != nil {
92+
return tccommon.RetryError(e)
93+
} else {
94+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
95+
}
96+
response = result
97+
return nil
98+
})
99+
if err != nil {
100+
log.Printf("[CRITAL]%s create identity center scim credential failed, reason:%+v", logId, err)
101+
return err
102+
}
103+
104+
credentialId = *response.Response.CredentialId
105+
106+
d.SetId(strings.Join([]string{zoneId, credentialId}, tccommon.FILED_SP))
107+
108+
return resourceTencentCloudIdentityCenterScimCredentialRead(d, meta)
109+
}
110+
111+
func resourceTencentCloudIdentityCenterScimCredentialRead(d *schema.ResourceData, meta interface{}) error {
112+
defer tccommon.LogElapsed("resource.tencentcloud_identity_center_scim_credential.read")()
113+
defer tccommon.InconsistentCheck(d, meta)()
114+
115+
logId := tccommon.GetLogId(tccommon.ContextNil)
116+
117+
ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
118+
119+
service := OrganizationService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
120+
121+
idSplit := strings.Split(d.Id(), tccommon.FILED_SP)
122+
if len(idSplit) != 2 {
123+
return fmt.Errorf("id is broken,%s", d.Id())
124+
}
125+
zoneId := idSplit[0]
126+
credentialId := idSplit[1]
127+
128+
_ = d.Set("zone_id", zoneId)
129+
130+
respData, err := service.DescribeIdentityCenterScimCredentialById(ctx, zoneId, credentialId)
131+
if err != nil {
132+
return err
133+
}
134+
135+
if respData == nil {
136+
d.SetId("")
137+
log.Printf("[WARN]%s resource `identity_center_scim_credential` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
138+
return nil
139+
}
140+
if respData.ZoneId != nil {
141+
_ = d.Set("zone_id", respData.ZoneId)
142+
}
143+
144+
if respData.Status != nil {
145+
_ = d.Set("status", respData.Status)
146+
}
147+
148+
if respData.CredentialId != nil {
149+
_ = d.Set("credential_id", respData.CredentialId)
150+
}
151+
152+
if respData.CredentialType != nil {
153+
_ = d.Set("credential_type", respData.CredentialType)
154+
}
155+
156+
if respData.CreateTime != nil {
157+
_ = d.Set("create_time", respData.CreateTime)
158+
}
159+
160+
if respData.ExpireTime != nil {
161+
_ = d.Set("expire_time", respData.ExpireTime)
162+
}
163+
164+
return nil
165+
}
166+
167+
func resourceTencentCloudIdentityCenterScimCredentialDelete(d *schema.ResourceData, meta interface{}) error {
168+
defer tccommon.LogElapsed("resource.tencentcloud_identity_center_scim_credential.delete")()
169+
defer tccommon.InconsistentCheck(d, meta)()
170+
171+
logId := tccommon.GetLogId(tccommon.ContextNil)
172+
ctx := tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
173+
174+
idSplit := strings.Split(d.Id(), tccommon.FILED_SP)
175+
if len(idSplit) != 2 {
176+
return fmt.Errorf("id is broken,%s", d.Id())
177+
}
178+
zoneId := idSplit[0]
179+
credentialId := idSplit[1]
180+
181+
var (
182+
request = organization.NewDeleteSCIMCredentialRequest()
183+
response = organization.NewDeleteSCIMCredentialResponse()
184+
)
185+
186+
request.ZoneId = helper.String(zoneId)
187+
188+
request.CredentialId = helper.String(credentialId)
189+
190+
err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
191+
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseOrganizationClient().DeleteSCIMCredentialWithContext(ctx, request)
192+
if e != nil {
193+
return tccommon.RetryError(e)
194+
} else {
195+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
196+
}
197+
response = result
198+
return nil
199+
})
200+
if err != nil {
201+
log.Printf("[CRITAL]%s delete identity center scim credential failed, reason:%+v", logId, err)
202+
return err
203+
}
204+
205+
_ = response
206+
return nil
207+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
Provides a resource to create an identity center scim credential
2+
3+
Example Usage
4+
5+
```hcl
6+
resource "tencentcloud_identity_center_scim_credential" "identity_center_scim_credential" {
7+
zone_id = "z-xxxxxx"
8+
}
9+
```
10+
11+
Import
12+
13+
organization identity_center_scim_credential can be imported using the id, e.g.
14+
15+
```
16+
terraform import tencentcloud_identity_center_scim_credential.identity_center_scim_credential ${zone_id}#${credential_id}
17+
```

0 commit comments

Comments
 (0)