Skip to content

Commit aa36376

Browse files
committed
Fix pagination for pagerduty_service data source #523
1 parent 3278181 commit aa36376

1 file changed

Lines changed: 25 additions & 14 deletions

File tree

pagerduty/data_source_pagerduty_service.go

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,28 +39,39 @@ func dataSourcePagerDutyServiceRead(d *schema.ResourceData, meta interface{}) er
3939

4040
o := &pagerduty.ListServicesOptions{
4141
Query: searchName,
42+
Limit: 100,
4243
}
4344

4445
return resource.Retry(5*time.Minute, func() *resource.RetryError {
45-
resp, _, err := client.Services.List(o)
46-
if err != nil {
47-
if isErrCode(err, 429) {
48-
// Delaying retry by 30s as recommended by PagerDuty
49-
// https://developer.pagerduty.com/docs/rest-api-v2/rate-limiting/#what-are-possible-workarounds-to-the-events-api-rate-limit
50-
time.Sleep(30 * time.Second)
51-
return resource.RetryableError(err)
52-
}
46+
var found *pagerduty.Service
5347

54-
return resource.NonRetryableError(err)
55-
}
48+
for {
49+
resp, _, err := client.Services.List(o)
50+
if err != nil {
51+
if isErrCode(err, 429) {
52+
// Delaying retry by 30s as recommended by PagerDuty
53+
// https://developer.pagerduty.com/docs/rest-api-v2/rate-limiting/#what-are-possible-workarounds-to-the-events-api-rate-limit
54+
time.Sleep(30 * time.Second)
55+
return resource.RetryableError(err)
56+
}
5657

57-
var found *pagerduty.Service
58+
return resource.NonRetryableError(err)
59+
}
5860

59-
for _, service := range resp.Services {
60-
if service.Name == searchName {
61-
found = service
61+
for _, service := range resp.Services {
62+
if service.Name == searchName {
63+
found = service
64+
break
65+
}
66+
}
67+
68+
if found != nil {
69+
break
70+
}
71+
if !resp.More {
6272
break
6373
}
74+
o.Offset += 100
6475
}
6576

6677
if found == nil {

0 commit comments

Comments
 (0)