Skip to content

Commit c0ed83e

Browse files
committed
flatten trocket
1 parent a141ae6 commit c0ed83e

18 files changed

+2330
-87
lines changed

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ require (
4242
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.693
4343
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4444
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.711
45-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.745
45+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.746
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692
@@ -88,7 +88,7 @@ require (
8888
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tem v1.0.578
8989
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/teo v1.0.730
9090
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tke v1.0.691
91-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/trocket v1.0.744
91+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/trocket v1.0.746
9292
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tse v1.0.732
9393
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tsf v1.0.674
9494
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vod v1.0.199

go.sum

Lines changed: 13 additions & 55 deletions
Large diffs are not rendered by default.

tencentcloud/provider.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1448,6 +1448,8 @@ TDMQ for RocketMQ(trocket)
14481448
tencentcloud_tdmq_send_rocketmq_message
14491449
tencentcloud_tdmq_rocketmq_vip_instance
14501450
tencentcloud_trocket_rocketmq_instance
1451+
tencentcloud_trocket_rocketmq_topic
1452+
tencentcloud_trocket_rocketmq_consumer_group
14511453
14521454
TDMQ for RabbitMQ(trabbit)
14531455
Resource
@@ -2888,6 +2890,8 @@ func Provider() *schema.Provider {
28882890
"tencentcloud_tdmq_rocketmq_environment_role": resourceTencentCloudTdmqRocketmqEnvironmentRole(),
28892891
"tencentcloud_tdmq_rocketmq_vip_instance": resourceTencentCloudTdmqRocketmqVipInstance(),
28902892
"tencentcloud_trocket_rocketmq_instance": resourceTencentCloudTrocketRocketmqInstance(),
2893+
"tencentcloud_trocket_rocketmq_topic": resourceTencentCloudTrocketRocketmqTopic(),
2894+
"tencentcloud_trocket_rocketmq_consumer_group": resourceTencentCloudTrocketRocketmqConsumerGroup(),
28912895
"tencentcloud_dts_sync_job": resourceTencentCloudDtsSyncJob(),
28922896
"tencentcloud_dts_sync_config": resourceTencentCloudDtsSyncConfig(),
28932897
"tencentcloud_dts_sync_check_job_operation": resourceTencentCloudDtsSyncCheckJobOperation(),
Lines changed: 292 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,292 @@
1+
/*
2+
Provides a resource to create a trocket rocketmq_consumer_group
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_trocket_rocketmq_instance" "rocketmq_instance" {
8+
instance_type = "EXPERIMENT"
9+
name = "test"
10+
sku_code = "experiment_500"
11+
remark = "test"
12+
vpc_id = "vpc-xxxxxx"
13+
subnet_id = "subnet-xxxxx"
14+
tags = {
15+
tag_key = "rocketmq"
16+
tag_value = "5.x"
17+
}
18+
}
19+
20+
resource "tencentcloud_trocket_rocketmq_consumer_group" "rocketmq_consumer_group" {
21+
instance_id = tencentcloud_trocket_rocketmq_instance.rocketmq_instance.id
22+
consumer_group = "test_consumer_group"
23+
max_retry_times = 20
24+
consume_enable = false
25+
consume_message_orderly = true
26+
remark = "test for terraform"
27+
}
28+
```
29+
30+
Import
31+
32+
trocket rocketmq_consumer_group can be imported using the id, e.g.
33+
34+
```
35+
terraform import tencentcloud_trocket_rocketmq_consumer_group.rocketmq_consumer_group instanceId#consumerGroup
36+
```
37+
*/
38+
package tencentcloud
39+
40+
import (
41+
"context"
42+
"fmt"
43+
"log"
44+
"strings"
45+
46+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
47+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
48+
trocket "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/trocket/v20230308"
49+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
50+
)
51+
52+
func resourceTencentCloudTrocketRocketmqConsumerGroup() *schema.Resource {
53+
return &schema.Resource{
54+
Create: resourceTencentCloudTrocketRocketmqConsumerGroupCreate,
55+
Read: resourceTencentCloudTrocketRocketmqConsumerGroupRead,
56+
Update: resourceTencentCloudTrocketRocketmqConsumerGroupUpdate,
57+
Delete: resourceTencentCloudTrocketRocketmqConsumerGroupDelete,
58+
Importer: &schema.ResourceImporter{
59+
State: schema.ImportStatePassthrough,
60+
},
61+
Schema: map[string]*schema.Schema{
62+
"instance_id": {
63+
Required: true,
64+
Type: schema.TypeString,
65+
Description: "Instance ID.",
66+
},
67+
68+
"consumer_group": {
69+
Required: true,
70+
Type: schema.TypeString,
71+
Description: "Name of consumer group.",
72+
},
73+
74+
"max_retry_times": {
75+
Required: true,
76+
Type: schema.TypeInt,
77+
Description: "Max retry times.",
78+
},
79+
80+
"consume_enable": {
81+
Required: true,
82+
Type: schema.TypeBool,
83+
Description: "Whether to enable consumption.",
84+
},
85+
86+
"consume_message_orderly": {
87+
Required: true,
88+
Type: schema.TypeBool,
89+
Description: "`true`: Sequential delivery, `false`: Concurrent delivery.",
90+
},
91+
92+
"remark": {
93+
Optional: true,
94+
Type: schema.TypeString,
95+
Description: "remark.",
96+
},
97+
},
98+
}
99+
}
100+
101+
func resourceTencentCloudTrocketRocketmqConsumerGroupCreate(d *schema.ResourceData, meta interface{}) error {
102+
defer logElapsed("resource.tencentcloud_trocket_rocketmq_consumer_group.create")()
103+
defer inconsistentCheck(d, meta)()
104+
105+
logId := getLogId(contextNil)
106+
107+
var (
108+
request = trocket.NewCreateConsumerGroupRequest()
109+
response = trocket.NewCreateConsumerGroupResponse()
110+
instanceId string
111+
consumerGroup string
112+
)
113+
if v, ok := d.GetOk("instance_id"); ok {
114+
request.InstanceId = helper.String(v.(string))
115+
}
116+
117+
if v, ok := d.GetOk("consumer_group"); ok {
118+
request.ConsumerGroup = helper.String(v.(string))
119+
}
120+
121+
if v, ok := d.GetOkExists("max_retry_times"); ok {
122+
request.MaxRetryTimes = helper.IntInt64(v.(int))
123+
}
124+
125+
if v, ok := d.GetOkExists("consume_enable"); ok {
126+
request.ConsumeEnable = helper.Bool(v.(bool))
127+
}
128+
129+
if v, ok := d.GetOkExists("consume_message_orderly"); ok {
130+
request.ConsumeMessageOrderly = helper.Bool(v.(bool))
131+
}
132+
133+
if v, ok := d.GetOk("remark"); ok {
134+
request.Remark = helper.String(v.(string))
135+
}
136+
137+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
138+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseTrocketClient().CreateConsumerGroup(request)
139+
if e != nil {
140+
return retryError(e)
141+
} else {
142+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
143+
}
144+
response = result
145+
return nil
146+
})
147+
if err != nil {
148+
log.Printf("[CRITAL]%s create trocket rocketmqConsumerGroup failed, reason:%+v", logId, err)
149+
return err
150+
}
151+
152+
instanceId = *response.Response.InstanceId
153+
consumerGroup = *response.Response.ConsumerGroup
154+
d.SetId(instanceId + FILED_SP + consumerGroup)
155+
156+
return resourceTencentCloudTrocketRocketmqConsumerGroupRead(d, meta)
157+
}
158+
159+
func resourceTencentCloudTrocketRocketmqConsumerGroupRead(d *schema.ResourceData, meta interface{}) error {
160+
defer logElapsed("resource.tencentcloud_trocket_rocketmq_consumer_group.read")()
161+
defer inconsistentCheck(d, meta)()
162+
163+
logId := getLogId(contextNil)
164+
165+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
166+
167+
service := TrocketService{client: meta.(*TencentCloudClient).apiV3Conn}
168+
169+
idSplit := strings.Split(d.Id(), FILED_SP)
170+
if len(idSplit) != 2 {
171+
return fmt.Errorf("id is broken,%s", d.Id())
172+
}
173+
instanceId := idSplit[0]
174+
consumerGroup := idSplit[1]
175+
176+
rocketmqConsumerGroup, err := service.DescribeTrocketRocketmqConsumerGroupById(ctx, instanceId, consumerGroup)
177+
if err != nil {
178+
return err
179+
}
180+
181+
if rocketmqConsumerGroup == nil {
182+
d.SetId("")
183+
log.Printf("[WARN]%s resource `TrocketRocketmqConsumerGroup` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
184+
return nil
185+
}
186+
187+
_ = d.Set("instance_id", instanceId)
188+
_ = d.Set("consumer_group", consumerGroup)
189+
190+
if rocketmqConsumerGroup.MaxRetryTimes != nil {
191+
_ = d.Set("max_retry_times", rocketmqConsumerGroup.MaxRetryTimes)
192+
}
193+
194+
if rocketmqConsumerGroup.ConsumeEnable != nil {
195+
_ = d.Set("consume_enable", rocketmqConsumerGroup.ConsumeEnable)
196+
}
197+
198+
if rocketmqConsumerGroup.ConsumeMessageOrderly != nil {
199+
_ = d.Set("consume_message_orderly", rocketmqConsumerGroup.ConsumeMessageOrderly)
200+
}
201+
202+
if rocketmqConsumerGroup.Remark != nil {
203+
_ = d.Set("remark", rocketmqConsumerGroup.Remark)
204+
}
205+
206+
return nil
207+
}
208+
209+
func resourceTencentCloudTrocketRocketmqConsumerGroupUpdate(d *schema.ResourceData, meta interface{}) error {
210+
defer logElapsed("resource.tencentcloud_trocket_rocketmq_consumer_group.update")()
211+
defer inconsistentCheck(d, meta)()
212+
213+
logId := getLogId(contextNil)
214+
215+
request := trocket.NewModifyConsumerGroupRequest()
216+
217+
idSplit := strings.Split(d.Id(), FILED_SP)
218+
if len(idSplit) != 2 {
219+
return fmt.Errorf("id is broken,%s", d.Id())
220+
}
221+
instanceId := idSplit[0]
222+
consumerGroup := idSplit[1]
223+
224+
request.InstanceId = &instanceId
225+
request.ConsumerGroup = &consumerGroup
226+
227+
needChange := false
228+
229+
mutableArgs := []string{"max_retry_times", "consume_enable", "consume_message_orderly", "remark"}
230+
231+
for _, v := range mutableArgs {
232+
if d.HasChange(v) {
233+
needChange = true
234+
}
235+
}
236+
237+
if needChange {
238+
if v, ok := d.GetOkExists("max_retry_times"); ok {
239+
request.MaxRetryTimes = helper.IntInt64(v.(int))
240+
}
241+
242+
if v, ok := d.GetOkExists("consume_enable"); ok {
243+
request.ConsumeEnable = helper.Bool(v.(bool))
244+
}
245+
246+
if v, ok := d.GetOkExists("consume_message_orderly"); ok {
247+
request.ConsumeMessageOrderly = helper.Bool(v.(bool))
248+
}
249+
250+
if v, ok := d.GetOk("remark"); ok {
251+
request.Remark = helper.String(v.(string))
252+
}
253+
254+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
255+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseTrocketClient().ModifyConsumerGroup(request)
256+
if e != nil {
257+
return retryError(e)
258+
} else {
259+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
260+
}
261+
return nil
262+
})
263+
if err != nil {
264+
log.Printf("[CRITAL]%s update trocket rocketmqConsumerGroup failed, reason:%+v", logId, err)
265+
return err
266+
}
267+
}
268+
269+
return resourceTencentCloudTrocketRocketmqConsumerGroupRead(d, meta)
270+
}
271+
272+
func resourceTencentCloudTrocketRocketmqConsumerGroupDelete(d *schema.ResourceData, meta interface{}) error {
273+
defer logElapsed("resource.tencentcloud_trocket_rocketmq_consumer_group.delete")()
274+
defer inconsistentCheck(d, meta)()
275+
276+
logId := getLogId(contextNil)
277+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
278+
279+
service := TrocketService{client: meta.(*TencentCloudClient).apiV3Conn}
280+
idSplit := strings.Split(d.Id(), FILED_SP)
281+
if len(idSplit) != 2 {
282+
return fmt.Errorf("id is broken,%s", d.Id())
283+
}
284+
instanceId := idSplit[0]
285+
consumerGroup := idSplit[1]
286+
287+
if err := service.DeleteTrocketRocketmqConsumerGroupById(ctx, instanceId, consumerGroup); err != nil {
288+
return err
289+
}
290+
291+
return nil
292+
}

0 commit comments

Comments
 (0)