@@ -165,40 +165,63 @@ func resourceGitlabDeployTokenRead(ctx context.Context, d *schema.ResourceData,
165
165
return diag .FromErr (err )
166
166
}
167
167
168
- var deployTokens []* gitlab.DeployToken
168
+ var deployToken * gitlab.DeployToken
169
+
170
+ extractDeployToken := func (paginatedDeployTokens []* gitlab.DeployToken ) * gitlab.DeployToken {
171
+ for _ , token := range paginatedDeployTokens {
172
+ if token .ID == deployTokenID {
173
+ return token
174
+ }
175
+ }
176
+ return nil
177
+ }
169
178
170
179
if isProject {
171
180
log .Printf ("[DEBUG] Read GitLab deploy token %d in project %s" , deployTokenID , project .(string ))
172
- deployTokens , _ , err = client .DeployTokens .ListProjectDeployTokens (project , nil , gitlab .WithContext (ctx ))
173
-
181
+ options := gitlab.ListProjectDeployTokensOptions {
182
+ Page : 1 ,
183
+ PerPage : 20 ,
184
+ }
185
+ for options .Page != 0 && deployToken == nil {
186
+ paginatedDeployTokens , resp , err := client .DeployTokens .ListProjectDeployTokens (project , & options , gitlab .WithContext (ctx ))
187
+ if err != nil {
188
+ return diag .FromErr (err )
189
+ }
190
+ deployToken = extractDeployToken (paginatedDeployTokens )
191
+ options .Page = resp .NextPage
192
+ }
174
193
} else if isGroup {
175
194
log .Printf ("[DEBUG] Read GitLab deploy token %d in group %s" , deployTokenID , group .(string ))
176
- deployTokens , _ , err = client .DeployTokens .ListGroupDeployTokens (group , nil , gitlab .WithContext (ctx ))
177
- }
178
- if err != nil {
179
- return diag .FromErr (err )
180
- }
181
-
182
- for _ , token := range deployTokens {
183
- if token .ID == deployTokenID {
184
- d .Set ("name" , token .Name )
185
- d .Set ("username" , token .Username )
186
-
187
- if token .ExpiresAt != nil {
188
- d .Set ("expires_at" , token .ExpiresAt .Format (time .RFC3339 ))
189
- }
190
-
191
- if err := d .Set ("scopes" , token .Scopes ); err != nil {
195
+ options := gitlab.ListGroupDeployTokensOptions {
196
+ Page : 1 ,
197
+ PerPage : 20 ,
198
+ }
199
+ for options .Page != 0 && deployToken == nil {
200
+ paginatedDeployTokens , resp , err := client .DeployTokens .ListGroupDeployTokens (group , & options , gitlab .WithContext (ctx ))
201
+ if err != nil {
192
202
return diag .FromErr (err )
193
203
}
194
-
195
- return nil
204
+ deployToken = extractDeployToken ( paginatedDeployTokens )
205
+ options . Page = resp . NextPage
196
206
}
197
207
}
198
208
199
- log .Printf ("[DEBUG] GitLab deploy token %d in group %s was not found" , deployTokenID , group .(string ))
209
+ if deployToken == nil {
210
+ log .Printf ("[DEBUG] GitLab deploy token %d in was not found, removing from state" , deployTokenID )
211
+ d .SetId ("" )
212
+ return nil
213
+ }
200
214
201
- d .SetId ("" )
215
+ d .Set ("name" , deployToken .Name )
216
+ d .Set ("username" , deployToken .Username )
217
+
218
+ if deployToken .ExpiresAt != nil {
219
+ d .Set ("expires_at" , deployToken .ExpiresAt .Format (time .RFC3339 ))
220
+ }
221
+
222
+ if err := d .Set ("scopes" , deployToken .Scopes ); err != nil {
223
+ return diag .FromErr (err )
224
+ }
202
225
203
226
return nil
204
227
}
0 commit comments