package models
import (
"context"
"time"
"tangled.org/core/spindle/secrets"
"tangled.org/core/workflow"
)
const MaxWorkflowTimeBudget = 6 * time.Hour
func WorkflowTimeBudget(configured time.Duration) time.Duration {
return min(configured, MaxWorkflowTimeBudget)
}
type Engine interface {
InitWorkflow(twf workflow.WorkflowSpec, tpl workflow.PipelineSpec) (*Workflow, error)
SetupWorkflow(ctx context.Context, wid WorkflowId, wf *Workflow, wfLogger WorkflowLogger) error
WorkflowTimeout() time.Duration
DestroyWorkflow(ctx context.Context, wid WorkflowId) error
RunStep(ctx context.Context, wid WorkflowId, w *Workflow, idx int, secrets []secrets.UnlockedSecret, wfLogger WorkflowLogger) error
}