From 7dde3f3958f84413da5d306850cc4aa880fac512 Mon Sep 17 00:00:00 2001 From: Andras Spitzer Date: Wed, 29 May 2019 08:06:46 +0100 Subject: [PATCH] =?UTF-8?q?Fix=20for=20#2842,=20instead=20of=20returning?= =?UTF-8?q?=20the=20first=20Pod,=20return=20the=20one=20whi=E2=80=A6=20(#2?= =?UTF-8?q?846)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix for #2842, instead of returning the first Pod, return the one which is Running * a more memory efficient version of the fix, string -> bool * fix with no extra fields in struct, return nil at Pod conversion if Pod is not Running * let Kuberneretes filter for Running Pods using FieldSelector * filter for Pods that are Running and Pending (implicit) --- plugin/kubernetes/controller.go | 4 ++++ plugin/kubernetes/watch.go | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/plugin/kubernetes/controller.go b/plugin/kubernetes/controller.go index 6124a19cb..634735584 100644 --- a/plugin/kubernetes/controller.go +++ b/plugin/kubernetes/controller.go @@ -214,6 +214,10 @@ func podListFunc(c kubernetes.Interface, ns string, s labels.Selector) func(meta if s != nil { opts.LabelSelector = s.String() } + if len(opts.FieldSelector) > 0 { + opts.FieldSelector = opts.FieldSelector + "," + } + opts.FieldSelector = opts.FieldSelector + "status.phase!=Succeeded,status.phase!=Failed,status.phase!=Unknown" listV1, err := c.CoreV1().Pods(ns).List(opts) return listV1, err } diff --git a/plugin/kubernetes/watch.go b/plugin/kubernetes/watch.go index 52529a6b0..fd6e68c8c 100644 --- a/plugin/kubernetes/watch.go +++ b/plugin/kubernetes/watch.go @@ -22,6 +22,10 @@ func podWatchFunc(c kubernetes.Interface, ns string, s labels.Selector) func(opt if s != nil { options.LabelSelector = s.String() } + if len(options.FieldSelector) > 0 { + options.FieldSelector = options.FieldSelector + "," + } + options.FieldSelector = options.FieldSelector + "status.phase!=Succeeded,status.phase!=Failed,status.phase!=Unknown" w, err := c.CoreV1().Pods(ns).Watch(options) return w, err }