Skip to content

Commit 31bccb2

Browse files
authored
enhancement: improved error handling for vpc volume (IBM-Cloud#6152)
* enhancement: improved error handling for vpc volume * enhancement: improved error handling for vpc volume
1 parent 9352c93 commit 31bccb2

File tree

5 files changed

+474
-249
lines changed

5 files changed

+474
-249
lines changed

ibm/service/vpc/data_source_ibm_is_volume.go

Lines changed: 131 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -344,20 +344,22 @@ func DataSourceIBMISVolumeValidator() *validate.ResourceValidator {
344344

345345
func dataSourceIBMISVolumeRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
346346

347-
err := volumeGet(d, meta)
347+
err := volumeGet(context, d, meta)
348348
if err != nil {
349-
return diag.FromErr(err)
349+
return err
350350
}
351351
return nil
352352
}
353353

354-
func volumeGet(d *schema.ResourceData, meta interface{}) error {
354+
func volumeGet(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
355355
sess, err := vpcClient(meta)
356356
if err != nil {
357-
return err
357+
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_is_volume", "read", "initialize-client")
358+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
359+
return tfErr.GetDiag()
358360
}
359361

360-
var vol vpcv1.Volume
362+
var volume vpcv1.Volume
361363
if volName, ok := d.GetOk(isVolumeName); ok {
362364
name := volName.(string)
363365
zone := ""
@@ -372,71 +374,99 @@ func volumeGet(d *schema.ResourceData, meta interface{}) error {
372374
listVolumesOptions.ZoneName = &zone
373375
}
374376
listVolumesOptions.Name = &name
375-
vols, response, err := sess.ListVolumes(listVolumesOptions)
377+
vols, _, err := sess.ListVolumesWithContext(context, listVolumesOptions)
376378
if err != nil {
377-
return fmt.Errorf("[ERROR] Error Fetching volumes %s\n%s", err, response)
379+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListVolumesWithContext failed: %s", err.Error()), "(Data) ibm_is_volume", "read")
380+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
381+
return tfErr.GetDiag()
378382
}
379383
allrecs := vols.Volumes
380384

381385
if len(allrecs) == 0 {
382-
return fmt.Errorf("[ERROR] No Volume found with name %s", name)
386+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("No Volume found with name: %s", name), "(Data) ibm_is_volume", "read")
387+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
388+
return tfErr.GetDiag()
383389
}
384-
vol = allrecs[0]
390+
volume = allrecs[0]
385391
} else {
386392
identifier := d.Get("identifier").(string)
387393
getVolumeOptions := &vpcv1.GetVolumeOptions{
388394
ID: &identifier,
389395
}
390396

391-
volPtr, response, err := sess.GetVolume(getVolumeOptions)
397+
volPtr, _, err := sess.GetVolumeWithContext(context, getVolumeOptions)
392398
if err != nil {
393-
return fmt.Errorf("[ERROR] Error on get volume %s\n%s", err, response)
399+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetVolumeWithContext failed: %s", err.Error()), "(Data) ibm_is_volume", "read")
400+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
401+
return tfErr.GetDiag()
394402
}
395-
vol = *volPtr
403+
volume = *volPtr
404+
}
405+
d.SetId(*volume.ID)
406+
if err = d.Set("active", volume.Active); err != nil {
407+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting active: %s", err), "(Data) ibm_is_volume", "read", "set-active").GetDiag()
408+
}
409+
if err = d.Set("attachment_state", volume.AttachmentState); err != nil {
410+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting attachment_state: %s", err), "(Data) ibm_is_volume", "read", "set-attachment_state").GetDiag()
396411
}
397-
d.SetId(*vol.ID)
398-
if vol.Active != nil {
399-
d.Set(isVolumesActive, vol.Active)
412+
if err = d.Set("bandwidth", flex.IntValue(volume.Bandwidth)); err != nil {
413+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting bandwidth: %s", err), "(Data) ibm_is_volume", "read", "set-bandwidth").GetDiag()
400414
}
401-
if vol.AttachmentState != nil {
402-
d.Set(isVolumeAttachmentState, vol.AttachmentState)
415+
if err = d.Set("busy", volume.Busy); err != nil {
416+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting busy: %s", err), "(Data) ibm_is_volume", "read", "set-busy").GetDiag()
403417
}
404-
d.Set(isVolumeBandwidth, int(*vol.Bandwidth))
405-
if vol.Busy != nil {
406-
d.Set(isVolumesBusy, vol.Busy)
418+
if err = d.Set("capacity", flex.IntValue(volume.Capacity)); err != nil {
419+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting capacity: %s", err), "(Data) ibm_is_volume", "read", "set-capacity").GetDiag()
407420
}
408-
if vol.Capacity != nil {
409-
d.Set(isVolumesCapacity, vol.Capacity)
421+
if err = d.Set("created_at", flex.DateTimeToString(volume.CreatedAt)); err != nil {
422+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting created_at: %s", err), "(Data) ibm_is_volume", "read", "set-created_at").GetDiag()
410423
}
411-
if vol.CreatedAt != nil {
412-
d.Set(isVolumesCreatedAt, flex.DateTimeToString(vol.CreatedAt))
424+
if err = d.Set("name", volume.Name); err != nil {
425+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting name: %s", err), "(Data) ibm_is_volume", "read", "set-name").GetDiag()
413426
}
414-
d.Set(isVolumeName, *vol.Name)
415-
d.Set("identifier", *vol.ID)
416-
if vol.OperatingSystem != nil {
427+
d.Set("identifier", *volume.ID)
428+
if volume.OperatingSystem != nil {
417429
operatingSystemList := []map[string]interface{}{}
418-
operatingSystemMap := dataSourceVolumeCollectionVolumesOperatingSystemToMap(*vol.OperatingSystem)
430+
operatingSystemMap := dataSourceVolumeCollectionVolumesOperatingSystemToMap(*volume.OperatingSystem)
419431
operatingSystemList = append(operatingSystemList, operatingSystemMap)
420-
d.Set(isVolumesOperatingSystem, operatingSystemList)
432+
if err = d.Set(isVolumesOperatingSystem, operatingSystemList); err != nil {
433+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting operating_system: %s", err), "(Data) ibm_is_volume", "read", "set-operating_system").GetDiag()
434+
}
435+
}
436+
if err = d.Set(isVolumeProfileName, *volume.Profile.Name); err != nil {
437+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting profile: %s", err), "(Data) ibm_is_volume", "read", "set-profile").GetDiag()
421438
}
422-
d.Set(isVolumeProfileName, *vol.Profile.Name)
423-
d.Set(isVolumeZone, *vol.Zone.Name)
424-
if vol.EncryptionKey != nil {
425-
d.Set(isVolumeEncryptionKey, vol.EncryptionKey.CRN)
439+
if err = d.Set(isVolumeZone, *volume.Zone.Name); err != nil {
440+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting zone: %s", err), "(Data) ibm_is_volume", "read", "set-zone").GetDiag()
426441
}
427-
if vol.Encryption != nil {
428-
d.Set(isVolumeEncryptionType, vol.Encryption)
442+
if volume.EncryptionKey != nil {
443+
if err = d.Set(isVolumeEncryptionKey, volume.EncryptionKey.CRN); err != nil {
444+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting encryption_key: %s", err), "(Data) ibm_is_volume", "read", "set-encryption_key").GetDiag()
445+
}
429446
}
430-
if vol.SourceSnapshot != nil {
431-
d.Set(isVolumeSourceSnapshot, *vol.SourceSnapshot.ID)
447+
if err = d.Set("encryption_type", volume.Encryption); err != nil {
448+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting encryption_type: %s", err), "(Data) ibm_is_volume", "read", "set-encryption_type").GetDiag()
432449
}
433-
d.Set(isVolumeIops, *vol.Iops)
434-
d.Set(isVolumeCapacity, *vol.Capacity)
435-
d.Set(isVolumeCrn, *vol.CRN)
436-
d.Set(isVolumeStatus, *vol.Status)
437-
if vol.StatusReasons != nil {
450+
if volume.SourceSnapshot != nil {
451+
if err = d.Set(isVolumeSourceSnapshot, *volume.SourceSnapshot.ID); err != nil {
452+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting source_snapshot: %s", err), "(Data) ibm_is_volume", "read", "set-source_snapshot").GetDiag()
453+
}
454+
}
455+
if err = d.Set("iops", flex.IntValue(volume.Iops)); err != nil {
456+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting iops: %s", err), "(Data) ibm_is_volume", "read", "set-iops").GetDiag()
457+
}
458+
if err = d.Set("capacity", flex.IntValue(volume.Capacity)); err != nil {
459+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting capacity: %s", err), "(Data) ibm_is_volume", "read", "set-capacity").GetDiag()
460+
}
461+
if err = d.Set("crn", volume.CRN); err != nil {
462+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting crn: %s", err), "(Data) ibm_is_volume", "read", "set-crn").GetDiag()
463+
}
464+
if err = d.Set("status", volume.Status); err != nil {
465+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status: %s", err), "(Data) ibm_is_volume", "read", "set-status").GetDiag()
466+
}
467+
if volume.StatusReasons != nil {
438468
statusReasonsList := make([]map[string]interface{}, 0)
439-
for _, sr := range vol.StatusReasons {
469+
for _, sr := range volume.StatusReasons {
440470
currentSR := map[string]interface{}{}
441471
if sr.Code != nil && sr.Message != nil {
442472
currentSR[isVolumeStatusReasonsCode] = *sr.Code
@@ -446,32 +476,54 @@ func volumeGet(d *schema.ResourceData, meta interface{}) error {
446476
}
447477
statusReasonsList = append(statusReasonsList, currentSR)
448478
}
449-
d.Set(isVolumeStatusReasons, statusReasonsList)
479+
if err = d.Set(isVolumeStatusReasons, statusReasonsList); err != nil {
480+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting status_reasons: %s", err), "(Data) ibm_is_volume", "read", "set-status_reasons").GetDiag()
481+
}
450482
}
451483
}
452-
d.Set(isVolumeTags, vol.UserTags)
453-
accesstags, err := flex.GetGlobalTagsUsingCRN(meta, *vol.CRN, "", isVolumeAccessTagType)
484+
if err = d.Set(isVolumeTags, volume.UserTags); err != nil {
485+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting tags: %s", err), "(Data) ibm_is_volume", "read", "set-tags").GetDiag()
486+
}
487+
accesstags, err := flex.GetGlobalTagsUsingCRN(meta, *volume.CRN, "", isVolumeAccessTagType)
454488
if err != nil {
455489
log.Printf(
456490
"Error on get of resource vpc volume (%s) access tags: %s", d.Id(), err)
457491
}
458-
d.Set(isVolumeAccessTags, accesstags)
492+
if err = d.Set(isVolumeAccessTags, accesstags); err != nil {
493+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting access_tags: %s", err), "(Data) ibm_is_volume", "read", "set-access_tags").GetDiag()
494+
}
459495
controller, err := flex.GetBaseController(meta)
460496
if err != nil {
461-
return err
497+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetBaseController failed: %s", err.Error()), "(Data) ibm_is_volume", "read")
498+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
499+
return tfErr.GetDiag()
500+
}
501+
if err = d.Set(flex.ResourceControllerURL, controller+"/vpc-ext/storage/storageVolumes"); err != nil {
502+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_controller_url: %s", err), "(Data) ibm_is_volume", "read", "set-resource_controller_url").GetDiag()
503+
}
504+
505+
if err = d.Set(flex.ResourceName, *volume.Name); err != nil {
506+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_name: %s", err), "(Data) ibm_is_volume", "read", "set-resource_name").GetDiag()
507+
}
508+
509+
if err = d.Set(flex.ResourceCRN, *volume.CRN); err != nil {
510+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_crn: %s", err), "(Data) ibm_is_volume", "read", "set-resource_crn").GetDiag()
462511
}
463-
d.Set(flex.ResourceControllerURL, controller+"/vpc-ext/storage/storageVolumes")
464-
d.Set(flex.ResourceName, *vol.Name)
465-
d.Set(flex.ResourceCRN, *vol.CRN)
466-
d.Set(flex.ResourceStatus, *vol.Status)
467-
if vol.ResourceGroup != nil {
468-
d.Set(flex.ResourceGroupName, vol.ResourceGroup.Name)
469-
d.Set(isVolumeResourceGroup, *vol.ResourceGroup.ID)
512+
if err = d.Set("resource_status", volume.Status); err != nil {
513+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_status: %s", err), "(Data) ibm_is_volume", "read", "set-resource_status").GetDiag()
514+
}
515+
if volume.ResourceGroup != nil {
516+
if err = d.Set(flex.ResourceGroupName, volume.ResourceGroup.Name); err != nil {
517+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_group_name: %s", err), "(Data) ibm_is_volume", "read", "set-resource_group_name").GetDiag()
518+
}
519+
if err = d.Set(isVolumeResourceGroup, *volume.ResourceGroup.ID); err != nil {
520+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_group: %s", err), "(Data) ibm_is_volume", "read", "set-resource_group").GetDiag()
521+
}
470522
}
471523

472-
if vol.HealthReasons != nil {
524+
if volume.HealthReasons != nil {
473525
healthReasonsList := make([]map[string]interface{}, 0)
474-
for _, sr := range vol.HealthReasons {
526+
for _, sr := range volume.HealthReasons {
475527
currentSR := map[string]interface{}{}
476528
if sr.Code != nil && sr.Message != nil {
477529
currentSR[isVolumeHealthReasonsCode] = *sr.Code
@@ -482,45 +534,49 @@ func volumeGet(d *schema.ResourceData, meta interface{}) error {
482534
healthReasonsList = append(healthReasonsList, currentSR)
483535
}
484536
}
485-
d.Set(isVolumeHealthReasons, healthReasonsList)
537+
if err = d.Set(isVolumeHealthReasons, healthReasonsList); err != nil {
538+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting health_reasons: %s", err), "(Data) ibm_is_volume", "read", "set-health_reasons").GetDiag()
539+
}
486540
}
487541
// catalog
488-
if vol.CatalogOffering != nil {
542+
if volume.CatalogOffering != nil {
489543
versionCrn := ""
490-
if vol.CatalogOffering.Version != nil && vol.CatalogOffering.Version.CRN != nil {
491-
versionCrn = *vol.CatalogOffering.Version.CRN
544+
if volume.CatalogOffering.Version != nil && volume.CatalogOffering.Version.CRN != nil {
545+
versionCrn = *volume.CatalogOffering.Version.CRN
492546
}
493547
catalogList := make([]map[string]interface{}, 0)
494548
catalogMap := map[string]interface{}{}
495549
if versionCrn != "" {
496550
catalogMap[isVolumeCatalogOfferingVersionCrn] = versionCrn
497551
}
498-
if vol.CatalogOffering.Plan != nil {
552+
if volume.CatalogOffering.Plan != nil {
499553
planCrn := ""
500-
if vol.CatalogOffering.Plan.CRN != nil {
501-
planCrn = *vol.CatalogOffering.Plan.CRN
554+
if volume.CatalogOffering.Plan.CRN != nil {
555+
planCrn = *volume.CatalogOffering.Plan.CRN
502556
}
503557
if planCrn != "" {
504-
catalogMap[isVolumeCatalogOfferingPlanCrn] = *vol.CatalogOffering.Plan.CRN
558+
catalogMap[isVolumeCatalogOfferingPlanCrn] = *volume.CatalogOffering.Plan.CRN
505559
}
506-
if vol.CatalogOffering.Plan.Deleted != nil {
507-
deletedMap := resourceIbmIsVolumeCatalogOfferingVersionPlanReferenceDeletedToMap(*vol.CatalogOffering.Plan.Deleted)
560+
if volume.CatalogOffering.Plan.Deleted != nil {
561+
deletedMap := resourceIbmIsVolumeCatalogOfferingVersionPlanReferenceDeletedToMap(*volume.CatalogOffering.Plan.Deleted)
508562
catalogMap["deleted"] = []map[string]interface{}{deletedMap}
509563
}
510564
}
511565
catalogList = append(catalogList, catalogMap)
512-
d.Set(isVolumeCatalogOffering, catalogList)
566+
567+
if err = d.Set(isVolumeCatalogOffering, catalogList); err != nil {
568+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting catalog_offering: %s", err), "(Data) ibm_is_volume", "read", "set-catalog_offering").GetDiag()
569+
}
513570
}
514-
if vol.HealthState != nil {
515-
d.Set(isVolumeHealthState, *vol.HealthState)
571+
if err = d.Set("health_state", volume.HealthState); err != nil {
572+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting health_state: %s", err), "(Data) ibm_is_volume", "read", "set-health_state").GetDiag()
516573
}
517574

518-
if err = d.Set("adjustable_capacity_states", vol.AdjustableCapacityStates); err != nil {
519-
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting adjustable_capacity_states: %s", err), "(Data) ibm_is_volume", "read", "set-adjustable_capacity_states")
575+
if err = d.Set("adjustable_capacity_states", volume.AdjustableCapacityStates); err != nil {
576+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting adjustable_capacity_states: %s", err), "(Data) ibm_is_volume", "read", "set-adjustable_capacity_states").GetDiag()
520577
}
521-
522-
if err = d.Set("adjustable_iops_states", vol.AdjustableIopsStates); err != nil {
523-
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting adjustable_iops_states: %s", err), "(Data) ibm_is_volume", "read", "set-adjustable_iops_states")
578+
if err = d.Set("adjustable_iops_states", volume.AdjustableIopsStates); err != nil {
579+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting adjustable_iops_states: %s", err), "(Data) ibm_is_volume", "read", "set-adjustable_iops_states").GetDiag()
524580
}
525581

526582
return nil

ibm/service/vpc/data_source_ibm_is_volume_profile.go

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -229,17 +229,17 @@ func dataSourceIBMISVolumeProfileRead(context context.Context, d *schema.Resourc
229229

230230
name := d.Get(isVolumeProfile).(string)
231231

232-
err := volumeProfileGet(d, meta, name)
232+
err := volumeProfileGet(context, d, meta, name)
233233
if err != nil {
234234
return err
235235
}
236236
return nil
237237
}
238238

239-
func volumeProfileGet(d *schema.ResourceData, meta interface{}, name string) diag.Diagnostics {
239+
func volumeProfileGet(context context.Context, d *schema.ResourceData, meta interface{}, name string) diag.Diagnostics {
240240
sess, err := vpcClient(meta)
241241
if err != nil {
242-
tfErr := flex.TerraformErrorf(err, err.Error(), "(Data) ibm_is_volume_profile", "read")
242+
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_is_volume_profile", "read", "initialize-client")
243243
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
244244
return tfErr.GetDiag()
245245
}
@@ -259,52 +259,44 @@ func volumeProfileGet(d *schema.ResourceData, meta interface{}, name string) dia
259259
if volumeProfile.BootCapacity != nil {
260260
modelMap, err := DataSourceIBMIsVolumeProfileVolumeProfileBootCapacityToMap(volumeProfile.BootCapacity)
261261
if err != nil {
262-
tfErr := flex.TerraformErrorf(err, err.Error(), "(Data) ibm_is_volume_profile", "read")
263-
return tfErr.GetDiag()
262+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_is_volume_profile", "read", "boot_capacity-to-map").GetDiag()
264263
}
265264
bootCapacity = append(bootCapacity, modelMap)
266265
}
267266
if err = d.Set("boot_capacity", bootCapacity); err != nil {
268-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error setting boot_capacity: %s", err), "(Data) ibm_is_volume_profile", "read")
269-
return tfErr.GetDiag()
267+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting boot_capacity: %s", err), "(Data) ibm_is_volume_profile", "read", "set-boot_capacity").GetDiag()
270268
}
271269

272270
capacity := []map[string]interface{}{}
273271
if volumeProfile.Capacity != nil {
274272
modelMap, err := DataSourceIBMIsVolumeProfileVolumeProfileCapacityToMap(volumeProfile.Capacity)
275273
if err != nil {
276-
tfErr := flex.TerraformErrorf(err, err.Error(), "(Data) ibm_is_volume_profile", "read")
277-
return tfErr.GetDiag()
274+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_is_volume_profile", "read", "capacity-to-map").GetDiag()
278275
}
279276
capacity = append(capacity, modelMap)
280277
}
281278
if err = d.Set("capacity", capacity); err != nil {
282-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error setting capacity: %s", err), "(Data) ibm_is_volume_profile", "read")
283-
return tfErr.GetDiag()
279+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting capacity: %s", err), "(Data) ibm_is_volume_profile", "read", "set-capacity").GetDiag()
284280
}
285281

286282
if err = d.Set("family", volumeProfile.Family); err != nil {
287-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error setting family: %s", err), "(Data) ibm_is_volume_profile", "read")
288-
return tfErr.GetDiag()
283+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting family: %s", err), "(Data) ibm_is_volume_profile", "read", "set-family").GetDiag()
289284
}
290285

291286
if err = d.Set("href", volumeProfile.Href); err != nil {
292-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error setting href: %s", err), "(Data) ibm_is_volume_profile", "read")
293-
return tfErr.GetDiag()
287+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting href: %s", err), "(Data) ibm_is_volume_profile", "read", "set-href").GetDiag()
294288
}
295289

296290
iops := []map[string]interface{}{}
297291
if volumeProfile.Iops != nil {
298292
modelMap, err := DataSourceIBMIsVolumeProfileVolumeProfileIopsToMap(volumeProfile.Iops)
299293
if err != nil {
300-
tfErr := flex.TerraformErrorf(err, err.Error(), "(Data) ibm_is_volume_profile", "read")
301-
return tfErr.GetDiag()
294+
return flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_is_volume_profile", "read", "iops-to-map").GetDiag()
302295
}
303296
iops = append(iops, modelMap)
304297
}
305298
if err = d.Set("iops", iops); err != nil {
306-
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("Error setting iops: %s", err), "(Data) ibm_is_volume_profile", "read")
307-
return tfErr.GetDiag()
299+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting iops: %s", err), "(Data) ibm_is_volume_profile", "read", "set-iops").GetDiag()
308300
}
309301
// defined_performance changes
310302

0 commit comments

Comments
 (0)