diff --git a/internal/app/cmd/daemon.go b/internal/app/cmd/daemon.go index e3d2333..a0a4685 100644 --- a/internal/app/cmd/daemon.go +++ b/internal/app/cmd/daemon.go @@ -179,7 +179,7 @@ func runDaemon(ctx context.Context, daemArgs *daemonArgs, configFile *string) fu bandwidthManager.Start(ctx) log.Infof("bandwidth manager started, testing against: %s", reg.Address) - capabilities := envcheck.DetectCapabilities(ctx, dockerHost, cfg.Container.WorkdirParent) + capabilities := envcheck.DetectCapabilities(ctx, dockerHost, cfg.Container.WorkdirParent, globalConfig.Runner.Capacity) // Include initial bandwidth result if available capabilities.Bandwidth = bandwidthManager.GetLastResult() capabilitiesJson := capabilities.ToJSON() @@ -323,7 +323,7 @@ func periodicCapabilitiesUpdate(ctx context.Context, runner *run.Runner, labelNa return case <-ticker.C: // Detect updated capabilities (disk space changes over time) - capabilities := envcheck.DetectCapabilities(ctx, dockerHost, workingDir) + capabilities := envcheck.DetectCapabilities(ctx, dockerHost, workingDir, globalConfig.Runner.Capacity) // Include latest bandwidth result if bandwidthManager != nil { diff --git a/internal/app/poll/poller.go b/internal/app/poll/poller.go index ee6499d..39a49fd 100644 --- a/internal/app/poll/poller.go +++ b/internal/app/poll/poller.go @@ -166,7 +166,7 @@ func (p *Poller) fetchTask(ctx context.Context) (*runnerv1.Task, bool) { defer cancel() // Detect capabilities including current disk space - caps := envcheck.DetectCapabilities(ctx, p.cfg.Container.DockerHost, p.cfg.Container.WorkdirParent) + caps := envcheck.DetectCapabilities(ctx, p.cfg.Container.DockerHost, p.cfg.Container.WorkdirParent, p.cfg.Runner.Capacity) // Include latest bandwidth result if available if p.bandwidthManager != nil { diff --git a/internal/pkg/envcheck/capabilities.go b/internal/pkg/envcheck/capabilities.go index 7d4d55b..bf0a117 100644 --- a/internal/pkg/envcheck/capabilities.go +++ b/internal/pkg/envcheck/capabilities.go @@ -69,6 +69,7 @@ type RunnerCapabilities struct { CPU *CPUInfo `json:"cpu,omitempty"` Bandwidth *BandwidthInfo `json:"bandwidth,omitempty"` SuggestedLabels []string `json:"suggested_labels,omitempty"` + Capacity int `json:"capacity,omitempty"` // Number of concurrent jobs this runner can handle } // CapabilityFeatures represents feature support flags @@ -81,8 +82,9 @@ type CapabilityFeatures struct { // DetectCapabilities detects the runner's capabilities // workingDir is the directory where builds will run (for disk space detection) -func DetectCapabilities(ctx context.Context, dockerHost string, workingDir string) *RunnerCapabilities { +func DetectCapabilities(ctx context.Context, dockerHost string, workingDir string, capacity int) *RunnerCapabilities { cap := &RunnerCapabilities{ + Capacity: capacity, OS: runtime.GOOS, Arch: runtime.GOARCH, Tools: make(map[string][]string),