From 45eda934c15e2be1796787be50b1b35629441c91 Mon Sep 17 00:00:00 2001 From: present007 Date: Wed, 18 May 2016 17:47:28 +0800 Subject: [PATCH] =?UTF-8?q?Add=20extenders=20information=20to=20=E2=80=9Cf?= =?UTF-8?q?ailedPredicateMap=E2=80=9D=20in=20findNodesThatFit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When all the filtered nodes that passed "predicateFuncs" don’t pass the extenders filter, the failedPredicateMap hasn’t the extenders information, should add it, I think. So when the length of the “filteredNodes.Items” is 0, we can know the integral information. (The length of the “filteredNodes.Items” is 0, may be because the extenders filter failed.) --- plugin/pkg/scheduler/generic_scheduler.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/plugin/pkg/scheduler/generic_scheduler.go b/plugin/pkg/scheduler/generic_scheduler.go index 8020b9eaa26a6..0c09766d2a244 100644 --- a/plugin/pkg/scheduler/generic_scheduler.go +++ b/plugin/pkg/scheduler/generic_scheduler.go @@ -169,6 +169,23 @@ func findNodesThatFit(pod *api.Pod, nodeNameToInfo map[string]*schedulercache.No if err != nil { return api.NodeList{}, FailedPredicateMap{}, err } + //add the extender failed info to failedPredicateMap + for _, filteredNode := range filtered { + nodeIn := false + for _, exNode := range filteredList.Items { + if filteredNode.Name == exNode.Name { + nodeIn = true + break + } + } + if !nodeIn { + if re, ok := extender.(*HTTPExtender); ok { + failedPredicateMap[filteredNode.Name] = re.extenderURL + ", " + re.filterVerb + } else { + failedPredicateMap[filteredNode.Name] = "extender failed" + } + } + } filtered = filteredList.Items if len(filtered) == 0 { break