From 93be90da9adcff4572aac19e71e7422b2a2d2e86 Mon Sep 17 00:00:00 2001 From: Chaitanya Bandi Date: Mon, 15 Mar 2021 14:14:46 -0700 Subject: [PATCH] use Patch API to add namespace annotations While adding annotations to 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/apps/daemon_set.go | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/test/e2e/apps/daemon_set.go b/test/e2e/apps/daemon_set.go index db23bc1efd7..4c32a9590ca 100644 --- a/test/e2e/apps/daemon_set.go +++ b/test/e2e/apps/daemon_set.go @@ -19,6 +19,7 @@ package apps import ( "bytes" "context" + "encoding/json" "fmt" "math/rand" "reflect" @@ -137,7 +138,7 @@ var _ = SIGDescribe("Daemon set [Serial]", func() { c = f.ClientSet - updatedNS, err := updateNamespaceAnnotations(c, ns) + updatedNS, err := patchNamespaceAnnotations(c, ns) framework.ExpectNoError(err) ns = updatedNS.Name @@ -884,24 +885,24 @@ func clearDaemonSetNodeLabels(c clientset.Interface) error { return nil } -// updateNamespaceAnnotations sets node selectors related annotations on tests namespaces to empty -func updateNamespaceAnnotations(c clientset.Interface, nsName string) (*v1.Namespace, error) { +// patchNamespaceAnnotations sets node selectors related annotations on tests namespaces to empty +func patchNamespaceAnnotations(c clientset.Interface, nsName string) (*v1.Namespace, error) { nsClient := c.CoreV1().Namespaces() - ns, err := nsClient.Get(context.TODO(), nsName, metav1.GetOptions{}) + annotations := make(map[string]string) + for _, n := range NamespaceNodeSelectors { + annotations[n] = "" + } + nsPatch, err := json.Marshal(map[string]interface{}{ + "metadata": map[string]interface{}{ + "annotations": annotations, + }, + }) if err != nil { return nil, err } - if ns.Annotations == nil { - ns.Annotations = make(map[string]string) - } - - for _, n := range NamespaceNodeSelectors { - ns.Annotations[n] = "" - } - - return nsClient.Update(context.TODO(), ns, metav1.UpdateOptions{}) + return nsClient.Patch(context.TODO(), nsName, types.StrategicMergePatchType, nsPatch, metav1.PatchOptions{}) } func setDaemonSetNodeLabels(c clientset.Interface, nodeName string, labels map[string]string) (*v1.Node, error) {