From 3cbd8e2132571f328480ec4b8f75648e0fc98fc8 Mon Sep 17 00:00:00 2001 From: hangaoshuai Date: Wed, 7 Feb 2018 19:09:05 +0800 Subject: [PATCH] fix todo: use selector.DeepCopy replace of hard code --- .../apimachinery/pkg/apis/meta/v1/labels.go | 28 +++---------------- .../pkg/apis/meta/v1/labels_test.go | 7 +++-- 2 files changed, 9 insertions(+), 26 deletions(-) diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go index 8b4c0423e68..9b45145da66 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go +++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/labels.go @@ -25,34 +25,14 @@ func CloneSelectorAndAddLabel(selector *LabelSelector, labelKey, labelValue stri } // Clone. - newSelector := new(LabelSelector) + newSelector := selector.DeepCopy() - // TODO(madhusudancs): Check if you can use deepCopy_extensions_LabelSelector here. - newSelector.MatchLabels = make(map[string]string) - if selector.MatchLabels != nil { - for key, val := range selector.MatchLabels { - newSelector.MatchLabels[key] = val - } + if newSelector.MatchLabels == nil { + newSelector.MatchLabels = make(map[string]string) } + newSelector.MatchLabels[labelKey] = labelValue - if selector.MatchExpressions != nil { - newMExps := make([]LabelSelectorRequirement, len(selector.MatchExpressions)) - for i, me := range selector.MatchExpressions { - newMExps[i].Key = me.Key - newMExps[i].Operator = me.Operator - if me.Values != nil { - newMExps[i].Values = make([]string, len(me.Values)) - copy(newMExps[i].Values, me.Values) - } else { - newMExps[i].Values = nil - } - } - newSelector.MatchExpressions = newMExps - } else { - newSelector.MatchExpressions = nil - } - return newSelector } diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/labels_test.go b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/labels_test.go index b1bccad4074..918b1a294c6 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/labels_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/labels_test.go @@ -27,6 +27,9 @@ func TestCloneSelectorAndAddLabel(t *testing.T) { "foo2": "bar2", "foo3": "bar3", } + matchExpressions := []LabelSelectorRequirement{ + {Key: "foo", Operator: LabelSelectorOpIn, Values: []string{"foo"}}, + } cases := []struct { labels map[string]string @@ -60,8 +63,8 @@ func TestCloneSelectorAndAddLabel(t *testing.T) { } for _, tc := range cases { - ls_in := LabelSelector{MatchLabels: tc.labels} - ls_out := LabelSelector{MatchLabels: tc.want} + ls_in := LabelSelector{MatchLabels: tc.labels, MatchExpressions: matchExpressions} + ls_out := LabelSelector{MatchLabels: tc.want, MatchExpressions: matchExpressions} got := CloneSelectorAndAddLabel(&ls_in, tc.labelKey, tc.labelValue) if !reflect.DeepEqual(got, &ls_out) {