From 4e0069b9097ea19bb5af642893175dd092e64920 Mon Sep 17 00:00:00 2001 From: Chaitanya Bandi Date: Fri, 12 Mar 2021 15:08:31 -0800 Subject: [PATCH] use Patch API to label namespace to avoid conflicts While labeling the namespace using the Update API may result in conflicts as "the object has been modified; please apply your changes to the latest version and try again". Use Patch API to avoid this. Signed-off-by: Chaitanya Bandi --- test/e2e/apimachinery/webhook.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/test/e2e/apimachinery/webhook.go b/test/e2e/apimachinery/webhook.go index 006bb885c96..75dec128837 100644 --- a/test/e2e/apimachinery/webhook.go +++ b/test/e2e/apimachinery/webhook.go @@ -18,6 +18,7 @@ package apimachinery import ( "context" + "encoding/json" "fmt" "reflect" "strings" @@ -2127,13 +2128,13 @@ func labelNamespace(f *framework.Framework, namespace string) { client := f.ClientSet // Add a unique label to the namespace - ns, err := client.CoreV1().Namespaces().Get(context.TODO(), namespace, metav1.GetOptions{}) - framework.ExpectNoError(err, "error getting namespace %s", namespace) - if ns.Labels == nil { - ns.Labels = map[string]string{} - } - ns.Labels[f.UniqueName] = "true" - _, err = client.CoreV1().Namespaces().Update(context.TODO(), ns, metav1.UpdateOptions{}) + nsPatch, err := json.Marshal(map[string]interface{}{ + "metadata": map[string]interface{}{ + "labels": map[string]string{f.UniqueName: "true"}, + }, + }) + framework.ExpectNoError(err, "error marshaling namespace %s", namespace) + _, err = client.CoreV1().Namespaces().Patch(context.TODO(), namespace, types.StrategicMergePatchType, nsPatch, metav1.PatchOptions{}) framework.ExpectNoError(err, "error labeling namespace %s", namespace) }