MCPcopy Create free account
hub / github.com/cloudbase/garm / handleInProgressJob

Method handleInProgressJob

runner/pool/pool.go:357–404  ·  view source on GitHub ↗

handleInProgressJob processes an in-progress job webhook

(ctx context.Context, jobParams params.Job)

Source from the content-addressed store, hash-verified

355
356// handleInProgressJob processes an in-progress job webhook
357func (r *basePoolManager) handleInProgressJob(ctx context.Context, jobParams params.Job) (triggeredBy int64, err error) {
358 if jobParams.RunnerName == "" {
359 slog.DebugContext(ctx, "instance not found in job data", "workflow_job_id", jobParams.ID)
360 return 0, nil
361 }
362
363 // Mark runner as active (this also validates the instance exists)
364 instance, err := r.setInstanceRunnerStatus(jobParams.RunnerName, params.RunnerActive)
365 if err != nil {
366 if errors.Is(err, runnerErrors.ErrNotFound) {
367 slog.DebugContext(ctx, "instance not found", "runner_name", jobParams.RunnerName)
368 return 0, nil
369 }
370 slog.With(slog.Any("error", err)).ErrorContext(
371 ctx, "failed to update runner status",
372 "runner_name", util.SanitizeLogEntry(jobParams.RunnerName))
373 return 0, fmt.Errorf("error updating runner: %w", err)
374 }
375
376 // Verify pool belongs to this entity
377 pool, err := r.store.GetPoolByID(ctx, instance.PoolID)
378 if err != nil {
379 if errors.Is(err, runnerErrors.ErrNotFound) {
380 return 0, nil
381 }
382 slog.With(slog.Any("error", err)).ErrorContext(
383 ctx, "failed to get pool",
384 "pool_id", instance.PoolID)
385 return 0, nil
386 }
387
388 if !r.isEntityPool(pool) {
389 slog.DebugContext(ctx, "instance belongs to a pool not managed by this entity", "pool_id", instance.PoolID)
390 return 0, nil
391 }
392
393 // Extract the job ID that triggered this runner
394 triggeredBy = jobIDFromLabels(instance.AditionalLabels)
395
396 // Ensure minimum idle runners for the pool
397 if err := r.ensureIdleRunnersForOnePool(pool); err != nil {
398 slog.With(slog.Any("error", err)).ErrorContext(
399 ctx, "error ensuring idle runners for pool",
400 "pool_id", pool.ID)
401 }
402
403 return triggeredBy, nil
404}
405
406func (r *basePoolManager) HandleWorkflowJob(job params.WorkflowJob) error {
407 ctx := garmUtil.WithSlogContext(

Callers 1

HandleWorkflowJobMethod · 0.95

Calls 5

isEntityPoolMethod · 0.95
jobIDFromLabelsFunction · 0.85
GetPoolByIDMethod · 0.65

Tested by

no test coverage detected