Skip to content
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
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.291
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.358
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.359
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.351
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.359
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.335
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dc v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.294
Expand Down
6 changes: 4 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -494,14 +494,16 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.351/go.mod
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.353 h1:rFkcKuLFxt2xolSWbyeznetTBw9Cyhe1ycILmEkE1Pk=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.353/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.357/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.358 h1:RYuj1gziHnMubqjsq6Be7+mv8QhSboD4FKYauEXWheI=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.358/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.359 h1:m7Ga+AAWcngpWVIU6TjtyJ2MZupZvyY4soTNKDYQVVs=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.359/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.199 h1:ajgJogYSIQ5u1PIbiV5nsvr5K0fYpm1/T7Dy+mxEM6U=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.199/go.mod h1:AqyM/ZZMD7q5mHBqNY9YImbSpEpoEe7E/vrTbUWX+po=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.351 h1:zqJsH5pxGT57La7NAOOyMQxsuM11pupNBwV1dzXcT24=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.351/go.mod h1:IZH6xMdFwRrdxy6nEOdxdor+1AwDoOu/GG4PfPajwzM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.199 h1:L0twFkJMOZzLkX08w8S14nX6oanD8YxMQDIaYXVim6A=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.199/go.mod h1:AvfGfE5JXkyMV6uGd6B++SIDp+VV/SSphg1q2RiANFw=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.359 h1:cNKqelPgUxrJkLY0Azd2QHr/UMYOPPnmqs88clt2akk=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.359/go.mod h1:GlTYjlrf8EKEMu+Z2MXfaM2/nHGUBBF/huBBJqGyGwI=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.199 h1:CzZEt6l0qDjZUW8D8rUNQ/sKw6z6oYYdWuby3hlsn8g=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.199/go.mod h1:pz4s3nOhoB9cY0+uWzifuwr7lfh/Gvi1rv0ADxpPzD4=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.335 h1:D8qrelkK5udv8RzJJIABMzItGIyaZoYnxEVeIsYqiNw=
Expand Down
163 changes: 163 additions & 0 deletions tencentcloud/data_source_tc_mysql_default_params.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
/*
Provide a datasource to query default mysql parameters.

Example Usage

```hcl
resource "tencentcloud_mysql_default_params" "mysql_57" {
db_version = "5.7"
}
```


*/
package tencentcloud

import (
"context"
"fmt"
"math/rand"

"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
)

func datasourceTencentCloudMysqlDefaultParams() *schema.Resource {
return &schema.Resource{
Read: datasourceTencentCloudMysqlDefaultParamsRead,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Schema: map[string]*schema.Schema{
"db_version": {
Type: schema.TypeString,
Optional: true,
Description: "MySQL database version.",
},
//"template_type": {
// Type: schema.TypeString,
// Optional: true,
// Description: "",
//},
"result_output_file": {
Type: schema.TypeString,
Optional: true,
Description: "Used for save results.",
},
"param_list": {
Type: schema.TypeList,
Computed: true,
Description: "List of param detail.",
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"current_value": {
Type: schema.TypeString,
Computed: true,
Description: "Param current value.",
},
"default": {
Type: schema.TypeString,
Computed: true,
Description: "Param default value.",
},
"description": {
Type: schema.TypeString,
Computed: true,
Description: "Param description.",
},
"enum_value": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Schema{Type: schema.TypeString},
Description: "Params available values if type of param is enum.",
},
"max": {
Type: schema.TypeInt,
Computed: true,
Description: "Param maximum value if type of param is integer.",
},
"min": {
Type: schema.TypeInt,
Computed: true,
Description: "Param minimum value if type of param is integer.",
},
"name": {
Type: schema.TypeString,
Computed: true,
Description: "Param key name.",
},
"need_reboot": {
Type: schema.TypeInt,
Computed: true,
Description: "Indicates weather the database instance reboot if param modified.",
},
"param_type": {
Type: schema.TypeString,
Computed: true,
Description: "Type of param.",
},
},
},
},
},
}
}

func datasourceTencentCloudMysqlDefaultParamsRead(d *schema.ResourceData, meta interface{}) error {
defer logElapsed("datasource.tencentcloud_mysql_default_params.read")()
defer inconsistentCheck(d, meta)()

logId := getLogId(contextNil)
ctx := context.WithValue(context.TODO(), logIdKey, logId)

client := meta.(*TencentCloudClient).apiV3Conn
service := MysqlService{client: client}

engineVersion := d.Get("db_version").(string)

params, err := service.DescribeDefaultParameters(ctx, engineVersion)

if err != nil {
d.SetId("")
return err
}

d.SetId(fmt.Sprintf("mysql-params-%d", rand.Intn(1000)))

paramList := make([]map[string]interface{}, 0, len(params))

for i := range params {
item := params[i]
param := map[string]interface{}{
"current_value": item.CurrentValue,
"default": item.Default,
"description": item.Description,
"max": item.Max,
"min": item.Min,
"name": item.Name,
"need_reboot": item.NeedReboot,
"param_type": item.ParamType,
}

if item.EnumValue != nil {
param["enum_value"] = helper.StringsInterfaces(item.EnumValue)
}
paramList = append(paramList, param)
}

if len(paramList) > 0 {
err = d.Set("param_list", paramList)
if err != nil {
return err
}
}

output, ok := d.GetOk("result_output_file")
if ok && output.(string) != "" {
if e := writeToFile(output.(string), params); e != nil {
return e
}
}

return nil
}
38 changes: 38 additions & 0 deletions tencentcloud/data_source_tc_mysql_default_params_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package tencentcloud

import (
"testing"

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

func TestAccTencentCloudDataSourceMysqlDefaultParams(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccDataSourceMysqlDefaultParamBasic,
Check: resource.ComposeAggregateTestCheckFunc(
resource.TestCheckResourceAttr("data.tencentcloud_mysql_default_params.mysql_57", "db_version", "5.7"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.#"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.0.current_value"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.0.default"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.0.description"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.0.max"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.0.min"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.0.name"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.0.need_reboot"),
resource.TestCheckResourceAttrSet("data.tencentcloud_mysql_default_params.mysql_57", "param_list.0.param_type"),
),
},
},
})
}

const testAccDataSourceMysqlDefaultParamBasic = `
data "tencentcloud_mysql_default_params" "mysql_57" {
db_version = "5.7"
}
`
24 changes: 24 additions & 0 deletions tencentcloud/extension_cynosdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -316,6 +316,30 @@ func TencentCynosdbClusterBaseInfo() map[string]*schema.Schema {
},
},
},
"param_items": {
Type: schema.TypeList,
Optional: true,
Description: "Specify parameter list of database. Use `data.tencentcloud_mysql_default_params` to query available parameter details.",
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Required: true,
Description: "Name of param, e.g. `character_set_server`.",
},
"old_value": {
Type: schema.TypeString,
Optional: true,
Description: "Param old value, indicates the value which already set, this value is required when modifying current_value.",
},
"current_value": {
Type: schema.TypeString,
Required: true,
Description: "Param expected value to set.",
},
},
},
},
}

for k, v := range TencentCynosdbInstanceBaseInfo() {
Expand Down
2 changes: 2 additions & 0 deletions tencentcloud/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,7 @@ MySQL
tencentcloud_mysql_backup_list
tencentcloud_mysql_instance
tencentcloud_mysql_parameter_list
tencentcloud_mysql_default_params
tencentcloud_mysql_zone_config

Resource
Expand Down Expand Up @@ -758,6 +759,7 @@ func Provider() terraform.ResourceProvider {
"tencentcloud_mysql_backup_list": dataSourceTencentMysqlBackupList(),
"tencentcloud_mysql_zone_config": dataSourceTencentMysqlZoneConfig(),
"tencentcloud_mysql_parameter_list": dataSourceTencentCloudMysqlParameterList(),
"tencentcloud_mysql_default_params": datasourceTencentCloudMysqlDefaultParams(),
"tencentcloud_mysql_instance": dataSourceTencentCloudMysqlInstance(),
"tencentcloud_cos_bucket_object": dataSourceTencentCloudCosBucketObject(),
"tencentcloud_cos_buckets": dataSourceTencentCloudCosBuckets(),
Expand Down
Loading