Skip to content

Commit

Permalink
Harden resource github_actions_runner_group (integrations#970)
Browse files Browse the repository at this point in the history
  • Loading branch information
Vladyslav-Miletskyi authored Nov 22, 2021
1 parent 1cbb59c commit 4f90a0b
Showing 1 changed file with 37 additions and 6 deletions.
43 changes: 37 additions & 6 deletions github/resource_github_actions_runner_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,15 +169,28 @@ func resourceGithubActionsRunnerGroupRead(d *schema.ResourceData, meta interface
d.Set("visibility", runnerGroup.GetVisibility())

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

selectedRepositoryIDs := []int64{}
for _, repo := range runnerGroupRepositories.Repositories {
selectedRepositoryIDs = append(selectedRepositoryIDs, *repo.ID)
for {
runnerGroupRepositories, resp, err := client.Actions.ListRepositoryAccessRunnerGroup(ctx, orgName, runnerGroupID, &options)
if err != nil {
return err
}

for _, repo := range runnerGroupRepositories.Repositories {
selectedRepositoryIDs = append(selectedRepositoryIDs, *repo.ID)
}

if resp.NextPage == 0 {
break
}

options.Page = resp.NextPage
}

log.Printf("[DEBUG] Got selected_repository_ids: %v", selectedRepositoryIDs)
d.Set("selected_repository_ids", selectedRepositoryIDs)

Expand Down Expand Up @@ -212,6 +225,24 @@ func resourceGithubActionsRunnerGroupUpdate(d *schema.ResourceData, meta interfa
return err
}

selectedRepositories, hasSelectedRepositories := d.GetOk("selected_repository_ids")
selectedRepositoryIDs := []int64{}

if hasSelectedRepositories {
ids := selectedRepositories.(*schema.Set).List()

for _, id := range ids {
selectedRepositoryIDs = append(selectedRepositoryIDs, int64(id.(int)))
}
}

reposOptions := github.SetRepoAccessRunnerGroupRequest{SelectedRepositoryIDs: selectedRepositoryIDs}

log.Printf("[DEBUG] Updating organization runner group's selected repositries: %s (%s)", d.Id(), orgName)
if _, err := client.Actions.SetRepositoryAccessRunnerGroup(ctx, orgName, runnerGroupID, reposOptions); err != nil {
return err
}

return resourceGithubActionsRunnerGroupRead(d, meta)
}

Expand Down

0 comments on commit 4f90a0b

Please sign in to comment.