Skip to content

Commit d8e7dc8

Browse files
authored
enhancement: improved error handling for vpc vpn_gateway (IBM-Cloud#6173)
1 parent 6ab2ea6 commit d8e7dc8

8 files changed

+736
-391
lines changed

ibm/service/vpc/data_source_ibm_is_vpn_gateway.go

Lines changed: 36 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,9 @@ func DataSourceIBMISVPNGateway() *schema.Resource {
331331
func dataSourceIBMIsVPNGatewayRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
332332
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
333333
if err != nil {
334-
return diag.FromErr(err)
334+
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_is_vpn_gateway", "read", "initialize-client")
335+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
336+
return tfErr.GetDiag()
335337
}
336338

337339
vpn_gateway_name := d.Get("vpn_gateway_name").(string)
@@ -342,10 +344,11 @@ func dataSourceIBMIsVPNGatewayRead(context context.Context, d *schema.ResourceDa
342344

343345
getVPNGatewayOptions.SetID(vpn_gateway_id)
344346

345-
vpnGatewayIntf, response, err := vpcClient.GetVPNGatewayWithContext(context, getVPNGatewayOptions)
347+
vpnGatewayIntf, _, err := vpcClient.GetVPNGatewayWithContext(context, getVPNGatewayOptions)
346348
if err != nil || vpnGatewayIntf.(*vpcv1.VPNGateway) == nil {
347-
log.Printf("[DEBUG] GetVPNGatewayWithContext failed %s\n%s", err, response)
348-
return diag.FromErr(fmt.Errorf("GetVPNGatewayWithContext failed %s\n%s", err, response))
349+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetVPNGatewayWithContext failed: %s", err.Error()), "(Data) ibm_is_vpn_gateway", "read")
350+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
351+
return tfErr.GetDiag()
349352
}
350353
vpnGateway = vpnGatewayIntf.(*vpcv1.VPNGateway)
351354
} else {
@@ -357,9 +360,11 @@ func dataSourceIBMIsVPNGatewayRead(context context.Context, d *schema.ResourceDa
357360
if start != "" {
358361
listvpnGWOptions.Start = &start
359362
}
360-
availableVPNGateways, detail, err := vpcClient.ListVPNGatewaysWithContext(context, listvpnGWOptions)
363+
availableVPNGateways, _, err := vpcClient.ListVPNGatewaysWithContext(context, listvpnGWOptions)
361364
if err != nil || availableVPNGateways == nil {
362-
return diag.FromErr(fmt.Errorf("Error reading list of VPN Gateways:%s\n%s", err, detail))
365+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListVPNGatewaysWithContext failed: %s", err.Error()), "(Data) ibm_is_vpn_gateway", "read")
366+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
367+
return tfErr.GetDiag()
363368
}
364369
start = flex.GetNext(availableVPNGateways.Next)
365370
allrecs = append(allrecs, availableVPNGateways.VPNGateways...)
@@ -376,87 +381,92 @@ func dataSourceIBMIsVPNGatewayRead(context context.Context, d *schema.ResourceDa
376381
}
377382
}
378383
if !vpn_gateway_found {
379-
log.Printf("[DEBUG] No vpn gateway found with given name %s", vpn_gateway_name)
380-
return diag.FromErr(fmt.Errorf("No vpn gateway found with given name %s", vpn_gateway_name))
384+
err = fmt.Errorf("No vpn gateway found with given name %s", vpn_gateway_name)
385+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListVPNGatewaysWithContext failed: %s", err.Error()), "(Data) ibm_is_vpn_gateway", "read")
386+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
387+
return tfErr.GetDiag()
381388
}
382389
}
383390
d.SetId(*vpnGateway.ID)
384391

385392
if vpnGateway.Connections != nil {
386393
err = d.Set("connections", dataSourceVPNGatewayFlattenConnections(vpnGateway.Connections))
387394
if err != nil {
388-
return diag.FromErr(fmt.Errorf("Error setting connections %s", err))
395+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting connections: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-connections").GetDiag()
389396
}
390397
}
391398
if err = d.Set("created_at", flex.DateTimeToString(vpnGateway.CreatedAt)); err != nil {
392-
return diag.FromErr(fmt.Errorf("Error setting created_at: %s", err))
399+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting created_at: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-created_at").GetDiag()
393400
}
394401
if err = d.Set("crn", vpnGateway.CRN); err != nil {
395-
return diag.FromErr(fmt.Errorf("Error setting crn: %s", err))
402+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting crn: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-crn").GetDiag()
396403
}
397404
if err = d.Set("href", vpnGateway.Href); err != nil {
398-
return diag.FromErr(fmt.Errorf("Error setting href: %s", err))
405+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting href: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-href").GetDiag()
399406
}
400407

401408
if vpnGateway.Members != nil {
402409
err = d.Set("members", dataSourceVPNGatewayFlattenMembers(vpnGateway.Members))
403410
if err != nil {
404-
return diag.FromErr(fmt.Errorf("Error setting members %s", err))
411+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting members: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-members").GetDiag()
405412
}
406413
}
407414
if err = d.Set("name", vpnGateway.Name); err != nil {
408-
return diag.FromErr(fmt.Errorf("Error setting name: %s", err))
415+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting name: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-name").GetDiag()
409416
}
410417

411418
if vpnGateway.ResourceGroup != nil {
412419
err = d.Set("resource_group", dataSourceVPNGatewayFlattenResourceGroup(*vpnGateway.ResourceGroup))
413420
if err != nil {
414-
return diag.FromErr(fmt.Errorf("Error setting resource_group %s", err))
421+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_group: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-resource_group").GetDiag()
415422
}
416423
}
417424
if err = d.Set("resource_type", vpnGateway.ResourceType); err != nil {
418-
return diag.FromErr(fmt.Errorf("Error setting resource_type: %s", err))
425+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_type: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-resource_type").GetDiag()
419426
}
420427
if err = d.Set("health_state", vpnGateway.HealthState); err != nil {
421-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting health_state: %s", err))
428+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting health_state: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-health_state").GetDiag()
422429
}
423430
if err := d.Set("health_reasons", resourceVPNGatewayRouteFlattenHealthReasons(vpnGateway.HealthReasons)); err != nil {
424-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting health_reasons: %s", err))
431+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting health_reasons: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-health_reasons").GetDiag()
425432
}
426433
if err = d.Set("lifecycle_state", vpnGateway.LifecycleState); err != nil {
427-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting lifecycle_state: %s", err))
434+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting lifecycle_state: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-lifecycle_state").GetDiag()
428435
}
429436
if err := d.Set("lifecycle_reasons", resourceVPNGatewayFlattenLifecycleReasons(vpnGateway.LifecycleReasons)); err != nil {
430-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting lifecycle_reasons: %s", err))
437+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting lifecycle_reasons: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-lifecycle_reasons").GetDiag()
431438
}
432439
if vpnGateway.Subnet != nil {
433440
err = d.Set("subnet", dataSourceVPNGatewayFlattenSubnet(*vpnGateway.Subnet))
434441
if err != nil {
435-
return diag.FromErr(fmt.Errorf("Error setting subnet %s", err))
442+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting subnet: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-subnet").GetDiag()
436443
}
437444
}
438445
if err = d.Set("mode", vpnGateway.Mode); err != nil {
439-
return diag.FromErr(fmt.Errorf("Error setting mode: %s", err))
446+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting mode: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-mode").GetDiag()
440447
}
441448
if vpnGateway.VPC != nil {
442449
err = d.Set("vpc", dataSourceVPNGatewayFlattenVPC(vpnGateway.VPC))
443450
if err != nil {
444-
return diag.FromErr(fmt.Errorf("Error setting vpc: %s", err))
451+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting vpc: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-vpc").GetDiag()
445452
}
446453
}
447454
tags, err := flex.GetGlobalTagsUsingCRN(meta, *vpnGateway.CRN, "", isUserTagType)
448455
if err != nil {
449456
log.Printf(
450457
"Error on get of resource vpc VPN Gateway (%s) tags: %s", d.Id(), err)
451458
}
452-
d.Set(isVPNGatewayTags, tags)
453-
459+
if err = d.Set(isVPNGatewayTags, tags); err != nil {
460+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting tags: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-tags").GetDiag()
461+
}
454462
accesstags, err := flex.GetGlobalTagsUsingCRN(meta, *vpnGateway.CRN, "", isAccessTagType)
455463
if err != nil {
456464
log.Printf(
457465
"Error on get of resource VPC VPN Gateway (%s) access tags: %s", d.Id(), err)
458466
}
459-
d.Set(isVPNGatewayAccessTags, accesstags)
467+
if err = d.Set(isVPNGatewayAccessTags, accesstags); err != nil {
468+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting access_tags: %s", err), "(Data) ibm_is_vpn_gateway", "read", "set-access_tags").GetDiag()
469+
}
460470
return nil
461471
}
462472

0 commit comments

Comments
 (0)