diff --git a/internal/controller/isbservicerollout_controller.go b/internal/controller/isbservicerollout_controller.go index afe16aa7..228c33eb 100644 --- a/internal/controller/isbservicerollout_controller.go +++ b/internal/controller/isbservicerollout_controller.go @@ -21,7 +21,6 @@ import ( "k8s.io/apimachinery/pkg/api/equality" apierrors "k8s.io/apimachinery/pkg/api/errors" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/rest" ctrl "sigs.k8s.io/controller-runtime" @@ -143,29 +142,27 @@ func (r *ISBServiceRolloutReconciler) reconcile(ctx context.Context, isbServiceR controllerutil.AddFinalizer(isbServiceRollout, finalizerName) } - // apply ISBService - // todo: store hash of spec in annotation; use to compare to determine if anything needs to be updated - obj := kubernetes.GenericObject{ - TypeMeta: metav1.TypeMeta{ - Kind: "InterStepBufferService", - APIVersion: "numaflow.numaproj.io/v1alpha1", - }, - ObjectMeta: metav1.ObjectMeta{ - Name: isbServiceRollout.Name, - Namespace: isbServiceRollout.Namespace, - OwnerReferences: []metav1.OwnerReference{*metav1.NewControllerRef(isbServiceRollout.GetObjectMeta(), apiv1.ISBServiceRolloutGroupVersionKind)}, - }, - Spec: isbServiceRollout.Spec.InterStepBufferService, + // make an InterStepBufferService object and add/update spec hash on the ISBServiceRollout object + obj, rolloutChildOp, err := makeChildResourceFromRolloutAndUpdateSpecHash(ctx, r.restConfig, isbServiceRollout) + if err != nil { + numaLogger.Errorf(err, "failed to make an InterStepBufferService object and to update the ISBServiceRollout: %v", err) + return err + } + + // TODO: instead of doing this, modify the ApplyCRSpec below to be similar to what is done on the PipelineRollout controller code + if rolloutChildOp == RolloutChildNone { + return nil } - err := kubernetes.ApplyCRSpec(ctx, r.restConfig, &obj, "interstepbufferservices") + err = kubernetes.ApplyCRSpec(ctx, r.restConfig, obj, "interstepbufferservices") if err != nil { numaLogger.Errorf(err, "failed to apply CR: %v", err) isbServiceRollout.Status.MarkFailed("ApplyISBServiceFailure", err.Error()) return err } + // after the Apply, Get the ISBService so that we can propagate its health into our Status - isbsvc, err := kubernetes.GetCR(ctx, r.restConfig, &obj, "interstepbufferservices") + isbsvc, err := kubernetes.GetCR(ctx, r.restConfig, obj, "interstepbufferservices") if err != nil { numaLogger.Errorf(err, "failed to get ISBServices: %v", err) return err