Skip to content

Commit 042e9b7

Browse files
authored
feat: support eb platform (#2180)
* feat: support eb datasource * feat: add changelog * fix: modify test
1 parent 9e37bf3 commit 042e9b7

18 files changed

+1564
-396
lines changed

.changelog/2180.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
```release-note:new-data-source
2+
tencentcloud_eb_platform_event_names
3+
```
4+
5+
```release-note:new-data-source
6+
tencentcloud_eb_platform_event_patterns
7+
```
8+
9+
```release-note:new-data-source
10+
tencentcloud_eb_platform_products
11+
```

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ require (
5555
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.539
5656
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/domain v1.0.414
5757
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.628
58-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb v1.0.715
58+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb v1.0.760
5959
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr v1.0.725
6060
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es v1.0.699
6161
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.514

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -906,6 +906,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.628 h1:cnhe9uh
906906
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dts v1.0.628/go.mod h1:JxTXEld643DHk5HeQe4xIvuuoxsCmbTjgmE64Mtrdxw=
907907
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb v1.0.715 h1:k9wDdxbFD29m2T6B1j5qnpWjVUUVP02vmTZB/m4AVaI=
908908
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb v1.0.715/go.mod h1:JoFrUxweQaDBzl5jvphkz8uIxvm+pugI25kY8aUdIAo=
909+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb v1.0.760 h1:IKP2LFgJwbnP4IyQQw0k2gdVrd8H8e8X8TL/cIuCHEk=
910+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb v1.0.760/go.mod h1:pSQXTeuC6BahiUIfssVqvL1/BoXccLkyD7nJ+tKgygw=
909911
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr v1.0.725 h1:r2klzw/HohGsw/piykh3QW5Ft8+7kl0y5KlgNQ8TdAc=
910912
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/emr v1.0.725/go.mod h1:SW2tOlPfjXsCTKU2fYwG5Ydt8w2ZmrK8p3WBgm7sTTE=
911913
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es v1.0.699 h1:7lFObucmWErYOh+5/AzpgerUAFoO72XqhXrAzFltTIo=
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
/*
2+
Use this data source to query detailed information of eb platform_event_names
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_eb_platform_event_names" "platform_event_names" {
8+
product_type = ""
9+
}
10+
```
11+
*/
12+
package tencentcloud
13+
14+
import (
15+
"context"
16+
17+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
18+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
19+
eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416"
20+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
21+
)
22+
23+
func dataSourceTencentCloudEbPlatformEventNames() *schema.Resource {
24+
return &schema.Resource{
25+
Read: dataSourceTencentCloudEbPlateformRead,
26+
Schema: map[string]*schema.Schema{
27+
"product_type": {
28+
Required: true,
29+
Type: schema.TypeString,
30+
Description: "Platform product event type.",
31+
},
32+
33+
"event_names": {
34+
Computed: true,
35+
Type: schema.TypeList,
36+
Description: "Platform product list.",
37+
Elem: &schema.Resource{
38+
Schema: map[string]*schema.Schema{
39+
"event_name": {
40+
Type: schema.TypeString,
41+
Computed: true,
42+
Description: "Event name.Note: This field may return null, indicating that no valid value can be obtained.",
43+
},
44+
"event_type": {
45+
Type: schema.TypeString,
46+
Computed: true,
47+
Description: "Event type.Note: This field may return null, indicating that no valid value can be obtained.",
48+
},
49+
},
50+
},
51+
},
52+
53+
"result_output_file": {
54+
Type: schema.TypeString,
55+
Optional: true,
56+
Description: "Used to save results.",
57+
},
58+
},
59+
}
60+
}
61+
62+
func dataSourceTencentCloudEbPlateformRead(d *schema.ResourceData, meta interface{}) error {
63+
defer logElapsed("data_source.tencentcloud_eb_platform_event_names.read")()
64+
defer inconsistentCheck(d, meta)()
65+
66+
logId := getLogId(contextNil)
67+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
68+
69+
var productType string
70+
paramMap := make(map[string]interface{})
71+
if v, ok := d.GetOk("product_type"); ok {
72+
productType = v.(string)
73+
paramMap["ProductType"] = helper.String(v.(string))
74+
}
75+
76+
service := EbService{client: meta.(*TencentCloudClient).apiV3Conn}
77+
78+
var eventNames []*eb.PlatformEventDetail
79+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
80+
result, e := service.DescribeEbPlateformByFilter(ctx, paramMap)
81+
if e != nil {
82+
return retryError(e)
83+
}
84+
eventNames = result
85+
return nil
86+
})
87+
if err != nil {
88+
return err
89+
}
90+
91+
ids := make([]string, 0, len(eventNames))
92+
tmpList := make([]map[string]interface{}, 0, len(eventNames))
93+
if eventNames != nil {
94+
for _, platformEventDetail := range eventNames {
95+
platformEventDetailMap := map[string]interface{}{}
96+
97+
if platformEventDetail.EventName != nil {
98+
platformEventDetailMap["event_name"] = platformEventDetail.EventName
99+
}
100+
101+
if platformEventDetail.EventType != nil {
102+
platformEventDetailMap["event_type"] = platformEventDetail.EventType
103+
ids = append(ids, *platformEventDetail.EventType)
104+
}
105+
106+
tmpList = append(tmpList, platformEventDetailMap)
107+
}
108+
109+
_ = d.Set("event_names", tmpList)
110+
}
111+
112+
d.SetId(helper.DataResourceIdsHash(append(ids, productType)))
113+
output, ok := d.GetOk("result_output_file")
114+
if ok && output.(string) != "" {
115+
if e := writeToFile(output.(string), tmpList); e != nil {
116+
return e
117+
}
118+
}
119+
return nil
120+
}
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/v2/helper/resource"
7+
)
8+
9+
// go test -test.run TestAccTencentCloudEbPlatformEventNamesDataSource_basic -v
10+
func TestAccTencentCloudEbPlatformEventNamesDataSource_basic(t *testing.T) {
11+
t.Parallel()
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccStepSetRegion(t, "ap-chongqing")
15+
testAccPreCheck(t)
16+
},
17+
Providers: testAccProviders,
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccEbPlatformEventNamesDataSource,
21+
Check: resource.ComposeTestCheckFunc(
22+
testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_platform_event_names.platform_event_names"),
23+
),
24+
},
25+
},
26+
})
27+
}
28+
29+
const testAccEbPlatformEventNamesDataSource = `
30+
31+
data "tencentcloud_eb_platform_event_names" "platform_event_names" {
32+
product_type = "eb_platform_test"
33+
}
34+
35+
`
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/*
2+
Use this data source to query detailed information of eb platform_event_patterns
3+
4+
Example Usage
5+
6+
```hcl
7+
data "tencentcloud_eb_platform_event_patterns" "platform_event_patterns" {
8+
product_type = ""
9+
}
10+
```
11+
*/
12+
package tencentcloud
13+
14+
import (
15+
"context"
16+
17+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
18+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
19+
eb "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/eb/v20210416"
20+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
21+
)
22+
23+
func dataSourceTencentCloudEbPlatformEventPatterns() *schema.Resource {
24+
return &schema.Resource{
25+
Read: dataSourceTencentCloudEbPlatformEventPatternsRead,
26+
Schema: map[string]*schema.Schema{
27+
"product_type": {
28+
Required: true,
29+
Type: schema.TypeString,
30+
Description: "Platform product type.",
31+
},
32+
33+
"event_patterns": {
34+
Computed: true,
35+
Type: schema.TypeList,
36+
Description: "Platform product event matching rules.",
37+
Elem: &schema.Resource{
38+
Schema: map[string]*schema.Schema{
39+
"event_name": {
40+
Type: schema.TypeString,
41+
Computed: true,
42+
Description: "Platform event name.Note: This field may return null, indicating that no valid value can be obtained.",
43+
},
44+
"event_pattern": {
45+
Type: schema.TypeString,
46+
Computed: true,
47+
Description: "Platform event matching rules.Note: This field may return null, indicating that no valid value can be obtained.",
48+
},
49+
},
50+
},
51+
},
52+
53+
"result_output_file": {
54+
Type: schema.TypeString,
55+
Optional: true,
56+
Description: "Used to save results.",
57+
},
58+
},
59+
}
60+
}
61+
62+
func dataSourceTencentCloudEbPlatformEventPatternsRead(d *schema.ResourceData, meta interface{}) error {
63+
defer logElapsed("data_source.tencentcloud_eb_platform_event_patterns.read")()
64+
defer inconsistentCheck(d, meta)()
65+
66+
logId := getLogId(contextNil)
67+
68+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
69+
70+
var productType string
71+
paramMap := make(map[string]interface{})
72+
if v, ok := d.GetOk("product_type"); ok {
73+
productType = v.(string)
74+
paramMap["ProductType"] = helper.String(v.(string))
75+
}
76+
77+
service := EbService{client: meta.(*TencentCloudClient).apiV3Conn}
78+
79+
var eventPatterns []*eb.PlatformEventSummary
80+
81+
err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
82+
result, e := service.DescribeEbPlatformEventPatternsByFilter(ctx, paramMap)
83+
if e != nil {
84+
return retryError(e)
85+
}
86+
eventPatterns = result
87+
return nil
88+
})
89+
if err != nil {
90+
return err
91+
}
92+
93+
ids := make([]string, 0, len(eventPatterns))
94+
tmpList := make([]map[string]interface{}, 0, len(eventPatterns))
95+
96+
if eventPatterns != nil {
97+
for _, platformEventSummary := range eventPatterns {
98+
platformEventSummaryMap := map[string]interface{}{}
99+
100+
if platformEventSummary.EventName != nil {
101+
platformEventSummaryMap["event_name"] = platformEventSummary.EventName
102+
}
103+
104+
if platformEventSummary.EventPattern != nil {
105+
platformEventSummaryMap["event_pattern"] = platformEventSummary.EventPattern
106+
ids = append(ids, *platformEventSummary.EventPattern)
107+
}
108+
tmpList = append(tmpList, platformEventSummaryMap)
109+
}
110+
111+
_ = d.Set("event_patterns", tmpList)
112+
}
113+
114+
d.SetId(helper.DataResourceIdsHash(append(ids, productType)))
115+
output, ok := d.GetOk("result_output_file")
116+
if ok && output.(string) != "" {
117+
if e := writeToFile(output.(string), tmpList); e != nil {
118+
return e
119+
}
120+
}
121+
return nil
122+
}
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/v2/helper/resource"
7+
)
8+
9+
// go test -test.run TestAccTencentCloudEbPlatformEventPatternsDataSource_basic -v
10+
func TestAccTencentCloudEbPlatformEventPatternsDataSource_basic(t *testing.T) {
11+
t.Parallel()
12+
resource.Test(t, resource.TestCase{
13+
PreCheck: func() {
14+
testAccStepSetRegion(t, "ap-chongqing")
15+
testAccPreCheck(t)
16+
},
17+
Providers: testAccProviders,
18+
Steps: []resource.TestStep{
19+
{
20+
Config: testAccEbPlatformEventPatternsDataSource,
21+
Check: resource.ComposeTestCheckFunc(
22+
testAccCheckTencentCloudDataSourceID("data.tencentcloud_eb_platform_event_patterns.platform_event_patterns"),
23+
),
24+
},
25+
},
26+
})
27+
}
28+
29+
const testAccEbPlatformEventPatternsDataSource = `
30+
31+
data "tencentcloud_eb_platform_event_patterns" "platform_event_patterns" {
32+
product_type = "eb_platform_test"
33+
}
34+
35+
`

0 commit comments

Comments
 (0)