@@ -244,13 +244,19 @@ func ResourceTencentCloudInstance() *schema.Resource {
244
244
Computed : true ,
245
245
Description : "System disk snapshot ID used to initialize the system disk. When system disk type is `LOCAL_BASIC` and `LOCAL_SSD`, disk id is not supported." ,
246
246
},
247
+ "system_disk_name" : {
248
+ Type : schema .TypeString ,
249
+ Optional : true ,
250
+ Computed : true ,
251
+ Description : "Name of the system disk." ,
252
+ },
247
253
"system_disk_resize_online" : {
248
254
Type : schema .TypeBool ,
249
255
Optional : true ,
250
256
Description : "Resize online." ,
251
257
},
252
258
"data_disks" : {
253
- Type : schema .TypeList ,
259
+ Type : schema .TypeSet ,
254
260
Optional : true ,
255
261
Computed : true ,
256
262
ForceNew : true ,
@@ -269,6 +275,12 @@ func ResourceTencentCloudInstance() *schema.Resource {
269
275
//ForceNew: true,
270
276
Description : "Size of the data disk, and unit is GB." ,
271
277
},
278
+ "data_disk_name" : {
279
+ Type : schema .TypeString ,
280
+ Optional : true ,
281
+ Computed : true ,
282
+ Description : "Name of data disk." ,
283
+ },
272
284
"data_disk_snapshot_id" : {
273
285
Type : schema .TypeString ,
274
286
Optional : true ,
@@ -613,8 +625,12 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
613
625
request .SystemDisk .DiskId = helper .String (v .(string ))
614
626
}
615
627
628
+ if v , ok := d .GetOk ("system_disk_name" ); ok {
629
+ request .SystemDisk .DiskName = helper .String (v .(string ))
630
+ }
631
+
616
632
if v , ok := d .GetOk ("data_disks" ); ok {
617
- dataDisks := v .([] interface {} )
633
+ dataDisks := v .(* schema. Set ). List ( )
618
634
request .DataDisks = make ([]* cvm.DataDisk , 0 , len (dataDisks ))
619
635
for _ , d := range dataDisks {
620
636
value := d .(map [string ]interface {})
@@ -627,6 +643,13 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
627
643
ThroughputPerformance : & throughputPerformance ,
628
644
}
629
645
646
+ if v , ok := value ["data_disk_name" ]; ok && v != nil {
647
+ diskName := v .(string )
648
+ if diskName != "" {
649
+ dataDisk .DiskName = helper .String (diskName )
650
+ }
651
+ }
652
+
630
653
if v , ok := value ["data_disk_snapshot_id" ]; ok && v != nil {
631
654
snapshotId := v .(string )
632
655
if snapshotId != "" {
@@ -924,6 +947,7 @@ func resourceTencentCloudInstanceRead(d *schema.ResourceData, meta interface{})
924
947
_ = d .Set ("system_disk_type" , instance .SystemDisk .DiskType )
925
948
_ = d .Set ("system_disk_size" , instance .SystemDisk .DiskSize )
926
949
_ = d .Set ("system_disk_id" , instance .SystemDisk .DiskId )
950
+ _ = d .Set ("system_disk_name" , instance .SystemDisk .DiskName )
927
951
_ = d .Set ("instance_status" , instance .InstanceState )
928
952
_ = d .Set ("create_time" , instance .CreatedTime )
929
953
_ = d .Set ("expired_time" , instance .ExpiredTime )
@@ -1019,7 +1043,7 @@ func resourceTencentCloudInstanceRead(d *schema.ResourceData, meta interface{})
1019
1043
1020
1044
tmpDataDisks := make ([]interface {}, 0 , len (instance .DataDisks ))
1021
1045
if v , ok := d .GetOk ("data_disks" ); ok {
1022
- tmpDataDisks = v .([] interface {} )
1046
+ tmpDataDisks = v .(* schema. Set ). List ( )
1023
1047
}
1024
1048
1025
1049
for index , disk := range instance .DataDisks {
@@ -1040,6 +1064,7 @@ func resourceTencentCloudInstanceRead(d *schema.ResourceData, meta interface{})
1040
1064
}
1041
1065
}
1042
1066
1067
+ dataDisk ["data_disk_name" ] = disk .DiskName
1043
1068
dataDisk ["data_disk_type" ] = disk .DiskType
1044
1069
dataDisk ["data_disk_snapshot_id" ] = disk .SnapshotId
1045
1070
dataDisk ["delete_with_instance" ] = disk .DeleteWithInstance
@@ -1402,15 +1427,22 @@ func resourceTencentCloudInstanceUpdate(d *schema.ResourceData, meta interface{}
1402
1427
for i := range nv {
1403
1428
sizeKey := fmt .Sprintf ("data_disks.%d.data_disk_size" , i )
1404
1429
idKey := fmt .Sprintf ("data_disks.%d.data_disk_id" , i )
1405
- if ! d .HasChange (sizeKey ) {
1406
- continue
1430
+ nameKey := fmt .Sprintf ("data_disks.%d.data_disk_name" , i )
1431
+ if d .HasChange (sizeKey ) {
1432
+ size := d .Get (sizeKey ).(int )
1433
+ diskId := d .Get (idKey ).(string )
1434
+ err := cbsService .ResizeDisk (ctx , diskId , size )
1435
+ if err != nil {
1436
+ return fmt .Errorf ("an error occurred when modifying data disk size: %s, reason: %s" , sizeKey , err .Error ())
1437
+ }
1407
1438
}
1408
-
1409
- size := d .Get (sizeKey ).(int )
1410
- diskId := d .Get (idKey ).(string )
1411
- err := cbsService .ResizeDisk (ctx , diskId , size )
1412
- if err != nil {
1413
- return fmt .Errorf ("an error occurred when modifying %s, reason: %s" , sizeKey , err .Error ())
1439
+ if d .HasChange (nameKey ) {
1440
+ name := d .Get (nameKey ).(string )
1441
+ diskId := d .Get (idKey ).(string )
1442
+ err := cbsService .ModifyDiskAttributes (ctx , diskId , name , - 1 )
1443
+ if err != nil {
1444
+ return fmt .Errorf ("an error occurred when modifying data disk name: %s, reason: %s" , name , err .Error ())
1445
+ }
1414
1446
}
1415
1447
}
1416
1448
}
@@ -1474,6 +1506,20 @@ func resourceTencentCloudInstanceUpdate(d *schema.ResourceData, meta interface{}
1474
1506
}
1475
1507
}
1476
1508
1509
+ if d .HasChange ("system_disk_name" ) {
1510
+ systemDiskName := d .Get ("system_disk_name" ).(string )
1511
+ if v , ok := d .GetOk ("system_disk_id" ); ok {
1512
+ systemDiskId := v .(string )
1513
+ cbsService := svccbs .NewCbsService (meta .(tccommon.ProviderMeta ).GetAPIV3Conn ())
1514
+ err := cbsService .ModifyDiskAttributes (ctx , systemDiskId , systemDiskName , - 1 )
1515
+ if err != nil {
1516
+ return fmt .Errorf ("an error occurred when modifying system disk name %s, reason: %s" , systemDiskName , err .Error ())
1517
+ }
1518
+ } else {
1519
+ return fmt .Errorf ("system disk name do not support change because of no system disk ID." )
1520
+ }
1521
+ }
1522
+
1477
1523
if d .HasChange ("instance_type" ) {
1478
1524
err := cvmService .ModifyInstanceType (ctx , instanceId , d .Get ("instance_type" ).(string ))
1479
1525
if err != nil {
0 commit comments