Skip to content

Commit 3132903

Browse files
authored
add mysql database (#2332)
* add mysql database * add changelog
1 parent 748e675 commit 3132903

File tree

14 files changed

+5548
-3677
lines changed

14 files changed

+5548
-3677
lines changed

.changelog/2332.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-resource
2+
tencentcloud_mysql_database
3+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ require (
3535
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cam v1.0.760
3636
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cat v1.0.760
3737
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.591
38-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.699
38+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.800
3939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.539
4040
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.745
4141
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.627
@@ -46,7 +46,7 @@ require (
4646
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.693
4747
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.711
49-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.798
49+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.800
5050
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
5151
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762
5252
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.692

go.sum

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -792,8 +792,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cat v1.0.760 h1:oGY4Iig
792792
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cat v1.0.760/go.mod h1:SoBOZr6fklP8zeHaq7XOnCd5xBypU2R94nOPafYX1J4=
793793
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.591 h1:TPGLjH6wqkA5Iirl6xCxFkWwrtCZ8ZmeF7ASzqUbsZA=
794794
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cbs v1.0.591/go.mod h1:nCAGfVTXZkVnurkbjF3b0FM6RwGztE9t8D9Ms1unaKo=
795-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.699 h1:LhFt0HW7xPS1KamfnNrPk5F7NVu7q72DO9usnxyQPQ4=
796-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.699/go.mod h1:wgCS1KCnSX7HbSI/mYghFSwfEDnZVeb3gwtPBXIppv4=
795+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.800 h1:VnnmCIaAXU7t0uwNtaLs990V7+V7/7viMpOytOT6GOE=
796+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.800/go.mod h1:8wiecMvcwN6785rTWLJmdm/Y7u1DjFmqI/iqiWwpm5o=
797797
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.539 h1:0L6nZhT2bToTc/n1z3HOpNgdu5VX5ulmqIuPY+8UozA=
798798
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.539/go.mod h1:6Syk7W5fdDf0BLvX+RXL5obQ6unkt3Id4aN2QqVrV6U=
799799
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdwch v1.0.745 h1:y3CtDHGwJ8VDpAlNjluxZMdPbj4MQTD0RFIwQjKei4Q=
@@ -847,10 +847,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.692/go.mod
847847
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.693/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
848848
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.695/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
849849
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.696/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
850-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.699/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
851850
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.711/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
852851
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.713/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
853-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.725/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
854852
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.729/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
855853
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.744/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
856854
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.745/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
@@ -874,8 +872,9 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.781/go.mod
874872
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.792/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
875873
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.794/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
876874
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.797/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
877-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.798 h1:d5L+5BkXhyja7siRWsc4sUqXwTooe8IlW4wduC2bcSg=
878875
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.798/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
876+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.800 h1:sQFdr2aQz+Z3wxI0BC0+yKQXwlo7q26u+yyPJcAuga4=
877+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.800/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
879878
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
880879
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
881880
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.762 h1:2egy69SP/wPsmnfozcQVZ6tUY6F6N/TpEe/7xtXrc/8=
@@ -988,7 +987,9 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199 h1:hMBLtiJ
988987
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/wss v1.0.199/go.mod h1:nnY91/H3j/Gu7V/oCA6Zeg8T5D3q36EUdBh4EjmHwqY=
989988
github.com/tencentyun/cos-go-sdk-v5 v0.7.42-0.20230629101357-7edd77448a0f h1:yTMDoBvFuXjZat10d98DIKbPnN9FQG+drt1SbNfMW5U=
990989
github.com/tencentyun/cos-go-sdk-v5 v0.7.42-0.20230629101357-7edd77448a0f/go.mod h1:LUFnaqRmGk6pEHOaRmdn2dCZR2j0cSsM5xowWFPTPao=
990+
github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA=
991991
github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0=
992+
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag=
992993
github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY=
993994
github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw=
994995
github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8=
@@ -1026,6 +1027,7 @@ github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37w
10261027
github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
10271028
github.com/wI2L/jsondiff v0.3.0 h1:iTzQ9u/d86GE9RsBzVHX88f2EA1vQUboHwLhSQFc1s4=
10281029
github.com/wI2L/jsondiff v0.3.0/go.mod h1:y1IMzNNjlSsk3IUoJdRJO7VRBtzMvRgyo4Vu0LdHpTc=
1030+
github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI=
10291031
github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0=
10301032
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8=
10311033
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
@@ -1064,6 +1066,7 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
10641066
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
10651067
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
10661068
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
1069+
go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI=
10671070
go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4=
10681071
go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
10691072
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
@@ -1295,6 +1298,7 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
12951298
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
12961299
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
12971300
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
1301+
golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw=
12981302
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
12991303
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
13001304
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1499,13 +1503,15 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
14991503
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
15001504
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
15011505
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
1506+
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
15021507
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
15031508
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
15041509
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
15051510
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
15061511
gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA=
15071512
gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
15081513
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
1514+
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
15091515
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
15101516
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
15111517
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

tencentcloud/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -705,6 +705,7 @@ TencentDB for MySQL(cdb)
705705
706706
Resource
707707
tencentcloud_mysql_instance
708+
tencentcloud_mysql_database
708709
tencentcloud_mysql_readonly_instance
709710
tencentcloud_mysql_account
710711
tencentcloud_mysql_privilege
@@ -3053,6 +3054,7 @@ func Provider() *schema.Provider {
30533054
"tencentcloud_mysql_account_privilege": resourceTencentCloudMysqlAccountPrivilege(),
30543055
"tencentcloud_mysql_privilege": resourceTencentCloudMysqlPrivilege(),
30553056
"tencentcloud_mysql_instance": resourceTencentCloudMysqlInstance(),
3057+
"tencentcloud_mysql_database": resourceTencentCloudMysqlDatabase(),
30563058
"tencentcloud_mysql_readonly_instance": resourceTencentCloudMysqlReadonlyInstance(),
30573059
"tencentcloud_mysql_time_window": resourceTencentCloudMysqlTimeWindow(),
30583060
"tencentcloud_mysql_param_template": resourceTencentCloudMysqlParamTemplate(),
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
/*
2+
Provides a resource to create a mysql database
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_mysql_database" "database" {
8+
instance_id = "cdb-i9xfdf7z"
9+
db_name = "for_tf_test"
10+
character_set_name = "utf8"
11+
}
12+
```
13+
14+
Import
15+
16+
mysql database can be imported using the id, e.g.
17+
18+
```
19+
terraform import tencentcloud_mysql_database.database instanceId#dbName
20+
```
21+
*/
22+
package tencentcloud
23+
24+
import (
25+
"context"
26+
"fmt"
27+
"log"
28+
"strings"
29+
30+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
31+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
32+
mysql "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb/v20170320"
33+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
34+
)
35+
36+
func resourceTencentCloudMysqlDatabase() *schema.Resource {
37+
return &schema.Resource{
38+
Create: resourceTencentCloudMysqlDatabaseCreate,
39+
Read: resourceTencentCloudMysqlDatabaseRead,
40+
Update: resourceTencentCloudMysqlDatabaseUpdate,
41+
Delete: resourceTencentCloudMysqlDatabaseDelete,
42+
Importer: &schema.ResourceImporter{
43+
State: schema.ImportStatePassthrough,
44+
},
45+
Schema: map[string]*schema.Schema{
46+
"instance_id": {
47+
Required: true,
48+
ForceNew: true,
49+
Type: schema.TypeString,
50+
Description: "Instance ID in the format of `cdb-c1nl9rpv`, which is the same as the one displayed in the TencentDB console.",
51+
},
52+
53+
"db_name": {
54+
Required: true,
55+
ForceNew: true,
56+
Type: schema.TypeString,
57+
Description: "Name of Database.",
58+
},
59+
60+
"character_set_name": {
61+
Required: true,
62+
Type: schema.TypeString,
63+
ValidateFunc: validateAllowedStringValue([]string{"utf8", "gbk", "latin1", "utf8mb4"}),
64+
Description: "Character set. Valid values: `utf8`, `gbk`, `latin1`, `utf8mb4`.",
65+
},
66+
},
67+
}
68+
}
69+
70+
func resourceTencentCloudMysqlDatabaseCreate(d *schema.ResourceData, meta interface{}) error {
71+
defer logElapsed("resource.tencentcloud_mysql_database.create")()
72+
defer inconsistentCheck(d, meta)()
73+
74+
logId := getLogId(contextNil)
75+
76+
var (
77+
request = mysql.NewCreateDatabaseRequest()
78+
instanceId string
79+
dBName string
80+
)
81+
if v, ok := d.GetOk("instance_id"); ok {
82+
instanceId = v.(string)
83+
request.InstanceId = helper.String(v.(string))
84+
}
85+
86+
if v, ok := d.GetOk("db_name"); ok {
87+
dBName = v.(string)
88+
request.DBName = helper.String(v.(string))
89+
}
90+
91+
if v, ok := d.GetOk("character_set_name"); ok {
92+
request.CharacterSetName = helper.String(v.(string))
93+
}
94+
95+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
96+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseMysqlClient().CreateDatabase(request)
97+
if e != nil {
98+
return retryError(e)
99+
} else {
100+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
101+
}
102+
return nil
103+
})
104+
if err != nil {
105+
log.Printf("[CRITAL]%s create mysql database failed, reason:%+v", logId, err)
106+
return err
107+
}
108+
109+
d.SetId(strings.Join([]string{instanceId, dBName}, FILED_SP))
110+
111+
return resourceTencentCloudMysqlDatabaseRead(d, meta)
112+
}
113+
114+
func resourceTencentCloudMysqlDatabaseRead(d *schema.ResourceData, meta interface{}) error {
115+
defer logElapsed("resource.tencentcloud_mysql_database.read")()
116+
defer inconsistentCheck(d, meta)()
117+
118+
logId := getLogId(contextNil)
119+
120+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
121+
122+
service := MysqlService{client: meta.(*TencentCloudClient).apiV3Conn}
123+
124+
idSplit := strings.Split(d.Id(), FILED_SP)
125+
if len(idSplit) != 2 {
126+
return fmt.Errorf("id is broken,%s", d.Id())
127+
}
128+
instanceId := idSplit[0]
129+
dBName := idSplit[1]
130+
131+
database, err := service.DescribeMysqlDatabaseById(ctx, instanceId, dBName)
132+
if err != nil {
133+
return err
134+
}
135+
136+
if database == nil {
137+
d.SetId("")
138+
log.Printf("[WARN]%s resource `MysqlDatabase` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
139+
return nil
140+
}
141+
142+
_ = d.Set("instance_id", instanceId)
143+
144+
if database.DatabaseName != nil {
145+
_ = d.Set("db_name", database.DatabaseName)
146+
}
147+
148+
if database.CharacterSet != nil {
149+
if *database.CharacterSet == "UTF8MB3" {
150+
_ = d.Set("character_set_name", "utf8")
151+
} else {
152+
_ = d.Set("character_set_name", strings.ToLower(*database.CharacterSet))
153+
}
154+
155+
}
156+
157+
return nil
158+
}
159+
160+
func resourceTencentCloudMysqlDatabaseUpdate(d *schema.ResourceData, meta interface{}) error {
161+
defer logElapsed("resource.tencentcloud_mysql_database.update")()
162+
defer inconsistentCheck(d, meta)()
163+
164+
immutableArgs := []string{"character_set_name"}
165+
166+
for _, v := range immutableArgs {
167+
if d.HasChange(v) {
168+
return fmt.Errorf("argument `%s` cannot be changed", v)
169+
}
170+
}
171+
return resourceTencentCloudMysqlDatabaseRead(d, meta)
172+
}
173+
174+
func resourceTencentCloudMysqlDatabaseDelete(d *schema.ResourceData, meta interface{}) error {
175+
defer logElapsed("resource.tencentcloud_mysql_database.delete")()
176+
defer inconsistentCheck(d, meta)()
177+
178+
logId := getLogId(contextNil)
179+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
180+
181+
service := MysqlService{client: meta.(*TencentCloudClient).apiV3Conn}
182+
idSplit := strings.Split(d.Id(), FILED_SP)
183+
if len(idSplit) != 2 {
184+
return fmt.Errorf("id is broken,%s", d.Id())
185+
}
186+
instanceId := idSplit[0]
187+
dBName := idSplit[1]
188+
189+
if err := service.DeleteMysqlDatabaseById(ctx, instanceId, dBName); err != nil {
190+
return err
191+
}
192+
193+
return nil
194+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudMysqlDatabaseResource_basic(t *testing.T) {
10+
t.Parallel()
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() {
13+
testAccPreCheck(t)
14+
},
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccMysqlDatabase,
19+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_mysql_database.database", "id")),
20+
},
21+
{
22+
ResourceName: "tencentcloud_mysql_database.database",
23+
ImportState: true,
24+
ImportStateVerify: true,
25+
},
26+
},
27+
})
28+
}
29+
30+
const testAccMysqlDatabase = `
31+
32+
resource "tencentcloud_mysql_database" "database" {
33+
instance_id = "cdb-i9xfdf7z"
34+
db_name = "for_tf_test"
35+
character_set_name = "utf8"
36+
}
37+
38+
`

0 commit comments

Comments
 (0)