Skip to content

Commit 29e4e66

Browse files
authored
Merge pull request kubernetes#90371 from ahg-g/ahg-pinfo
Deprecate scheduler's PodLister interface
2 parents 653396d + 5758564 commit 29e4e66

File tree

5 files changed

+18
-90
lines changed

5 files changed

+18
-90
lines changed

pkg/scheduler/framework/plugins/serviceaffinity/service_affinity.go

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,13 +104,13 @@ func (pl *ServiceAffinity) createPreFilterState(pod *v1.Pod) (*preFilterState, e
104104
return nil, fmt.Errorf("listing pod services: %v", err.Error())
105105
}
106106
selector := createSelectorFromLabels(pod.Labels)
107-
allMatches, err := pl.sharedLister.Pods().List(selector)
108-
if err != nil {
109-
return nil, fmt.Errorf("listing pods: %v", err.Error())
110-
}
111107

112108
// consider only the pods that belong to the same namespace
113-
matchingPodList := filterPodsByNamespace(allMatches, pod.Namespace)
109+
nodeInfos, err := pl.sharedLister.NodeInfos().List()
110+
if err != nil {
111+
return nil, fmt.Errorf("listing nodeInfos: %v", err.Error())
112+
}
113+
matchingPodList := filterPods(nodeInfos, selector, pod.Namespace)
114114

115115
return &preFilterState{
116116
matchingPodList: matchingPodList,
@@ -392,15 +392,21 @@ func createSelectorFromLabels(aL map[string]string) labels.Selector {
392392
return labels.Set(aL).AsSelector()
393393
}
394394

395-
// filterPodsByNamespace filters pods outside a namespace from the given list.
396-
func filterPodsByNamespace(pods []*v1.Pod, ns string) []*v1.Pod {
397-
filtered := []*v1.Pod{}
398-
for _, nsPod := range pods {
399-
if nsPod.Namespace == ns {
400-
filtered = append(filtered, nsPod)
395+
// filterPods filters pods outside a namespace from the given list.
396+
func filterPods(nodeInfos []*framework.NodeInfo, selector labels.Selector, ns string) []*v1.Pod {
397+
maxSize := 0
398+
for _, n := range nodeInfos {
399+
maxSize += len(n.Pods)
400+
}
401+
pods := make([]*v1.Pod, 0, maxSize)
402+
for _, n := range nodeInfos {
403+
for _, p := range n.Pods {
404+
if p.Pod.Namespace == ns && selector.Matches(labels.Set(p.Pod.Labels)) {
405+
pods = append(pods, p.Pod)
406+
}
401407
}
402408
}
403-
return filtered
409+
return pods
404410
}
405411

406412
// findLabelsInSet gets as many key/value pairs as possible out of a label set.

pkg/scheduler/framework/v1alpha1/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ go_library(
2424
"//pkg/scheduler/util:go_default_library",
2525
"//staging/src/k8s.io/api/core/v1:go_default_library",
2626
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
27-
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
2827
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
2928
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
3029
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",

pkg/scheduler/framework/v1alpha1/fake/listers.go

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,31 +30,6 @@ import (
3030
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
3131
)
3232

33-
var _ framework.PodLister = &PodLister{}
34-
35-
// PodLister implements PodLister on an []v1.Pods for test purposes.
36-
type PodLister []*v1.Pod
37-
38-
// List returns []*v1.Pod matching a query.
39-
func (f PodLister) List(s labels.Selector) (selected []*v1.Pod, err error) {
40-
for _, pod := range f {
41-
if s.Matches(labels.Set(pod.Labels)) {
42-
selected = append(selected, pod)
43-
}
44-
}
45-
return selected, nil
46-
}
47-
48-
// FilteredList returns pods matching a pod filter and a label selector.
49-
func (f PodLister) FilteredList(podFilter framework.PodFilter, s labels.Selector) (selected []*v1.Pod, err error) {
50-
for _, pod := range f {
51-
if podFilter(pod) && s.Matches(labels.Set(pod.Labels)) {
52-
selected = append(selected, pod)
53-
}
54-
}
55-
return selected, nil
56-
}
57-
5833
var _ corelisters.ServiceLister = &ServiceLister{}
5934

6035
// ServiceLister implements ServiceLister on []v1.Service for test purposes.

pkg/scheduler/framework/v1alpha1/listers.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,6 @@ limitations under the License.
1616

1717
package v1alpha1
1818

19-
import (
20-
v1 "k8s.io/api/core/v1"
21-
"k8s.io/apimachinery/pkg/labels"
22-
)
23-
24-
// PodFilter is a function to filter a pod. If pod passed return true else return false.
25-
type PodFilter func(*v1.Pod) bool
26-
27-
// PodLister interface represents anything that can list pods for a scheduler.
28-
type PodLister interface {
29-
// Returns the list of pods.
30-
List(labels.Selector) ([]*v1.Pod, error)
31-
// This is similar to "List()", but the returned slice does not
32-
// contain pods that don't pass `podFilter`.
33-
FilteredList(podFilter PodFilter, selector labels.Selector) ([]*v1.Pod, error)
34-
}
35-
3619
// NodeInfoLister interface represents anything that can list/get NodeInfo objects from node name.
3720
type NodeInfoLister interface {
3821
// Returns the list of NodeInfos.
@@ -45,6 +28,5 @@ type NodeInfoLister interface {
4528

4629
// SharedLister groups scheduler-specific listers.
4730
type SharedLister interface {
48-
Pods() PodLister
4931
NodeInfos() NodeInfoLister
5032
}

pkg/scheduler/internal/cache/snapshot.go

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"fmt"
2121

2222
v1 "k8s.io/api/core/v1"
23-
"k8s.io/apimachinery/pkg/labels"
2423
"k8s.io/apimachinery/pkg/util/sets"
2524
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
2625
)
@@ -123,11 +122,6 @@ func createImageExistenceMap(nodes []*v1.Node) map[string]sets.String {
123122
return imageExistenceMap
124123
}
125124

126-
// Pods returns a PodLister
127-
func (s *Snapshot) Pods() framework.PodLister {
128-
return podLister(s.nodeInfoList)
129-
}
130-
131125
// NodeInfos returns a NodeInfoLister.
132126
func (s *Snapshot) NodeInfos() framework.NodeInfoLister {
133127
return s
@@ -138,34 +132,6 @@ func (s *Snapshot) NumNodes() int {
138132
return len(s.nodeInfoList)
139133
}
140134

141-
type podLister []*framework.NodeInfo
142-
143-
// List returns the list of pods in the snapshot.
144-
func (p podLister) List(selector labels.Selector) ([]*v1.Pod, error) {
145-
alwaysTrue := func(*v1.Pod) bool { return true }
146-
return p.FilteredList(alwaysTrue, selector)
147-
}
148-
149-
// FilteredList returns a filtered list of pods in the snapshot.
150-
func (p podLister) FilteredList(filter framework.PodFilter, selector labels.Selector) ([]*v1.Pod, error) {
151-
// podFilter is expected to return true for most or all of the pods. We
152-
// can avoid expensive array growth without wasting too much memory by
153-
// pre-allocating capacity.
154-
maxSize := 0
155-
for _, n := range p {
156-
maxSize += len(n.Pods)
157-
}
158-
pods := make([]*v1.Pod, 0, maxSize)
159-
for _, n := range p {
160-
for _, p := range n.Pods {
161-
if filter(p.Pod) && selector.Matches(labels.Set(p.Pod.Labels)) {
162-
pods = append(pods, p.Pod)
163-
}
164-
}
165-
}
166-
return pods, nil
167-
}
168-
169135
// List returns the list of nodes in the snapshot.
170136
func (s *Snapshot) List() ([]*framework.NodeInfo, error) {
171137
return s.nodeInfoList, nil

0 commit comments

Comments
 (0)