Skip to content

Commit d063dcf

Browse files
committed
Fix paging on team member retrieval
The team member retrieval was not properly handling paging results, and we were not getting the full list of user IDs for the team. This PR fixes the paging issue, to return the full list. Signed-off-by: Chris Collins <collins.christopher@gmail.com>
1 parent 729e62f commit d063dcf

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

pkg/pd/pd.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func NewConfig(token string, teams []string, silentUser string, ignoredUsers []s
6565
return &c, fmt.Errorf("pd.NewConfig(): failed to get team(s) `%v`: %v", teams, err)
6666
}
6767

68-
c.TeamsMemberIDs, err = GetTeamMemberIDs(c.Client, c.Teams)
68+
c.TeamsMemberIDs, err = GetTeamMemberIDs(c.Client, c.Teams, pagerduty.ListTeamMembersOptions{Limit: defaultPageLimit, Offset: defaultOffset})
6969
if err != nil {
7070
return &c, fmt.Errorf("pd.NewConfig(): failed to get users(s) from teams: %v", err)
7171
}
@@ -219,18 +219,26 @@ func GetTeams(client PagerDutyClient, teams []string) ([]*pagerduty.Team, error)
219219
return t, nil
220220
}
221221

222-
func GetTeamMemberIDs(client PagerDutyClient, teams []*pagerduty.Team) ([]string, error) {
222+
func GetTeamMemberIDs(client PagerDutyClient, teams []*pagerduty.Team, opts pagerduty.ListTeamMembersOptions) ([]string, error) {
223223
var ctx = context.Background()
224224
var u []string
225225

226226
for _, team := range teams {
227-
response, err := client.ListMembersWithContext(ctx, team.ID, pagerduty.ListTeamMembersOptions{})
228-
if err != nil {
229-
return u, fmt.Errorf("pd.GetUsers(): failed to retrieve users for PagerDuty team `%v`: %v", team.ID, err)
230-
}
227+
for {
228+
response, err := client.ListMembersWithContext(ctx, team.ID, opts)
229+
if err != nil {
230+
return u, fmt.Errorf("pd.GetUsers(): failed to retrieve users for PagerDuty team `%v`: %v", team.ID, err)
231+
}
232+
233+
for _, member := range response.Members {
234+
u = append(u, member.User.ID)
235+
}
236+
237+
opts.Offset += opts.Limit
231238

232-
for _, member := range response.Members {
233-
u = append(u, member.User.ID)
239+
if !response.More {
240+
break
241+
}
234242
}
235243
}
236244

0 commit comments

Comments
 (0)