Skip to content

Commit 4b6f714

Browse files
authored
feat(mqtt): [122438056] add new resource (#3244)
* add * add * add * add * add * add * add * add * add * add
1 parent 18a785a commit 4b6f714

40 files changed

+6182
-200
lines changed

.changelog/3244.txt

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
```release-note:new-data-source
2+
tencentcloud_mqtt_registration_code
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_mqtt_user
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_mqtt_jwt_authenticator
11+
```
12+
13+
```release-note:new-resource
14+
tencentcloud_mqtt_jwks_authenticator
15+
```
16+
17+
```release-note:new-resource
18+
tencentcloud_mqtt_http_authenticator
19+
```

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1107
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1078
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1129
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1128
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1111
@@ -113,7 +113,7 @@ require (
113113
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993
114114
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860
115115
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dasb v1.0.970
116-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1099
116+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1130
117117
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831
118118
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/region v1.0.920
119119
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tcss v1.0.1031

go.sum

+4
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128 h1:NGn
939939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
940940
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1129 h1:T9WMHYVasPNH3zcDNoaLL+9jUk04PcOZznDvJ6Dykr8=
941941
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1129/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
942+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130 h1:pjtrqJUaidq1fFWwPvBorq7FScq0LXiQ7pZjJZx3Jsc=
943+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
942944
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
943945
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
944946
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
@@ -991,6 +993,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.853 h1:abGpWsA
991993
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.853/go.mod h1:xIprIT+IW+3Fj05GCWmgvxJOhICqFGoW4Ef77cDD2JQ=
992994
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1099 h1:HL7Clg1JG3VAwiCqfQi6nfsJbrW2XINujiGOFzCDoQY=
993995
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1099/go.mod h1:6dLvPs3g5fLg6f9LXskqAPq+8R9UHf4ulFFWpILd45E=
996+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1130 h1:2xpOVOz7a/qpDBmT6iRqu2JkaO2qy/KY/d0MhuZwPEU=
997+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1130/go.mod h1:BtUOe+YtbtNuZS7zR4sttSE7GkXHU7GDjNQHxPk59T4=
994998
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831 h1:oyazF5wgAgoinGo/SDGfUReE3JFxqcpI6/pstWhK7yE=
995999
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831/go.mod h1:2WuTlTnKCnZoa6l0JxY9GNfo0UG6nU7AEsljF8rMMsM=
9961000
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1038 h1:BJqvIa+Z7bt1Y2VN9wZSye7Bq2RaVrRw1Rt50TwsgsM=

tencentcloud/provider.go

+7
Original file line numberDiff line numberDiff line change
@@ -1176,6 +1176,7 @@ func Provider() *schema.Provider {
11761176
"tencentcloud_cdwpg_instances": cdwpg.DataSourceTencentCloudCdwpgInstances(),
11771177
"tencentcloud_cdwpg_log": cdwpg.DataSourceTencentCloudCdwpgLog(),
11781178
"tencentcloud_cdwpg_nodes": cdwpg.DataSourceTencentCloudCdwpgNodes(),
1179+
"tencentcloud_mqtt_registration_code": mqtt.DataSourceTencentCloudMqttRegistrationCode(),
11791180
},
11801181

11811182
ResourcesMap: map[string]*schema.Resource{
@@ -2264,6 +2265,12 @@ func Provider() *schema.Provider {
22642265
"tencentcloud_mqtt_instance": mqtt.ResourceTencentCloudMqttInstance(),
22652266
"tencentcloud_mqtt_instance_public_endpoint": mqtt.ResourceTencentCloudMqttInstancePublicEndpoint(),
22662267
"tencentcloud_mqtt_topic": mqtt.ResourceTencentCloudMqttTopic(),
2268+
"tencentcloud_mqtt_ca_certificate": mqtt.ResourceTencentCloudMqttCaCertificate(),
2269+
"tencentcloud_mqtt_device_certificate": mqtt.ResourceTencentCloudMqttDeviceCertificate(),
2270+
"tencentcloud_mqtt_user": mqtt.ResourceTencentCloudMqttUser(),
2271+
"tencentcloud_mqtt_jwt_authenticator": mqtt.ResourceTencentCloudMqttJwtAuthenticator(),
2272+
"tencentcloud_mqtt_jwks_authenticator": mqtt.ResourceTencentCloudMqttJwksAuthenticator(),
2273+
"tencentcloud_mqtt_http_authenticator": mqtt.ResourceTencentCloudMqttHttpAuthenticator(),
22672274
},
22682275

22692276
ConfigureFunc: providerConfigure,

tencentcloud/provider.md

+7-1
Original file line numberDiff line numberDiff line change
@@ -2292,7 +2292,13 @@ Resource
22922292
tencentcloud_tcss_image_registry
22932293

22942294
TDMQ for MQTT(MQTT)
2295+
Data Source
2296+
tencentcloud_mqtt_registration_code
22952297
Resource
22962298
tencentcloud_mqtt_instance
22972299
tencentcloud_mqtt_instance_public_endpoint
2298-
tencentcloud_mqtt_topic
2300+
tencentcloud_mqtt_topic
2301+
tencentcloud_mqtt_user
2302+
tencentcloud_mqtt_jwt_authenticator
2303+
tencentcloud_mqtt_jwks_authenticator
2304+
tencentcloud_mqtt_http_authenticator
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package mqtt
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
mqttv20240516 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt/v20240516"
10+
11+
tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
12+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
13+
)
14+
15+
func DataSourceTencentCloudMqttRegistrationCode() *schema.Resource {
16+
return &schema.Resource{
17+
Read: dataSourceTencentCloudMqttRegistrationCodeRead,
18+
Schema: map[string]*schema.Schema{
19+
"instance_id": {
20+
Type: schema.TypeString,
21+
Required: true,
22+
Description: "Instance ID.",
23+
},
24+
25+
"registration_code": {
26+
Type: schema.TypeString,
27+
Computed: true,
28+
Description: "Registration code.",
29+
},
30+
31+
"result_output_file": {
32+
Type: schema.TypeString,
33+
Optional: true,
34+
Description: "Used to save results.",
35+
},
36+
},
37+
}
38+
}
39+
40+
func dataSourceTencentCloudMqttRegistrationCodeRead(d *schema.ResourceData, meta interface{}) error {
41+
defer tccommon.LogElapsed("data_source.tencentcloud_mqtt_registration_code.read")()
42+
defer tccommon.InconsistentCheck(d, meta)()
43+
44+
var (
45+
logId = tccommon.GetLogId(nil)
46+
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
47+
service = MqttService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
48+
instanceId string
49+
)
50+
51+
paramMap := make(map[string]interface{})
52+
if v, ok := d.GetOk("instance_id"); ok {
53+
paramMap["InstanceId"] = helper.String(v.(string))
54+
instanceId = v.(string)
55+
}
56+
57+
var respData *mqttv20240516.ApplyRegistrationCodeResponseParams
58+
reqErr := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
59+
result, e := service.DescribeMqttRegistrationCodeByFilter(ctx, paramMap)
60+
if e != nil {
61+
return tccommon.RetryError(e)
62+
}
63+
64+
if result == nil {
65+
return resource.NonRetryableError(fmt.Errorf("ApplyRegistrationCode response is nil."))
66+
}
67+
68+
respData = result
69+
return nil
70+
})
71+
72+
if reqErr != nil {
73+
return reqErr
74+
}
75+
76+
if respData.InstanceId != nil {
77+
_ = d.Set("instance_id", respData.InstanceId)
78+
}
79+
80+
if respData.RegistrationCode != nil {
81+
_ = d.Set("registration_code", respData.RegistrationCode)
82+
}
83+
84+
d.SetId(instanceId)
85+
output, ok := d.GetOk("result_output_file")
86+
if ok && output.(string) != "" {
87+
if e := tccommon.WriteToFile(output.(string), d); e != nil {
88+
return e
89+
}
90+
}
91+
92+
return nil
93+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
Use this data source to query detailed information of MQTT registration code
2+
3+
Example Usage
4+
5+
```hcl
6+
data "tencentcloud_mqtt_registration_code" "example" {
7+
instance_id = "mqtt-zxjwkr98"
8+
}
9+
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package mqtt_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
8+
tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
9+
)
10+
11+
func TestAccTencentCloudMqttRegistrationCodeDataSource_basic(t *testing.T) {
12+
t.Parallel()
13+
resource.Test(t, resource.TestCase{
14+
PreCheck: func() {
15+
tcacctest.AccPreCheck(t)
16+
},
17+
Providers: tcacctest.AccProviders,
18+
Steps: []resource.TestStep{{
19+
Config: testAccMqttRegistrationCodeDataSource,
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttrSet("data.tencentcloud_mqtt_registration_code.example", "id"),
22+
resource.TestCheckResourceAttrSet("data.tencentcloud_mqtt_registration_code.example", "instance_id"),
23+
),
24+
}},
25+
})
26+
}
27+
28+
const testAccMqttRegistrationCodeDataSource = `
29+
data "tencentcloud_mqtt_registration_code" "example" {
30+
instance_id = "mqtt-zxjwkr98"
31+
}
32+
`

0 commit comments

Comments
 (0)