@@ -32,11 +32,9 @@ import (
32
32
listerv1 "k8s.io/client-go/listers/core/v1"
33
33
"k8s.io/klog/v2"
34
34
"k8s.io/kubernetes/pkg/scheduler/framework"
35
+ "sigs.k8s.io/controller-runtime/pkg/client"
35
36
36
37
"sigs.k8s.io/scheduler-plugins/apis/scheduling/v1alpha1"
37
- pgclientset "sigs.k8s.io/scheduler-plugins/pkg/generated/clientset/versioned"
38
- pginformer "sigs.k8s.io/scheduler-plugins/pkg/generated/informers/externalversions/scheduling/v1alpha1"
39
- pglister "sigs.k8s.io/scheduler-plugins/pkg/generated/listers/scheduling/v1alpha1"
40
38
"sigs.k8s.io/scheduler-plugins/pkg/util"
41
39
)
42
40
@@ -66,8 +64,8 @@ type Manager interface {
66
64
67
65
// PodGroupManager defines the scheduling operation called
68
66
type PodGroupManager struct {
69
- // pgClient is a podGroup client
70
- pgClient pgclientset. Interface
67
+ // client is a generic controller-runtime client to manipulate both core resources and PodGroups.
68
+ client client. Client
71
69
// snapshotSharedLister is pod shared list
72
70
snapshotSharedLister framework.SharedLister
73
71
// scheduleTimeout is the default timeout for podgroup scheduling.
@@ -77,21 +75,17 @@ type PodGroupManager struct {
77
75
permittedPG * gochache.Cache
78
76
// backedOffPG stores the podgorup name which failed scheudling recently.
79
77
backedOffPG * gochache.Cache
80
- // pgLister is podgroup lister
81
- pgLister pglister.PodGroupLister
82
78
// podLister is pod lister
83
79
podLister listerv1.PodLister
84
80
sync.RWMutex
85
81
}
86
82
87
83
// NewPodGroupManager creates a new operation object.
88
- func NewPodGroupManager (pgClient pgclientset.Interface , snapshotSharedLister framework.SharedLister , scheduleTimeout * time.Duration ,
89
- pgInformer pginformer.PodGroupInformer , podInformer informerv1.PodInformer ) * PodGroupManager {
84
+ func NewPodGroupManager (client client.Client , snapshotSharedLister framework.SharedLister , scheduleTimeout * time.Duration , podInformer informerv1.PodInformer ) * PodGroupManager {
90
85
pgMgr := & PodGroupManager {
91
- pgClient : pgClient ,
86
+ client : client ,
92
87
snapshotSharedLister : snapshotSharedLister ,
93
88
scheduleTimeout : scheduleTimeout ,
94
- pgLister : pgInformer .Lister (),
95
89
podLister : podInformer .Lister (),
96
90
permittedPG : gochache .New (3 * time .Second , 3 * time .Second ),
97
91
backedOffPG : gochache .New (10 * time .Second , 10 * time .Second ),
@@ -224,8 +218,8 @@ func (pgMgr *PodGroupManager) GetCreationTimestamp(pod *corev1.Pod, ts time.Time
224
218
if len (pgName ) == 0 {
225
219
return ts
226
220
}
227
- pg , err := pgMgr . pgLister . PodGroups ( pod . Namespace ). Get ( pgName )
228
- if err != nil {
221
+ var pg v1alpha1. PodGroup
222
+ if err := pgMgr . client . Get ( context . TODO (), types. NamespacedName { Namespace : pod . Namespace , Name : pgName }, & pg ); err != nil {
229
223
return ts
230
224
}
231
225
return pg .CreationTimestamp .Time
@@ -236,27 +230,17 @@ func (pgMgr *PodGroupManager) DeletePermittedPodGroup(pgFullName string) {
236
230
pgMgr .permittedPG .Delete (pgFullName )
237
231
}
238
232
239
- // PatchPodGroup patches a podGroup.
240
- func (pgMgr * PodGroupManager ) PatchPodGroup (pgName string , namespace string , patch []byte ) error {
241
- if len (patch ) == 0 {
242
- return nil
243
- }
244
- _ , err := pgMgr .pgClient .SchedulingV1alpha1 ().PodGroups (namespace ).Patch (context .TODO (), pgName ,
245
- types .MergePatchType , patch , metav1.PatchOptions {})
246
- return err
247
- }
248
-
249
233
// GetPodGroup returns the PodGroup that a Pod belongs to in cache.
250
234
func (pgMgr * PodGroupManager ) GetPodGroup (pod * corev1.Pod ) (string , * v1alpha1.PodGroup ) {
251
235
pgName := util .GetPodGroupLabel (pod )
252
236
if len (pgName ) == 0 {
253
237
return "" , nil
254
238
}
255
- pg , err := pgMgr . pgLister . PodGroups ( pod . Namespace ). Get ( pgName )
256
- if err != nil {
239
+ var pg v1alpha1. PodGroup
240
+ if err := pgMgr . client . Get ( context . Background (), types. NamespacedName { Namespace : pod . Namespace , Name : pgName }, & pg ); err != nil {
257
241
return fmt .Sprintf ("%v/%v" , pod .Namespace , pgName ), nil
258
242
}
259
- return fmt .Sprintf ("%v/%v" , pod .Namespace , pgName ), pg
243
+ return fmt .Sprintf ("%v/%v" , pod .Namespace , pgName ), & pg
260
244
}
261
245
262
246
// CalculateAssignedPods returns the number of pods that has been assigned nodes: assumed or bound.
0 commit comments