Skip to content

Commit 3a19681

Browse files
Harden resource github_actions_runner_group (#970)
Resolves #969 #967
1 parent 705aa70 commit 3a19681

File tree

1 file changed

+37
-6
lines changed

1 file changed

+37
-6
lines changed

github/resource_github_actions_runner_group.go

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -169,15 +169,28 @@ func resourceGithubActionsRunnerGroupRead(d *schema.ResourceData, meta interface
169169
d.Set("visibility", runnerGroup.GetVisibility())
170170

171171
log.Printf("[DEBUG] Reading organization runner group repositories: %s (%s)", d.Id(), orgName)
172-
runnerGroupRepositories, _, err := client.Actions.ListRepositoryAccessRunnerGroup(ctx, orgName, runnerGroupID, nil)
173-
if err != nil {
174-
return err
172+
selectedRepositoryIDs := []int64{}
173+
options := github.ListOptions{
174+
PerPage: maxPerPage,
175175
}
176176

177-
selectedRepositoryIDs := []int64{}
178-
for _, repo := range runnerGroupRepositories.Repositories {
179-
selectedRepositoryIDs = append(selectedRepositoryIDs, *repo.ID)
177+
for {
178+
runnerGroupRepositories, resp, err := client.Actions.ListRepositoryAccessRunnerGroup(ctx, orgName, runnerGroupID, &options)
179+
if err != nil {
180+
return err
181+
}
182+
183+
for _, repo := range runnerGroupRepositories.Repositories {
184+
selectedRepositoryIDs = append(selectedRepositoryIDs, *repo.ID)
185+
}
186+
187+
if resp.NextPage == 0 {
188+
break
189+
}
190+
191+
options.Page = resp.NextPage
180192
}
193+
181194
log.Printf("[DEBUG] Got selected_repository_ids: %v", selectedRepositoryIDs)
182195
d.Set("selected_repository_ids", selectedRepositoryIDs)
183196

@@ -212,6 +225,24 @@ func resourceGithubActionsRunnerGroupUpdate(d *schema.ResourceData, meta interfa
212225
return err
213226
}
214227

228+
selectedRepositories, hasSelectedRepositories := d.GetOk("selected_repository_ids")
229+
selectedRepositoryIDs := []int64{}
230+
231+
if hasSelectedRepositories {
232+
ids := selectedRepositories.(*schema.Set).List()
233+
234+
for _, id := range ids {
235+
selectedRepositoryIDs = append(selectedRepositoryIDs, int64(id.(int)))
236+
}
237+
}
238+
239+
reposOptions := github.SetRepoAccessRunnerGroupRequest{SelectedRepositoryIDs: selectedRepositoryIDs}
240+
241+
log.Printf("[DEBUG] Updating organization runner group's selected repositries: %s (%s)", d.Id(), orgName)
242+
if _, err := client.Actions.SetRepositoryAccessRunnerGroup(ctx, orgName, runnerGroupID, reposOptions); err != nil {
243+
return err
244+
}
245+
215246
return resourceGithubActionsRunnerGroupRead(d, meta)
216247
}
217248

0 commit comments

Comments
 (0)