From 4331d55be35c81b86b04955b5e1760eefa3a440d Mon Sep 17 00:00:00 2001 From: Eron Wright Date: Wed, 6 Nov 2024 13:27:45 -0800 Subject: [PATCH 1/2] improved status logging --- .../internal/controller/auto/update_controller.go | 10 ++++++++++ .../internal/controller/auto/workspace_controller.go | 10 ++++++++-- .../internal/controller/pulumi/stack_controller.go | 12 ++++++++++-- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/operator/internal/controller/auto/update_controller.go b/operator/internal/controller/auto/update_controller.go index e07242f0..d2748127 100644 --- a/operator/internal/controller/auto/update_controller.go +++ b/operator/internal/controller/auto/update_controller.go @@ -119,6 +119,7 @@ func (r *UpdateReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr if err != nil { return ctrl.Result{}, fmt.Errorf("failed to update the status: %w", err) } + l = log.FromContext(ctx).WithValues("revision", obj.ResourceVersion) // Get the workspace and check that it is ready w := &autov1alpha1.Workspace{} @@ -257,6 +258,7 @@ func newReconcileSession(client client.Client, obj *autov1alpha1.Update) *reconc } func (rs *reconcileSession) updateStatus(ctx context.Context, obj *autov1alpha1.Update) error { + oldRevision := obj.ResourceVersion obj.Status.ObservedGeneration = obj.Generation rs.progressing.ObservedGeneration = obj.Generation meta.SetStatusCondition(&obj.Status.Conditions, *rs.progressing) @@ -266,6 +268,13 @@ func (rs *reconcileSession) updateStatus(ctx context.Context, obj *autov1alpha1. meta.SetStatusCondition(&obj.Status.Conditions, *rs.complete) err := rs.client.Status().Update(ctx, obj) if err == nil { + if obj.ResourceVersion != oldRevision { + l := log.FromContext(ctx).WithValues("revision", obj.ResourceVersion) + l.Info("Status updated", + "observedGeneration", obj.Status.ObservedGeneration, + "message", obj.Status.Message, + "conditions", obj.Status.Conditions) + } return nil } return fmt.Errorf("updating status: %w", err) @@ -426,6 +435,7 @@ func (r *UpdateReconciler) SetupWithManager(mgr ctrl.Manager) error { } return ctrl.NewControllerManagedBy(mgr). + Named("update-controller"). For(&autov1alpha1.Update{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). Watches(&autov1alpha1.Workspace{}, handler.EnqueueRequestsFromMapFunc(r.mapWorkspaceToUpdate), diff --git a/operator/internal/controller/auto/workspace_controller.go b/operator/internal/controller/auto/workspace_controller.go index 0619a343..ac2487bb 100644 --- a/operator/internal/controller/auto/workspace_controller.go +++ b/operator/internal/controller/auto/workspace_controller.go @@ -104,6 +104,7 @@ func (r *WorkspaceReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( } } updateStatus := func() error { + oldRevision := w.ResourceVersion w.Status.ObservedGeneration = w.Generation ready.ObservedGeneration = w.Generation meta.SetStatusCondition(&w.Status.Conditions, *ready) @@ -111,8 +112,13 @@ func (r *WorkspaceReconciler) Reconcile(ctx context.Context, req ctrl.Request) ( if err != nil { l.Error(err, "updating status") } else { - l = log.FromContext(ctx).WithValues("revision", w.ResourceVersion) - l.V(1).Info("Status updated") + if w.ResourceVersion != oldRevision { + l = log.FromContext(ctx).WithValues("revision", w.ResourceVersion) + l.Info("Status updated", + "observedGeneration", w.Status.ObservedGeneration, + "address", w.Status.Address, + "conditions", w.Status.Conditions) + } } return err diff --git a/operator/internal/controller/pulumi/stack_controller.go b/operator/internal/controller/pulumi/stack_controller.go index 6261bae5..90ca4787 100644 --- a/operator/internal/controller/pulumi/stack_controller.go +++ b/operator/internal/controller/pulumi/stack_controller.go @@ -494,12 +494,20 @@ func (r *StackReconciler) Reconcile(ctx context.Context, request ctrl.Request) ( } saveStatus := func() error { + oldRevision := instance.ResourceVersion if err := r.Status().Update(ctx, instance); err != nil { log.Error(err, "unable to save object status") return err } - log = ctrllog.FromContext(ctx).WithValues("revision", instance.ResourceVersion) - log.V(1).Info("Status updated") + if instance.ResourceVersion != oldRevision { + log = ctrllog.FromContext(ctx).WithValues("revision", instance.ResourceVersion) + log.Info("Status updated", + "observedGeneration", instance.Status.ObservedGeneration, + "observedReconcileRequest", instance.Status.ObservedReconcileRequest, + "lastUpdate", instance.Status.LastUpdate, + "currentUpdate", instance.Status.CurrentUpdate, + "conditions", instance.Status.Conditions) + } return nil } From cbe21e819a2419b43a8c3a502b9f18ef72d6e82e Mon Sep 17 00:00:00 2001 From: Eron Wright Date: Wed, 6 Nov 2024 13:35:44 -0800 Subject: [PATCH 2/2] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34b1c6f4..1351e9fd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ CHANGELOG ## Unreleased - Improved support for using custom program sources. [#741](https://github.com/pulumi/pulumi-kubernetes-operator/pull/741) +- Improved Status logging. [#742](https://github.com/pulumi/pulumi-kubernetes-operator/pull/742) ## 2.0.0-beta.1 (2024-10-18)