@@ -23,14 +23,20 @@ import (
23
23
v1 "k8s.io/api/core/v1"
24
24
"k8s.io/apimachinery/pkg/labels"
25
25
"k8s.io/apimachinery/pkg/runtime"
26
+ appslisters "k8s.io/client-go/listers/apps/v1"
27
+ corelisters "k8s.io/client-go/listers/core/v1"
26
28
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper"
27
29
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
28
30
utilnode "k8s.io/kubernetes/pkg/util/node"
29
31
)
30
32
31
33
// SelectorSpread is a plugin that calculates selector spread priority.
32
34
type SelectorSpread struct {
33
- handle framework.FrameworkHandle
35
+ sharedLister framework.SharedLister
36
+ services corelisters.ServiceLister
37
+ replicationControllers corelisters.ReplicationControllerLister
38
+ replicaSets appslisters.ReplicaSetLister
39
+ statefulSets appslisters.StatefulSetLister
34
40
}
35
41
36
42
var _ framework.PreScorePlugin = & SelectorSpread {}
@@ -88,7 +94,7 @@ func (pl *SelectorSpread) Score(ctx context.Context, state *framework.CycleState
88
94
return 0 , framework .NewStatus (framework .Error , fmt .Sprintf ("%+v convert to tainttoleration.preScoreState error" , c ))
89
95
}
90
96
91
- nodeInfo , err := pl .handle . SnapshotSharedLister () .NodeInfos ().Get (nodeName )
97
+ nodeInfo , err := pl .sharedLister .NodeInfos ().Get (nodeName )
92
98
if err != nil {
93
99
return 0 , framework .NewStatus (framework .Error , fmt .Sprintf ("getting node %q from Snapshot: %v" , nodeName , err ))
94
100
}
@@ -115,7 +121,7 @@ func (pl *SelectorSpread) NormalizeScore(ctx context.Context, state *framework.C
115
121
if scores [i ].Score > maxCountByNodeName {
116
122
maxCountByNodeName = scores [i ].Score
117
123
}
118
- nodeInfo , err := pl .handle . SnapshotSharedLister () .NodeInfos ().Get (scores [i ].Name )
124
+ nodeInfo , err := pl .sharedLister .NodeInfos ().Get (scores [i ].Name )
119
125
if err != nil {
120
126
return framework .NewStatus (framework .Error , fmt .Sprintf ("getting node %q from Snapshot: %v" , scores [i ].Name , err ))
121
127
}
@@ -146,7 +152,7 @@ func (pl *SelectorSpread) NormalizeScore(ctx context.Context, state *framework.C
146
152
}
147
153
// If there is zone information present, incorporate it
148
154
if haveZones {
149
- nodeInfo , err := pl .handle . SnapshotSharedLister () .NodeInfos ().Get (scores [i ].Name )
155
+ nodeInfo , err := pl .sharedLister .NodeInfos ().Get (scores [i ].Name )
150
156
if err != nil {
151
157
return framework .NewStatus (framework .Error , fmt .Sprintf ("getting node %q from Snapshot: %v" , scores [i ].Name , err ))
152
158
}
@@ -176,13 +182,12 @@ func (pl *SelectorSpread) PreScore(ctx context.Context, cycleState *framework.Cy
176
182
return nil
177
183
}
178
184
var selector labels.Selector
179
- informerFactory := pl .handle .SharedInformerFactory ()
180
185
selector = helper .DefaultSelector (
181
186
pod ,
182
- informerFactory . Core (). V1 (). Services (). Lister () ,
183
- informerFactory . Core (). V1 (). ReplicationControllers (). Lister () ,
184
- informerFactory . Apps (). V1 (). ReplicaSets (). Lister () ,
185
- informerFactory . Apps (). V1 (). StatefulSets (). Lister () ,
187
+ pl . services ,
188
+ pl . replicationControllers ,
189
+ pl . replicaSets ,
190
+ pl . statefulSets ,
186
191
)
187
192
state := & preScoreState {
188
193
selector : selector ,
@@ -193,8 +198,20 @@ func (pl *SelectorSpread) PreScore(ctx context.Context, cycleState *framework.Cy
193
198
194
199
// New initializes a new plugin and returns it.
195
200
func New (_ runtime.Object , handle framework.FrameworkHandle ) (framework.Plugin , error ) {
201
+ sharedLister := handle .SnapshotSharedLister ()
202
+ if sharedLister == nil {
203
+ return nil , fmt .Errorf ("SnapshotSharedLister is nil" )
204
+ }
205
+ sharedInformerFactory := handle .SharedInformerFactory ()
206
+ if sharedInformerFactory == nil {
207
+ return nil , fmt .Errorf ("SharedInformerFactory is nil" )
208
+ }
196
209
return & SelectorSpread {
197
- handle : handle ,
210
+ sharedLister : sharedLister ,
211
+ services : sharedInformerFactory .Core ().V1 ().Services ().Lister (),
212
+ replicationControllers : sharedInformerFactory .Core ().V1 ().ReplicationControllers ().Lister (),
213
+ replicaSets : sharedInformerFactory .Apps ().V1 ().ReplicaSets ().Lister (),
214
+ statefulSets : sharedInformerFactory .Apps ().V1 ().StatefulSets ().Lister (),
198
215
}, nil
199
216
}
200
217
0 commit comments