/* Copyright 2025 Scott Scoble. Licensed under the MIT License. */ package controller import ( "context" "k8s.io/apimachinery/pkg/runtime" ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/log" kubeclawv1alpha1 "github.com/sscoble/kubeclaw/api/v1alpha1" ) // WorkflowTemplateReconciler reconciles WorkflowTemplate objects. type WorkflowTemplateReconciler struct { client.Client Scheme *runtime.Scheme } func (r *WorkflowTemplateReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { logger := log.FromContext(ctx) wt := &kubeclawv1alpha1.WorkflowTemplate{} if err := r.Get(ctx, req.NamespacedName, wt); err != nil { return ctrl.Result{}, client.IgnoreNotFound(err) } logger.Info("validating workflow template", "name", wt.Name) // Validate basic shape valid := true if len(wt.Spec.Steps) == 0 { valid = false } if wt.Spec.AuditLevel == "" { wt.Spec.AuditLevel = "standard" } wt.Status.Ready = valid wt.Status.Validated = true if err := r.Status().Update(ctx, wt); err != nil { return ctrl.Result{}, err } return ctrl.Result{}, nil } func (r *WorkflowTemplateReconciler) SetupWithManager(mgr ctrl.Manager) error { return ctrl.NewControllerManagedBy(mgr). For(&kubeclawv1alpha1.WorkflowTemplate{}). Complete(r) }