Skip to content

Commit e4c6810

Browse files
gitmknanonymous
andauthored
Feat/rum support (#1422)
* feat: support rum resource * feat: rum support datasource * feat: support instance datasource * feat: support unit * feat: rum support * feat: support instance * fix: merge master * fix: Handle typos in interface fields * fix: Handle typos in interface fields * fix: modify unit * fix: modify unit * fix: modify unit * feat: add changelog Co-authored-by: anonymous <anonymous@mail.org>
1 parent f264e39 commit e4c6810

37 files changed

+14515
-0
lines changed

.changelog/1422.txt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
```release-note:new-data-source
2+
tencentcloud_rum_project
3+
```
4+
5+
```release-note:new-data-source
6+
tencentcloud_rum_offline_log_config
7+
```
8+
9+
```release-note:new-data-source
10+
tencentcloud_rum_whitelist
11+
```
12+
13+
```release-note:new-data-source
14+
tencentcloud_rum_taw_instance
15+
```
16+
17+
```release-note:new-resource
18+
tencentcloud_rum_project
19+
```
20+
21+
```release-note:new-resource
22+
tencentcloud_rum_taw_instance
23+
```
24+
25+
```release-note:new-resource
26+
tencentcloud_rum_whitelist
27+
```
28+
29+
```release-note:new-resource
30+
tencentcloud_rum_offline_log_config_attachment
31+
```

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ require (
5858
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns v1.0.290
5959
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.533
6060
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.490
61+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542
6162
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.275
6263
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529
6364
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms v1.0.486

go.sum

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.540 h1:gcES
521521
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.540/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
522522
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.542 h1:hnKPqiCRTgbAimItdWC4J8TYjzpmdXmiO9AGoj1WjPc=
523523
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.542/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
524+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.542 h1:hnKPqiCRTgbAimItdWC4J8TYjzpmdXmiO9AGoj1WjPc=
525+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.542/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
524526
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.445 h1:Bh7XD0ypNMHYyBOM8hhKsSu+y0VVKUnJVS+YKKhfpGg=
525527
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.445/go.mod h1:jMDD351efCFpT1+KVFbcpu6SbmP4TYmp4qkoCfr63nQ=
526528
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.488 h1:A1seXWtMf2atBjSNYvcwxyDoFzCMgqyVnsxnWzhqJEA=
@@ -570,6 +572,14 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.533 h1:BJDJlHk
570572
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts v1.0.533/go.mod h1:SHeExU5ggWrG8hsc4BMmxdhhw6WpoiWSu1Jw8CXs/Dg=
571573
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.490 h1:JEW8+EjIGG5APXrPKLlMHo4fzLcCxVlg5QXwK1+YhA0=
572574
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis v1.0.490/go.mod h1:1yBtZUeKla8GNnVnJ1JOgMVBi/YgjEuQgzO4uNmisdI=
575+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.536 h1:oMZpiVumvV1Tp31hmABcAwD56w3ZB006a4KqsUYMbIY=
576+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.536/go.mod h1:bPxuR8cOQwa09F5o7gG3Rz9UW5dFvG98cSzV/OtFJz8=
577+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.538 h1:+FyD8fNNBXD6VvgigXFYtuG0VzxR2AuBcZOb/4MJumU=
578+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.538/go.mod h1:ULpAvVt2hBPE3MuQjHr6qtghOTzpeNfmI742c7KCp0c=
579+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.539 h1:2WNZavBWu4u+ZKBFkM+VRIjmqOuo8v9K6vttsk9xflg=
580+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.539/go.mod h1:gZpjcCkjpK9aVkO2Uw714ee7Y2EXGK6BB5JXCJ87ayc=
581+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542 h1:/U0rTVKXD7Y8Opw6OtnqSDPnWiP3zMMAlxOKayII/5Q=
582+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum v1.0.542/go.mod h1:QF1J13hmuMY5gMrBopRFmHWFs/KsLr5uCNBRJt5aA1M=
573583
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.275 h1:hn5RrN/qkcObnyKfJ+raey/riVeRqHJFvY34l2YgELs=
574584
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf v1.0.275/go.mod h1:Pew6DV5oBGrzHYWZ8ssiHeJS/Z39ggVv1y5ADGWdO4s=
575585
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ses v1.0.529 h1:NezuBQEG7ihXbwueREo4qavBAo6ZcHuWGZt1dR+VdKc=

tencentcloud/basic_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -847,3 +847,10 @@ const (
847847
)
848848

849849
// End of DBBRAIN
850+
851+
// RUM
852+
const (
853+
defaultRumInstanceId = "rum-pasZKEI3RLgakj"
854+
)
855+
856+
// End of RUM

tencentcloud/connectivity/client.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ import (
5757
privatedns "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/privatedns/v20201028"
5858
pts "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/pts/v20210728"
5959
redis "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/redis/v20180412"
60+
rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622"
6061
scf "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/scf/v20180416"
6162
sms "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sms/v20210111"
6263
sqlserver "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/sqlserver/v20180328"
@@ -142,6 +143,7 @@ type TencentCloudClient struct {
142143
smsConn *sms.Client
143144
catConn *cat.Client
144145
mariadbConn *mariadb.Client
146+
rumConn *rum.Client
145147
ptsConn *pts.Client
146148
tatConn *tat.Client
147149
organizationConn *organization.Client
@@ -944,6 +946,19 @@ func (me *TencentCloudClient) UseDbbrainClient() *dbbrain.Client {
944946
return me.dbbrainConn
945947
}
946948

949+
// UseRumClient returns rum client for service
950+
func (me *TencentCloudClient) UseRumClient() *rum.Client {
951+
if me.rumConn != nil {
952+
return me.rumConn
953+
}
954+
955+
cpf := me.NewClientProfile(300)
956+
me.rumConn, _ = rum.NewClient(me.Credential, me.Region, cpf)
957+
me.rumConn.WithHttpTransport(&LogRoundTripper{})
958+
959+
return me.rumConn
960+
}
961+
947962
func getEnvDefault(key string, defVal int) int {
948963
val, ex := os.LookupEnv(key)
949964
if !ex {
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
/*
2+
Use this data source to query detailed information of rum offlineLogConfig
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_rum_offline_log_config" "offlineLogConfig" {
8+
project_key = "ZEYrYfvaYQ30jRdmPx"
9+
}
10+
```
11+
*/
12+
package tencentcloud
13+
14+
import (
15+
"context"
16+
"fmt"
17+
"log"
18+
19+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
20+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
21+
rum "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/rum/v20210622"
22+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
23+
)
24+
25+
func dataSourceTencentCloudRumOfflineLogConfig() *schema.Resource {
26+
return &schema.Resource{
27+
Read: dataSourceTencentCloudRumOfflineLogConfigRead,
28+
Schema: map[string]*schema.Schema{
29+
"project_key": {
30+
Type: schema.TypeString,
31+
Required: true,
32+
Description: "Unique project key for reporting.",
33+
},
34+
35+
"unique_id_set": {
36+
Type: schema.TypeSet,
37+
Elem: &schema.Schema{
38+
Type: schema.TypeString,
39+
},
40+
Computed: true,
41+
Description: "Unique identifier of the user to be listened on(aid or uin).",
42+
},
43+
44+
"msg": {
45+
Type: schema.TypeString,
46+
Computed: true,
47+
Description: "API call information.",
48+
},
49+
50+
"result_output_file": {
51+
Type: schema.TypeString,
52+
Optional: true,
53+
Description: "Used to save results.",
54+
},
55+
},
56+
}
57+
}
58+
59+
func dataSourceTencentCloudRumOfflineLogConfigRead(d *schema.ResourceData, meta interface{}) error {
60+
defer logElapsed("data_source.tencentcloud_rum_offline_log_config.read")()
61+
defer inconsistentCheck(d, meta)()
62+
63+
logId := getLogId(contextNil)
64+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
65+
var projectKey string
66+
67+
paramMap := make(map[string]interface{})
68+
if v, ok := d.GetOk("project_key"); ok {
69+
projectKey = v.(string)
70+
paramMap["project_key"] = helper.String(v.(string))
71+
}
72+
73+
rumService := RumService{client: meta.(*TencentCloudClient).apiV3Conn}
74+
75+
var logConfigs *rum.DescribeOfflineLogConfigsResponseParams
76+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
77+
results, e := rumService.DescribeRumOfflineLogConfigByFilter(ctx, paramMap)
78+
if e != nil {
79+
return retryError(e)
80+
}
81+
logConfigs = results
82+
return nil
83+
})
84+
if err != nil {
85+
log.Printf("[CRITAL]%s read Rum uniqueIDSet failed, reason:%+v", logId, err)
86+
return err
87+
}
88+
89+
if logConfigs == nil {
90+
return fmt.Errorf("Query by id %v is empty", projectKey)
91+
}
92+
93+
var uniqueID []string
94+
if logConfigs.UniqueIDSet != nil && len(logConfigs.UniqueIDSet) > 0 {
95+
for _, v := range logConfigs.UniqueIDSet {
96+
uniqueID = append(uniqueID, *v)
97+
}
98+
_ = d.Set("unique_id_set", uniqueID)
99+
}
100+
101+
if logConfigs.Msg != nil {
102+
_ = d.Set("msg", *logConfigs.Msg)
103+
}
104+
105+
d.SetId(helper.DataResourceIdsHash(uniqueID))
106+
107+
output, ok := d.GetOk("result_output_file")
108+
if ok && output.(string) != "" {
109+
if e := writeToFile(output.(string), map[string]interface{}{
110+
"project_key": projectKey,
111+
"unique_id_set": uniqueID,
112+
"msg": *logConfigs.Msg,
113+
}); e != nil {
114+
return e
115+
}
116+
}
117+
118+
return nil
119+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
7+
)
8+
9+
// go test -i; go test -test.run TestAccTencentCloudRumOfflineLogConfigDataSource -v
10+
func TestAccTencentCloudRumOfflineLogConfigDataSource(t *testing.T) {
11+
t.Parallel()
12+
13+
resource.Test(t, resource.TestCase{
14+
PreCheck: func() { testAccPreCheck(t) },
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccDataSourceRumOfflineLogConfig,
19+
Check: resource.ComposeTestCheckFunc(
20+
testAccCheckTencentCloudDataSourceID("data.tencentcloud_rum_offline_log_config.offlineLogConfig"),
21+
resource.TestCheckResourceAttr("data.tencentcloud_rum_offline_log_config.offlineLogConfig", "project_key", "ZEYrYfvaYQ30jRdmPx"),
22+
resource.TestCheckResourceAttrSet("data.tencentcloud_rum_offline_log_config.offlineLogConfig", "unique_id_set.#"),
23+
),
24+
},
25+
},
26+
})
27+
}
28+
29+
const testAccDataSourceRumOfflineLogConfig = `
30+
31+
data "tencentcloud_rum_offline_log_config" "offlineLogConfig" {
32+
project_key = "ZEYrYfvaYQ30jRdmPx"
33+
}
34+
35+
`

0 commit comments

Comments
 (0)