Skip to content

Commit 9e6c7f7

Browse files
authored
fix(cvm): [125732430] tencentcloud_instance optmize code logic for launch_template_id (#3439)
* add * add
1 parent a02da14 commit 9e6c7f7

File tree

2 files changed

+135
-56
lines changed

2 files changed

+135
-56
lines changed

.changelog/3439.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_instance: optmize code logic for `launch_template_id`
3+
```

tencentcloud/services/cvm/resource_tc_instance.go

Lines changed: 132 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
542542
request.DedicatedClusterId = helper.String(v.(string))
543543
}
544544

545-
if v, ok := d.GetOk("project_id"); ok {
545+
if v, ok := d.GetOkExists("project_id"); ok {
546546
projectId := int64(v.(int))
547547
request.Placement.ProjectId = &projectId
548548
}
@@ -615,10 +615,7 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
615615
}
616616
}
617617

618-
var (
619-
rpgFlag bool
620-
)
621-
618+
var rpgFlag bool
622619
if v, ok := d.GetOkExists("force_replace_placement_group_id"); ok {
623620
rpgFlag = v.(bool)
624621
}
@@ -630,23 +627,35 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
630627
}
631628

632629
// network
633-
request.InternetAccessible = &cvm.InternetAccessible{}
630+
var (
631+
internetAccessible cvm.InternetAccessible
632+
netWorkFlag bool
633+
)
634+
634635
if v, ok := d.GetOk("internet_charge_type"); ok {
635-
request.InternetAccessible.InternetChargeType = helper.String(v.(string))
636+
internetAccessible.InternetChargeType = helper.String(v.(string))
637+
netWorkFlag = true
636638
}
637639

638-
if v, ok := d.GetOk("internet_max_bandwidth_out"); ok {
640+
if v, ok := d.GetOkExists("internet_max_bandwidth_out"); ok {
639641
maxBandwidthOut := int64(v.(int))
640-
request.InternetAccessible.InternetMaxBandwidthOut = &maxBandwidthOut
642+
internetAccessible.InternetMaxBandwidthOut = &maxBandwidthOut
643+
netWorkFlag = true
641644
}
642645

643646
if v, ok := d.GetOk("bandwidth_package_id"); ok {
644-
request.InternetAccessible.BandwidthPackageId = helper.String(v.(string))
647+
internetAccessible.BandwidthPackageId = helper.String(v.(string))
648+
netWorkFlag = true
645649
}
646650

647651
if v, ok := d.GetOkExists("allocate_public_ip"); ok {
648652
allocatePublicIp := v.(bool)
649-
request.InternetAccessible.PublicIpAssigned = &allocatePublicIp
653+
internetAccessible.PublicIpAssigned = &allocatePublicIp
654+
netWorkFlag = true
655+
}
656+
657+
if netWorkFlag {
658+
request.InternetAccessible = &internetAccessible
650659
}
651660

652661
// vpc
@@ -680,27 +689,38 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
680689
}
681690

682691
// storage
683-
request.SystemDisk = &cvm.SystemDisk{}
692+
var (
693+
systemDisk cvm.SystemDisk
694+
systemDiskFlag bool
695+
)
696+
684697
if v, ok := d.GetOk("system_disk_type"); ok {
685-
request.SystemDisk.DiskType = helper.String(v.(string))
698+
systemDisk.DiskType = helper.String(v.(string))
699+
systemDiskFlag = true
686700
}
687701

688-
if v, ok := d.GetOk("system_disk_size"); ok {
702+
if v, ok := d.GetOkExists("system_disk_size"); ok {
689703
diskSize := int64(v.(int))
690-
request.SystemDisk.DiskSize = &diskSize
704+
systemDisk.DiskSize = &diskSize
705+
systemDiskFlag = true
691706
}
692707

693708
if v, ok := d.GetOk("system_disk_id"); ok {
694-
request.SystemDisk.DiskId = helper.String(v.(string))
709+
systemDisk.DiskId = helper.String(v.(string))
710+
systemDiskFlag = true
695711
}
696712

697713
if v, ok := d.GetOk("system_disk_name"); ok {
698-
request.SystemDisk.DiskName = helper.String(v.(string))
714+
systemDisk.DiskName = helper.String(v.(string))
715+
systemDiskFlag = true
716+
}
717+
718+
if systemDiskFlag {
719+
request.SystemDisk = &systemDisk
699720
}
700721

701722
if v, ok := d.GetOk("data_disks"); ok {
702723
dataDisks := v.([]interface{})
703-
request.DataDisks = make([]*cvm.DataDisk, 0, len(dataDisks))
704724
for _, d := range dataDisks {
705725
value := d.(map[string]interface{})
706726
diskType := value["data_disk_type"].(string)
@@ -749,46 +769,75 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
749769
}
750770

751771
// enhanced service
752-
request.EnhancedService = &cvm.EnhancedService{}
772+
var (
773+
enhancedService cvm.EnhancedService
774+
enhancedServiceFlag bool
775+
)
776+
753777
if v, ok := d.GetOkExists("disable_security_service"); ok {
754778
securityService := !(v.(bool))
755-
request.EnhancedService.SecurityService = &cvm.RunSecurityServiceEnabled{
779+
enhancedService.SecurityService = &cvm.RunSecurityServiceEnabled{
756780
Enabled: &securityService,
757781
}
782+
enhancedServiceFlag = true
758783
}
759784

760785
if v, ok := d.GetOkExists("disable_monitor_service"); ok {
761786
monitorService := !(v.(bool))
762-
request.EnhancedService.MonitorService = &cvm.RunMonitorServiceEnabled{
787+
enhancedService.MonitorService = &cvm.RunMonitorServiceEnabled{
763788
Enabled: &monitorService,
764789
}
790+
enhancedServiceFlag = true
765791
}
766792

767793
if v, ok := d.GetOkExists("disable_automation_service"); ok {
768794
automationService := !(v.(bool))
769-
request.EnhancedService.AutomationService = &cvm.RunAutomationServiceEnabled{
795+
enhancedService.AutomationService = &cvm.RunAutomationServiceEnabled{
770796
Enabled: &automationService,
771797
}
798+
enhancedServiceFlag = true
799+
}
800+
801+
if enhancedServiceFlag {
802+
request.EnhancedService = &enhancedService
772803
}
773804

774805
// login
775-
request.LoginSettings = &cvm.LoginSettings{}
776-
keyIds := d.Get("key_ids").(*schema.Set).List()
777-
if len(keyIds) > 0 {
778-
request.LoginSettings.KeyIds = helper.InterfacesStringsPoint(keyIds)
779-
} else if v, ok := d.GetOk("key_name"); ok {
780-
request.LoginSettings.KeyIds = []*string{helper.String(v.(string))}
806+
var (
807+
loginSettings cvm.LoginSettings
808+
loginSettingsFlag bool
809+
)
810+
811+
if v, ok := d.GetOk("key_name"); ok {
812+
loginSettings.KeyIds = []*string{helper.String(v.(string))}
813+
loginSettingsFlag = true
814+
}
815+
816+
if v, ok := d.GetOk("key_ids"); ok {
817+
keyIds := v.(*schema.Set).List()
818+
if len(keyIds) > 0 {
819+
loginSettings.KeyIds = helper.InterfacesStringsPoint(keyIds)
820+
loginSettingsFlag = true
821+
}
781822
}
782823

783824
if v, ok := d.GetOk("password"); ok {
784-
request.LoginSettings.Password = helper.String(v.(string))
825+
loginSettings.Password = helper.String(v.(string))
826+
loginSettingsFlag = true
785827
}
786828

787-
v := d.Get("keep_image_login").(bool)
788-
if v {
789-
request.LoginSettings.KeepImageLogin = helper.String(CVM_IMAGE_LOGIN)
790-
} else {
791-
request.LoginSettings.KeepImageLogin = helper.String(CVM_IMAGE_LOGIN_NOT)
829+
if v, ok := d.GetOkExists("keep_image_login"); ok {
830+
if v.(bool) {
831+
loginSettings.KeepImageLogin = helper.String(CVM_IMAGE_LOGIN)
832+
} else {
833+
loginSettings.KeepImageLogin = helper.String(CVM_IMAGE_LOGIN_NOT)
834+
}
835+
836+
loginSettingsFlag = true
837+
}
838+
839+
if loginSettingsFlag {
840+
request.LoginSettings = &loginSettings
792841
}
793842

794843
if v, ok := d.GetOk("user_data"); ok {
@@ -1810,48 +1859,75 @@ func resourceTencentCloudInstanceUpdate(d *schema.ResourceData, meta interface{}
18101859
}
18111860

18121861
// enhanced service
1813-
request.EnhancedService = &cvm.EnhancedService{}
1814-
if d.HasChange("disable_security_service") {
1815-
v := d.Get("disable_security_service")
1816-
securityService := v.(bool)
1817-
request.EnhancedService.SecurityService = &cvm.RunSecurityServiceEnabled{
1862+
var (
1863+
enhancedService cvm.EnhancedService
1864+
enhancedServiceFlag bool
1865+
)
1866+
1867+
if v, ok := d.GetOkExists("disable_security_service"); ok {
1868+
securityService := !(v.(bool))
1869+
enhancedService.SecurityService = &cvm.RunSecurityServiceEnabled{
18181870
Enabled: &securityService,
18191871
}
1872+
enhancedServiceFlag = true
18201873
}
18211874

1822-
if d.HasChange("disable_monitor_service") {
1823-
v := d.Get("disable_monitor_service")
1875+
if v, ok := d.GetOkExists("disable_monitor_service"); ok {
18241876
monitorService := !(v.(bool))
1825-
request.EnhancedService.MonitorService = &cvm.RunMonitorServiceEnabled{
1877+
enhancedService.MonitorService = &cvm.RunMonitorServiceEnabled{
18261878
Enabled: &monitorService,
18271879
}
1880+
enhancedServiceFlag = true
18281881
}
18291882

1830-
if d.HasChange("disable_automation_service") {
1831-
v := d.Get("disable_automation_service")
1883+
if v, ok := d.GetOkExists("disable_automation_service"); ok {
18321884
automationService := !(v.(bool))
1833-
request.EnhancedService.AutomationService = &cvm.RunAutomationServiceEnabled{
1885+
enhancedService.AutomationService = &cvm.RunAutomationServiceEnabled{
18341886
Enabled: &automationService,
18351887
}
1888+
enhancedServiceFlag = true
18361889
}
18371890

1838-
// Modify or keep login info when instance reset
1839-
request.LoginSettings = &cvm.LoginSettings{}
1891+
if enhancedServiceFlag {
1892+
request.EnhancedService = &enhancedService
1893+
}
18401894

1841-
if v, ok := d.GetOk("password"); ok {
1842-
request.LoginSettings.Password = helper.String(v.(string))
1895+
// login
1896+
var (
1897+
loginSettings cvm.LoginSettings
1898+
loginSettingsFlag bool
1899+
)
1900+
1901+
if v, ok := d.GetOk("key_name"); ok {
1902+
loginSettings.KeyIds = []*string{helper.String(v.(string))}
1903+
loginSettingsFlag = true
18431904
}
18441905

18451906
if v, ok := d.GetOk("key_ids"); ok {
1846-
request.LoginSettings.KeyIds = helper.InterfacesStringsPoint(v.(*schema.Set).List())
1847-
} else if v, ok := d.GetOk("key_name"); ok {
1848-
request.LoginSettings.KeyIds = []*string{helper.String(v.(string))}
1907+
keyIds := v.(*schema.Set).List()
1908+
if len(keyIds) > 0 {
1909+
loginSettings.KeyIds = helper.InterfacesStringsPoint(keyIds)
1910+
loginSettingsFlag = true
1911+
}
18491912
}
18501913

1851-
if v := d.Get("keep_image_login").(bool); v {
1852-
request.LoginSettings.KeepImageLogin = helper.String(CVM_IMAGE_LOGIN)
1853-
} else {
1854-
request.LoginSettings.KeepImageLogin = helper.String(CVM_IMAGE_LOGIN_NOT)
1914+
if v, ok := d.GetOk("password"); ok {
1915+
loginSettings.Password = helper.String(v.(string))
1916+
loginSettingsFlag = true
1917+
}
1918+
1919+
if v, ok := d.GetOkExists("keep_image_login"); ok {
1920+
if v.(bool) {
1921+
loginSettings.KeepImageLogin = helper.String(CVM_IMAGE_LOGIN)
1922+
} else {
1923+
loginSettings.KeepImageLogin = helper.String(CVM_IMAGE_LOGIN_NOT)
1924+
}
1925+
1926+
loginSettingsFlag = true
1927+
}
1928+
1929+
if loginSettingsFlag {
1930+
request.LoginSettings = &loginSettings
18551931
}
18561932

18571933
if err := cvmService.ResetInstance(ctx, request); err != nil {

0 commit comments

Comments
 (0)