Skip to content

Commit 4d0caa5

Browse files
committed
add
1 parent d4d5f26 commit 4d0caa5

File tree

1 file changed

+93
-37
lines changed

1 file changed

+93
-37
lines changed

tencentcloud/services/cvm/resource_tc_instance.go

Lines changed: 93 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"crypto/sha256"
66
"encoding/base64"
77
"encoding/hex"
8+
"encoding/json"
89
"fmt"
910
"log"
1011
"sort"
@@ -1221,77 +1222,132 @@ func resourceTencentCloudInstanceRead(d *schema.ResourceData, meta interface{})
12211222
return err
12221223
}
12231224

1224-
// update instance DataDisks
1225+
// make data disks data
1226+
sourceDataDisks := make([]*map[string]interface{}, 0)
12251227
for _, cvmDisk := range instance.DataDisks {
12261228
for _, cbsDisk := range cbsDisks {
12271229
if *cvmDisk.DiskId == *cbsDisk.DiskId {
1228-
dName := *cbsDisk.DiskName
1229-
cvmDisk.DiskName = &dName
1230+
dataDisk := make(map[string]interface{}, 10)
1231+
dataDisk["data_disk_id"] = cvmDisk.DiskId
1232+
dataDisk["data_disk_size"] = cvmDisk.DiskSize
1233+
dataDisk["data_disk_name"] = cbsDisk.DiskName
1234+
dataDisk["data_disk_type"] = cvmDisk.DiskType
1235+
dataDisk["data_disk_snapshot_id"] = cvmDisk.SnapshotId
1236+
dataDisk["delete_with_instance"] = cvmDisk.DeleteWithInstance
1237+
dataDisk["encrypt"] = cvmDisk.Encrypt
1238+
dataDisk["throughput_performance"] = cvmDisk.ThroughputPerformance
1239+
dataDisk["flag"] = 0
1240+
sourceDataDisks = append(sourceDataDisks, &dataDisk)
12301241
break
12311242
}
12321243
}
12331244
}
12341245

1246+
a, _ := json.Marshal(instance.DataDisks)
1247+
b, _ := json.Marshal(dDiskHash)
1248+
fmt.Println(1111111111111)
1249+
fmt.Println(1111111111111)
1250+
fmt.Printf("%+v\n", string(a))
1251+
fmt.Println(1111111111111)
1252+
fmt.Println(1111111111111)
1253+
fmt.Printf("%+v\n", string(b))
1254+
fmt.Println(1111111111111)
1255+
fmt.Println(1111111111111)
1256+
12351257
// has set disk name first
1236-
for _, disk := range instance.DataDisks {
1237-
for _, hashItem := range dDiskHash {
1238-
diskName := *disk.DiskName
1258+
for v := range sourceDataDisks {
1259+
for i := range dDiskHash {
1260+
disk := *sourceDataDisks[v]
1261+
diskFlag := disk["flag"].(int)
1262+
diskName := disk["data_disk_name"].(*string)
1263+
diskType := disk["data_disk_type"].(*string)
1264+
diskSize := disk["data_disk_size"].(*int64)
1265+
deleteWithInstance := disk["delete_with_instance"].(*bool)
1266+
encrypt := disk["encrypt"].(*bool)
12391267
tmpHash := getDataDiskHash(diskHash{
1240-
diskType: *disk.DiskType,
1241-
diskSize: *disk.DiskSize,
1242-
deleteWithInstance: *disk.DeleteWithInstance,
1243-
encrypt: *disk.Encrypt,
1268+
diskType: *diskType,
1269+
diskSize: *diskSize,
1270+
deleteWithInstance: *deleteWithInstance,
1271+
encrypt: *encrypt,
12441272
})
12451273

12461274
// get disk name
1247-
if v, ok := hashItem[diskName].(string); ok && v != "" {
1275+
hashItem := dDiskHash[i]
1276+
if _, ok := hashItem[*diskName]; ok {
12481277
// check hash and flag
1249-
if tmpHash == hashItem[diskName] && hashItem["flag"] == 0 {
1250-
dataDisk := make(map[string]interface{}, 5)
1251-
dataDisk["data_disk_id"] = disk.DiskId
1252-
dataDisk["data_disk_size"] = disk.DiskSize
1253-
dataDisk["data_disk_name"] = disk.DiskName
1254-
dataDisk["data_disk_type"] = disk.DiskType
1255-
dataDisk["data_disk_snapshot_id"] = disk.SnapshotId
1256-
dataDisk["delete_with_instance"] = disk.DeleteWithInstance
1257-
dataDisk["encrypt"] = disk.Encrypt
1258-
dataDisk["throughput_performance"] = disk.ThroughputPerformance
1278+
if hashItem["flag"] == 0 && diskFlag == 0 && tmpHash == hashItem[*diskName] {
1279+
dataDisk := make(map[string]interface{}, 8)
1280+
dataDisk["data_disk_id"] = disk["data_disk_id"]
1281+
dataDisk["data_disk_size"] = disk["data_disk_size"]
1282+
dataDisk["data_disk_name"] = disk["data_disk_name"]
1283+
dataDisk["data_disk_type"] = disk["data_disk_type"]
1284+
dataDisk["data_disk_snapshot_id"] = disk["data_disk_snapshot_id"]
1285+
dataDisk["delete_with_instance"] = disk["delete_with_instance"]
1286+
dataDisk["encrypt"] = disk["encrypt"]
1287+
dataDisk["throughput_performance"] = disk["throughput_performance"]
12591288
tmpDataDiskMap[hashItem["index"].(int)] = dataDisk
12601289
hashItem["flag"] = 1
1290+
disk["flag"] = 1
12611291
break
12621292
}
12631293
}
12641294
}
12651295
}
12661296

1297+
c, _ := json.Marshal(sourceDataDisks)
1298+
c1, _ := json.Marshal(dDiskHash)
1299+
fmt.Println(2222222222222)
1300+
fmt.Println(2222222222222)
1301+
fmt.Printf("%+v\n", string(c))
1302+
fmt.Printf("%+v\n", string(c1))
1303+
fmt.Println(2222222222222)
1304+
fmt.Println(2222222222222)
1305+
12671306
// no set disk name last
1268-
for _, disk := range instance.DataDisks {
1269-
for index, hashItem := range dDiskHash {
1307+
for v := range sourceDataDisks {
1308+
for i := range dDiskHash {
1309+
disk := *sourceDataDisks[v]
1310+
diskFlag := disk["flag"].(int)
1311+
diskType := disk["data_disk_type"].(*string)
1312+
diskSize := disk["data_disk_size"].(*int64)
1313+
deleteWithInstance := disk["delete_with_instance"].(*bool)
1314+
encrypt := disk["encrypt"].(*bool)
12701315
tmpHash := getDataDiskHash(diskHash{
1271-
diskType: *disk.DiskType,
1272-
diskSize: *disk.DiskSize,
1273-
deleteWithInstance: *disk.DeleteWithInstance,
1274-
encrypt: *disk.Encrypt,
1316+
diskType: *diskType,
1317+
diskSize: *diskSize,
1318+
deleteWithInstance: *deleteWithInstance,
1319+
encrypt: *encrypt,
12751320
})
12761321

12771322
// check hash and flag
1278-
if tmpHash == hashItem[strconv.Itoa(index)] && hashItem["flag"] == 0 {
1279-
dataDisk := make(map[string]interface{}, 5)
1280-
dataDisk["data_disk_id"] = disk.DiskId
1281-
dataDisk["data_disk_size"] = disk.DiskSize
1282-
dataDisk["data_disk_name"] = disk.DiskName
1283-
dataDisk["data_disk_type"] = disk.DiskType
1284-
dataDisk["data_disk_snapshot_id"] = disk.SnapshotId
1285-
dataDisk["delete_with_instance"] = disk.DeleteWithInstance
1286-
dataDisk["encrypt"] = disk.Encrypt
1287-
dataDisk["throughput_performance"] = disk.ThroughputPerformance
1323+
hashItem := dDiskHash[i]
1324+
if hashItem["flag"] == 0 && diskFlag == 0 && tmpHash == hashItem[strconv.Itoa(i)] {
1325+
dataDisk := make(map[string]interface{}, 8)
1326+
dataDisk["data_disk_id"] = disk["data_disk_id"]
1327+
dataDisk["data_disk_size"] = disk["data_disk_size"]
1328+
dataDisk["data_disk_name"] = disk["data_disk_name"]
1329+
dataDisk["data_disk_type"] = disk["data_disk_type"]
1330+
dataDisk["data_disk_snapshot_id"] = disk["data_disk_snapshot_id"]
1331+
dataDisk["delete_with_instance"] = disk["delete_with_instance"]
1332+
dataDisk["encrypt"] = disk["encrypt"]
1333+
dataDisk["throughput_performance"] = disk["throughput_performance"]
12881334
tmpDataDiskMap[hashItem["index"].(int)] = dataDisk
12891335
hashItem["flag"] = 1
1336+
disk["flag"] = 1
12901337
break
12911338
}
12921339
}
12931340
}
12941341

1342+
e, _ := json.Marshal(sourceDataDisks)
1343+
e1, _ := json.Marshal(dDiskHash)
1344+
fmt.Println(3333333333333)
1345+
fmt.Println(3333333333333)
1346+
fmt.Printf("%+v\n", string(e))
1347+
fmt.Printf("%+v\n", string(e1))
1348+
fmt.Println(3333333333333)
1349+
fmt.Println(3333333333333)
1350+
12951351
keys := make([]int, 0, len(tmpDataDiskMap))
12961352
for k := range tmpDataDiskMap {
12971353
keys = append(keys, k)

0 commit comments

Comments
 (0)