@@ -542,7 +542,7 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
542
542
request .DedicatedClusterId = helper .String (v .(string ))
543
543
}
544
544
545
- if v , ok := d .GetOk ("project_id" ); ok {
545
+ if v , ok := d .GetOkExists ("project_id" ); ok {
546
546
projectId := int64 (v .(int ))
547
547
request .Placement .ProjectId = & projectId
548
548
}
@@ -615,10 +615,7 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
615
615
}
616
616
}
617
617
618
- var (
619
- rpgFlag bool
620
- )
621
-
618
+ var rpgFlag bool
622
619
if v , ok := d .GetOkExists ("force_replace_placement_group_id" ); ok {
623
620
rpgFlag = v .(bool )
624
621
}
@@ -630,23 +627,35 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
630
627
}
631
628
632
629
// network
633
- request .InternetAccessible = & cvm.InternetAccessible {}
630
+ var (
631
+ internetAccessible cvm.InternetAccessible
632
+ netWorkFlag bool
633
+ )
634
+
634
635
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
636
638
}
637
639
638
- if v , ok := d .GetOk ("internet_max_bandwidth_out" ); ok {
640
+ if v , ok := d .GetOkExists ("internet_max_bandwidth_out" ); ok {
639
641
maxBandwidthOut := int64 (v .(int ))
640
- request .InternetAccessible .InternetMaxBandwidthOut = & maxBandwidthOut
642
+ internetAccessible .InternetMaxBandwidthOut = & maxBandwidthOut
643
+ netWorkFlag = true
641
644
}
642
645
643
646
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
645
649
}
646
650
647
651
if v , ok := d .GetOkExists ("allocate_public_ip" ); ok {
648
652
allocatePublicIp := v .(bool )
649
- request .InternetAccessible .PublicIpAssigned = & allocatePublicIp
653
+ internetAccessible .PublicIpAssigned = & allocatePublicIp
654
+ netWorkFlag = true
655
+ }
656
+
657
+ if netWorkFlag {
658
+ request .InternetAccessible = & internetAccessible
650
659
}
651
660
652
661
// vpc
@@ -680,27 +689,38 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
680
689
}
681
690
682
691
// storage
683
- request .SystemDisk = & cvm.SystemDisk {}
692
+ var (
693
+ systemDisk cvm.SystemDisk
694
+ systemDiskFlag bool
695
+ )
696
+
684
697
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
686
700
}
687
701
688
- if v , ok := d .GetOk ("system_disk_size" ); ok {
702
+ if v , ok := d .GetOkExists ("system_disk_size" ); ok {
689
703
diskSize := int64 (v .(int ))
690
- request .SystemDisk .DiskSize = & diskSize
704
+ systemDisk .DiskSize = & diskSize
705
+ systemDiskFlag = true
691
706
}
692
707
693
708
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
695
711
}
696
712
697
713
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
699
720
}
700
721
701
722
if v , ok := d .GetOk ("data_disks" ); ok {
702
723
dataDisks := v .([]interface {})
703
- request .DataDisks = make ([]* cvm.DataDisk , 0 , len (dataDisks ))
704
724
for _ , d := range dataDisks {
705
725
value := d .(map [string ]interface {})
706
726
diskType := value ["data_disk_type" ].(string )
@@ -749,46 +769,75 @@ func resourceTencentCloudInstanceCreate(d *schema.ResourceData, meta interface{}
749
769
}
750
770
751
771
// enhanced service
752
- request .EnhancedService = & cvm.EnhancedService {}
772
+ var (
773
+ enhancedService cvm.EnhancedService
774
+ enhancedServiceFlag bool
775
+ )
776
+
753
777
if v , ok := d .GetOkExists ("disable_security_service" ); ok {
754
778
securityService := ! (v .(bool ))
755
- request . EnhancedService .SecurityService = & cvm.RunSecurityServiceEnabled {
779
+ enhancedService .SecurityService = & cvm.RunSecurityServiceEnabled {
756
780
Enabled : & securityService ,
757
781
}
782
+ enhancedServiceFlag = true
758
783
}
759
784
760
785
if v , ok := d .GetOkExists ("disable_monitor_service" ); ok {
761
786
monitorService := ! (v .(bool ))
762
- request . EnhancedService .MonitorService = & cvm.RunMonitorServiceEnabled {
787
+ enhancedService .MonitorService = & cvm.RunMonitorServiceEnabled {
763
788
Enabled : & monitorService ,
764
789
}
790
+ enhancedServiceFlag = true
765
791
}
766
792
767
793
if v , ok := d .GetOkExists ("disable_automation_service" ); ok {
768
794
automationService := ! (v .(bool ))
769
- request . EnhancedService .AutomationService = & cvm.RunAutomationServiceEnabled {
795
+ enhancedService .AutomationService = & cvm.RunAutomationServiceEnabled {
770
796
Enabled : & automationService ,
771
797
}
798
+ enhancedServiceFlag = true
799
+ }
800
+
801
+ if enhancedServiceFlag {
802
+ request .EnhancedService = & enhancedService
772
803
}
773
804
774
805
// 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
+ }
781
822
}
782
823
783
824
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
785
827
}
786
828
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
792
841
}
793
842
794
843
if v , ok := d .GetOk ("user_data" ); ok {
@@ -1810,48 +1859,75 @@ func resourceTencentCloudInstanceUpdate(d *schema.ResourceData, meta interface{}
1810
1859
}
1811
1860
1812
1861
// 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 {
1818
1870
Enabled : & securityService ,
1819
1871
}
1872
+ enhancedServiceFlag = true
1820
1873
}
1821
1874
1822
- if d .HasChange ("disable_monitor_service" ) {
1823
- v := d .Get ("disable_monitor_service" )
1875
+ if v , ok := d .GetOkExists ("disable_monitor_service" ); ok {
1824
1876
monitorService := ! (v .(bool ))
1825
- request . EnhancedService .MonitorService = & cvm.RunMonitorServiceEnabled {
1877
+ enhancedService .MonitorService = & cvm.RunMonitorServiceEnabled {
1826
1878
Enabled : & monitorService ,
1827
1879
}
1880
+ enhancedServiceFlag = true
1828
1881
}
1829
1882
1830
- if d .HasChange ("disable_automation_service" ) {
1831
- v := d .Get ("disable_automation_service" )
1883
+ if v , ok := d .GetOkExists ("disable_automation_service" ); ok {
1832
1884
automationService := ! (v .(bool ))
1833
- request . EnhancedService .AutomationService = & cvm.RunAutomationServiceEnabled {
1885
+ enhancedService .AutomationService = & cvm.RunAutomationServiceEnabled {
1834
1886
Enabled : & automationService ,
1835
1887
}
1888
+ enhancedServiceFlag = true
1836
1889
}
1837
1890
1838
- // Modify or keep login info when instance reset
1839
- request .LoginSettings = & cvm.LoginSettings {}
1891
+ if enhancedServiceFlag {
1892
+ request .EnhancedService = & enhancedService
1893
+ }
1840
1894
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
1843
1904
}
1844
1905
1845
1906
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
+ }
1849
1912
}
1850
1913
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
1855
1931
}
1856
1932
1857
1933
if err := cvmService .ResetInstance (ctx , request ); err != nil {
0 commit comments