From d1c1eaa8ac1537086b26f26f50b15163c0f3b0d8 Mon Sep 17 00:00:00 2001 From: Carlos Gajardo Date: Wed, 19 Jun 2024 09:36:08 -0400 Subject: [PATCH] Fix data service integration not finding service when they're many --- .../data_source_pagerduty_integration.go | 18 ++++++++++-------- util/apiutil/{search.go => all.go} | 0 2 files changed, 10 insertions(+), 8 deletions(-) rename util/apiutil/{search.go => all.go} (100%) diff --git a/pagerdutyplugin/data_source_pagerduty_integration.go b/pagerdutyplugin/data_source_pagerduty_integration.go index 05df72a64..9cc5cc714 100644 --- a/pagerdutyplugin/data_source_pagerduty_integration.go +++ b/pagerdutyplugin/data_source_pagerduty_integration.go @@ -9,6 +9,7 @@ import ( "github.com/PagerDuty/go-pagerduty" "github.com/PagerDuty/terraform-provider-pagerduty/util" + "github.com/PagerDuty/terraform-provider-pagerduty/util/apiutil" "github.com/hashicorp/terraform-plugin-framework/datasource" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" "github.com/hashicorp/terraform-plugin-framework/diag" @@ -53,22 +54,23 @@ func (d *dataSourceIntegration) Read(ctx context.Context, req datasource.ReadReq } var found *pagerduty.Service - err := retry.RetryContext(ctx, 2*time.Minute, func() *retry.RetryError { - list, err := d.client.ListServicesWithContext(ctx, pagerduty.ListServiceOptions{}) + err := apiutil.All(ctx, func(offset int) (bool, error) { + list, err := d.client.ListServicesWithContext(ctx, pagerduty.ListServiceOptions{ + Query: searchName.ValueString(), + Limit: apiutil.Limit, + Offset: uint(offset), + }) if err != nil { - if util.IsBadRequestError(err) { - return retry.NonRetryableError(err) - } - return retry.RetryableError(err) + return false, err } for _, service := range list.Services { if service.Name == searchName.ValueString() { found = &service - break + return false, nil } } - return nil + return list.More, nil }) if err != nil { resp.Diagnostics.AddError( diff --git a/util/apiutil/search.go b/util/apiutil/all.go similarity index 100% rename from util/apiutil/search.go rename to util/apiutil/all.go