Skip to content

Commit 24ad450

Browse files
committed
enhancement: improved error handling for vpc dedicated host
1 parent 47ea841 commit 24ad450

11 files changed

+343
-174
lines changed

ibm/service/vpc/data_source_ibm_is_dedicated_host.go

Lines changed: 53 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,9 @@ func DataSourceIbmIsDedicatedHost() *schema.Resource {
384384
func dataSourceIbmIsDedicatedHostRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
385385
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
386386
if err != nil {
387-
return diag.FromErr(err)
387+
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "initialize-client")
388+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
389+
return tfErr.GetDiag()
388390
}
389391
listDedicatedHostsOptions := &vpcv1.ListDedicatedHostsOptions{}
390392
hostgroupid := d.Get("host_group").(string)
@@ -397,8 +399,9 @@ func dataSourceIbmIsDedicatedHostRead(context context.Context, d *schema.Resourc
397399
listDedicatedHostsOptions.Name = &name
398400
dedicatedHostCollection, response, err := vpcClient.ListDedicatedHostsWithContext(context, listDedicatedHostsOptions)
399401
if err != nil {
400-
log.Printf("[DEBUG] ListDedicatedHostsWithContext failed %s\n%s", err, response)
401-
return diag.FromErr(err)
402+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListDedicatedHostsWithContext failed: %s\n%s", err, response), "ibm_is_dedicated_host", "read")
403+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
404+
return tfErr.GetDiag()
402405
}
403406

404407
if len(dedicatedHostCollection.DedicatedHosts) != 0 {
@@ -408,20 +411,25 @@ func dataSourceIbmIsDedicatedHostRead(context context.Context, d *schema.Resourc
408411
d.SetId(*dedicatedHost.ID)
409412

410413
if err = d.Set("available_memory", dedicatedHost.AvailableMemory); err != nil {
411-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting available_memory: %s", err))
414+
err = fmt.Errorf("[ERROR] Error setting available_memory: %s", err)
415+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-available_memory").GetDiag()
412416
}
413417

414418
if dedicatedHost.AvailableVcpu != nil {
415419
err = d.Set("available_vcpu", dataSourceDedicatedHostFlattenAvailableVcpu(*dedicatedHost.AvailableVcpu))
416420
if err != nil {
417-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting available_vcpu %s", err))
421+
err = fmt.Errorf("[ERROR] Error setting available_vcpu: %s", err)
422+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-available_vcpu").GetDiag()
418423
}
419424
}
420425
if err = d.Set("created_at", dedicatedHost.CreatedAt.String()); err != nil {
421-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting created_at: %s", err))
426+
err = fmt.Errorf("[ERROR] Error setting created_at: %s", err)
427+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-created_at").GetDiag()
428+
422429
}
423430
if err = d.Set("crn", dedicatedHost.CRN); err != nil {
424-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting crn: %s", err))
431+
err = fmt.Errorf("[ERROR] Error setting crn: %s", err)
432+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-crn").GetDiag()
425433
}
426434
accesstags, err := flex.GetGlobalTagsUsingCRN(meta, *dedicatedHost.CRN, "", isDedicatedHostAccessTagType)
427435
if err != nil {
@@ -432,93 +440,112 @@ func dataSourceIbmIsDedicatedHostRead(context context.Context, d *schema.Resourc
432440
if dedicatedHost.Disks != nil {
433441
err = d.Set("disks", dataSourceDedicatedHostFlattenDisks(dedicatedHost.Disks))
434442
if err != nil {
435-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting disks %s", err))
443+
err = fmt.Errorf("[ERROR] Error setting disks: %s", err)
444+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-disks").GetDiag()
436445
}
437446
}
438447
if dedicatedHost.Group != nil {
439448
err = d.Set("host_group", *dedicatedHost.Group.ID)
440449
if err != nil {
441-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting group %s", err))
450+
err = fmt.Errorf("[ERROR] Error setting host_group: %s", err)
451+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-host_group").GetDiag()
442452
}
443453
}
444454
if err = d.Set("href", dedicatedHost.Href); err != nil {
445-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting href: %s", err))
455+
err = fmt.Errorf("[ERROR] Error setting href: %s", err)
456+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-href").GetDiag()
446457
}
447458
if err = d.Set("instance_placement_enabled", dedicatedHost.InstancePlacementEnabled); err != nil {
448-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting instance_placement_enabled: %s", err))
459+
err = fmt.Errorf("[ERROR] Error setting instance_placement_enabled: %s", err)
460+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-instance_placement_enabled").GetDiag()
449461
}
450462

451463
if dedicatedHost.Instances != nil {
452464
err = d.Set("instances", dataSourceDedicatedHostFlattenInstances(dedicatedHost.Instances))
453465
if err != nil {
454-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting instances %s", err))
466+
err = fmt.Errorf("[ERROR] Error setting instances: %s", err)
467+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-instances").GetDiag()
455468
}
456469
}
457470
if err = d.Set("lifecycle_state", dedicatedHost.LifecycleState); err != nil {
458-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting lifecycle_state: %s", err))
471+
err = fmt.Errorf("[ERROR] Error setting lifecycle_state: %s", err)
472+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-lifecycle_state").GetDiag()
459473
}
460474
if err = d.Set("memory", dedicatedHost.Memory); err != nil {
461-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting memory: %s", err))
475+
err = fmt.Errorf("[ERROR] Error setting memory: %s", err)
476+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-memory").GetDiag()
462477
}
463478
if err = d.Set("name", dedicatedHost.Name); err != nil {
464-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting name: %s", err))
479+
err = fmt.Errorf("[ERROR] Error setting name: %s", err)
480+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-name").GetDiag()
465481
}
466482
if dedicatedHost.Numa != nil {
467483
if err = d.Set("numa", dataSourceDedicatedHostFlattenNumaNodes(*dedicatedHost.Numa)); err != nil {
468-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting numa nodes: %s", err))
484+
err = fmt.Errorf("[ERROR] Error setting numa: %s", err)
485+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-numa").GetDiag()
469486
}
470487
}
471488
if dedicatedHost.Profile != nil {
472489
err = d.Set("profile", dataSourceDedicatedHostFlattenProfile(*dedicatedHost.Profile))
473490
if err != nil {
474-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting profile %s", err))
491+
err = fmt.Errorf("[ERROR] Error setting profile: %s", err)
492+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-profile").GetDiag()
493+
475494
}
476495
}
477496
if err = d.Set("provisionable", dedicatedHost.Provisionable); err != nil {
478-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting provisionable: %s", err))
497+
err = fmt.Errorf("[ERROR] Error setting provisionable: %s", err)
498+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-provisionable").GetDiag()
479499
}
480500

481501
if dedicatedHost.ResourceGroup != nil {
482502
err = d.Set("resource_group", *dedicatedHost.ResourceGroup.ID)
483503
if err != nil {
484-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting resource_group %s", err))
504+
err = fmt.Errorf("[ERROR] Error setting resource_group: %s", err)
505+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-resource_group").GetDiag()
485506
}
486507
}
487508
if err = d.Set("resource_type", dedicatedHost.ResourceType); err != nil {
488-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting resource_type: %s", err))
509+
err = fmt.Errorf("[ERROR] Error setting resource_type: %s", err)
510+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-resource_type").GetDiag()
489511
}
490512
if err = d.Set("socket_count", dedicatedHost.SocketCount); err != nil {
491-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting socket_count: %s", err))
513+
err = fmt.Errorf("[ERROR] Error setting socket_count: %s", err)
514+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-socket_count").GetDiag()
492515
}
493516
if err = d.Set("state", dedicatedHost.State); err != nil {
494-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting state: %s", err))
517+
err = fmt.Errorf("[ERROR] Error setting state: %s", err)
518+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-state").GetDiag()
495519
}
496520

497521
if dedicatedHost.SupportedInstanceProfiles != nil {
498522
err = d.Set("supported_instance_profiles", dataSourceDedicatedHostFlattenSupportedInstanceProfiles(dedicatedHost.SupportedInstanceProfiles))
499523
if err != nil {
500-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting supported_instance_profiles %s", err))
524+
err = fmt.Errorf("[ERROR] Error setting supported_instance_profiles: %s", err)
525+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-supported_instance_profiles").GetDiag()
501526
}
502527
}
503528

504529
if dedicatedHost.Vcpu != nil {
505530
err = d.Set("vcpu", dataSourceDedicatedHostFlattenVcpu(*dedicatedHost.Vcpu))
506531
if err != nil {
507-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting vcpu %s", err))
532+
err = fmt.Errorf("[ERROR] Error setting vcpu: %s", err)
533+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-vcpu").GetDiag()
508534
}
509535
}
510536

511537
if dedicatedHost.Zone != nil {
512538
err = d.Set("zone", *dedicatedHost.Zone.Name)
513539
if err != nil {
514-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting zone %s", err))
540+
err = fmt.Errorf("[ERROR] Error setting zone: %s", err)
541+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host", "read", "set-zone").GetDiag()
515542
}
516543
}
517544

518545
return nil
519546

520547
}
521-
return diag.FromErr(fmt.Errorf("[ERROR] No Dedicated Host found with name %s", name))
548+
return diag.FromErr(fmt.Errorf("No Dedicated Host found with name %s", name))
522549
}
523550

524551
// dataSourceIbmIsDedicatedHostID returns a reasonable ID for the list.

ibm/service/vpc/data_source_ibm_is_dedicated_host_disk.go

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"log"
1010

1111
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
12+
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1213
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1314
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1415

@@ -133,7 +134,9 @@ func DataSourceIbmIsDedicatedHostDisk() *schema.Resource {
133134
func dataSourceIbmIsDedicatedHostDiskRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
134135
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
135136
if err != nil {
136-
return diag.FromErr(err)
137+
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "initialize-client")
138+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
139+
return tfErr.GetDiag()
137140
}
138141

139142
getDedicatedHostDiskOptions := &vpcv1.GetDedicatedHostDiskOptions{}
@@ -143,49 +146,61 @@ func dataSourceIbmIsDedicatedHostDiskRead(context context.Context, d *schema.Res
143146

144147
dedicatedHostDisk, response, err := vpcClient.GetDedicatedHostDiskWithContext(context, getDedicatedHostDiskOptions)
145148
if err != nil {
146-
log.Printf("[DEBUG] GetDedicatedHostDiskWithContext failed %s\n%s", err, response)
147-
return diag.FromErr(err)
149+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetDedicatedHostDiskWithContext failed: %s\n%s", err, response), "ibm_is_dedicated_host_disk", "read")
150+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
151+
return tfErr.GetDiag()
148152
}
149153

150154
d.SetId(*dedicatedHostDisk.ID)
151155
if err = d.Set("available", dedicatedHostDisk.Available); err != nil {
152-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting available: %s", err))
156+
err = fmt.Errorf("[ERROR] Error setting available: %s", err)
157+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-available").GetDiag()
153158
}
154159
if err = d.Set("created_at", dedicatedHostDisk.CreatedAt.String()); err != nil {
155-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting created_at: %s", err))
160+
err = fmt.Errorf("[ERROR] Error setting created_at: %s", err)
161+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-created_at").GetDiag()
156162
}
157163
if err = d.Set("href", dedicatedHostDisk.Href); err != nil {
158-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting href: %s", err))
164+
err = fmt.Errorf("[ERROR] Error setting href: %s", err)
165+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-href").GetDiag()
159166
}
160167

161168
if dedicatedHostDisk.InstanceDisks != nil {
162169
err = d.Set("instance_disks", dataSourceDedicatedHostDiskFlattenInstanceDisks(dedicatedHostDisk.InstanceDisks))
163170
if err != nil {
164-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting instance_disks %s", err))
171+
err = fmt.Errorf("[ERROR] Error setting instance_disks: %s", err)
172+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-instance_disks").GetDiag()
165173
}
166174
}
167175
if err = d.Set("interface_type", dedicatedHostDisk.InterfaceType); err != nil {
168-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting interface_type: %s", err))
176+
err = fmt.Errorf("[ERROR] Error setting interface_type: %s", err)
177+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-interface_type").GetDiag()
169178
}
170179
if dedicatedHostDisk.LifecycleState != nil {
171180
if err = d.Set("lifecycle_state", dedicatedHostDisk.LifecycleState); err != nil {
172-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting lifecycle_state: %s", err))
181+
err = fmt.Errorf("[ERROR] Error setting lifecycle_state: %s", err)
182+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-lifecycle_state").GetDiag()
173183
}
174184
}
175185
if err = d.Set("name", dedicatedHostDisk.Name); err != nil {
176-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting name: %s", err))
186+
err = fmt.Errorf("[ERROR] Error setting name: %s", err)
187+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-name").GetDiag()
177188
}
178189
if err = d.Set("provisionable", dedicatedHostDisk.Provisionable); err != nil {
179-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting provisionable: %s", err))
190+
err = fmt.Errorf("[ERROR] Error setting provisionable: %s", err)
191+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-provisionable").GetDiag()
180192
}
181193
if err = d.Set("resource_type", dedicatedHostDisk.ResourceType); err != nil {
182-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting resource_type: %s", err))
194+
err = fmt.Errorf("[ERROR] Error setting resource_type: %s", err)
195+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-resource_type").GetDiag()
183196
}
184197
if err = d.Set("size", dedicatedHostDisk.Size); err != nil {
185-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting size: %s", err))
198+
err = fmt.Errorf("[ERROR] Error setting size: %s", err)
199+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-size").GetDiag()
186200
}
187201
if err = d.Set("supported_instance_interface_types", dedicatedHostDisk.SupportedInstanceInterfaceTypes); err != nil {
188-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting supported_instance_interface_types: %s", err))
202+
err = fmt.Errorf("[ERROR] Error setting supported_instance_interface_types: %s", err)
203+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disk", "read", "set-supported_instance_interface_types").GetDiag()
189204
}
190205

191206
return nil

ibm/service/vpc/data_source_ibm_is_dedicated_host_disks.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"time"
1111

1212
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
13+
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
1314
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1415
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1516

@@ -143,7 +144,9 @@ func DataSourceIbmIsDedicatedHostDisks() *schema.Resource {
143144
func dataSourceIbmIsDedicatedHostDisksRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
144145
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
145146
if err != nil {
146-
return diag.FromErr(err)
147+
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "ibm_is_dedicated_host_disks", "read", "initialize-client")
148+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
149+
return tfErr.GetDiag()
147150
}
148151

149152
listDedicatedHostDisksOptions := &vpcv1.ListDedicatedHostDisksOptions{}
@@ -152,16 +155,17 @@ func dataSourceIbmIsDedicatedHostDisksRead(context context.Context, d *schema.Re
152155

153156
dedicatedHostDiskCollection, response, err := vpcClient.ListDedicatedHostDisksWithContext(context, listDedicatedHostDisksOptions)
154157
if err != nil {
155-
log.Printf("[DEBUG] ListDedicatedHostDisksWithContext failed %s\n%s", err, response)
156-
return diag.FromErr(err)
158+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListDedicatedHostDisksWithContext failed: %s\n%s", err, response), "ibm_is_dedicated_host_disks", "read")
159+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
160+
return tfErr.GetDiag()
157161
}
158162

159163
d.SetId(dataSourceIbmIsDedicatedHostDisksID(d))
160164

161165
if dedicatedHostDiskCollection.Disks != nil {
162166
err = d.Set("disks", dataSourceDedicatedHostDiskCollectionFlattenDisks(dedicatedHostDiskCollection.Disks))
163167
if err != nil {
164-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting disks %s", err))
168+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("[ERROR] Error setting disks: %s", err.Error()), "ibm_is_dedicated_host_disks", "read", "set-disks").GetDiag()
165169
}
166170
}
167171

0 commit comments

Comments
 (0)