From 9d8941176bcedbdcd940993134bb3b5e945ce331 Mon Sep 17 00:00:00 2001 From: Sanskar Jaiswal Date: Thu, 9 Jun 2022 20:30:51 +0530 Subject: [PATCH] fix primary hpa label reconciliation Signed-off-by: Sanskar Jaiswal --- pkg/canary/hpa_reconciler.go | 44 +++++++++++++------------------ pkg/canary/hpa_reconciler_test.go | 2 -- 2 files changed, 19 insertions(+), 27 deletions(-) diff --git a/pkg/canary/hpa_reconciler.go b/pkg/canary/hpa_reconciler.go index 10f57909..7eecc0a4 100644 --- a/pkg/canary/hpa_reconciler.go +++ b/pkg/canary/hpa_reconciler.go @@ -123,15 +123,15 @@ func (hr *HPAReconciler) reconcilePrimaryHpaV2(cd *flaggerv1.Canary, hpa *hpav2. if err != nil { return err } - hpaClone := primaryHpa.DeepCopy() - hpaClone.Spec.MaxReplicas = hpaSpec.MaxReplicas - hpaClone.Spec.MinReplicas = hpaSpec.MinReplicas - hpaClone.Spec.Metrics = hpaSpec.Metrics - hpaClone.Spec.Behavior = hpaSpec.Behavior + primaryHpaClone := primaryHpa.DeepCopy() + primaryHpaClone.Spec.MaxReplicas = hpaSpec.MaxReplicas + primaryHpaClone.Spec.MinReplicas = hpaSpec.MinReplicas + primaryHpaClone.Spec.Metrics = hpaSpec.Metrics + primaryHpaClone.Spec.Behavior = hpaSpec.Behavior - hr.updateObjectMeta(hpaClone.ObjectMeta) + hr.updateObjectMeta(primaryHpaClone.ObjectMeta, hpa.ObjectMeta) - _, err = hr.kubeClient.AutoscalingV2().HorizontalPodAutoscalers(cd.Namespace).Update(context.TODO(), hpaClone, metav1.UpdateOptions{}) + _, err = hr.kubeClient.AutoscalingV2().HorizontalPodAutoscalers(cd.Namespace).Update(context.TODO(), primaryHpaClone, metav1.UpdateOptions{}) return err }) if err != nil { @@ -207,15 +207,15 @@ func (hr *HPAReconciler) reconcilePrimaryHpaV2Beta2(cd *flaggerv1.Canary, hpa *h if err != nil { return err } - hpaClone := primaryHpa.DeepCopy() - hpaClone.Spec.MaxReplicas = hpaSpec.MaxReplicas - hpaClone.Spec.MinReplicas = hpaSpec.MinReplicas - hpaClone.Spec.Metrics = hpaSpec.Metrics - hpaClone.Spec.Behavior = hpaSpec.Behavior + primaryHpaClone := primaryHpa.DeepCopy() + primaryHpaClone.Spec.MaxReplicas = hpaSpec.MaxReplicas + primaryHpaClone.Spec.MinReplicas = hpaSpec.MinReplicas + primaryHpaClone.Spec.Metrics = hpaSpec.Metrics + primaryHpaClone.Spec.Behavior = hpaSpec.Behavior - hr.updateObjectMeta(hpaClone.ObjectMeta) + hr.updateObjectMeta(primaryHpaClone.ObjectMeta, hpa.ObjectMeta) - _, err = hr.kubeClient.AutoscalingV2beta2().HorizontalPodAutoscalers(cd.Namespace).Update(context.TODO(), hpaClone, metav1.UpdateOptions{}) + _, err = hr.kubeClient.AutoscalingV2beta2().HorizontalPodAutoscalers(cd.Namespace).Update(context.TODO(), primaryHpaClone, metav1.UpdateOptions{}) return err }) if err != nil { @@ -237,19 +237,13 @@ func (hr *HPAReconciler) ResumeTargetScaler(cd *flaggerv1.Canary) error { return nil } -func (hr *HPAReconciler) updateObjectMeta(meta metav1.ObjectMeta) { +func (hr *HPAReconciler) updateObjectMeta(updateMeta, readMeta metav1.ObjectMeta) { // update hpa annotations - meta.Annotations = make(map[string]string) - filteredAnnotations := includeLabelsByPrefix(meta.Annotations, hr.includeLabelPrefix) - for k, v := range filteredAnnotations { - meta.Annotations[k] = v - } + filteredAnnotations := includeLabelsByPrefix(readMeta.Annotations, hr.includeLabelPrefix) + updateMeta.Annotations = filteredAnnotations // update hpa labels - meta.Labels = make(map[string]string) - filteredLabels := includeLabelsByPrefix(meta.Labels, hr.includeLabelPrefix) - for k, v := range filteredLabels { - meta.Labels[k] = v - } + filteredLabels := includeLabelsByPrefix(readMeta.Labels, hr.includeLabelPrefix) + updateMeta.Labels = filteredLabels } type hpaFields struct { diff --git a/pkg/canary/hpa_reconciler_test.go b/pkg/canary/hpa_reconciler_test.go index 171a06c0..2d1fb2a0 100644 --- a/pkg/canary/hpa_reconciler_test.go +++ b/pkg/canary/hpa_reconciler_test.go @@ -59,7 +59,6 @@ func Test_reconcilePrimaryHpaV2(t *testing.T) { primaryHPA, err := mocks.kubeClient.AutoscalingV2().HorizontalPodAutoscalers("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{}) require.NoError(t, err) - assert.Equal(t, primaryHPA.Spec.ScaleTargetRef.Name, "podinfo-primary") assert.Equal(t, int(*primaryHPA.Spec.Metrics[0].Resource.Target.AverageUtilization), 99) hpa.Spec.Metrics[0].Resource.Target = hpav2.MetricTarget{AverageUtilization: int32p(50)} @@ -92,7 +91,6 @@ func Test_reconcilePrimaryHpaV2Beta2(t *testing.T) { primaryHPA, err := mocks.kubeClient.AutoscalingV2beta2().HorizontalPodAutoscalers("default").Get(context.TODO(), "podinfo-primary", metav1.GetOptions{}) require.NoError(t, err) - assert.Equal(t, primaryHPA.Spec.ScaleTargetRef.Name, "podinfo-primary") assert.Equal(t, int(*primaryHPA.Spec.Metrics[0].Resource.Target.AverageUtilization), 99) hpa.Spec.Metrics[0].Resource.Target = hpav2beta2.MetricTarget{AverageUtilization: int32p(50)}