@@ -13,6 +13,8 @@ import (
1313 "github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
1414)
1515
16+ var importMysqlFlag = false
17+
1618func TencentMsyqlBasicInfo () map [string ]* schema.Schema {
1719 return map [string ]* schema.Schema {
1820 "instance_name" : {
@@ -193,6 +195,7 @@ func resourceTencentCloudMysqlInstance() *schema.Resource {
193195 "parameters" : {
194196 Type : schema .TypeMap ,
195197 Optional : true ,
198+ Computed : true ,
196199 Description : "List of parameters to use." ,
197200 },
198201 "internet_service" : {
@@ -290,18 +293,26 @@ func resourceTencentCloudMysqlInstance() *schema.Resource {
290293 Delete : resourceTencentCloudMysqlInstanceDelete ,
291294 Schema : specialInfo ,
292295 Importer : & schema.ResourceImporter {
293- State : helper .ImportWithDefaultValue (map [string ]interface {}{
294- "charge_type" : MYSQL_CHARGE_TYPE_POSTPAID ,
295- "prepaid_period" : 1 ,
296- "auto_renew_flag" : 0 ,
297- "intranet_port" : 3306 ,
298- "force_delete" : false ,
299- "internet_service" : 0 ,
300- "engine_version" : MYSQL_SUPPORTS_ENGINE [len (MYSQL_SUPPORTS_ENGINE )- 2 ],
301- "slave_deploy_mode" : 0 ,
302- "slave_sync_mode" : 0 ,
303- "project_id" : 0 ,
304- }),
296+ State : func (d * schema.ResourceData , m interface {}) ([]* schema.ResourceData , error ) {
297+ importMysqlFlag = true
298+ defaultValues := map [string ]interface {}{
299+ "charge_type" : MYSQL_CHARGE_TYPE_POSTPAID ,
300+ "prepaid_period" : 1 ,
301+ "auto_renew_flag" : 0 ,
302+ "intranet_port" : 3306 ,
303+ "force_delete" : false ,
304+ "internet_service" : 0 ,
305+ "engine_version" : MYSQL_SUPPORTS_ENGINE [len (MYSQL_SUPPORTS_ENGINE )- 2 ],
306+ "slave_deploy_mode" : 0 ,
307+ "slave_sync_mode" : 0 ,
308+ "project_id" : 0 ,
309+ }
310+
311+ for k , v := range defaultValues {
312+ _ = d .Set (k , v )
313+ }
314+ return []* schema.ResourceData {d }, nil
315+ },
305316 },
306317 }
307318}
@@ -866,10 +877,26 @@ func resourceTencentCloudMysqlInstanceRead(d *schema.ResourceData, meta interfac
866877 if ! onlineHas {
867878 return nil
868879 }
869- parametersMap , ok := d .Get ("parameters" ).(map [string ]interface {})
870- if ! ok {
871- log .Printf ("[INFO] %v config error,parameters is not map[string]interface{}\n " , logId )
872- } else {
880+ if importMysqlFlag {
881+ // import logic:
882+ log .Printf ("[INFO] %v ,begin to import parameter...\n " , logId )
883+ parameterList , err := mysqlService .DescribeInstanceParameters (ctx , * mysqlInfo .InstanceId )
884+ if err != nil {
885+ return err
886+ }
887+
888+ parameters := make (map [string ]string )
889+ for _ , v := range parameterList {
890+ parameters [* v .Name ] = * v .CurrentValue
891+ }
892+ if e := d .Set ("parameters" , parameters ); e != nil {
893+ log .Printf ("[CRITAL]%s provider set caresParameters fail, reason:%s\n " , logId , e .Error ())
894+ return e
895+ }
896+ _ = d .Set ("availability_zone" , mysqlInfo .Zone )
897+ importMysqlFlag = false
898+ } else if parametersMap , ok := d .Get ("parameters" ).(map [string ]interface {}); ok {
899+ // read logic:
873900 var cares []string
874901 for k := range parametersMap {
875902 cares = append (cares , k )
0 commit comments