From cbcee163721c5e76b3ccb5bd3c9ac8f0022f1ab4 Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Sun, 9 Sep 2018 20:02:17 -0400 Subject: [PATCH] Call c.ClientSet() just once in the Update callstack Signed-off-by: Mathieu Benoit --- pkg/kube/client.go | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 000d65f1a..829f28db4 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -86,11 +86,11 @@ type ResourceActorFunc func(*resource.Info) error // // Namespace will set the namespace. func (c *Client) Create(namespace string, reader io.Reader, timeout int64, shouldWait bool) error { - client, err := c.ClientSet() + clientset, err := c.ClientSet() if err != nil { return err } - if err := ensureNamespace(client, namespace); err != nil { + if err := ensureNamespace(clientset, namespace); err != nil { return err } c.Log("building resources from manifest") @@ -235,14 +235,12 @@ func (c *Client) Get(namespace string, reader io.Reader) (string, error) { // // Namespace will set the namespaces. func (c *Client) Update(namespace string, originalReader, targetReader io.Reader, force bool, recreate bool, timeout int64, shouldWait bool) error { - if namespace != "" { - client, err := c.ClientSet() - if err != nil { - return err - } - if err := ensureNamespace(client, namespace); err != nil { - return err - } + clientset, err := c.ClientSet() + if err != nil { + return err + } + if namespace != "" && err := ensureNamespace(clientset, namespace); err != nil { + return err } original, err := c.BuildUnstructured(namespace, originalReader) @@ -286,7 +284,7 @@ func (c *Client) Update(namespace string, originalReader, targetReader io.Reader return fmt.Errorf("no %s with the name %q found", kind, info.Name) } - if err := updateResource(c, info, originalInfo.Object, force, recreate); err != nil { + if err := updateResource(c, clientset, info, originalInfo.Object, force, recreate); err != nil { c.Log("error updating the resource %q:\n\t %v", info.Name, err) updateErrors = append(updateErrors, err.Error()) } @@ -432,7 +430,7 @@ func createPatch(target *resource.Info, current runtime.Object) ([]byte, types.P } } -func updateResource(c *Client, target *resource.Info, currentObj runtime.Object, force bool, recreate bool) error { +func updateResource(c *Client, clientset internalclientset.Interface, target *resource.Info, currentObj runtime.Object, force bool, recreate bool) error { patch, patchType, err := createPatch(target, currentObj) if err != nil { return fmt.Errorf("failed to create patch: %s", err) @@ -489,12 +487,7 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object, return nil } - client, err := c.ClientSet() - if err != nil { - return err - } - - pods, err := client.Core().Pods(target.Namespace).List(metav1.ListOptions{ + pods, err := clientset.Core().Pods(target.Namespace).List(metav1.ListOptions{ FieldSelector: fields.Everything().String(), LabelSelector: labels.Set(selector).AsSelector().String(), }) @@ -507,7 +500,7 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object, c.Log("Restarting pod: %v/%v", pod.Namespace, pod.Name) // Delete each pod for get them restarted with changed spec. - if err := client.Core().Pods(pod.Namespace).Delete(pod.Name, metav1.NewPreconditionDeleteOptions(string(pod.UID))); err != nil { + if err := clientset.Core().Pods(pod.Namespace).Delete(pod.Name, metav1.NewPreconditionDeleteOptions(string(pod.UID))); err != nil { return err } } @@ -701,9 +694,9 @@ func (c *Client) getSelectRelationPod(info *resource.Info, objPods map[string][] return objPods, nil } - client, _ := c.ClientSet() + clientset, _ := c.ClientSet() - pods, err := client.Core().Pods(info.Namespace).List(metav1.ListOptions{ + pods, err := clientset.Core().Pods(info.Namespace).List(metav1.ListOptions{ FieldSelector: fields.Everything().String(), LabelSelector: labels.Set(selector).AsSelector().String(), })