From ca44e13fc020da35c9d4d5d32c8da6492e1fa9f0 Mon Sep 17 00:00:00 2001 From: Raghavendra Talur Date: Tue, 11 Feb 2025 05:48:28 -0500 Subject: [PATCH] vrg: better logging for conditions Signed-off-by: Raghavendra Talur --- internal/controller/status.go | 6 ++++-- internal/controller/util/conditions.go | 14 +++++++++----- .../volumereplicationgroup_controller.go | 7 +++++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/internal/controller/status.go b/internal/controller/status.go index a7e7a7397..b185e32b5 100644 --- a/internal/controller/status.go +++ b/internal/controller/status.go @@ -423,7 +423,7 @@ func setStatusConditionIfNotFound(existingConditions *[]metav1.Condition, newCon } } -func setStatusCondition(existingConditions *[]metav1.Condition, newCondition metav1.Condition) { +func setStatusCondition(existingConditions *[]metav1.Condition, newCondition metav1.Condition) metav1.Condition { if existingConditions == nil { existingConditions = &[]metav1.Condition{} } @@ -433,7 +433,7 @@ func setStatusCondition(existingConditions *[]metav1.Condition, newCondition met newCondition.LastTransitionTime = metav1.NewTime(time.Now()) *existingConditions = append(*existingConditions, newCondition) - return + return newCondition } if existingCondition.Status != newCondition.Status { @@ -458,6 +458,8 @@ func setStatusCondition(existingConditions *[]metav1.Condition, newCondition met existingCondition.ObservedGeneration = newCondition.ObservedGeneration existingCondition.LastTransitionTime = metav1.NewTime(time.Now()) } + + return *existingCondition } func findCondition(existingConditions []metav1.Condition, conditionType string) *metav1.Condition { diff --git a/internal/controller/util/conditions.go b/internal/controller/util/conditions.go index f8956d397..65b0108d0 100644 --- a/internal/controller/util/conditions.go +++ b/internal/controller/util/conditions.go @@ -90,11 +90,11 @@ func ConditionAppend( // MergeConditions merges VRG conditions of the same type to generate a single condition for the Type func MergeConditions( - conditionSet func(*[]metav1.Condition, metav1.Condition), + conditionSet func(*[]metav1.Condition, metav1.Condition) metav1.Condition, conditions *[]metav1.Condition, ignoreReasons []string, subConditions ...*metav1.Condition, -) { +) metav1.Condition { trueSubConditions := []*metav1.Condition{} falseSubConditions := []*metav1.Condition{} unknownSubConditions := []*metav1.Condition{} @@ -114,14 +114,18 @@ func MergeConditions( } } + var finalCondition metav1.Condition + switch { case len(falseSubConditions) != 0: - conditionSet(conditions, mergedCondition(falseSubConditions, ignoreReasons)) + finalCondition = conditionSet(conditions, mergedCondition(falseSubConditions, ignoreReasons)) case len(unknownSubConditions) != 0: - conditionSet(conditions, mergedCondition(unknownSubConditions, ignoreReasons)) + finalCondition = conditionSet(conditions, mergedCondition(unknownSubConditions, ignoreReasons)) case len(trueSubConditions) != 0: - conditionSet(conditions, mergedCondition(trueSubConditions, ignoreReasons)) + finalCondition = conditionSet(conditions, mergedCondition(trueSubConditions, ignoreReasons)) } + + return finalCondition } // oldestConditions returns a list of conditions that are the same generation and the oldest among newCondition and diff --git a/internal/controller/volumereplicationgroup_controller.go b/internal/controller/volumereplicationgroup_controller.go index cdbd0c3a6..4afdce57a 100644 --- a/internal/controller/volumereplicationgroup_controller.go +++ b/internal/controller/volumereplicationgroup_controller.go @@ -1559,11 +1559,14 @@ func getStatusStateFromSpecState(state ramendrv1alpha1.ReplicationState) ramendr // condition and is updated elsewhere. func (v *VRGInstance) updateVRGConditions() { logAndSet := func(conditionName string, subconditions ...*metav1.Condition) { - v.log.Info(conditionName, "subconditions", subconditions) - util.MergeConditions(setStatusCondition, + msg := fmt.Sprintf("merging %s condition", conditionName) + v.log.Info(msg, "subconditions", subconditions) + finalCondition := util.MergeConditions(setStatusCondition, &v.instance.Status.Conditions, []string{VRGConditionReasonUnused}, subconditions...) + msg = fmt.Sprintf("updated %s status to %s", conditionName, finalCondition.Status) + v.log.Info(msg, "finalCondition", finalCondition) } var volSyncDataReady, volSyncDataProtected, volSyncClusterDataProtected *metav1.Condition