Skip to content

Commit bc0c4d5

Browse files
committed
Const Cleanup
Captures conditions and reasons used by ClusterExtensionRevision into consts. Signed-off-by: Daniel Franz <[email protected]>
1 parent 01cf0d3 commit bc0c4d5

File tree

6 files changed

+66
-49
lines changed

6 files changed

+66
-49
lines changed

api/v1/clusterextension_types_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"github.com/operator-framework/operator-controller/internal/operator-controller/conditionsets"
1515
)
1616

17+
// TODO Expand these tests to cover Types/Reasons/etc. from other APIs as well
18+
1719
func TestClusterExtensionTypeRegistration(t *testing.T) {
1820
types, err := parseConstants("Type")
1921
if err != nil {

api/v1/clusterextensionrevision_types.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,24 @@ import (
2222
"k8s.io/apimachinery/pkg/types"
2323
)
2424

25-
const ClusterExtensionRevisionKind = "ClusterExtensionRevision"
25+
const (
26+
ClusterExtensionRevisionKind = "ClusterExtensionRevision"
27+
28+
// Condition Types
29+
ClusterExtensionRevisionTypeAvailable = "Available"
30+
ClusterExtensionRevisionTypeSucceeded = "Succeeded"
31+
32+
// Condition Reasons
33+
ClusterExtensionRevisionReasonAvailable = "Available"
34+
ClusterExtensionRevisionReasonReconcileFailure = "ReconcileFailure"
35+
ClusterExtensionRevisionReasonRevisionValidationFailure = "RevisionValidationFailure"
36+
ClusterExtensionRevisionReasonPhaseValidationError = "PhaseValidationError"
37+
ClusterExtensionRevisionReasonObjectCollisions = "ObjectCollisions"
38+
ClusterExtensionRevisionReasonRolloutSuccess = "RolloutSuccess"
39+
ClusterExtensionRevisionReasonProbeFailure = "ProbeFailure"
40+
ClusterExtensionRevisionReasonIncomplete = "Incomplete"
41+
ClusterExtensionRevisionReasonProgressing = "Progressing"
42+
)
2643

2744
// ClusterExtensionRevisionSpec defines the desired state of ClusterExtensionRevision.
2845
type ClusterExtensionRevisionSpec struct {

internal/operator-controller/applier/boxcutter.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,9 @@ func (bc *Boxcutter) apply(ctx context.Context, contentFS fs.FS, ext *ocv1.Clust
199199

200200
// TODO: Delete archived previous revisions over a certain revision limit
201201

202-
// TODO: Define constants for the ClusterExtensionRevision condition types.
203-
progressingCondition := meta.FindStatusCondition(currentRevision.Status.Conditions, "Progressing")
204-
availableCondition := meta.FindStatusCondition(currentRevision.Status.Conditions, "Available")
205-
succeededCondition := meta.FindStatusCondition(currentRevision.Status.Conditions, "Succeeded")
202+
progressingCondition := meta.FindStatusCondition(currentRevision.Status.Conditions, ocv1.TypeProgressing)
203+
availableCondition := meta.FindStatusCondition(currentRevision.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
204+
succeededCondition := meta.FindStatusCondition(currentRevision.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded)
206205

207206
if progressingCondition == nil && availableCondition == nil && succeededCondition == nil {
208207
return false, "New revision created", nil

internal/operator-controller/controllers/clusterextension_controller.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -557,8 +557,7 @@ func (d *BoxcutterRevisionStatesGetter) GetRevisionStates(ctx context.Context, e
557557
},
558558
}
559559

560-
// TODO: we should make constants for the ClusterExtensionRevision condition types.
561-
if installedCondition := apimeta.FindStatusCondition(rev.Status.Conditions, "Succeeded"); installedCondition == nil || installedCondition.Status != metav1.ConditionTrue {
560+
if installedCondition := apimeta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded); installedCondition == nil || installedCondition.Status != metav1.ConditionTrue {
562561
rs.RollingOut = append(rs.RollingOut, rm)
563562
} else {
564563
rs.Installed = rm

internal/operator-controller/controllers/clusterextensionrevision_controller.go

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
9292
tres, err := c.RevisionEngine.Teardown(ctx, *revision)
9393
if err != nil {
9494
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
95-
Type: "Available",
95+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
9696
Status: metav1.ConditionFalse,
97-
Reason: "ReconcileFailure",
97+
Reason: ocv1.ClusterExtensionRevisionReasonReconcileFailure,
9898
Message: err.Error(),
9999
ObservedGeneration: rev.Generation,
100100
})
@@ -108,9 +108,9 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
108108

109109
if err := c.TrackingCache.Free(ctx, rev); err != nil {
110110
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
111-
Type: "Available",
111+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
112112
Status: metav1.ConditionFalse,
113-
Reason: "ReconcileFailure",
113+
Reason: ocv1.ClusterExtensionRevisionReasonReconcileFailure,
114114
Message: err.Error(),
115115
ObservedGeneration: rev.Generation,
116116
})
@@ -124,19 +124,19 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
124124
//
125125
if err := c.ensureFinalizer(ctx, rev, clusterExtensionRevisionTeardownFinalizer); err != nil {
126126
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
127-
Type: "Available",
127+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
128128
Status: metav1.ConditionFalse,
129-
Reason: "ReconcileFailure",
129+
Reason: ocv1.ClusterExtensionRevisionReasonReconcileFailure,
130130
Message: err.Error(),
131131
ObservedGeneration: rev.Generation,
132132
})
133133
return ctrl.Result{}, fmt.Errorf("ensure finalizer: %w", errors.Join(err, c.Client.Status().Update(ctx, rev)))
134134
}
135135
if err := c.establishWatch(ctx, rev, revision); err != nil {
136136
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
137-
Type: "Available",
137+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
138138
Status: metav1.ConditionFalse,
139-
Reason: "ReconcileFailure",
139+
Reason: ocv1.ClusterExtensionRevisionReasonReconcileFailure,
140140
Message: err.Error(),
141141
ObservedGeneration: rev.Generation,
142142
})
@@ -145,9 +145,9 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
145145
rres, err := c.RevisionEngine.Reconcile(ctx, *revision, opts...)
146146
if err != nil {
147147
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
148-
Type: "Available",
148+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
149149
Status: metav1.ConditionFalse,
150-
Reason: "ReconcileFailure",
150+
Reason: ocv1.ClusterExtensionRevisionReasonReconcileFailure,
151151
Message: err.Error(),
152152
ObservedGeneration: rev.Generation,
153153
})
@@ -160,9 +160,9 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
160160
if verr := rres.GetValidationError(); verr != nil {
161161
l.Info("preflight error, retrying after 10s", "err", verr.String())
162162
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
163-
Type: "Available",
163+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
164164
Status: metav1.ConditionFalse,
165-
Reason: "RevisionValidationFailure",
165+
Reason: ocv1.ClusterExtensionRevisionReasonRevisionValidationFailure,
166166
Message: fmt.Sprintf("revision validation error: %s", verr),
167167
ObservedGeneration: rev.Generation,
168168
})
@@ -172,9 +172,9 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
172172
if verr := pres.GetValidationError(); verr != nil {
173173
l.Info("preflight error, retrying after 10s", "err", verr.String())
174174
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
175-
Type: "Available",
175+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
176176
Status: metav1.ConditionFalse,
177-
Reason: "PhaseValidationError",
177+
Reason: ocv1.ClusterExtensionRevisionReasonPhaseValidationError,
178178
Message: fmt.Sprintf("phase %d validation error: %s", i, verr),
179179
ObservedGeneration: rev.Generation,
180180
})
@@ -189,9 +189,9 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
189189
if len(collidingObjs) > 0 {
190190
l.Info("object collision error, retrying after 10s", "collisions", collidingObjs)
191191
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
192-
Type: "Available",
192+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
193193
Status: metav1.ConditionFalse,
194-
Reason: "ObjectCollisions",
194+
Reason: ocv1.ClusterExtensionRevisionReasonObjectCollisions,
195195
Message: fmt.Sprintf("revision object collisions in phase %d\n%s", i, strings.Join(collidingObjs, "\n\n")),
196196
ObservedGeneration: rev.Generation,
197197
})
@@ -211,17 +211,17 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
211211

212212
// Report status.
213213
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
214-
Type: "Available",
214+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
215215
Status: metav1.ConditionTrue,
216-
Reason: "Available",
216+
Reason: ocv1.ClusterExtensionRevisionReasonAvailable,
217217
Message: "Object is available and passes all probes.",
218218
ObservedGeneration: rev.Generation,
219219
})
220-
if !meta.IsStatusConditionTrue(rev.Status.Conditions, "Succeeded") {
220+
if !meta.IsStatusConditionTrue(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded) {
221221
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
222-
Type: "Succeeded",
222+
Type: ocv1.ClusterExtensionRevisionTypeSucceeded,
223223
Status: metav1.ConditionTrue,
224-
Reason: "RolloutSuccess",
224+
Reason: ocv1.ClusterExtensionRevisionReasonRolloutSuccess,
225225
Message: "Revision succeeded rolling out.",
226226
ObservedGeneration: rev.Generation,
227227
})
@@ -250,32 +250,32 @@ func (c *ClusterExtensionRevisionReconciler) reconcile(ctx context.Context, rev
250250
}
251251
if len(probeFailureMsgs) > 0 {
252252
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
253-
Type: "Available",
253+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
254254
Status: metav1.ConditionFalse,
255-
Reason: "ProbeFailure",
255+
Reason: ocv1.ClusterExtensionRevisionReasonProbeFailure,
256256
Message: strings.Join(probeFailureMsgs, "\n"),
257257
ObservedGeneration: rev.Generation,
258258
})
259259
} else {
260260
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
261-
Type: "Available",
261+
Type: ocv1.ClusterExtensionRevisionTypeAvailable,
262262
Status: metav1.ConditionFalse,
263-
Reason: "Incomplete",
263+
Reason: ocv1.ClusterExtensionRevisionReasonIncomplete,
264264
Message: "Revision has not been rolled out completely.",
265265
ObservedGeneration: rev.Generation,
266266
})
267267
}
268268
}
269269
if rres.InTransistion() {
270270
meta.SetStatusCondition(&rev.Status.Conditions, metav1.Condition{
271-
Type: "Progressing",
271+
Type: ocv1.TypeProgressing,
272272
Status: metav1.ConditionTrue,
273-
Reason: "Progressing",
273+
Reason: ocv1.ClusterExtensionRevisionReasonProgressing,
274274
Message: "Rollout in progress.",
275275
ObservedGeneration: rev.Generation,
276276
})
277277
} else {
278-
meta.RemoveStatusCondition(&rev.Status.Conditions, "Progressing")
278+
meta.RemoveStatusCondition(&rev.Status.Conditions, ocv1.TypeProgressing)
279279
}
280280

281281
return ctrl.Result{}, c.Client.Status().Update(ctx, rev)
@@ -412,7 +412,7 @@ func toBoxcutterRevision(rev *ocv1.ClusterExtensionRevision) (*boxcutter.Revisio
412412
return false, []string{".status.observedGeneration outdated"}
413413
}
414414
for _, cond := range depl.Status.Conditions {
415-
if cond.Type == "Available" &&
415+
if cond.Type == ocv1.ClusterExtensionRevisionTypeAvailable &&
416416
cond.Status == corev1.ConditionTrue &&
417417
depl.Status.UpdatedReplicas == *depl.Spec.Replicas {
418418
return true, nil

internal/operator-controller/controllers/clusterextensionrevision_controller_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
7777
Name: clusterExtensionRevisionName,
7878
}, rev)
7979
require.NoError(t, err)
80-
cond := meta.FindStatusCondition(rev.Status.Conditions, "Available")
80+
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
8181
require.NotNil(t, cond)
8282
require.Equal(t, metav1.ConditionFalse, cond.Status)
83-
require.Equal(t, "Incomplete", cond.Reason)
83+
require.Equal(t, ocv1.ClusterExtensionRevisionReasonIncomplete, cond.Reason)
8484
require.Equal(t, "Revision has not been rolled out completely.", cond.Message)
8585
require.Equal(t, int64(1), cond.ObservedGeneration)
8686
},
@@ -166,10 +166,10 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
166166
Name: clusterExtensionRevisionName,
167167
}, rev)
168168
require.NoError(t, err)
169-
cond := meta.FindStatusCondition(rev.Status.Conditions, "Available")
169+
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
170170
require.NotNil(t, cond)
171171
require.Equal(t, metav1.ConditionFalse, cond.Status)
172-
require.Equal(t, "ProbeFailure", cond.Reason)
172+
require.Equal(t, ocv1.ClusterExtensionRevisionReasonProbeFailure, cond.Reason)
173173
require.Equal(t, "Object Service.v1 my-namespace/my-service: something bad happened and something worse happened\nObject ConfigMap.v1 my-namespace/my-configmap: we have a problem", cond.Message)
174174
require.Equal(t, int64(1), cond.ObservedGeneration)
175175
},
@@ -191,10 +191,10 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
191191
Name: clusterExtensionRevisionName,
192192
}, rev)
193193
require.NoError(t, err)
194-
cond := meta.FindStatusCondition(rev.Status.Conditions, "Progressing")
194+
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.TypeProgressing)
195195
require.NotNil(t, cond)
196196
require.Equal(t, metav1.ConditionTrue, cond.Status)
197-
require.Equal(t, "Progressing", cond.Reason)
197+
require.Equal(t, ocv1.ClusterExtensionRevisionReasonProgressing, cond.Reason)
198198
require.Equal(t, "Rollout in progress.", cond.Message)
199199
require.Equal(t, int64(1), cond.ObservedGeneration)
200200
},
@@ -209,9 +209,9 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
209209
rev1 := newTestClusterExtensionRevision(clusterExtensionRevisionName)
210210
require.NoError(t, controllerutil.SetControllerReference(ext, rev1, testScheme))
211211
meta.SetStatusCondition(&rev1.Status.Conditions, metav1.Condition{
212-
Type: "Progressing",
212+
Type: ocv1.TypeProgressing,
213213
Status: metav1.ConditionTrue,
214-
Reason: "Progressing",
214+
Reason: ocv1.ClusterExtensionRevisionReasonProgressing,
215215
Message: "some message",
216216
ObservedGeneration: 1,
217217
})
@@ -223,7 +223,7 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
223223
Name: clusterExtensionRevisionName,
224224
}, rev)
225225
require.NoError(t, err)
226-
cond := meta.FindStatusCondition(rev.Status.Conditions, "Progressing")
226+
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.TypeProgressing)
227227
require.Nil(t, cond)
228228
},
229229
},
@@ -244,17 +244,17 @@ func Test_ClusterExtensionRevisionReconciler_Reconcile_RevisionProgression(t *te
244244
Name: clusterExtensionRevisionName,
245245
}, rev)
246246
require.NoError(t, err)
247-
cond := meta.FindStatusCondition(rev.Status.Conditions, "Available")
247+
cond := meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeAvailable)
248248
require.NotNil(t, cond)
249249
require.Equal(t, metav1.ConditionTrue, cond.Status)
250-
require.Equal(t, "Available", cond.Reason)
250+
require.Equal(t, ocv1.ClusterExtensionRevisionReasonAvailable, cond.Reason)
251251
require.Equal(t, "Object is available and passes all probes.", cond.Message)
252252
require.Equal(t, int64(1), cond.ObservedGeneration)
253253

254-
cond = meta.FindStatusCondition(rev.Status.Conditions, "Succeeded")
254+
cond = meta.FindStatusCondition(rev.Status.Conditions, ocv1.ClusterExtensionRevisionTypeSucceeded)
255255
require.NotNil(t, cond)
256256
require.Equal(t, metav1.ConditionTrue, cond.Status)
257-
require.Equal(t, "RolloutSuccess", cond.Reason)
257+
require.Equal(t, ocv1.ClusterExtensionRevisionReasonRolloutSuccess, cond.Reason)
258258
require.Equal(t, "Revision succeeded rolling out.", cond.Message)
259259
require.Equal(t, int64(1), cond.ObservedGeneration)
260260
},

0 commit comments

Comments
 (0)