Skip to content

feat(mqtt): [122438056] add new resource #3244

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Mar 28, 2025
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
19 changes: 19 additions & 0 deletions .changelog/3244.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
```release-note:new-data-source
tencentcloud_mqtt_registration_code
```

```release-note:new-resource
tencentcloud_mqtt_user
```

```release-note:new-resource
tencentcloud_mqtt_jwt_authenticator
```

```release-note:new-resource
tencentcloud_mqtt_jwks_authenticator
```

```release-note:new-resource
tencentcloud_mqtt_http_authenticator
```
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.1107
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.1033
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.1078
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1129
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.1128
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.1111
Expand Down Expand Up @@ -113,7 +113,7 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dasb v1.0.970
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1099
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1130
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/region v1.0.920
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/tcss v1.0.1031
Expand Down
4 changes: 4 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -939,6 +939,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128 h1:NGn
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1128/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1129 h1:T9WMHYVasPNH3zcDNoaLL+9jUk04PcOZznDvJ6Dykr8=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1129/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130 h1:pjtrqJUaidq1fFWwPvBorq7FScq0LXiQ7pZjJZx3Jsc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1130/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993 h1:WlPgXldQCxt7qi5Xrc6j6zTrsXWzN5BcOGs7Irq7fwQ=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/controlcenter v1.0.993/go.mod h1:Z9U8zNtyuyKhjS0698wqsrG/kLx1TQ5CEixXBwVe7xY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/csip v1.0.860 h1:F3esKBIT3HW9+7Gt8cVgf8X06VdGIczpgLBUECzSEzU=
Expand Down Expand Up @@ -991,6 +993,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.853 h1:abGpWsA
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.853/go.mod h1:xIprIT+IW+3Fj05GCWmgvxJOhICqFGoW4Ef77cDD2JQ=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1099 h1:HL7Clg1JG3VAwiCqfQi6nfsJbrW2XINujiGOFzCDoQY=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1099/go.mod h1:6dLvPs3g5fLg6f9LXskqAPq+8R9UHf4ulFFWpILd45E=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1130 h1:2xpOVOz7a/qpDBmT6iRqu2JkaO2qy/KY/d0MhuZwPEU=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt v1.0.1130/go.mod h1:BtUOe+YtbtNuZS7zR4sttSE7GkXHU7GDjNQHxPk59T4=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831 h1:oyazF5wgAgoinGo/SDGfUReE3JFxqcpI6/pstWhK7yE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.831/go.mod h1:2WuTlTnKCnZoa6l0JxY9GNfo0UG6nU7AEsljF8rMMsM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.1038 h1:BJqvIa+Z7bt1Y2VN9wZSye7Bq2RaVrRw1Rt50TwsgsM=
Expand Down
7 changes: 7 additions & 0 deletions tencentcloud/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -1176,6 +1176,7 @@ func Provider() *schema.Provider {
"tencentcloud_cdwpg_instances": cdwpg.DataSourceTencentCloudCdwpgInstances(),
"tencentcloud_cdwpg_log": cdwpg.DataSourceTencentCloudCdwpgLog(),
"tencentcloud_cdwpg_nodes": cdwpg.DataSourceTencentCloudCdwpgNodes(),
"tencentcloud_mqtt_registration_code": mqtt.DataSourceTencentCloudMqttRegistrationCode(),
},

ResourcesMap: map[string]*schema.Resource{
Expand Down Expand Up @@ -2264,6 +2265,12 @@ func Provider() *schema.Provider {
"tencentcloud_mqtt_instance": mqtt.ResourceTencentCloudMqttInstance(),
"tencentcloud_mqtt_instance_public_endpoint": mqtt.ResourceTencentCloudMqttInstancePublicEndpoint(),
"tencentcloud_mqtt_topic": mqtt.ResourceTencentCloudMqttTopic(),
"tencentcloud_mqtt_ca_certificate": mqtt.ResourceTencentCloudMqttCaCertificate(),
"tencentcloud_mqtt_device_certificate": mqtt.ResourceTencentCloudMqttDeviceCertificate(),
"tencentcloud_mqtt_user": mqtt.ResourceTencentCloudMqttUser(),
"tencentcloud_mqtt_jwt_authenticator": mqtt.ResourceTencentCloudMqttJwtAuthenticator(),
"tencentcloud_mqtt_jwks_authenticator": mqtt.ResourceTencentCloudMqttJwksAuthenticator(),
"tencentcloud_mqtt_http_authenticator": mqtt.ResourceTencentCloudMqttHttpAuthenticator(),
},

ConfigureFunc: providerConfigure,
Expand Down
8 changes: 7 additions & 1 deletion tencentcloud/provider.md
Original file line number Diff line number Diff line change
Expand Up @@ -2292,7 +2292,13 @@ Resource
tencentcloud_tcss_image_registry

TDMQ for MQTT(MQTT)
Data Source
tencentcloud_mqtt_registration_code
Resource
tencentcloud_mqtt_instance
tencentcloud_mqtt_instance_public_endpoint
tencentcloud_mqtt_topic
tencentcloud_mqtt_topic
tencentcloud_mqtt_user
tencentcloud_mqtt_jwt_authenticator
tencentcloud_mqtt_jwks_authenticator
tencentcloud_mqtt_http_authenticator
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package mqtt

import (
"context"
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
mqttv20240516 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mqtt/v20240516"

tccommon "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/common"
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
)

func DataSourceTencentCloudMqttRegistrationCode() *schema.Resource {
return &schema.Resource{
Read: dataSourceTencentCloudMqttRegistrationCodeRead,
Schema: map[string]*schema.Schema{
"instance_id": {
Type: schema.TypeString,
Required: true,
Description: "Instance ID.",
},

"registration_code": {
Type: schema.TypeString,
Computed: true,
Description: "Registration code.",
},

"result_output_file": {
Type: schema.TypeString,
Optional: true,
Description: "Used to save results.",
},
},
}
}

func dataSourceTencentCloudMqttRegistrationCodeRead(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("data_source.tencentcloud_mqtt_registration_code.read")()
defer tccommon.InconsistentCheck(d, meta)()

var (
logId = tccommon.GetLogId(nil)
ctx = tccommon.NewResourceLifeCycleHandleFuncContext(context.Background(), logId, d, meta)
service = MqttService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
instanceId string
)

paramMap := make(map[string]interface{})
if v, ok := d.GetOk("instance_id"); ok {
paramMap["InstanceId"] = helper.String(v.(string))
instanceId = v.(string)
}

var respData *mqttv20240516.ApplyRegistrationCodeResponseParams
reqErr := resource.Retry(tccommon.ReadRetryTimeout, func() *resource.RetryError {
result, e := service.DescribeMqttRegistrationCodeByFilter(ctx, paramMap)
if e != nil {
return tccommon.RetryError(e)
}

if result == nil {
return resource.NonRetryableError(fmt.Errorf("ApplyRegistrationCode response is nil."))
}

respData = result
return nil
})

if reqErr != nil {
return reqErr
}

if respData.InstanceId != nil {
_ = d.Set("instance_id", respData.InstanceId)
}

if respData.RegistrationCode != nil {
_ = d.Set("registration_code", respData.RegistrationCode)
}

d.SetId(instanceId)
output, ok := d.GetOk("result_output_file")
if ok && output.(string) != "" {
if e := tccommon.WriteToFile(output.(string), d); e != nil {
return e
}
}

return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Use this data source to query detailed information of MQTT registration code

Example Usage

```hcl
data "tencentcloud_mqtt_registration_code" "example" {
instance_id = "mqtt-zxjwkr98"
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package mqtt_test

import (
"testing"

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

tcacctest "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/acctest"
)

func TestAccTencentCloudMqttRegistrationCodeDataSource_basic(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() {
tcacctest.AccPreCheck(t)
},
Providers: tcacctest.AccProviders,
Steps: []resource.TestStep{{
Config: testAccMqttRegistrationCodeDataSource,
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("data.tencentcloud_mqtt_registration_code.example", "id"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mqtt_registration_code.example", "instance_id"),
),
}},
})
}

const testAccMqttRegistrationCodeDataSource = `
data "tencentcloud_mqtt_registration_code" "example" {
instance_id = "mqtt-zxjwkr98"
}
`
Loading
Loading