Skip to content

Commit

Permalink
Fix: User data source times out on getting all users - add pagination (
Browse files Browse the repository at this point in the history
…#146)

…return it time

## What

## Why

## Notes
<!-- Add any notes here -->

## Checklist

* [ ] _I have read
[CONTRIBUTING.md](https://github.com/codefresh-io/terraform-provider-codefresh/blob/master/CONTRIBUTING.md)._
* [ ] _I have [allowed changes to my fork to be
made](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/allowing-changes-to-a-pull-request-branch-created-from-a-fork)._
* [ ] _I have added tests, assuming new tests are warranted_.
* [ ] _I understand that the `/test` comment will be ignored by the CI
trigger [unless it is made by a repo admin or
collaborator](https://codefresh.io/docs/docs/pipelines/triggers/git-triggers/#support-for-building-pull-requests-from-forks)._
  • Loading branch information
ilia-medvedev-codefresh authored May 27, 2024
1 parent 55e3ef2 commit 6eb7bf1
Showing 1 changed file with 31 additions and 16 deletions.
47 changes: 31 additions & 16 deletions codefresh/cfclient/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package cfclient

import (
"fmt"
"log"
"strings"
)

Expand Down Expand Up @@ -222,25 +221,41 @@ func (client *Client) DeleteUserAsAccountAdmin(accountId, userId string) error {

func (client *Client) GetAllUsers() (*[]User, error) {

opts := RequestOptions{
Path: "/admin/user",
Method: "GET",
}
limitPerQuery := 100
bIsDone := false
nPageIndex := 1

resp, err := client.RequestAPI(&opts)
if err != nil {
return nil, err
}
var allUsers []User

var users []User
respStr := string(resp)
log.Printf("[INFO] GetAllUsers resp: %s", respStr)
err = DecodeResponseInto(resp, &users)
if err != nil {
return nil, err
for !bIsDone {
var userPaginatedResp struct{Docs []User `json:"docs"`}

opts := RequestOptions{
Path: fmt.Sprintf("/admin/user?limit=%d&page=%d", limitPerQuery, nPageIndex),
Method: "GET",
}

resp, err := client.RequestAPI(&opts)

if err != nil {
return nil, err
}

err = DecodeResponseInto(resp, &userPaginatedResp)

if err != nil {
return nil, err
}

if len(userPaginatedResp.Docs) > 0 {
allUsers = append(allUsers,userPaginatedResp.Docs...)
nPageIndex++
} else {
bIsDone = true
}
}

return &users, nil
return &allUsers, nil
}

func (client *Client) GetUserByID(userId string) (*User, error) {
Expand Down

0 comments on commit 6eb7bf1

Please sign in to comment.