@@ -101,7 +101,6 @@ var _ = registerDataSource("gitlab_group_membership", func() *schema.Resource {
101
101
func dataSourceGitlabGroupMembershipRead (ctx context.Context , d * schema.ResourceData , meta interface {}) diag.Diagnostics {
102
102
client := meta .(* gitlab.Client )
103
103
104
- var gm []* gitlab.GroupMember
105
104
var group * gitlab.Group
106
105
var err error
107
106
@@ -129,15 +128,32 @@ func dataSourceGitlabGroupMembershipRead(ctx context.Context, d *schema.Resource
129
128
log .Printf ("[INFO] Reading Gitlab group memberships" )
130
129
131
130
// Get group memberships
132
- gm , _ , err = client .Groups .ListGroupMembers (group .ID , & gitlab.ListGroupMembersOptions {}, gitlab .WithContext (ctx ))
133
- if err != nil {
134
- return diag .FromErr (err )
131
+ listOptions := & gitlab.ListGroupMembersOptions {
132
+ ListOptions : gitlab.ListOptions {
133
+ PerPage : 20 ,
134
+ Page : 1 ,
135
+ },
136
+ }
137
+
138
+ var allGms []* gitlab.GroupMember
139
+ for {
140
+ gms , resp , err := client .Groups .ListGroupMembers (group .ID , listOptions , gitlab .WithContext (ctx ))
141
+ if err != nil {
142
+ return diag .FromErr (err )
143
+ }
144
+
145
+ allGms = append (allGms , gms ... )
146
+
147
+ if resp .NextPage == 0 {
148
+ break
149
+ }
150
+ listOptions .Page = resp .NextPage
135
151
}
136
152
137
153
d .Set ("group_id" , group .ID )
138
154
d .Set ("full_path" , group .FullPath )
139
155
140
- d .Set ("members" , flattenGitlabMembers (d , gm )) // lintignore: XR004 // TODO: Resolve this tfproviderlint issue
156
+ d .Set ("members" , flattenGitlabMembers (d , allGms )) // lintignore: XR004 // TODO: Resolve this tfproviderlint issue
141
157
142
158
var optionsHash strings.Builder
143
159
optionsHash .WriteString (strconv .Itoa (group .ID ))
0 commit comments