Skip to content

Commit 597b24a

Browse files
author
mikatong
committed
support tco scim
1 parent 509391e commit 597b24a

23 files changed

+1813
-12
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1034
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.970
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1014
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692
@@ -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.859
7575
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.762

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1031/go.mod
926926
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1033/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
927927
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034 h1:T7ewuO2DD+5R2LRpD2kTRy25aCkVDVdYkmmyUS63i08=
928928
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1034/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
929+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038 h1:tB3DLzyQXavvGTI+JUvEcuYh0EtTn1rvh9W6xxFHL38=
930+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1038/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
929931
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
930932
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
931933
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
@@ -980,6 +982,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831 h1:oya
980982
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831/go.mod h1:2WuTlTnKCnZoa6l0JxY9GNfo0UG6nU7AEsljF8rMMsM=
981983
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008 h1:bdUSSq3Y7OWZgrTBxhd7hvolu01zACD5GYdK/YePH/Q=
982984
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1008/go.mod h1:wyPjTCtmxGUaR99fm3V4Fh53zi/oTy55l0+ZSQhsOog=
985+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1038 h1:BJqvIa+Z7bt1Y2VN9wZSye7Bq2RaVrRw1Rt50TwsgsM=
986+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1038/go.mod h1:ZcauOIKWXstNwe6IlD3iBBxzljEWdQjZbTc6PfwsPxQ=
983987
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010 h1:lx554ZfB++mge+/Gk7LnDUI5Dwm9r+DgGNN9C/DqhE4=
984988
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.1010/go.mod h1:GGhAf2ehV2/jwKf3Sezr2x/soJ3nDuefJFlcoZnlflA=
985989
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
@@ -1838,6 +1838,9 @@ func Provider() *schema.Provider {
18381838
"tencentcloud_identity_center_role_assignment": tco.ResourceTencentCloudIdentityCenterRoleAssignment(),
18391839
"tencentcloud_invite_organization_member_operation": tco.ResourceTencentCloudInviteOrganizationMemberOperation(),
18401840
"tencentcloud_open_identity_center_operation": tco.ResourceTencentCloudOpenIdentityCenterOperation(),
1841+
"tencentcloud_identity_center_scim_credential_status": tco.ResourceTencentCloudIdentityCenterScimCredentialStatus(),
1842+
"tencentcloud_identity_center_scim_credential": tco.ResourceTencentCloudIdentityCenterScimCredential(),
1843+
"tencentcloud_identity_center_scim_synchronization_status": tco.ResourceTencentCloudIdentityCenterScimSynchronizationStatus(),
18411844
"tencentcloud_dbbrain_sql_filter": dbbrain.ResourceTencentCloudDbbrainSqlFilter(),
18421845
"tencentcloud_dbbrain_security_audit_log_export_task": dbbrain.ResourceTencentCloudDbbrainSecurityAuditLogExportTask(),
18431846
"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
@@ -1715,6 +1715,9 @@ Tencent Cloud Organization (TCO)
17151715
tencentcloud_identity_center_role_assignment
17161716
tencentcloud_invite_organization_member_operation
17171717
tencentcloud_open_identity_center_operation
1718+
tencentcloud_identity_center_scim_credential_status
1719+
tencentcloud_identity_center_scim_credential
1720+
tencentcloud_identity_center_scim_synchronization_status
17181721

17191722
TDSQL-C for PostgreSQL(TDCPG)
17201723
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: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Provides a resource to create a organization identity_center_scim_credential
2+
3+
Example Usage
4+
5+
```hcl
6+
resource "tencentcloud_identity_center_scim_credential" "identity_center_scim_credential" {
7+
}
8+
```
9+
10+
Import
11+
12+
organization identity_center_scim_credential can be imported using the id, e.g.
13+
14+
```
15+
terraform import tencentcloud_identity_center_scim_credential.identity_center_scim_credential identity_center_scim_credential_id
16+
```

0 commit comments

Comments
 (0)