mirror of
https://github.com/fluxcd/flagger.git
synced 2026-03-27 13:56:53 +00:00
Fix bug where CanaryWeight is reset to 0 during CanaryPhasePromoting
Signed-off-by: Yap Sok Ann <sokann@gmail.com>
This commit is contained in:
committed by
Sanskar Jaiswal
parent
b10e7cfcb8
commit
ceab3ec96b
@@ -158,7 +158,7 @@ func setStatusPhase(flaggerClient clientset.Interface, cd *flaggerv1.Canary, pha
|
||||
cdCopy.Status.Phase = phase
|
||||
cdCopy.Status.LastTransitionTime = metav1.Now()
|
||||
|
||||
if phase != flaggerv1.CanaryPhaseProgressing && phase != flaggerv1.CanaryPhaseWaiting {
|
||||
if phase != flaggerv1.CanaryPhaseProgressing && phase != flaggerv1.CanaryPhaseWaiting && phase != flaggerv1.CanaryPhasePromoting {
|
||||
cdCopy.Status.CanaryWeight = 0
|
||||
cdCopy.Status.Iterations = 0
|
||||
if phase == flaggerv1.CanaryPhaseWaitingPromotion {
|
||||
|
||||
@@ -179,27 +179,33 @@ func TestScheduler_DeploymentAnalysisPhases(t *testing.T) {
|
||||
// detect changes
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
require.NoError(t, assertPhase(mocks.flaggerClient, "podinfo", flaggerv1.CanaryPhaseProgressing))
|
||||
require.NoError(t, assertCanaryWeight(mocks.flaggerClient, "podinfo", 0))
|
||||
mocks.makeCanaryReady(t)
|
||||
|
||||
// progressing
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
require.NoError(t, assertPhase(mocks.flaggerClient, "podinfo", flaggerv1.CanaryPhaseProgressing))
|
||||
require.NoError(t, assertCanaryWeight(mocks.flaggerClient, "podinfo", 100))
|
||||
|
||||
// start promotion
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
require.NoError(t, assertPhase(mocks.flaggerClient, "podinfo", flaggerv1.CanaryPhasePromoting))
|
||||
require.NoError(t, assertCanaryWeight(mocks.flaggerClient, "podinfo", 100))
|
||||
|
||||
// end promotion
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
require.NoError(t, assertPhase(mocks.flaggerClient, "podinfo", flaggerv1.CanaryPhasePromoting))
|
||||
require.NoError(t, assertCanaryWeight(mocks.flaggerClient, "podinfo", 50))
|
||||
|
||||
// finalising
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
require.NoError(t, assertPhase(mocks.flaggerClient, "podinfo", flaggerv1.CanaryPhaseFinalising))
|
||||
require.NoError(t, assertCanaryWeight(mocks.flaggerClient, "podinfo", 0))
|
||||
|
||||
// succeeded
|
||||
mocks.ctrl.advanceCanary("podinfo", "default")
|
||||
require.NoError(t, assertPhase(mocks.flaggerClient, "podinfo", flaggerv1.CanaryPhaseSucceeded))
|
||||
require.NoError(t, assertCanaryWeight(mocks.flaggerClient, "podinfo", 0))
|
||||
}
|
||||
|
||||
func TestScheduler_DeploymentBlueGreenAnalysisPhases(t *testing.T) {
|
||||
|
||||
@@ -60,6 +60,19 @@ func assertPhase(flaggerClient clientset.Interface, canary string, phase flagger
|
||||
return nil
|
||||
}
|
||||
|
||||
func assertCanaryWeight(flaggerClient clientset.Interface, canary string, canaryWeight int) error {
|
||||
c, err := flaggerClient.FlaggerV1beta1().Canaries("default").Get(context.TODO(), canary, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if c.Status.CanaryWeight != canaryWeight {
|
||||
return fmt.Errorf("got canary weight %d wanted %d", c.Status.CanaryWeight, canaryWeight)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func alwaysReady() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user