Skip to content

Commit b6ad9e5

Browse files
Merge pull request #1191 from hongkailiu/fix-ImplicitlyEnabledCapabilities
OCPBUGS-56114: Fix ImplicitlyEnabledCapabilities
2 parents db8190f + 6db9ef4 commit b6ad9e5

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

pkg/cvo/status.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ const DesiredReleaseAccepted configv1.ClusterStatusConditionType = "ReleaseAccep
172172
// requesting via spec.capabilities, because the cluster version operator does not support uninstalling
173173
// capabilities if any associated resources were previously managed by the CVO or disabling previously
174174
// enabled capabilities.
175-
const ImplicitlyEnabledCapabilities configv1.ClusterStatusConditionType = "ImplicitlyEnabled"
175+
const ImplicitlyEnabledCapabilities configv1.ClusterStatusConditionType = "ImplicitlyEnabledCapabilities"
176176

177177
// syncStatus calculates the new status of the ClusterVersion based on the current sync state and any
178178
// validation errors found. We allow the caller to pass the original object to avoid DeepCopying twice.
@@ -488,6 +488,12 @@ func filterOutUpdateErrors(errs []error, updateEffect payload.UpdateEffectType)
488488
func setImplicitlyEnabledCapabilitiesCondition(cvStatus *configv1.ClusterVersionStatus, implicitlyEnabled []configv1.ClusterVersionCapability,
489489
now metav1.Time) {
490490

491+
// This is to clean up the condition with type=ImplicitlyEnabled introduced by OCPBUGS-56114
492+
if c := resourcemerge.FindOperatorStatusCondition(cvStatus.Conditions, "ImplicitlyEnabled"); c != nil {
493+
klog.V(2).Infof("Remove the condition with type ImplicitlyEnabled")
494+
resourcemerge.RemoveOperatorStatusCondition(&cvStatus.Conditions, "ImplicitlyEnabled")
495+
}
496+
491497
if len(implicitlyEnabled) > 0 {
492498
message := "The following capabilities could not be disabled: "
493499
caps := make([]string, len(implicitlyEnabled))

pkg/cvo/status_test.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func TestOperator_syncFailingStatus(t *testing.T) {
115115
{Type: ClusterStatusFailing, Status: configv1.ConditionTrue, Reason: "UpdatePayloadIntegrity", Message: "unable to apply object"},
116116
{Type: configv1.OperatorProgressing, Status: configv1.ConditionTrue, Message: "Working towards 4.0.1"},
117117
{Type: configv1.RetrievedUpdates, Status: configv1.ConditionFalse},
118-
{Type: ImplicitlyEnabledCapabilities, Status: "False", Reason: "AsExpected", Message: "Capabilities match configured spec"},
118+
{Type: "ImplicitlyEnabledCapabilities", Status: "False", Reason: "AsExpected", Message: "Capabilities match configured spec"},
119119
},
120120
},
121121
},
@@ -156,7 +156,7 @@ func TestOperator_syncFailingStatus(t *testing.T) {
156156
{Type: ClusterStatusFailing, Status: configv1.ConditionTrue, Reason: "", Message: "bad"},
157157
{Type: configv1.OperatorProgressing, Status: configv1.ConditionTrue, Reason: "", Message: "Error ensuring the cluster version is up to date: bad"},
158158
{Type: configv1.RetrievedUpdates, Status: configv1.ConditionFalse},
159-
{Type: ImplicitlyEnabledCapabilities, Status: "False", Reason: "AsExpected", Message: "Capabilities match configured spec"},
159+
{Type: "ImplicitlyEnabledCapabilities", Status: "False", Reason: "AsExpected", Message: "Capabilities match configured spec"},
160160
},
161161
},
162162
})
@@ -871,7 +871,11 @@ func TestUpdateClusterVersionStatus_FilteringMultipleErrorsForFailingCondition(t
871871
}
872872
for _, c := range combinations {
873873
tc.args.syncWorkerStatus.Reconciling = c.isReconciling
874-
cvStatus := &configv1.ClusterVersionStatus{}
874+
cvStatus := &configv1.ClusterVersionStatus{
875+
Conditions: []configv1.ClusterOperatorStatusCondition{
876+
{Type: "ImplicitlyEnabled", Message: "to be removed"},
877+
},
878+
}
875879
if !c.isHistoryEmpty {
876880
cvStatus.History = []configv1.UpdateHistory{{State: configv1.PartialUpdate}}
877881
}
@@ -891,6 +895,10 @@ func TestUpdateClusterVersionStatus_FilteringMultipleErrorsForFailingCondition(t
891895
t.Errorf("unexpected progressingCondition when Reconciling == %t && isHistoryEmpty == %t\n:%s", c.isReconciling, c.isHistoryEmpty, diff)
892896
}
893897
}
898+
conditionRemoved := resourcemerge.FindOperatorStatusCondition(cvStatus.Conditions, "ImplicitlyEnabled")
899+
if conditionRemoved != nil {
900+
t.Errorf("ImplicitlyEnabled condition should be removed but is still there when Reconciling == %t && isHistoryEmpty == %t", c.isReconciling, c.isHistoryEmpty)
901+
}
894902
}
895903
payload.COUpdateStartTimesRemove("machine-config")
896904
})

0 commit comments

Comments
 (0)