Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/api v1.0.285
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/apigateway v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/as v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.357
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.199
Expand All @@ -30,7 +30,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.291
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.353
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.357
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.351
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.335
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -458,6 +458,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/as v1.0.199 h1:6g9q97yB
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/as v1.0.199/go.mod h1:boLdxUceAK+98OfetsfVEX6RV1leu/JGyEtsrTf4kIY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.199 h1:caDwMPzGsG+WUZ9tJVnTxbD7nc6Uj8K+xop5xxvV0DQ=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.199/go.mod h1:ys+65P4jdhUP5rQFSPI9O8/5s0lNcPycl5IPOTaZyVU=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.357 h1:USpuZLFRHacOVo4urhDJcCIH2hb6DqNx0YmLvLt+w2Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.357/go.mod h1:Whw7AWuWHNYQIdgwhl0/cf2DQ2N7JD9HUj9PvgiwRrQ=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.199 h1:MkIdFgEGF+baYAU9Z/PUmudfuamCGtLsedQpopwyHNU=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.199/go.mod h1:PTp058qpOV//RukBVdYQT962rZg71lIt6eHLK1zdvEc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.199 h1:7ReZOKl95X+9SkPPtrAoUt4ZPJSIjiSxq4g/M54JmtU=
Expand Down Expand Up @@ -489,6 +491,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.351 h1:BpVJ
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.351/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.353 h1:rFkcKuLFxt2xolSWbyeznetTBw9Cyhe1ycILmEkE1Pk=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.353/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.357 h1:uaMtRfV/OYPolAldcOuChMPAnmYnG+CONdDAFcaOQGU=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.357/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.199 h1:ajgJogYSIQ5u1PIbiV5nsvr5K0fYpm1/T7Dy+mxEM6U=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.199/go.mod h1:AqyM/ZZMD7q5mHBqNY9YImbSpEpoEe7E/vrTbUWX+po=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.351 h1:zqJsH5pxGT57La7NAOOyMQxsuM11pupNBwV1dzXcT24=
Expand Down
116 changes: 116 additions & 0 deletions tencentcloud/data_source_tc_user_info.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
/*
Use this data source to query user appid, uin and ownerUin.

Example Usage

```hcl
data "tencentcloud_user_info" "foo" {}
```

*/
package tencentcloud

import (
"context"
"fmt"
"log"
"math/rand"
"strconv"

cam "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam/v20190116"
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/ratelimit"

"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
)

func datasourceTencentCloudUserInfo() *schema.Resource {
return &schema.Resource{
Read: datasourceTencentCloudUserInfoRead,

Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Schema: map[string]*schema.Schema{
"app_id": {
Type: schema.TypeString,
Computed: true,
Description: "Current account App ID.",
},

"uin": {
Type: schema.TypeString,
Computed: true,
Description: "Current account UIN.",
},

"owner_uin": {
Type: schema.TypeString,
Computed: true,
Description: "Current account OwnerUIN.",
},
"result_output_file": {
Type: schema.TypeString,
Optional: true,
Description: "Used for save results.",
},
},
}
}

func datasourceTencentCloudUserInfoRead(d *schema.ResourceData, meta interface{}) error {
defer logElapsed("datasource.tencentcloud_user_info.read")()
defer inconsistentCheck(d, meta)()

logId := getLogId(contextNil)
ctx := context.WithValue(context.TODO(), logIdKey, logId)

client := meta.(*TencentCloudClient).apiV3Conn

logId = getLogId(ctx)
request := cam.NewGetUserAppIdRequest()

ratelimit.Check(request.GetAction())
response, err := client.UseCamClient().GetUserAppId(request)

if err != nil {
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n",
logId, request.GetAction(), request.ToJsonString(), err.Error())
return err
}

log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())

if err != nil {
return err
}

result := response.Response

if result == nil {
return fmt.Errorf("get user appid error: empty response")
}

appId := strconv.FormatUint(*result.AppId, 10)
uin := *result.Uin
ownerUin := *result.OwnerUin

d.SetId(fmt.Sprintf("user-%s-%s-%d", uin, appId, rand.Intn(10000)))

_ = d.Set("app_id", appId)
_ = d.Set("uin", uin)
_ = d.Set("owner_uin", ownerUin)

output, ok := d.GetOk("result_output_file")
if ok && output.(string) != "" {
if e := writeToFile(output.(string), map[string]interface{}{
"app_id": appId,
"uin": uin,
"ownerUin": ownerUin,
}); e != nil {
return e
}
}

return nil
}
29 changes: 29 additions & 0 deletions tencentcloud/data_source_tc_user_info_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package tencentcloud

import (
"testing"

"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
)

func TestAccTencentCloudDataSourceUserInfo(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccDataUserInfoBasic,
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info", "app_id"),
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info", "uin"),
resource.TestCheckResourceAttrSet("data.tencentcloud_user_info.info", "owner_uin"),
),
},
},
})
}

const testAccDataUserInfoBasic = `
data "tencentcloud_user_info" "info" {}
`
2 changes: 2 additions & 0 deletions tencentcloud/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ Cloud Access Management(CAM)
tencentcloud_cam_saml_providers
tencentcloud_cam_user_policy_attachments
tencentcloud_cam_users
tencentcloud_user_info

Resource
tencentcloud_cam_role
Expand Down Expand Up @@ -807,6 +808,7 @@ func Provider() terraform.ResourceProvider {
"tencentcloud_cam_user_policy_attachments": dataSourceTencentCloudCamUserPolicyAttachments(),
"tencentcloud_cam_group_policy_attachments": dataSourceTencentCloudCamGroupPolicyAttachments(),
"tencentcloud_cam_saml_providers": dataSourceTencentCloudCamSAMLProviders(),
"tencentcloud_user_info": datasourceTencentCloudUserInfo(),
"tencentcloud_cdn_domains": dataSourceTencentCloudCdnDomains(),
"tencentcloud_scf_functions": dataSourceTencentCloudScfFunctions(),
"tencentcloud_scf_namespaces": dataSourceTencentCloudScfNamespaces(),
Expand Down
Loading