@@ -17,6 +17,7 @@ import (
1717 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1818 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1919
20+ "github.com/IBM/go-sdk-core/v5/core"
2021 "github.com/IBM/vpc-go-sdk/vpcv1"
2122)
2223
@@ -165,7 +166,9 @@ func ResourceIbmIsPlacementGroupValidator() *validate.ResourceValidator {
165166func resourceIbmIsPlacementGroupCreate (context context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
166167 vpcClient , err := meta .(conns.ClientSession ).VpcV1API ()
167168 if err != nil {
168- return diag .FromErr (err )
169+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "create" , "initialize-client" )
170+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
171+ return tfErr .GetDiag ()
169172 }
170173
171174 createPlacementGroupOptions := & vpcv1.CreatePlacementGroupOptions {}
@@ -181,17 +184,20 @@ func resourceIbmIsPlacementGroupCreate(context context.Context, d *schema.Resour
181184 createPlacementGroupOptions .SetResourceGroup (resourceGroupIdentity )
182185 }
183186
184- placementGroup , response , err := vpcClient .CreatePlacementGroupWithContext (context , createPlacementGroupOptions )
187+ placementGroup , _ , err := vpcClient .CreatePlacementGroupWithContext (context , createPlacementGroupOptions )
185188 if err != nil {
186- log .Printf ("[DEBUG] CreatePlacementGroupWithContext failed %s\n %s" , err , response )
187- return diag .FromErr (err )
189+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("CreatePlacementGroupWithContext failed: %s" , err .Error ()), "ibm_is_placement_group" , "create" )
190+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
191+ return tfErr .GetDiag ()
188192 }
189193
190194 d .SetId (* placementGroup .ID )
191195
192196 _ , err = isWaitForPlacementGroupAvailable (vpcClient , d .Id (), d .Timeout (schema .TimeoutCreate ), d )
193197 if err != nil {
194- return diag .FromErr (fmt .Errorf ("[ERROR] Error waiting for placement group to be available %s" , err ))
198+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("isWaitForPlacementGroupAvailable failed: %s" , err .Error ()), "ibm_is_placement_group" , "create" )
199+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
200+ return tfErr .GetDiag ()
195201 }
196202 if _ , ok := d .GetOk (isPlacementGroupTags ); ok {
197203 oldList , newList := d .GetChange (isPlacementGroupTags )
@@ -218,7 +224,9 @@ func resourceIbmIsPlacementGroupCreate(context context.Context, d *schema.Resour
218224func resourceIbmIsPlacementGroupRead (context context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
219225 vpcClient , err := meta .(conns.ClientSession ).VpcV1API ()
220226 if err != nil {
221- return diag .FromErr (err )
227+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "initialize-client" )
228+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
229+ return tfErr .GetDiag ()
222230 }
223231
224232 getPlacementGroupOptions := & vpcv1.GetPlacementGroupOptions {}
@@ -231,35 +239,46 @@ func resourceIbmIsPlacementGroupRead(context context.Context, d *schema.Resource
231239 d .SetId ("" )
232240 return nil
233241 }
234- log .Printf ("[DEBUG] GetPlacementGroupWithContext failed %s\n %s" , err , response )
235- return diag .FromErr (err )
242+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("GetPlacementGroupWithContext failed: %s" , err .Error ()), "ibm_is_placement_group" , "read" )
243+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
244+ return tfErr .GetDiag ()
236245 }
237246
238247 if err = d .Set ("strategy" , placementGroup .Strategy ); err != nil {
239- return diag .FromErr (fmt .Errorf ("[ERROR] Error setting strategy: %s" , err ))
248+ err = fmt .Errorf ("Error setting strategy: %s" , err )
249+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-strategy" ).GetDiag ()
240250 }
241- if err = d .Set ("name" , placementGroup .Name ); err != nil {
242- return diag .FromErr (fmt .Errorf ("[ERROR] Error setting name: %s" , err ))
251+ if ! core .IsNil (placementGroup .Name ) {
252+ if err = d .Set ("name" , placementGroup .Name ); err != nil {
253+ err = fmt .Errorf ("Error setting name: %s" , err )
254+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-name" ).GetDiag ()
255+ }
243256 }
244257 if placementGroup .ResourceGroup != nil {
245258 if err = d .Set ("resource_group" , * placementGroup .ResourceGroup .ID ); err != nil {
246- return diag .FromErr (fmt .Errorf ("[ERROR] Error setting resource_group: %s" , err ))
259+ err = fmt .Errorf ("Error setting resource_group: %s" , err )
260+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-resource_group" ).GetDiag ()
247261 }
248262 }
249- if err = d .Set ("created_at" , placementGroup .CreatedAt .String ()); err != nil {
250- return diag .FromErr (fmt .Errorf ("[ERROR] Error setting created_at: %s" , err ))
263+ if err = d .Set ("created_at" , flex .DateTimeToString (placementGroup .CreatedAt )); err != nil {
264+ err = fmt .Errorf ("Error setting created_at: %s" , err )
265+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-created_at" ).GetDiag ()
251266 }
252267 if err = d .Set ("crn" , placementGroup .CRN ); err != nil {
253- return diag .FromErr (fmt .Errorf ("[ERROR] Error setting crn: %s" , err ))
268+ err = fmt .Errorf ("Error setting crn: %s" , err )
269+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-crn" ).GetDiag ()
254270 }
255271 if err = d .Set ("href" , placementGroup .Href ); err != nil {
256- return diag .FromErr (fmt .Errorf ("[ERROR] Error setting href: %s" , err ))
272+ err = fmt .Errorf ("Error setting href: %s" , err )
273+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-href" ).GetDiag ()
257274 }
258275 if err = d .Set ("lifecycle_state" , placementGroup .LifecycleState ); err != nil {
259- return diag .FromErr (fmt .Errorf ("[ERROR] Error setting lifecycle_state: %s" , err ))
276+ err = fmt .Errorf ("Error setting lifecycle_state: %s" , err )
277+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-lifecycle_state" ).GetDiag ()
260278 }
261279 if err = d .Set ("resource_type" , placementGroup .ResourceType ); err != nil {
262- return diag .FromErr (fmt .Errorf ("[ERROR] Error setting resource_type: %s" , err ))
280+ err = fmt .Errorf ("Error setting resource_type: %s" , err )
281+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-resource_type" ).GetDiag ()
263282 }
264283 tags , err := flex .GetGlobalTagsUsingCRN (meta , * placementGroup .CRN , "" , isUserTagType )
265284 if err != nil {
@@ -273,15 +292,23 @@ func resourceIbmIsPlacementGroupRead(context context.Context, d *schema.Resource
273292 "Error getting placement group (%s) access tags: %s" , d .Id (), err )
274293 }
275294
276- d .Set (isPlacementGroupTags , tags )
277- d .Set (isPlacementGroupAccessTags , accesstags )
295+ if err = d .Set ("tags" , tags ); err != nil {
296+ err = fmt .Errorf ("Error setting tags: %s" , err )
297+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-tags" ).GetDiag ()
298+ }
299+ if err = d .Set ("access_tags" , accesstags ); err != nil {
300+ err = fmt .Errorf ("Error setting access_tags: %s" , err )
301+ return flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "read" , "set-access_tags" ).GetDiag ()
302+ }
278303 return nil
279304}
280305
281306func resourceIbmIsPlacementGroupUpdate (context context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
282307 vpcClient , err := meta .(conns.ClientSession ).VpcV1API ()
283308 if err != nil {
284- return diag .FromErr (err )
309+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "update" , "initialize-client" )
310+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
311+ return tfErr .GetDiag ()
285312 }
286313
287314 updatePlacementGroupOptions := & vpcv1.UpdatePlacementGroupOptions {}
@@ -299,14 +326,16 @@ func resourceIbmIsPlacementGroupUpdate(context context.Context, d *schema.Resour
299326 if hasChange {
300327 placementGroupPatch , err := placementGroupPatchModel .AsPatch ()
301328 if err != nil {
302- log .Printf ("[DEBUG] Error calling AsPatch for PlacementGroupPatch %s" , err )
303- return diag .FromErr (err )
329+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("placementGroupPatchModel.AsPatch failed: %s" , err .Error ()), "ibm_is_placement_group" , "update" )
330+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
331+ return tfErr .GetDiag ()
304332 }
305333 updatePlacementGroupOptions .SetPlacementGroupPatch (placementGroupPatch )
306- _ , response , err : = vpcClient .UpdatePlacementGroupWithContext (context , updatePlacementGroupOptions )
334+ _ , _ , err = vpcClient .UpdatePlacementGroupWithContext (context , updatePlacementGroupOptions )
307335 if err != nil {
308- log .Printf ("[DEBUG] UpdatePlacementGroupWithContext failed %s\n %s" , err , response )
309- return diag .FromErr (err )
336+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("UpdatePlacementGroupWithContext failed: %s" , err .Error ()), "ibm_is_placement_group" , "update" )
337+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
338+ return tfErr .GetDiag ()
310339 }
311340 }
312341 if d .HasChange (isPlacementGroupTags ) {
@@ -332,7 +361,9 @@ func resourceIbmIsPlacementGroupUpdate(context context.Context, d *schema.Resour
332361func resourceIbmIsPlacementGroupDelete (context context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
333362 vpcClient , err := meta .(conns.ClientSession ).VpcV1API ()
334363 if err != nil {
335- return diag .FromErr (err )
364+ tfErr := flex .DiscriminatedTerraformErrorf (err , err .Error (), "ibm_is_placement_group" , "delete" , "initialize-client" )
365+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
366+ return tfErr .GetDiag ()
336367 }
337368
338369 deletePlacementGroupOptions := & vpcv1.DeletePlacementGroupOptions {}
@@ -344,15 +375,21 @@ func resourceIbmIsPlacementGroupDelete(context context.Context, d *schema.Resour
344375 if response .StatusCode == 409 {
345376 _ , err = isWaitForPlacementGroupDeleteRetry (vpcClient , d , d .Id ())
346377 if err != nil {
347- return diag .FromErr (fmt .Errorf ("[ERROR] Error deleting PLacementGroup: %s" , err ))
378+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("isWaitForPlacementGroupDeleteRetry failed: %s" , err .Error ()), "ibm_is_placement_group" , "delete" )
379+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
380+ return tfErr .GetDiag ()
348381 }
349382 } else {
350- return diag .FromErr (fmt .Errorf ("[ERROR] Error deleting PLacementGroup: %s\n %s" , err , response ))
383+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("DeletePlacementGroupWithContext failed: %s" , err .Error ()), "ibm_is_placement_group" , "delete" )
384+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
385+ return tfErr .GetDiag ()
351386 }
352387 }
353388 _ , err = isWaitForPlacementGroupDelete (vpcClient , d , d .Id ())
354389 if err != nil {
355- return diag .FromErr (err )
390+ tfErr := flex .TerraformErrorf (err , fmt .Sprintf ("isWaitForPlacementGroupDelete failed: %s" , err .Error ()), "ibm_is_placement_group" , "delete" )
391+ log .Printf ("[DEBUG]\n %s" , tfErr .GetDebugMessage ())
392+ return tfErr .GetDiag ()
356393 }
357394 d .SetId ("" )
358395
0 commit comments