44package vpc
55
66import (
7+ "context"
78 "fmt"
89 "log"
910
1011 "github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
12+ "github.com/IBM/go-sdk-core/v5/core"
1113 "github.com/IBM/vpc-go-sdk/vpcv1"
14+ "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1215 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1316)
1417
1518func DataSourceIBMISInstanceGroup () * schema.Resource {
1619 return & schema.Resource {
17- Read : dataSourceIBMISInstanceGroupRead ,
20+ ReadContext : dataSourceIBMISInstanceGroupRead ,
1821
1922 Schema : map [string ]* schema.Schema {
2023
@@ -97,10 +100,12 @@ func DataSourceIBMISInstanceGroup() *schema.Resource {
97100 }
98101}
99102
100- func dataSourceIBMISInstanceGroupRead (d * schema.ResourceData , meta interface {}) error {
103+ func dataSourceIBMISInstanceGroupRead (context context. Context , d * schema.ResourceData , meta interface {}) diag. Diagnostics {
101104 sess , err := vpcClient (meta )
102105 if err != nil {
103- return err
106+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "(Data) ibm_is_instance_group" , "read" , "initialize-client" )
107+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
108+ return tfErr .GetDiag ()
104109 }
105110
106111 name := d .Get ("name" )
@@ -113,9 +118,11 @@ func dataSourceIBMISInstanceGroupRead(d *schema.ResourceData, meta interface{})
113118 if start != "" {
114119 listInstanceGroupOptions .Start = & start
115120 }
116- instanceGroupsCollection , response , err := sess .ListInstanceGroups ( & listInstanceGroupOptions )
121+ instanceGroupsCollection , _ , err := sess .ListInstanceGroupsWithContext ( context , & listInstanceGroupOptions )
117122 if err != nil {
118- return fmt .Errorf ("[ERROR] Error Fetching InstanceGroups %s\n %s" , err , response )
123+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("ListInstanceGroupsWithContext failed: %s" , err .Error ()), "(Data) ibm_is_instance_group" , "read" )
124+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
125+ return tfErr .GetDiag ()
119126 }
120127 start = flex .GetNext (instanceGroupsCollection .Next )
121128 allrecs = append (allrecs , instanceGroupsCollection .InstanceGroups ... )
@@ -128,38 +135,71 @@ func dataSourceIBMISInstanceGroupRead(d *schema.ResourceData, meta interface{})
128135
129136 for _ , instanceGroup := range allrecs {
130137 if * instanceGroup .Name == name {
131- d .Set ("name" , * instanceGroup .Name )
132- d .Set ("instance_template" , * instanceGroup .InstanceTemplate .ID )
133- d .Set ("membership_count" , * instanceGroup .MembershipCount )
134- d .Set ("resource_group" , * instanceGroup .ResourceGroup .ID )
135- d .Set ("crn" , * instanceGroup .CRN )
138+ if err = d .Set ("name" , * instanceGroup .Name ); err != nil {
139+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting name: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-name" ).GetDiag ()
140+ }
141+ if ! core .IsNil (instanceGroup .InstanceTemplate ) {
142+ if err = d .Set ("instance_template" , * instanceGroup .InstanceTemplate .ID ); err != nil {
143+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting instance_template: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-instance_template" ).GetDiag ()
144+ }
145+ }
146+ if err = d .Set ("membership_count" , flex .IntValue (instanceGroup .MembershipCount )); err != nil {
147+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting membership_count: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-membership_count" ).GetDiag ()
148+ }
149+ if ! core .IsNil (instanceGroup .ResourceGroup ) {
150+ if err = d .Set ("resource_group" , * instanceGroup .ResourceGroup .ID ); err != nil {
151+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting resource_group: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-resource_group" ).GetDiag ()
152+ }
153+ }
154+ if err = d .Set ("crn" , instanceGroup .CRN ); err != nil {
155+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting crn: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-crn" ).GetDiag ()
156+ }
136157 d .SetId (* instanceGroup .ID )
137- if instanceGroup .ApplicationPort != nil {
138- d .Set ("application_port" , * instanceGroup .ApplicationPort )
158+ if ! core .IsNil (instanceGroup .ApplicationPort ) {
159+ if err = d .Set ("application_port" , flex .IntValue (instanceGroup .ApplicationPort )); err != nil {
160+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting application_port: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-application_port" ).GetDiag ()
161+ }
139162 }
140163 subnets := make ([]string , 0 )
141164 for i := 0 ; i < len (instanceGroup .Subnets ); i ++ {
142165 subnets = append (subnets , string (* (instanceGroup .Subnets [i ].ID )))
143166 }
144167 if instanceGroup .LoadBalancerPool != nil {
145- d .Set ("load_balancer_pool" , * instanceGroup .LoadBalancerPool .ID )
168+ if err = d .Set ("load_balancer_pool" , * instanceGroup .LoadBalancerPool .ID ); err != nil {
169+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting load_balancer_pool: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-load_balancer_pool" ).GetDiag ()
170+ }
171+ }
172+ if err = d .Set ("subnets" , subnets ); err != nil {
173+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting subnets: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-subnets" ).GetDiag ()
146174 }
147- d . Set ( "subnets" , subnets )
175+
148176 managers := make ([]string , 0 )
149177 for i := 0 ; i < len (instanceGroup .Managers ); i ++ {
150178 managers = append (managers , string (* (instanceGroup .Managers [i ].ID )))
151179 }
152- d .Set ("managers" , managers )
153- d .Set ("vpc" , * instanceGroup .VPC .ID )
154- d .Set ("status" , * instanceGroup .Status )
180+ if err = d .Set ("managers" , managers ); err != nil {
181+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting managers: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-managers" ).GetDiag ()
182+ }
183+ if ! core .IsNil (instanceGroup .VPC ) {
184+ if err = d .Set ("vpc" , * instanceGroup .VPC .ID ); err != nil {
185+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting vpc: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-vpc" ).GetDiag ()
186+ }
187+ }
188+ if err = d .Set ("status" , instanceGroup .Status ); err != nil {
189+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting status: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-status" ).GetDiag ()
190+ }
155191 accesstags , err := flex .GetGlobalTagsUsingCRN (meta , * instanceGroup .CRN , "" , isInstanceGroupAccessTagType )
156192 if err != nil {
157193 log .Printf (
158194 "[ERROR] Error occured during reading of instance group (%s) access tags: %s" , d .Id (), err )
159195 }
160- d .Set (isInstanceGroupAccessTags , accesstags )
196+ if err = d .Set (isInstanceGroupAccessTags , accesstags ); err != nil {
197+ return flex .DiscriminatedTerraformErrorf (err , fmt .Sprintf ("Error setting access_tags: %s" , err ), "(Data) ibm_is_instance_group" , "read" , "set-access_tags" ).GetDiag ()
198+ }
161199 return nil
162200 }
163201 }
164- return fmt .Errorf ("Instance group %s not found" , name )
202+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("Instance group %s not found" , name ), "(Data) ibm_is_instance_group" , "read" )
203+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
204+ return tfErr .GetDiag ()
165205}
0 commit comments