From 83fe357f3e45423662f461f7cfd66bb18c122d33 Mon Sep 17 00:00:00 2001 From: astraw99 Date: Thu, 20 Jan 2022 10:56:46 +0800 Subject: [PATCH] fix label msg --- .../src/k8s.io/kubectl/pkg/cmd/label/label.go | 8 ++-- .../kubectl/pkg/cmd/label/label_test.go | 37 ++++++++++++++++++- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/label/label.go b/staging/src/k8s.io/kubectl/pkg/cmd/label/label.go index f6fa87e8bcb..007f6284536 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/label/label.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/label/label.go @@ -307,7 +307,7 @@ func (o *LabelOptions) RunLabel() error { if err != nil { return err } - dataChangeMsg = updateDataChangeMsg(oldData, newObj) + dataChangeMsg = updateDataChangeMsg(oldData, newObj, o.overwrite) outputObj = info.Object } else { name, namespace := info.Name, info.Namespace @@ -334,7 +334,7 @@ func (o *LabelOptions) RunLabel() error { if err != nil { return err } - dataChangeMsg = updateDataChangeMsg(oldData, newObj) + dataChangeMsg = updateDataChangeMsg(oldData, newObj, o.overwrite) patchBytes, err := jsonpatch.CreateMergePatch(oldData, newObj) createdPatch := err == nil if err != nil { @@ -395,11 +395,11 @@ func (o *LabelOptions) RunLabel() error { }) } -func updateDataChangeMsg(oldObj []byte, newObj []byte) string { +func updateDataChangeMsg(oldObj []byte, newObj []byte, overwrite bool) string { msg := MsgNotLabeled if !reflect.DeepEqual(oldObj, newObj) { msg = MsgLabeled - if len(newObj) < len(oldObj) { + if !overwrite && len(newObj) < len(oldObj) { msg = MsgUnLabeled } } diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/label/label_test.go b/staging/src/k8s.io/kubectl/pkg/cmd/label/label_test.go index a939e8860d0..cf7526fa44b 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/label/label_test.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/label/label_test.go @@ -678,6 +678,41 @@ func TestLabelMsg(t *testing.T) { }, expectMsg: MsgLabeled, }, + { + obj: &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Labels: map[string]string{"status": "unhealthy"}, + }, + }, + labels: map[string]string{"status": "healthy"}, + overwrite: true, + expectObj: &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Labels: map[string]string{ + "status": "healthy", + }, + }, + }, + expectMsg: MsgLabeled, + }, + { + obj: &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Labels: map[string]string{"status": "unhealthy"}, + }, + }, + labels: map[string]string{"status": "healthy"}, + overwrite: false, + expectObj: &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Labels: map[string]string{ + "status": "unhealthy", + }, + }, + }, + expectMsg: MsgNotLabeled, + expectErr: true, + }, } for _, test := range tests { @@ -700,7 +735,7 @@ func TestLabelMsg(t *testing.T) { t.Errorf("unexpected error: %v %v", err, test) } - dataChangeMsg := updateDataChangeMsg(oldData, newObj) + dataChangeMsg := updateDataChangeMsg(oldData, newObj, test.overwrite) if dataChangeMsg != test.expectMsg { t.Errorf("unexpected dataChangeMsg: %v != %v, %v", dataChangeMsg, test.expectMsg, test) }