From b293936fa73e8ba72fe95dfcd41bfc791101c19f Mon Sep 17 00:00:00 2001 From: Alex Georgousis <alex.georgousis@sky.uk> Date: Fri, 10 Jan 2025 15:52:47 +0000 Subject: [PATCH] WIP: Set Provider SynchronizationState --- controllers/pipelines/provider_controller.go | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/controllers/pipelines/provider_controller.go b/controllers/pipelines/provider_controller.go index d483ddc4b..48b8e6289 100644 --- a/controllers/pipelines/provider_controller.go +++ b/controllers/pipelines/provider_controller.go @@ -11,6 +11,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" + "github.com/sky-uk/kfp-operator/apis" config "github.com/sky-uk/kfp-operator/apis/config/v1alpha6" "github.com/sky-uk/kfp-operator/apis/pipelines" pipelinesv1 "github.com/sky-uk/kfp-operator/apis/pipelines/v1alpha6" @@ -67,15 +68,25 @@ func (r *ProviderReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c desiredDeployment, err := r.constructDeployment(provider, req.Namespace, *r.Config.DeepCopy()) if err != nil { logger.Error(err, "unable to construct provider service deployment") + provider.Status.SynchronizationState = apis.Failed + if err = r.EC.Client.Status().Update(ctx, provider); err != nil { + logger.Error(err, "unable to update provider resource status", "provider", provider) + } return ctrl.Result{}, err } existingDeployment, err := r.getDeployment(ctx, req.Namespace, provider.Name, *provider) if err != nil && !apierrors.IsNotFound(err) { logger.Error(err, "unable to get existing deployment") + provider.Status.SynchronizationState = apis.Failed + if err = r.EC.Client.Status().Update(ctx, provider); err != nil { + logger.Error(err, "unable to update provider resource status", "provider", provider) + } return ctrl.Result{}, err } + // TODO: If the Deployment is in a failed state, set the SynchronizationState on the Provider resource to Failed + logger.Info("desired provider deployment", "deployment", desiredDeployment) if existingDeployment != nil { @@ -87,18 +98,32 @@ func (r *ProviderReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c existingDeployment.Annotations[ResourceHashAnnotation] = desiredDeployment.Annotations[ResourceHashAnnotation] if err = r.EC.Client.Update(ctx, existingDeployment); err != nil { logger.Error(err, "unable to update provider service deployment", "deployment", desiredDeployment) + provider.Status.SynchronizationState = apis.Failed + if err = r.EC.Client.Status().Update(ctx, provider); err != nil { + logger.Error(err, "unable to update provider resource status", "provider", provider) + } return ctrl.Result{}, err } } } else { if err = r.EC.Client.Create(ctx, desiredDeployment); err != nil { logger.Error(err, "unable to create provider service deployment") + provider.Status.SynchronizationState = apis.Failed + if err = r.EC.Client.Status().Update(ctx, provider); err != nil { + logger.Error(err, "unable to update provider resource status", "provider", provider) + } return ctrl.Result{}, err } logger.Info("created provider deployment", "deployment", desiredDeployment) } + // TODO: We've going to do this a lot, so probably move to helper function + provider.Status.SynchronizationState = apis.Succeeded + if err = r.EC.Client.Status().Update(ctx, provider); err != nil { + logger.Error(err, "unable to update provider resource status", "provider", provider) + } + duration := time.Since(startTime) logger.Info("reconciliation ended", logkeys.Duration, duration)