Skip to content

Commit 2242c3f

Browse files
committed
refactor coscheduling to use controller-runtime client
1 parent 5eb736d commit 2242c3f

File tree

8 files changed

+787
-482
lines changed

8 files changed

+787
-482
lines changed

pkg/coscheduling/core/core.go

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,9 @@ import (
3232
listerv1 "k8s.io/client-go/listers/core/v1"
3333
"k8s.io/klog/v2"
3434
"k8s.io/kubernetes/pkg/scheduler/framework"
35+
"sigs.k8s.io/controller-runtime/pkg/client"
3536

3637
"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"
4038
"sigs.k8s.io/scheduler-plugins/pkg/util"
4139
)
4240

@@ -66,8 +64,8 @@ type Manager interface {
6664

6765
// PodGroupManager defines the scheduling operation called
6866
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
7169
// snapshotSharedLister is pod shared list
7270
snapshotSharedLister framework.SharedLister
7371
// scheduleTimeout is the default timeout for podgroup scheduling.
@@ -77,21 +75,17 @@ type PodGroupManager struct {
7775
permittedPG *gochache.Cache
7876
// backedOffPG stores the podgorup name which failed scheudling recently.
7977
backedOffPG *gochache.Cache
80-
// pgLister is podgroup lister
81-
pgLister pglister.PodGroupLister
8278
// podLister is pod lister
8379
podLister listerv1.PodLister
8480
sync.RWMutex
8581
}
8682

8783
// 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 {
9085
pgMgr := &PodGroupManager{
91-
pgClient: pgClient,
86+
client: client,
9287
snapshotSharedLister: snapshotSharedLister,
9388
scheduleTimeout: scheduleTimeout,
94-
pgLister: pgInformer.Lister(),
9589
podLister: podInformer.Lister(),
9690
permittedPG: gochache.New(3*time.Second, 3*time.Second),
9791
backedOffPG: gochache.New(10*time.Second, 10*time.Second),
@@ -224,8 +218,8 @@ func (pgMgr *PodGroupManager) GetCreationTimestamp(pod *corev1.Pod, ts time.Time
224218
if len(pgName) == 0 {
225219
return ts
226220
}
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 {
229223
return ts
230224
}
231225
return pg.CreationTimestamp.Time
@@ -236,27 +230,17 @@ func (pgMgr *PodGroupManager) DeletePermittedPodGroup(pgFullName string) {
236230
pgMgr.permittedPG.Delete(pgFullName)
237231
}
238232

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-
249233
// GetPodGroup returns the PodGroup that a Pod belongs to in cache.
250234
func (pgMgr *PodGroupManager) GetPodGroup(pod *corev1.Pod) (string, *v1alpha1.PodGroup) {
251235
pgName := util.GetPodGroupLabel(pod)
252236
if len(pgName) == 0 {
253237
return "", nil
254238
}
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 {
257241
return fmt.Sprintf("%v/%v", pod.Namespace, pgName), nil
258242
}
259-
return fmt.Sprintf("%v/%v", pod.Namespace, pgName), pg
243+
return fmt.Sprintf("%v/%v", pod.Namespace, pgName), &pg
260244
}
261245

262246
// CalculateAssignedPods returns the number of pods that has been assigned nodes: assumed or bound.

0 commit comments

Comments
 (0)