Skip to content

Commit 5e2791e

Browse files
authored
Merge pull request #1079 from PagerDuty/cjavier/team-membership-pagination
Add proper pagination to team_membership listing at Read
2 parents f9d04e8 + d19a8fd commit 5e2791e

File tree

1 file changed

+27
-16
lines changed

1 file changed

+27
-16
lines changed

pagerdutyplugin/resource_pagerduty_team_membership.go

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -221,26 +221,37 @@ func requestGetTeamMembership(ctx context.Context, client *pagerduty.Client, id
221221
}
222222

223223
err = retry.RetryContext(ctx, 2*time.Minute, func() *retry.RetryError {
224-
resp, err := client.ListTeamMembers(ctx, teamID, pagerduty.ListTeamMembersOptions{Limit: 100})
225-
if err != nil {
226-
if util.IsBadRequestError(err) {
227-
return retry.NonRetryableError(err)
228-
}
229-
if !retryNotFound && util.IsNotFoundError(err) {
230-
return retry.NonRetryableError(err)
224+
offset := uint(0)
225+
more := true
226+
227+
for more {
228+
resp, err := client.ListTeamMembers(ctx, teamID, pagerduty.ListTeamMembersOptions{
229+
Limit: 100,
230+
Offset: offset,
231+
})
232+
if err != nil {
233+
if util.IsBadRequestError(err) {
234+
return retry.NonRetryableError(err)
235+
}
236+
if !retryNotFound && util.IsNotFoundError(err) {
237+
return retry.NonRetryableError(err)
238+
}
239+
return retry.RetryableError(err)
231240
}
232-
return retry.RetryableError(err)
233-
}
234241

235-
for _, m := range resp.Members {
236-
if m.User.ID == userID {
237-
if neededRole != nil && m.Role != *neededRole {
238-
err = fmt.Errorf("Role %q fetched is different from configuration %q", m.Role, *neededRole)
239-
return retry.RetryableError(err)
242+
for _, m := range resp.Members {
243+
if m.User.ID == userID {
244+
if neededRole != nil && m.Role != *neededRole {
245+
err = fmt.Errorf("Role %q fetched is different from configuration %q", m.Role, *neededRole)
246+
return retry.RetryableError(err)
247+
}
248+
model = flattenTeamMembership(userID, teamID, m.Role)
249+
return nil
240250
}
241-
model = flattenTeamMembership(userID, teamID, m.Role)
242-
return nil
243251
}
252+
253+
more = resp.More
254+
offset += resp.Limit
244255
}
245256

246257
err = pagerduty.APIError{StatusCode: http.StatusNotFound}

0 commit comments

Comments
 (0)