Merge pull request #1215 from aryan9600/scaler-reconciler

Fix primary HPA label reconciliation
This commit is contained in:
Stefan Prodan
2022-06-09 19:04:12 +03:00
committed by GitHub
2 changed files with 19 additions and 27 deletions

View File

@@ -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 {

View File

@@ -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)}