Skip to content

Commit 8aeaa4f

Browse files
committed
Add a Condition when Upgrade nmot possible
Create a new `*Error` Condition when the Upgrade preconditions are not met (ie, an AuthService/RateLimitService exists). Signed-off-by: Alvaro Saurin <[email protected]>
1 parent 1e2d4f2 commit 8aeaa4f

File tree

3 files changed

+53
-9
lines changed

3 files changed

+53
-9
lines changed

pkg/apis/getambassador/v2/ambassadorinstallation_types.go

+1
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ const (
164164
ReasonUninstallError AmbInsConditionReason = "UninstallError"
165165
ReasonParametersError AmbInsConditionReason = "ParametersError"
166166
ReasonDuplicateError AmbInsConditionReason = "DuplicateError"
167+
ReasonUpgradePrecondError AmbInsConditionReason = "UpgradePrecondError"
167168
)
168169

169170
func (s *AmbassadorInstallationStatus) ToMap() (map[string]interface{}, error) {

pkg/controller/ambassadorinstallation/reconcile.go

+50-8
Original file line numberDiff line numberDiff line change
@@ -292,14 +292,35 @@ func (r *ReconcileAmbassadorInstallation) Reconcile(request reconcile.Request) (
292292
Version: "v2",
293293
Kind: "AuthService",
294294
}, request.Namespace)
295+
295296
if err != nil {
296-
log.Error(err, "Could not look up AuthService in the cluster")
297-
return reconcile.Result{}, err
297+
message := "could not look up AuthService in the cluster"
298+
err = fmt.Errorf(message)
299+
log.Error(err, "")
300+
301+
status.SetCondition(ambassador.AmbInsCondition{
302+
Type: ambassador.ConditionReleaseFailed,
303+
Status: ambassador.StatusTrue,
304+
Reason: ambassador.ReasonUpgradePrecondError,
305+
Message: message,
306+
})
307+
_ = r.updateResourceStatus(ambIns, status)
308+
return reconcile.Result{RequeueAfter: r.checkInterval}, err
298309
}
310+
299311
if len(authServiceList.Items) > 0 {
300-
err = fmt.Errorf("AuthService(s) exist in the cluster, please remove to upgrade to AES")
312+
message := "AuthService(s) exist in the cluster, please remove to upgrade to AES"
313+
err = fmt.Errorf(message)
301314
log.Error(err, "")
302-
return reconcile.Result{}, err
315+
316+
status.SetCondition(ambassador.AmbInsCondition{
317+
Type: ambassador.ConditionReleaseFailed,
318+
Status: ambassador.StatusTrue,
319+
Reason: ambassador.ReasonUpgradePrecondError,
320+
Message: message,
321+
})
322+
_ = r.updateResourceStatus(ambIns, status)
323+
return reconcile.Result{RequeueAfter: r.checkInterval}, err
303324
}
304325

305326
log.Info("Checking for RateLimitService...")
@@ -308,14 +329,35 @@ func (r *ReconcileAmbassadorInstallation) Reconcile(request reconcile.Request) (
308329
Version: "v2",
309330
Kind: "RateLimitService",
310331
}, request.Namespace)
332+
311333
if err != nil {
312-
log.Error(err, "Could not look up RateLimitService in the cluster")
313-
return reconcile.Result{}, err
334+
message := "could not look up RateLimitService in the cluster"
335+
err = fmt.Errorf(message)
336+
log.Error(err, "")
337+
338+
status.SetCondition(ambassador.AmbInsCondition{
339+
Type: ambassador.ConditionReleaseFailed,
340+
Status: ambassador.StatusTrue,
341+
Reason: ambassador.ReasonUpgradePrecondError,
342+
Message: message,
343+
})
344+
_ = r.updateResourceStatus(ambIns, status)
345+
return reconcile.Result{RequeueAfter: r.checkInterval}, err
314346
}
347+
315348
if len(rateLimitServiceList.Items) > 0 {
316-
err = fmt.Errorf("RateLimitService(s) exist in the cluster, please remove to upgrade to AES")
349+
message := "RateLimitService(s) exist in the cluster, please remove to upgrade to AES"
350+
err = fmt.Errorf(message)
317351
log.Error(err, "")
318-
return reconcile.Result{}, err
352+
353+
status.SetCondition(ambassador.AmbInsCondition{
354+
Type: ambassador.ConditionReleaseFailed,
355+
Status: ambassador.StatusTrue,
356+
Reason: ambassador.ReasonUpgradePrecondError,
357+
Message: message,
358+
})
359+
_ = r.updateResourceStatus(ambIns, status)
360+
return reconcile.Result{RequeueAfter: r.checkInterval}, err
319361
}
320362

321363
isMigrating = true

pkg/controller/ambassadorinstallation/reconcile_utils.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package ambassadorinstallation
33
import (
44
"context"
55
"fmt"
6-
"k8s.io/apimachinery/pkg/runtime/schema"
76
"sort"
87

8+
"k8s.io/apimachinery/pkg/runtime/schema"
9+
910
apierrors "k8s.io/apimachinery/pkg/api/errors"
1011
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
1112
"k8s.io/apimachinery/pkg/runtime"

0 commit comments

Comments
 (0)