Skip to content

Commit c857982

Browse files
authored
OCPBUGS-5347: additional fix (#716)
1 parent 624fe7a commit c857982

File tree

2 files changed

+24
-20
lines changed

2 files changed

+24
-20
lines changed

pkg/controller/status/controller.go

+3-5
Original file line numberDiff line numberDiff line change
@@ -431,16 +431,14 @@ func (c *Controller) updateControllerConditionsByStatus(cs *conditions, isInitia
431431
cs.setCondition(configv1.OperatorUpgradeable, configv1.ConditionFalse, degradedReason, es.message)
432432
}
433433

434-
// when the operator is already healthy then it doesn't make sense to set those, but when it's degraded and then
435-
// marked as disabled then it's reasonable to set Available=True
436-
if ds := c.ctrlStatus.getStatus(DisabledStatus); ds != nil && !c.ctrlStatus.isHealthy() {
434+
if ds := c.ctrlStatus.getStatus(DisabledStatus); ds != nil {
437435
klog.V(4).Infof("The operator is marked as disabled")
438436
cs.setCondition(configv1.OperatorProgressing, configv1.ConditionFalse, asExpectedReason, monitoringMsg)
439-
cs.setCondition(configv1.OperatorAvailable, configv1.ConditionTrue, asExpectedReason, insightsAvailableMessage)
437+
cs.setCondition(configv1.OperatorAvailable, configv1.ConditionFalse, noTokenReason, reportingDisabledMsg)
440438
cs.setCondition(configv1.OperatorUpgradeable, configv1.ConditionTrue, upgradeableReason, canBeUpgradedMsg)
441439
}
442440

443-
if c.ctrlStatus.isHealthy() {
441+
if c.ctrlStatus.isHealthy() && !c.ctrlStatus.isDisabled() {
444442
klog.V(4).Infof("The operator is healthy")
445443
cs.setCondition(configv1.OperatorProgressing, configv1.ConditionFalse, asExpectedReason, monitoringMsg)
446444
cs.setCondition(configv1.OperatorAvailable, configv1.ConditionTrue, asExpectedReason, insightsAvailableMessage)

pkg/controller/status/controller_test.go

+21-15
Original file line numberDiff line numberDiff line change
@@ -89,13 +89,6 @@ func Test_Status_SaveInitialStart(t *testing.T) {
8989
func Test_updatingConditionsInDisabledState(t *testing.T) {
9090
lastTransitionTime := metav1.Date(2022, 3, 21, 16, 20, 30, 0, time.UTC)
9191

92-
availableCondition := configv1.ClusterOperatorStatusCondition{
93-
Type: configv1.OperatorAvailable,
94-
Status: configv1.ConditionTrue,
95-
Reason: asExpectedReason,
96-
Message: insightsAvailableMessage,
97-
LastTransitionTime: lastTransitionTime,
98-
}
9992
progressingCondition := configv1.ClusterOperatorStatusCondition{
10093
Type: configv1.OperatorProgressing,
10194
Status: configv1.ConditionFalse,
@@ -121,7 +114,13 @@ func Test_updatingConditionsInDisabledState(t *testing.T) {
121114
testCO := configv1.ClusterOperator{
122115
Status: configv1.ClusterOperatorStatus{
123116
Conditions: []configv1.ClusterOperatorStatusCondition{
124-
availableCondition,
117+
{
118+
Type: configv1.OperatorAvailable,
119+
Status: configv1.ConditionTrue,
120+
Reason: asExpectedReason,
121+
Message: insightsAvailableMessage,
122+
LastTransitionTime: lastTransitionTime,
123+
},
125124
progressingCondition,
126125
degradedCondition,
127126
upgradeableCondition,
@@ -141,8 +140,7 @@ func Test_updatingConditionsInDisabledState(t *testing.T) {
141140
apiConfigurator: config.NewMockAPIConfigurator(nil),
142141
}
143142
updatedCO := testController.merge(&testCO)
144-
// check that all the conditions are not touched except the disabled one
145-
assert.Equal(t, availableCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorAvailable))
143+
// check that all the conditions are not touched except the disabled and available conditions
146144
assert.Equal(t, progressingCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorProgressing))
147145
assert.Equal(t, degradedCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorDegraded))
148146
assert.Equal(t, upgradeableCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorUpgradeable))
@@ -153,10 +151,16 @@ func Test_updatingConditionsInDisabledState(t *testing.T) {
153151
assert.Equal(t, reportingDisabledMsg, disabledCondition.Message)
154152
assert.True(t, disabledCondition.LastTransitionTime.After(lastTransitionTime.Time))
155153

154+
availableCondition := getConditionByType(updatedCO.Status.Conditions, configv1.OperatorAvailable)
155+
assert.Equal(t, configv1.ConditionFalse, availableCondition.Status)
156+
assert.Equal(t, noTokenReason, availableCondition.Reason)
157+
assert.Equal(t, reportingDisabledMsg, availableCondition.Message)
158+
assert.True(t, availableCondition.LastTransitionTime.After(lastTransitionTime.Time))
159+
156160
// upgrade status again and nothing should change
157161
updatedCO = testController.merge(updatedCO)
158162
// check that all the conditions are not touched including the disabled one
159-
assert.Equal(t, availableCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorAvailable))
163+
assert.Equal(t, availableCondition, getConditionByType(updatedCO.Status.Conditions, configv1.OperatorAvailable))
160164
assert.Equal(t, progressingCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorProgressing))
161165
assert.Equal(t, degradedCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorDegraded))
162166
assert.Equal(t, upgradeableCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorUpgradeable))
@@ -212,15 +216,17 @@ func Test_updatingConditionsFromDegradedToDisabled(t *testing.T) {
212216
updatedCO := testController.merge(&testCO)
213217
// check that all conditions changed except the Progressing since it's still False
214218
availableCondition := *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorAvailable)
215-
assert.Equal(t, availableCondition.Status, configv1.ConditionTrue)
216-
assert.True(t, availableCondition.LastTransitionTime.After(lastTransitionTime.Time))
219+
assert.Equal(t, configv1.ConditionFalse, availableCondition.Status)
220+
assert.Equal(t, noTokenReason, availableCondition.Reason)
221+
assert.Equal(t, reportingDisabledMsg, availableCondition.Message)
222+
assert.Equal(t, lastTransitionTime, availableCondition.LastTransitionTime)
217223

218224
degradedCondition := *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorDegraded)
219-
assert.Equal(t, degradedCondition.Status, configv1.ConditionFalse)
225+
assert.Equal(t, configv1.ConditionFalse, degradedCondition.Status)
220226
assert.True(t, degradedCondition.LastTransitionTime.After(lastTransitionTime.Time))
221227

222228
upgradeableCondition := *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorUpgradeable)
223-
assert.Equal(t, upgradeableCondition.Status, configv1.ConditionTrue)
229+
assert.Equal(t, configv1.ConditionTrue, upgradeableCondition.Status)
224230
assert.True(t, upgradeableCondition.LastTransitionTime.After(lastTransitionTime.Time))
225231

226232
assert.Equal(t, progressingCondition, *getConditionByType(updatedCO.Status.Conditions, configv1.OperatorProgressing))

0 commit comments

Comments
 (0)