Fix a regression in webhook-based autoscaler (#1596)
The regression resulted in the webhook-based autoscaler be unable to find visible runner groups and therefore unable to scale up and down the target RunnerDeployment/RunnerSet at all when the webhook-based autoscaler was provided GitHub API credentials to enable the runner groups support. This fixes that. The regression was introduced via #1578 which is not released yet. Users of existing ARC releases are therefore not affected.
This commit is contained in:
		
							parent
							
								
									5a9e8545aa
								
							
						
					
					
						commit
						bfc5ea4727
					
				|  | @ -524,6 +524,7 @@ func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) getScaleUpTargetWithF | ||||||
| 	if autoscaler.GitHubClient != nil { | 	if autoscaler.GitHubClient != nil { | ||||||
| 		simu := &simulator.Simulator{ | 		simu := &simulator.Simulator{ | ||||||
| 			Client: autoscaler.GitHubClient, | 			Client: autoscaler.GitHubClient, | ||||||
|  | 			Log:    log, | ||||||
| 		} | 		} | ||||||
| 		// Get available organization runner groups and enterprise runner groups for a repository
 | 		// Get available organization runner groups and enterprise runner groups for a repository
 | ||||||
| 		// These are the sum of runner groups with repository access = All repositories and runner groups
 | 		// These are the sum of runner groups with repository access = All repositories and runner groups
 | ||||||
|  |  | ||||||
|  | @ -273,8 +273,17 @@ func (c *Client) ListOrganizationRunnerGroupsForRepository(ctx context.Context, | ||||||
| 	var runnerGroups []*github.RunnerGroup | 	var runnerGroups []*github.RunnerGroup | ||||||
| 
 | 
 | ||||||
| 	var opts github.ListOrgRunnerGroupOptions | 	var opts github.ListOrgRunnerGroupOptions | ||||||
|  | 
 | ||||||
| 	opts.PerPage = 100 | 	opts.PerPage = 100 | ||||||
| 	opts.VisibleToRepository = repo | 
 | ||||||
|  | 	repoName := repo | ||||||
|  | 	parts := strings.Split(repo, "/") | ||||||
|  | 	if len(parts) == 2 { | ||||||
|  | 		repoName = parts[1] | ||||||
|  | 	} | ||||||
|  | 	// This must be the repo name without the owner part, so in case the repo is "myorg/myrepo" the repo name
 | ||||||
|  | 	// passed to visible_to_repository must be "myrepo".
 | ||||||
|  | 	opts.VisibleToRepository = repoName | ||||||
| 
 | 
 | ||||||
| 	for { | 	for { | ||||||
| 		list, res, err := c.Actions.ListOrganizationRunnerGroups(ctx, org, &opts) | 		list, res, err := c.Actions.ListOrganizationRunnerGroups(ctx, org, &opts) | ||||||
|  |  | ||||||
|  | @ -5,10 +5,12 @@ import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 
 | 
 | ||||||
| 	"github.com/actions-runner-controller/actions-runner-controller/github" | 	"github.com/actions-runner-controller/actions-runner-controller/github" | ||||||
|  | 	"github.com/go-logr/logr" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type Simulator struct { | type Simulator struct { | ||||||
| 	Client *github.Client | 	Client *github.Client | ||||||
|  | 	Log    logr.Logger | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (c *Simulator) GetRunnerGroupsVisibleToRepository(ctx context.Context, org, repo string, managed *VisibleRunnerGroups) (*VisibleRunnerGroups, error) { | func (c *Simulator) GetRunnerGroupsVisibleToRepository(ctx context.Context, org, repo string, managed *VisibleRunnerGroups) (*VisibleRunnerGroups, error) { | ||||||
|  | @ -24,6 +26,10 @@ func (c *Simulator) GetRunnerGroupsVisibleToRepository(ctx context.Context, org, | ||||||
| 			return visible, err | 			return visible, err | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		if c.Log.V(3).Enabled() { | ||||||
|  | 			c.Log.V(3).Info("ListOrganizationRunnerGroupsForRepository succeeded", "runerGroups", runnerGroups) | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
| 		for _, runnerGroup := range runnerGroups { | 		for _, runnerGroup := range runnerGroups { | ||||||
| 			ref := NewRunnerGroupFromGitHub(runnerGroup) | 			ref := NewRunnerGroupFromGitHub(runnerGroup) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue