@@ -604,176 +604,172 @@ func ResourceInstanceServerRead(ctx context.Context, d *schema.ResourceData, m i
604
604
// Read Server
605
605
////
606
606
607
- if err == nil {
608
- state , err := serverStateFlatten (server .State )
609
- if err != nil {
610
- return diag .FromErr (err )
611
- }
607
+ state , err := serverStateFlatten (server .State )
608
+ if err != nil {
609
+ return diag .FromErr (err )
610
+ }
612
611
613
- _ = d .Set ("state" , state )
614
- _ = d .Set ("zone" , string (zone ))
615
- _ = d .Set ("name" , server .Name )
616
- _ = d .Set ("boot_type" , server .BootType )
612
+ _ = d .Set ("state" , state )
613
+ _ = d .Set ("zone" , string (zone ))
614
+ _ = d .Set ("name" , server .Name )
615
+ _ = d .Set ("boot_type" , server .BootType )
617
616
618
- _ = d .Set ("type" , server .CommercialType )
619
- if len (server .Tags ) > 0 {
620
- _ = d .Set ("tags" , server .Tags )
621
- }
617
+ _ = d .Set ("type" , server .CommercialType )
618
+ if len (server .Tags ) > 0 {
619
+ _ = d .Set ("tags" , server .Tags )
620
+ }
622
621
623
- _ = d .Set ("security_group_id" , zonal .NewID (zone , server .SecurityGroup .ID ).String ())
624
- // EnableIPv6 is deprecated
625
- _ = d .Set ("enable_ipv6" , server .EnableIPv6 ) //nolint:staticcheck
626
- _ = d .Set ("enable_dynamic_ip" , server .DynamicIPRequired )
627
- _ = d .Set ("organization_id" , server .Organization )
628
- _ = d .Set ("project_id" , server .Project )
629
- _ = d .Set ("protected" , server .Protected )
630
-
631
- // Image could be empty in an import context.
632
- image := regional .ExpandID (d .Get ("image" ).(string ))
633
- if server .Image != nil && (image .ID == "" || scwvalidation .IsUUID (image .ID )) {
634
- _ = d .Set ("image" , zonal .NewID (zone , server .Image .ID ).String ())
635
- }
622
+ _ = d .Set ("security_group_id" , zonal .NewID (zone , server .SecurityGroup .ID ).String ())
623
+ // EnableIPv6 is deprecated
624
+ _ = d .Set ("enable_ipv6" , server .EnableIPv6 ) //nolint:staticcheck
625
+ _ = d .Set ("enable_dynamic_ip" , server .DynamicIPRequired )
626
+ _ = d .Set ("organization_id" , server .Organization )
627
+ _ = d .Set ("project_id" , server .Project )
628
+ _ = d .Set ("protected" , server .Protected )
636
629
637
- if server .PlacementGroup != nil {
638
- _ = d .Set ("placement_group_id" , zonal .NewID (zone , server .PlacementGroup .ID ).String ())
639
- _ = d .Set ("placement_group_policy_respected" , server .PlacementGroup .PolicyRespected )
640
- }
630
+ // Image could be empty in an import context.
631
+ image := regional .ExpandID (d .Get ("image" ).(string ))
632
+ if server .Image != nil && (image .ID == "" || scwvalidation .IsUUID (image .ID )) {
633
+ _ = d .Set ("image" , zonal .NewID (zone , server .Image .ID ).String ())
634
+ }
641
635
642
- if server .PrivateIP != nil {
643
- _ = d .Set ("private_ip" , types .FlattenStringPtr (server .PrivateIP ))
644
- }
636
+ if server .PlacementGroup != nil {
637
+ _ = d .Set ("placement_group_id" , zonal .NewID (zone , server .PlacementGroup .ID ).String ())
638
+ _ = d .Set ("placement_group_policy_respected" , server .PlacementGroup .PolicyRespected )
639
+ }
645
640
646
- if _ , hasIPID := d .GetOk ("ip_id" ); server .PublicIP != nil && hasIPID { //nolint:staticcheck
647
- if ! server .PublicIP .Dynamic { //nolint:staticcheck
648
- _ = d .Set ("ip_id" , zonal .NewID (zone , server .PublicIP .ID ).String ()) //nolint:staticcheck
649
- } else {
650
- _ = d .Set ("ip_id" , "" )
651
- }
652
- } else {
653
- _ = d .Set ("ip_id" , "" )
654
- }
641
+ if server .PrivateIP != nil {
642
+ _ = d .Set ("private_ip" , types .FlattenStringPtr (server .PrivateIP ))
643
+ }
655
644
656
- if server .PublicIP != nil { //nolint:staticcheck
657
- _ = d .Set ("public_ip" , server .PublicIP .Address .String ()) //nolint:staticcheck
658
- d .SetConnInfo (map [string ]string {
659
- "type" : "ssh" ,
660
- "host" : server .PublicIP .Address .String (), //nolint:staticcheck
661
- })
645
+ if _ , hasIPID := d .GetOk ("ip_id" ); server .PublicIP != nil && hasIPID { //nolint:staticcheck
646
+ if ! server .PublicIP .Dynamic { //nolint:staticcheck
647
+ _ = d .Set ("ip_id" , zonal .NewID (zone , server .PublicIP .ID ).String ()) //nolint:staticcheck
662
648
} else {
663
- _ = d .Set ("public_ip" , "" )
664
- d .SetConnInfo (nil )
649
+ _ = d .Set ("ip_id" , "" )
665
650
}
651
+ } else {
652
+ _ = d .Set ("ip_id" , "" )
653
+ }
666
654
667
- if len (server .PublicIPs ) > 0 {
668
- _ = d .Set ("public_ips" , flattenServerPublicIPs (server .Zone , server .PublicIPs ))
669
- } else {
670
- _ = d .Set ("public_ips" , []interface {}{})
671
- }
655
+ if server .PublicIP != nil { //nolint:staticcheck
656
+ _ = d .Set ("public_ip" , server .PublicIP .Address .String ()) //nolint:staticcheck
657
+ d .SetConnInfo (map [string ]string {
658
+ "type" : "ssh" ,
659
+ "host" : server .PublicIP .Address .String (), //nolint:staticcheck
660
+ })
661
+ } else {
662
+ _ = d .Set ("public_ip" , "" )
663
+ d .SetConnInfo (nil )
664
+ }
672
665
673
- if _ , hasIPIDs := d . GetOk ( "ip_ids" ); hasIPIDs {
674
- _ = d .Set ("ip_ids " , flattenServerIPIDs ( server .PublicIPs ))
675
- } else {
676
- _ = d .Set ("ip_ids " , []interface {}{})
677
- }
666
+ if len ( server . PublicIPs ) > 0 {
667
+ _ = d .Set ("public_ips " , flattenServerPublicIPs ( server . Zone , server .PublicIPs ))
668
+ } else {
669
+ _ = d .Set ("public_ips " , []interface {}{})
670
+ }
678
671
679
- if server .IPv6 != nil { //nolint:staticcheck
680
- _ = d .Set ("ipv6_address" , server .IPv6 .Address .String ()) //nolint:staticcheck
681
- _ = d .Set ("ipv6_gateway" , server .IPv6 .Gateway .String ()) //nolint:staticcheck
672
+ if _ , hasIPIDs := d .GetOk ("ip_ids" ); hasIPIDs {
673
+ _ = d .Set ("ip_ids" , flattenServerIPIDs (server .PublicIPs ))
674
+ } else {
675
+ _ = d .Set ("ip_ids" , []interface {}{})
676
+ }
682
677
683
- prefixLength , err := strconv .Atoi (server .IPv6 .Netmask ) //nolint:staticcheck
684
- if err != nil {
685
- return diag .FromErr (err )
686
- }
678
+ if server .IPv6 != nil { //nolint:staticcheck
679
+ _ = d .Set ("ipv6_address" , server .IPv6 .Address .String ()) //nolint:staticcheck
680
+ _ = d .Set ("ipv6_gateway" , server .IPv6 .Gateway .String ()) //nolint:staticcheck
687
681
688
- _ = d .Set ("ipv6_prefix_length" , prefixLength )
689
- } else {
690
- _ = d .Set ("ipv6_address" , nil )
691
- _ = d .Set ("ipv6_gateway" , nil )
692
- _ = d .Set ("ipv6_prefix_length" , nil )
682
+ prefixLength , err := strconv .Atoi (server .IPv6 .Netmask ) //nolint:staticcheck
683
+ if err != nil {
684
+ return diag .FromErr (err )
693
685
}
694
686
695
- var additionalVolumesIDs []string
696
-
697
- for i , serverVolume := range sortVolumeServer (server .Volumes ) {
698
- if i == 0 {
699
- rootVolume := map [string ]interface {}{}
700
-
701
- vs , ok := d .Get ("root_volume" ).([]map [string ]interface {})
702
- if ok && len (vs ) > 0 {
703
- rootVolume = vs [0 ]
704
- }
705
-
706
- vol , err := api .GetUnknownVolume (& instancehelpers.GetUnknownVolumeRequest {
707
- VolumeID : serverVolume .ID ,
708
- Zone : server .Zone ,
709
- })
710
- if err != nil {
711
- return diag .FromErr (fmt .Errorf ("failed to read instance volume %s: %w" , serverVolume .ID , err ))
712
- }
713
-
714
- rootVolume ["volume_id" ] = zonal .NewID (zone , vol .ID ).String ()
715
- if vol .Size != nil {
716
- rootVolume ["size_in_gb" ] = int (uint64 (* vol .Size ) / gb )
717
- } else if serverVolume .Size != nil {
718
- rootVolume ["size_in_gb" ] = int (uint64 (* serverVolume .Size ) / gb )
719
- }
687
+ _ = d .Set ("ipv6_prefix_length" , prefixLength )
688
+ } else {
689
+ _ = d .Set ("ipv6_address" , nil )
690
+ _ = d .Set ("ipv6_gateway" , nil )
691
+ _ = d .Set ("ipv6_prefix_length" , nil )
692
+ }
720
693
721
- if vol .IsBlockVolume () {
722
- rootVolume ["sbs_iops" ] = types .FlattenUint32Ptr (vol .Iops )
723
- }
694
+ var additionalVolumesIDs []string
724
695
725
- _ , rootVolumeAttributeSet := d .GetOk ("root_volume" ) // Related to https://github.com/hashicorp/terraform-plugin-sdk/issues/142
726
- rootVolume ["delete_on_termination" ] = d .Get ("root_volume.0.delete_on_termination" ).(bool ) || ! rootVolumeAttributeSet
727
- rootVolume ["volume_type" ] = serverVolume .VolumeType
728
- rootVolume ["boot" ] = serverVolume .Boot
729
- rootVolume ["name" ] = serverVolume .Name
696
+ for i , serverVolume := range sortVolumeServer (server .Volumes ) {
697
+ if i == 0 {
698
+ rootVolume := map [string ]interface {}{}
730
699
731
- _ = d .Set ("root_volume" , []map [string ]interface {}{ rootVolume })
732
- } else {
733
- additionalVolumesIDs = append ( additionalVolumesIDs , zonal . NewID ( zone , serverVolume . ID ). String ())
700
+ vs , ok : = d .Get ("root_volume" ).( []map [string ]interface {})
701
+ if ok && len ( vs ) > 0 {
702
+ rootVolume = vs [ 0 ]
734
703
}
735
- }
736
704
737
- _ = d .Set ("additional_volume_ids" , additionalVolumesIDs )
738
- if len (additionalVolumesIDs ) > 0 {
739
- _ = d .Set ("additional_volume_ids" , additionalVolumesIDs )
740
- }
741
- ////
742
- // Read server user data
743
- ////
744
- allUserData , _ := api .GetAllServerUserData (& instanceSDK.GetAllServerUserDataRequest {
745
- Zone : zone ,
746
- ServerID : id ,
747
- }, scw .WithContext (ctx ))
705
+ vol , err := api .GetUnknownVolume (& instancehelpers.GetUnknownVolumeRequest {
706
+ VolumeID : serverVolume .ID ,
707
+ Zone : server .Zone ,
708
+ })
709
+ if err != nil {
710
+ return diag .FromErr (fmt .Errorf ("failed to read instance volume %s: %w" , serverVolume .ID , err ))
711
+ }
748
712
749
- userData := make (map [string ]interface {})
713
+ rootVolume ["volume_id" ] = zonal .NewID (zone , vol .ID ).String ()
714
+ if vol .Size != nil {
715
+ rootVolume ["size_in_gb" ] = int (uint64 (* vol .Size ) / gb )
716
+ } else if serverVolume .Size != nil {
717
+ rootVolume ["size_in_gb" ] = int (uint64 (* serverVolume .Size ) / gb )
718
+ }
750
719
751
- for key , value := range allUserData .UserData {
752
- userDataValue , err := io .ReadAll (value )
753
- if err != nil {
754
- return diag .FromErr (err )
720
+ if vol .IsBlockVolume () {
721
+ rootVolume ["sbs_iops" ] = types .FlattenUint32Ptr (vol .Iops )
755
722
}
756
723
757
- userData [key ] = string (userDataValue )
724
+ _ , rootVolumeAttributeSet := d .GetOk ("root_volume" ) // Related to https://github.com/hashicorp/terraform-plugin-sdk/issues/142
725
+ rootVolume ["delete_on_termination" ] = d .Get ("root_volume.0.delete_on_termination" ).(bool ) || ! rootVolumeAttributeSet
726
+ rootVolume ["volume_type" ] = serverVolume .VolumeType
727
+ rootVolume ["boot" ] = serverVolume .Boot
728
+ rootVolume ["name" ] = serverVolume .Name
729
+
730
+ _ = d .Set ("root_volume" , []map [string ]interface {}{rootVolume })
731
+ } else {
732
+ additionalVolumesIDs = append (additionalVolumesIDs , zonal .NewID (zone , serverVolume .ID ).String ())
758
733
}
734
+ }
735
+
736
+ _ = d .Set ("additional_volume_ids" , additionalVolumesIDs )
737
+ if len (additionalVolumesIDs ) > 0 {
738
+ _ = d .Set ("additional_volume_ids" , additionalVolumesIDs )
739
+ }
740
+ ////
741
+ // Read server user data
742
+ ////
743
+ allUserData , _ := api .GetAllServerUserData (& instanceSDK.GetAllServerUserDataRequest {
744
+ Zone : zone ,
745
+ ServerID : id ,
746
+ }, scw .WithContext (ctx ))
759
747
760
- _ = d . Set ( "user_data" , userData )
748
+ userData := make ( map [ string ] interface {} )
761
749
762
- ////
763
- // Read server private networks
764
- ////
765
- ph , err := newPrivateNICHandler (api .API , id , zone )
750
+ for key , value := range allUserData .UserData {
751
+ userDataValue , err := io .ReadAll (value )
766
752
if err != nil {
767
753
return diag .FromErr (err )
768
754
}
769
755
770
- // set private networks
771
- err = ph .set (d )
772
- if err != nil {
773
- return diag .FromErr (err )
774
- }
756
+ userData [key ] = string (userDataValue )
757
+ }
775
758
776
- return nil
759
+ _ = d .Set ("user_data" , userData )
760
+
761
+ ////
762
+ // Read server private networks
763
+ ////
764
+ ph , err := newPrivateNICHandler (api .API , id , zone )
765
+ if err != nil {
766
+ return diag .FromErr (err )
767
+ }
768
+
769
+ // set private networks
770
+ err = ph .set (d )
771
+ if err != nil {
772
+ return diag .FromErr (err )
777
773
}
778
774
779
775
return nil
0 commit comments