44package vpc
55
66import (
7+ "context"
78 "fmt"
9+ "log"
810
11+ "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
912 "github.com/IBM/vpc-go-sdk/vpcv1"
13+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1014 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1115)
1216
@@ -25,7 +29,7 @@ const (
2529
2630func DataSourceIBMISOperatingSystem () * schema.Resource {
2731 return & schema.Resource {
28- Read : dataSourceIBMISOperatingSystemRead ,
32+ ReadContext : dataSourceIBMISOperatingSystemRead ,
2933
3034 Schema : map [string ]* schema.Schema {
3135 isOperatingSystemAllowUserImageCreation : {
@@ -85,39 +89,61 @@ func DataSourceIBMISOperatingSystem() *schema.Resource {
8589 }
8690}
8791
88- func dataSourceIBMISOperatingSystemRead (d * schema.ResourceData , meta interface {}) error {
92+ func dataSourceIBMISOperatingSystemRead (context context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
8993 name := d .Get (isOperatingSystemName ).(string )
90- err := osGet (d , meta , name )
94+ err := osGet (context , d , meta , name )
9195 if err != nil {
9296 return err
9397 }
9498 return nil
9599}
96100
97- func osGet (d * schema.ResourceData , meta interface {}, name string ) error {
101+ func osGet (context context. Context , d * schema.ResourceData , meta interface {}, name string ) diag. Diagnostics {
98102 sess , err := vpcClient (meta )
99103 if err != nil {
100- return err
104+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "(Data) ibm_is_operating_system" , "read" , "initialize-client" )
105+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
106+ return tfErr .GetDiag ()
101107 }
102108 getOperatingSystemOptions := & vpcv1.GetOperatingSystemOptions {
103109 Name : & name ,
104110 }
105- os , response , err := sess .GetOperatingSystem (getOperatingSystemOptions )
106- if err != nil || os == nil {
107- return fmt .Errorf ("[ERROR] Error Getting Operating System Details %s , %s" , err , response )
111+ operatingSystem , _ , err := sess .GetOperatingSystemWithContext (context , getOperatingSystemOptions )
112+ if err != nil || operatingSystem == nil {
113+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("GetOperatingSystemWithContext failed: %s" , err .Error ()), "(Data) ibm_is_operating_system" , "read" )
114+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
115+ return tfErr .GetDiag ()
116+ }
117+ if err = d .Set ("name" , operatingSystem .Name ); err != nil {
118+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting name: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-name" ).GetDiag ()
119+ }
120+ d .SetId (* operatingSystem .Name )
121+ if err = d .Set ("dedicated_host_only" , operatingSystem .DedicatedHostOnly ); err != nil {
122+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting dedicated_host_only: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-dedicated_host_only" ).GetDiag ()
123+ }
124+ if err = d .Set ("architecture" , operatingSystem .Architecture ); err != nil {
125+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting architecture: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-architecture" ).GetDiag ()
126+ }
127+ if err = d .Set ("display_name" , operatingSystem .DisplayName ); err != nil {
128+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting display_name: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-display_name" ).GetDiag ()
129+ }
130+ if err = d .Set ("family" , operatingSystem .Family ); err != nil {
131+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting family: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-family" ).GetDiag ()
132+ }
133+ if err = d .Set ("href" , operatingSystem .Href ); err != nil {
134+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting href: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-href" ).GetDiag ()
135+ }
136+ if err = d .Set ("vendor" , operatingSystem .Vendor ); err != nil {
137+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting vendor: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-vendor" ).GetDiag ()
138+ }
139+ if err = d .Set ("version" , operatingSystem .Version ); err != nil {
140+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting version: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-version" ).GetDiag ()
141+ }
142+ if err = d .Set ("allow_user_image_creation" , operatingSystem .AllowUserImageCreation ); err != nil {
143+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting allow_user_image_creation: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-allow_user_image_creation" ).GetDiag ()
108144 }
109- d .Set (isOperatingSystemName , * os .Name )
110- d .SetId (* os .Name )
111- d .Set (isOperatingSystemDHOnly , * os .DedicatedHostOnly )
112- d .Set (isOperatingSystemArchitecture , * os .Architecture )
113- d .Set (isOperatingSystemDisplayName , * os .DisplayName )
114- d .Set (isOperatingSystemFamily , * os .Family )
115- d .Set (isOperatingSystemHref , * os .Href )
116- d .Set (isOperatingSystemVendor , * os .Vendor )
117- d .Set (isOperatingSystemVersion , * os .Version )
118- if os .AllowUserImageCreation != nil {
119- d .Set (isOperatingSystemAllowUserImageCreation , * os .AllowUserImageCreation )
145+ if err = d .Set ("user_data_format" , operatingSystem .UserDataFormat ); err != nil {
146+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting user_data_format: %s" , err ), "(Data) ibm_is_operating_system" , "read" , "set-user_data_format" ).GetDiag ()
120147 }
121- d .Set (isOperatingSystemUserDataFormat , * os .UserDataFormat )
122148 return nil
123149}
0 commit comments