Skip to content

Commit 9830b30

Browse files
authored
feat: yunti import (#2400)
1 parent 6f4a025 commit 9830b30

File tree

1 file changed

+43
-16
lines changed

1 file changed

+43
-16
lines changed

tencentcloud/resource_tc_mysql_instance.go

Lines changed: 43 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
1414
)
1515

16+
var importMysqlFlag = false
17+
1618
func 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

Comments
 (0)