A self-hosted orchestration system crafted for power users. composia.xyz
Something went wrong. Try again.
4.1 kB · 80 lines
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081package controller
import ( "context" "log" "time"
"forgejo.alexma.top/alexma233/composia/internal/core/task" "forgejo.alexma.top/alexma233/composia/internal/platform/store")
func logControllerAssignedTask(record task.Record) { log.Printf("controller assigned task: task_id=%s type=%s service=%s node=%s repo_revision=%s", record.TaskID, record.Type, record.ServiceName, record.NodeID, record.RepoRevision)}
func logControllerReceivedTaskState(ctx context.Context, db *store.DB, taskID string, status task.Status, errorSummary string) { record, ok := controllerLogTaskRecord(ctx, db, taskID) if !ok { log.Printf("controller received task state: task_id=%s status=%s", taskID, status) return } if errorSummary != "" { log.Printf("controller received task state: task_id=%s type=%s service=%s node=%s status=%s error=%q", record.TaskID, record.Type, record.ServiceName, record.NodeID, status, errorSummary) return } log.Printf("controller received task state: task_id=%s type=%s service=%s node=%s status=%s", record.TaskID, record.Type, record.ServiceName, record.NodeID, status)}
func logControllerReceivedTaskStepState(ctx context.Context, db *store.DB, step task.StepRecord) { record, ok := controllerLogTaskRecord(ctx, db, step.TaskID) if !ok { log.Printf("controller received task step state: task_id=%s step=%s status=%s", step.TaskID, step.StepName, step.Status) return } log.Printf("controller received task step state: task_id=%s type=%s service=%s node=%s step=%s status=%s", record.TaskID, record.Type, record.ServiceName, record.NodeID, step.StepName, step.Status)}
func logControllerTaskStarted(record task.Record) { log.Printf("controller task started: task_id=%s type=%s service=%s node=%s repo_revision=%s", record.TaskID, record.Type, record.ServiceName, record.NodeID, record.RepoRevision)}
func logControllerTaskFinished(record task.Record, finishedAt time.Time) { log.Printf("controller task finished: task_id=%s type=%s service=%s node=%s duration=%s", record.TaskID, record.Type, record.ServiceName, record.NodeID, controllerTaskDuration(record, finishedAt))}
func logControllerTaskFailed(record task.Record, finishedAt time.Time, err error) { log.Printf("controller task failed: task_id=%s type=%s service=%s node=%s duration=%s error=%q", record.TaskID, record.Type, record.ServiceName, record.NodeID, controllerTaskDuration(record, finishedAt), err.Error())}
func logControllerTaskStepStarted(record task.Record, stepName task.StepName) { log.Printf("controller task step started: task_id=%s type=%s service=%s node=%s step=%s", record.TaskID, record.Type, record.ServiceName, record.NodeID, stepName)}
func logControllerTaskStepSucceeded(record task.Record, stepName task.StepName, startedAt, finishedAt time.Time) { log.Printf("controller task step succeeded: task_id=%s type=%s service=%s node=%s step=%s duration=%s", record.TaskID, record.Type, record.ServiceName, record.NodeID, stepName, finishedAt.Sub(startedAt).Round(time.Millisecond))}
func logControllerTaskStepFailed(record task.Record, stepName task.StepName, err error) { log.Printf("controller task step failed: task_id=%s type=%s service=%s node=%s step=%s error=%q", record.TaskID, record.Type, record.ServiceName, record.NodeID, stepName, err.Error())}
func logControllerTaskAwaitingConfirmation(record task.Record) { log.Printf("controller task awaiting confirmation: task_id=%s type=%s service=%s node=%s step=%s", record.TaskID, record.Type, record.ServiceName, record.NodeID, task.StepAwaitingConfirmation)}
func controllerLogTaskRecord(ctx context.Context, db *store.DB, taskID string) (task.Record, bool) { detail, err := db.GetTask(ctx, taskID) if err != nil { log.Printf("controller task log lookup failed: task_id=%s error=%q", taskID, err.Error()) return task.Record{}, false } return detail.Record, true}
func controllerTaskDuration(record task.Record, finishedAt time.Time) time.Duration { if record.StartedAt == nil { return 0 } return finishedAt.Sub(*record.StartedAt).Round(time.Millisecond)}