mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
feat: add support for primary backend cookies in session affinity
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
This commit is contained in:
@@ -337,6 +337,9 @@ func (c *Controller) verifyCanary(canary *flaggerv1.Canary) error {
|
||||
if err := verifyKnativeCanary(canary); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := verifySessionAffinity(canary); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -378,6 +381,16 @@ func verifyKnativeCanary(canary *flaggerv1.Canary) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func verifySessionAffinity(canary *flaggerv1.Canary) error {
|
||||
if canary.Spec.Analysis.SessionAffinity != nil {
|
||||
if canary.Spec.Analysis.SessionAffinity.CookieName == canary.Spec.Analysis.SessionAffinity.PrimaryCookieName {
|
||||
return fmt.Errorf("can't use the same cookie name for both primary and cookie name; please update them to be different")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func checkCustomResourceType(obj interface{}, logger *zap.SugaredLogger) (flaggerv1.Canary, bool) {
|
||||
var roll *flaggerv1.Canary
|
||||
var ok bool
|
||||
|
||||
@@ -26,6 +26,7 @@ func TestController_verifyCanary(t *testing.T) {
|
||||
Name: "upstream",
|
||||
Namespace: "test",
|
||||
},
|
||||
Analysis: &flaggerv1.CanaryAnalysis{},
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
@@ -42,6 +43,7 @@ func TestController_verifyCanary(t *testing.T) {
|
||||
Name: "upstream",
|
||||
Namespace: "default",
|
||||
},
|
||||
Analysis: &flaggerv1.CanaryAnalysis{},
|
||||
},
|
||||
},
|
||||
wantErr: false,
|
||||
@@ -103,6 +105,7 @@ func TestController_verifyCanary(t *testing.T) {
|
||||
Kind: "Deployment",
|
||||
Name: "podinfo",
|
||||
},
|
||||
Analysis: &flaggerv1.CanaryAnalysis{},
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
@@ -121,6 +124,7 @@ func TestController_verifyCanary(t *testing.T) {
|
||||
APIVersion: "serving.knative.dev/v1",
|
||||
Name: "podinfo",
|
||||
},
|
||||
Analysis: &flaggerv1.CanaryAnalysis{},
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
@@ -140,6 +144,7 @@ func TestController_verifyCanary(t *testing.T) {
|
||||
APIVersion: "serving.knative.dev/v1",
|
||||
Name: "podinfo",
|
||||
},
|
||||
Analysis: &flaggerv1.CanaryAnalysis{},
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
@@ -158,10 +163,29 @@ func TestController_verifyCanary(t *testing.T) {
|
||||
APIVersion: "serving.knative.dev/v1",
|
||||
Name: "podinfo",
|
||||
},
|
||||
Analysis: &flaggerv1.CanaryAnalysis{},
|
||||
},
|
||||
},
|
||||
wantErr: false,
|
||||
},
|
||||
{
|
||||
name: "session affinity with same cookie names should return an error",
|
||||
canary: flaggerv1.Canary{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "cd-1",
|
||||
Namespace: "default",
|
||||
},
|
||||
Spec: flaggerv1.CanarySpec{
|
||||
Analysis: &flaggerv1.CanaryAnalysis{
|
||||
SessionAffinity: &flaggerv1.SessionAffinity{
|
||||
CookieName: "smth",
|
||||
PrimaryCookieName: "smth",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
wantErr: true,
|
||||
},
|
||||
}
|
||||
|
||||
ctrl := &Controller{
|
||||
|
||||
Reference in New Issue
Block a user