From 234a27b697bf46e3a5568f2c8e37adbef93c621e Mon Sep 17 00:00:00 2001 From: Ahmed Mezghani <38987709+ahmed-mez@users.noreply.github.com> Date: Tue, 7 Dec 2021 10:53:23 +0100 Subject: [PATCH] fix: don't overwrite canary paused reason (#136) --- .../strategy/canary.go | 2 +- .../strategy/canary_test.go | 69 +++++++++++++++++++ 2 files changed, 70 insertions(+), 1 deletion(-) diff --git a/controllers/extendeddaemonsetreplicaset/strategy/canary.go b/controllers/extendeddaemonsetreplicaset/strategy/canary.go index 38230f77..fb1e3293 100644 --- a/controllers/extendeddaemonsetreplicaset/strategy/canary.go +++ b/controllers/extendeddaemonsetreplicaset/strategy/canary.go @@ -49,7 +49,7 @@ func manageCanaryStatus(annotations map[string]string, params *Parameters, now t result.NewStatus.Status = string(ReplicaSetStatusCanary) result.IsFailed = eds.IsCanaryDeploymentFailed(annotations, params.Replicaset) - result.IsPaused, _ = eds.IsCanaryDeploymentPaused(annotations, params.Replicaset) + result.IsPaused, result.PausedReason = eds.IsCanaryDeploymentPaused(annotations, params.Replicaset) result.IsUnpaused = eds.IsCanaryDeploymentUnpaused(annotations) var ( diff --git a/controllers/extendeddaemonsetreplicaset/strategy/canary_test.go b/controllers/extendeddaemonsetreplicaset/strategy/canary_test.go index 339e381f..9f0987c5 100644 --- a/controllers/extendeddaemonsetreplicaset/strategy/canary_test.go +++ b/controllers/extendeddaemonsetreplicaset/strategy/canary_test.go @@ -402,6 +402,75 @@ func TestManageCanaryStatus_HighRestartsLeadingToPause(t *testing.T) { test.Run(t) } +func TestManageCanaryStatus_CanaryPausedAlready(t *testing.T) { + now := time.Now() + test := canaryStatusTest{ + now: now, + params: &Parameters{ + EDSName: "foo", + Strategy: &v1alpha1.ExtendedDaemonSetSpecStrategy{ + Canary: &v1alpha1.ExtendedDaemonSetSpecStrategyCanary{ + AutoPause: &v1alpha1.ExtendedDaemonSetSpecStrategyCanaryAutoPause{ + Enabled: v1alpha1.NewBool(true), + MaxRestarts: v1alpha1.NewInt32(2), + }, + AutoFail: &v1alpha1.ExtendedDaemonSetSpecStrategyCanaryAutoFail{ + Enabled: v1alpha1.NewBool(false), + MaxRestarts: v1alpha1.NewInt32(5), + }, + }, + }, + Replicaset: &v1alpha1.ExtendedDaemonSetReplicaSet{ + Spec: v1alpha1.ExtendedDaemonSetReplicaSetSpec{ + TemplateGeneration: "v1", + }, + Status: v1alpha1.ExtendedDaemonSetReplicaSetStatus{ + Conditions: []v1alpha1.ExtendedDaemonSetReplicaSetCondition{ + { + Type: v1alpha1.ConditionTypeCanaryPaused, + Status: v1.ConditionTrue, + LastTransitionTime: metav1.NewTime(now), + LastUpdateTime: metav1.NewTime(now), + Reason: "CrashLoopBackOff", + }, + }, + }, + }, + NewStatus: &v1alpha1.ExtendedDaemonSetReplicaSetStatus{}, + CanaryNodes: testCanaryNodeNames, + NodeByName: testCanaryNodes, + PodByNodeName: map[*NodeItem]*v1.Pod{ + testCanaryNodes["a"]: nil, + testCanaryNodes["b"]: nil, + testCanaryNodes["c"]: nil, + }, + Logger: testLogger, + }, + result: &Result{ + NewStatus: &v1alpha1.ExtendedDaemonSetReplicaSetStatus{ + Status: "canary", + Desired: 3, + Current: 0, + Ready: 0, + Available: 0, + Conditions: []v1alpha1.ExtendedDaemonSetReplicaSetCondition{ + { + Type: v1alpha1.ConditionTypeCanaryPaused, + Status: v1.ConditionTrue, + LastTransitionTime: metav1.NewTime(now), + LastUpdateTime: metav1.NewTime(now), + Reason: "CrashLoopBackOff", + }, + }, + }, + IsPaused: true, + PausedReason: v1alpha1.ExtendedDaemonSetStatusReasonCLB, + Result: reconcile.Result{}, + }, + } + test.Run(t) +} + func TestManageCanaryStatus_HighRestartsLeadingToFail(t *testing.T) { now := time.Now() restartedAt := now.Add(-time.Minute)