Skip to content

Commit 618daed

Browse files
authored
fix: return early in DiscoverRunner on first match (#2871)
Signed-off-by: Vibhav Bobade <vibhav.bobde@gmail.com>
1 parent 6e42538 commit 618daed

1 file changed

Lines changed: 5 additions & 22 deletions

File tree

pkg/attestation/crafter/runner.go

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -114,35 +114,18 @@ func NewRunner(t schemaapi.CraftingSchema_Runner_RunnerType, authToken string, l
114114

115115
// DiscoverRunner the runner environment
116116
// This method does a simple check to see which runner is available in the environment
117-
// by iterating over the different runners and performing duck-typing checks
118-
// If more than one runner is detected, we default to generic since its an incongruent result
117+
// by iterating over the different runners and performing duck-typing checks.
118+
// It returns the first matching runner immediately to avoid unnecessary CheckEnv()
119+
// calls from remaining runners.
119120
func DiscoverRunner(authToken string, logger zerolog.Logger) SupportedRunner {
120-
detected := []SupportedRunner{}
121-
122-
// Create all runners and check their environment
123121
for _, factory := range RunnerFactories {
124122
r := factory(authToken, &logger)
125123
if r.CheckEnv() {
126-
detected = append(detected, r)
127-
}
128-
}
129-
130-
// if we don't detect any runner or more than one, we default to generic
131-
if len(detected) == 0 {
132-
return runners.NewGeneric()
133-
}
134-
135-
if len(detected) > 1 {
136-
var detectedStr []string
137-
for _, d := range detected {
138-
detectedStr = append(detectedStr, d.ID().String())
124+
return r
139125
}
140-
141-
logger.Warn().Strs("detected", detectedStr).Msg("multiple runners detected, incongruent environment")
142-
return runners.NewGeneric()
143126
}
144127

145-
return detected[0]
128+
return runners.NewGeneric()
146129
}
147130

148131
func DiscoverAndEnforceRunner(enforcedRunnerType schemaapi.CraftingSchema_Runner_RunnerType, dryRun bool, authToken string, logger zerolog.Logger) (SupportedRunner, error) {

0 commit comments

Comments
 (0)