Skip to content

Commit b9afacc

Browse files
authored
enhancement: improved error handling for vpc network acl (IBM-Cloud#6178)
1 parent be5cf2b commit b9afacc

6 files changed

+541
-257
lines changed

ibm/service/vpc/data_source_ibm_is_network_acl.go

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,9 @@ func DataSourceIBMIsNetworkACL() *schema.Resource {
356356
func dataSourceIBMIsNetworkACLRead(context context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
357357
vpcClient, err := meta.(conns.ClientSession).VpcV1API()
358358
if err != nil {
359-
return diag.FromErr(err)
359+
tfErr := flex.DiscriminatedTerraformErrorf(err, err.Error(), "(Data) ibm_is_network_acl", "read", "initialize-client")
360+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
361+
return tfErr.GetDiag()
360362
}
361363

362364
vpc_name_str := ""
@@ -375,10 +377,11 @@ func dataSourceIBMIsNetworkACLRead(context context.Context, d *schema.ResourceDa
375377
if start != "" {
376378
listNetworkAclsOptions.Start = &start
377379
}
378-
networkACLCollection, response, err := vpcClient.ListNetworkAclsWithContext(context, listNetworkAclsOptions)
380+
networkACLCollection, _, err := vpcClient.ListNetworkAclsWithContext(context, listNetworkAclsOptions)
379381
if err != nil || networkACLCollection == nil {
380-
log.Printf("[DEBUG] ListNetworkAclsWithContext failed %s\n%s", err, response)
381-
return diag.FromErr(fmt.Errorf("ListNetworkAclsWithContext failed %s\n%s", err, response))
382+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListNetworkAclsWithContext failed: %s", err.Error()), "(Data) ibm_is_network_acl", "read")
383+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
384+
return tfErr.GetDiag()
382385
}
383386
start = flex.GetNext(networkACLCollection.Next)
384387
allrecs = append(allrecs, networkACLCollection.NetworkAcls...)
@@ -396,61 +399,64 @@ func dataSourceIBMIsNetworkACLRead(context context.Context, d *schema.ResourceDa
396399
}
397400

398401
if !acl_found {
399-
log.Printf("[DEBUG] No networkACL found with given VPC %s and ACL name %s", vpc_name_str, network_acl_name)
400-
return diag.FromErr(fmt.Errorf("[ERROR] No networkACL found with given VPC %s and ACL name %s", vpc_name_str, network_acl_name))
402+
err = fmt.Errorf("[ERROR] No networkACL found with given VPC %s and ACL name %s", vpc_name_str, network_acl_name)
403+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("ListNetworkAclsWithContext failed: %s", err.Error()), "(Data) ibm_is_network_acl", "read")
404+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
405+
return tfErr.GetDiag()
401406
}
402407
} else {
403408

404409
getNetworkACLOptions := &vpcv1.GetNetworkACLOptions{}
405410

406411
getNetworkACLOptions.SetID(d.Get("network_acl").(string))
407412

408-
networkACLInst, response, err := vpcClient.GetNetworkACLWithContext(context, getNetworkACLOptions)
413+
networkACLInst, _, err := vpcClient.GetNetworkACLWithContext(context, getNetworkACLOptions)
409414
if err != nil || networkACLInst == nil {
410-
log.Printf("[DEBUG] GetNetworkACLWithContext failed %s\n%s", err, response)
411-
return diag.FromErr(fmt.Errorf("GetNetworkACLWithContext failed %s\n%s", err, response))
415+
tfErr := flex.TerraformErrorf(err, fmt.Sprintf("GetNetworkACLWithContext failed: %s", err.Error()), "(Data) ibm_is_network_acl", "read")
416+
log.Printf("[DEBUG]\n%s", tfErr.GetDebugMessage())
417+
return tfErr.GetDiag()
412418
}
413419
networkACL = networkACLInst
414420
}
415421
d.SetId(*networkACL.ID)
416422
if err = d.Set("created_at", flex.DateTimeToString(networkACL.CreatedAt)); err != nil {
417-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting created_at: %s", err))
423+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting created_at: %s", err), "(Data) ibm_is_network_acl", "read", "set-created_at").GetDiag()
418424
}
419425
if err = d.Set("crn", networkACL.CRN); err != nil {
420-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting crn: %s", err))
426+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting crn: %s", err), "(Data) ibm_is_network_acl", "read", "set-crn").GetDiag()
421427
}
422428
if err = d.Set("href", networkACL.Href); err != nil {
423-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting href: %s", err))
429+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting href: %s", err), "(Data) ibm_is_network_acl", "read", "set-href").GetDiag()
424430
}
425431
if err = d.Set("name", networkACL.Name); err != nil {
426-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting name: %s", err))
432+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting name: %s", err), "(Data) ibm_is_network_acl", "read", "set-name").GetDiag()
427433
}
428434

429435
if networkACL.ResourceGroup != nil {
430436
err = d.Set(isNetworkACLResourceGroup, dataSourceNetworkACLFlattenResourceGroup(*networkACL.ResourceGroup))
431437
if err != nil {
432-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting resource_group %s", err))
438+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting resource_group: %s", err), "(Data) ibm_is_network_acl", "read", "set-resource_group").GetDiag()
433439
}
434440
}
435441

436442
if networkACL.Rules != nil {
437443
err = d.Set(isNetworkACLRules, dataSourceNetworkACLFlattenRules(networkACL.Rules))
438444
if err != nil {
439-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting rules %s", err))
445+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting rules: %s", err), "(Data) ibm_is_network_acl", "read", "set-rules").GetDiag()
440446
}
441447
}
442448

443449
if networkACL.Subnets != nil {
444450
err = d.Set("subnets", dataSourceNetworkACLFlattenSubnets(networkACL.Subnets))
445451
if err != nil {
446-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting subnets %s", err))
452+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting subnets: %s", err), "(Data) ibm_is_network_acl", "read", "set-subnets").GetDiag()
447453
}
448454
}
449455

450456
if networkACL.VPC != nil {
451457
err = d.Set("vpc", dataSourceNetworkACLFlattenVPC(*networkACL.VPC))
452458
if err != nil {
453-
return diag.FromErr(fmt.Errorf("[ERROR] Error setting vpc %s", err))
459+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting vpc: %s", err), "(Data) ibm_is_network_acl", "read", "set-vpc").GetDiag()
454460
}
455461
}
456462

@@ -459,7 +465,9 @@ func dataSourceIBMIsNetworkACLRead(context context.Context, d *schema.ResourceDa
459465
log.Printf(
460466
"Error on get of resource Network ACL (%s) access tags: %s", d.Id(), err)
461467
}
462-
d.Set(isNetworkACLAccessTags, accesstags)
468+
if err = d.Set(isNetworkACLAccessTags, accesstags); err != nil {
469+
return flex.DiscriminatedTerraformErrorf(err, fmt.Sprintf("Error setting access_tags: %s", err), "(Data) ibm_is_network_acl", "read", "set-access_tags").GetDiag()
470+
}
463471

464472
return nil
465473
}

0 commit comments

Comments
 (0)