@@ -16,6 +16,7 @@ import (
16
16
"sigs.k8s.io/controller-runtime/pkg/client"
17
17
"sigs.k8s.io/controller-runtime/pkg/log"
18
18
19
+ wsk8s "github.com/gitpod-io/gitpod/common-go/kubernetes"
19
20
config "github.com/gitpod-io/gitpod/ws-manager/api/config"
20
21
workspacev1 "github.com/gitpod-io/gitpod/ws-manager/api/crd/v1"
21
22
"github.com/prometheus/client_golang/prometheus"
@@ -176,7 +177,7 @@ func (r *WorkspaceReconciler) actOnStatus(ctx context.Context, workspace *worksp
176
177
177
178
switch {
178
179
// if there is a pod, and it's failed, delete it
179
- case conditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionFailed )) && ! isPodBeingDeleted (pod ):
180
+ case wsk8s . ConditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionFailed )) && ! isPodBeingDeleted (pod ):
180
181
err := r .Client .Delete (ctx , pod )
181
182
if errors .IsNotFound (err ) {
182
183
// pod is gone - nothing to do here
@@ -185,7 +186,7 @@ func (r *WorkspaceReconciler) actOnStatus(ctx context.Context, workspace *worksp
185
186
}
186
187
187
188
// if the pod was stopped by request, delete it
188
- case conditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionStoppedByRequest )) && ! isPodBeingDeleted (pod ):
189
+ case wsk8s . ConditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionStoppedByRequest )) && ! isPodBeingDeleted (pod ):
189
190
err := r .Client .Delete (ctx , pod )
190
191
if errors .IsNotFound (err ) {
191
192
// pod is gone - nothing to do here
@@ -194,7 +195,7 @@ func (r *WorkspaceReconciler) actOnStatus(ctx context.Context, workspace *worksp
194
195
}
195
196
196
197
// if the content initialization failed, delete the pod
197
- case conditionWithStatusAndReson (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionContentReady ), false , "InitializationFailure" ) && ! isPodBeingDeleted (pod ):
198
+ case wsk8s . ConditionWithStatusAndReason (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionContentReady ), false , "InitializationFailure" ) && ! isPodBeingDeleted (pod ):
198
199
err := r .Client .Delete (ctx , pod )
199
200
if errors .IsNotFound (err ) {
200
201
// pod is gone - nothing to do here
@@ -243,28 +244,28 @@ func (r *WorkspaceReconciler) updateMetrics(ctx context.Context, workspace *work
243
244
phase == workspacev1 .WorkspacePhaseCreating ||
244
245
phase == workspacev1 .WorkspacePhaseInitializing :
245
246
246
- if conditionWithStatusAndReson (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionContentReady ), false , "InitializationFailure" ) {
247
+ if wsk8s . ConditionWithStatusAndReason (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionContentReady ), false , "InitializationFailure" ) {
247
248
r .metrics .countTotalRestoreFailures (& log , workspace )
248
249
r .metrics .countWorkspaceStartFailures (& log , workspace )
249
250
}
250
251
251
- if conditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionFailed )) {
252
+ if wsk8s . ConditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionFailed )) {
252
253
r .metrics .countWorkspaceStartFailures (& log , workspace )
253
254
}
254
255
255
256
case phase == workspacev1 .WorkspacePhaseRunning :
256
257
r .metrics .recordWorkspaceStartupTime (& log , workspace )
257
- if conditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionContentReady )) {
258
+ if wsk8s . ConditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionContentReady )) {
258
259
r .metrics .countTotalRestores (& log , workspace )
259
260
}
260
261
261
262
case phase == workspacev1 .WorkspacePhaseStopped :
262
- if conditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionBackupFailure )) {
263
+ if wsk8s . ConditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionBackupFailure )) {
263
264
r .metrics .countTotalBackups (& log , workspace )
264
265
r .metrics .countTotalBackupFailures (& log , workspace )
265
266
}
266
267
267
- if conditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionBackupComplete )) {
268
+ if wsk8s . ConditionPresentAndTrue (workspace .Status .Conditions , string (workspacev1 .WorkspaceConditionBackupComplete )) {
268
269
r .metrics .countTotalBackups (& log , workspace )
269
270
}
270
271
@@ -276,24 +277,6 @@ func (r *WorkspaceReconciler) updateMetrics(ctx context.Context, workspace *work
276
277
r .metrics .rememberWorkspace (workspace )
277
278
}
278
279
279
- func conditionPresentAndTrue (cond []metav1.Condition , tpe string ) bool {
280
- for _ , c := range cond {
281
- if c .Type == tpe {
282
- return c .Status == metav1 .ConditionTrue
283
- }
284
- }
285
- return false
286
- }
287
-
288
- func conditionWithStatusAndReson (cond []metav1.Condition , tpe string , status bool , reason string ) bool {
289
- for _ , c := range cond {
290
- if c .Type == tpe {
291
- return c .Type == tpe && c .Reason == reason
292
- }
293
- }
294
- return false
295
- }
296
-
297
280
var (
298
281
wsOwnerKey = ".metadata.controller"
299
282
apiGVStr = workspacev1 .GroupVersion .String ()
@@ -326,18 +309,3 @@ func (r *WorkspaceReconciler) SetupWithManager(mgr ctrl.Manager) error {
326
309
Owns (& corev1.Pod {}).
327
310
Complete (r )
328
311
}
329
-
330
- func AddUniqueCondition (conds []metav1.Condition , cond metav1.Condition ) []metav1.Condition {
331
- if cond .Reason == "" {
332
- cond .Reason = "unknown"
333
- }
334
-
335
- for i , c := range conds {
336
- if c .Type == cond .Type {
337
- conds [i ] = cond
338
- return conds
339
- }
340
- }
341
-
342
- return append (conds , cond )
343
- }
0 commit comments