From 43ebd00b66771850df7af5cc096089c36ce841c0 Mon Sep 17 00:00:00 2001 From: dom4ha Date: Fri, 24 Apr 2026 10:40:25 +0000 Subject: [PATCH] Migrate internal references from v1alpha2 to v1alpha3 in scheduler and admission plugins --- pkg/scheduler/eventhandlers.go | 2 +- pkg/scheduler/eventhandlers_test.go | 2 +- pkg/scheduler/framework/interface.go | 4 +- .../defaultpreemption/default_preemption.go | 4 +- .../default_preemption_test.go | 8 +- .../plugins/dynamicresources/dra_manager.go | 4 +- .../dynamicresources/dynamicresources.go | 2 +- .../dynamicresources/dynamicresources_test.go | 4 +- .../plugins/gangscheduling/gangscheduling.go | 4 +- .../gangscheduling/gangscheduling_test.go | 4 +- .../topologyaware/topology_placement.go | 6 +- .../topologyaware/topology_placement_test.go | 4 +- .../framework/preemption/executor.go | 2 +- .../framework/preemption/executor_test.go | 2 +- .../preemption/podgrouppreemption.go | 4 +- .../preemption/podgrouppreemption_test.go | 2 +- pkg/scheduler/framework/preemption/types.go | 2 +- .../framework/preemption/types_test.go | 2 +- .../framework/runtime/framework_test.go | 2 +- pkg/scheduler/schedule_one_podgroup.go | 2 +- pkg/scheduler/schedule_one_podgroup_test.go | 90 +++++++++---------- pkg/scheduler/schedule_one_test.go | 6 +- pkg/scheduler/scheduler.go | 4 +- pkg/scheduler/testing/wrappers.go | 2 +- pkg/scheduler/util/utils.go | 18 ++-- pkg/scheduler/util/utils_test.go | 48 +++++----- plugin/pkg/admission/job/admission.go | 6 +- plugin/pkg/admission/job/admission_test.go | 54 +++++------ 28 files changed, 147 insertions(+), 147 deletions(-) diff --git a/pkg/scheduler/eventhandlers.go b/pkg/scheduler/eventhandlers.go index affa23d4cc0..d1c730d9126 100644 --- a/pkg/scheduler/eventhandlers.go +++ b/pkg/scheduler/eventhandlers.go @@ -623,7 +623,7 @@ func addAllEventHandlers( handlers = append(handlers, handlerRegistration) case fwk.PodGroup: if utilfeature.DefaultFeatureGate.Enabled(features.GenericWorkload) { - if handlerRegistration, err = informerFactory.Scheduling().V1alpha2().PodGroups().Informer().AddEventHandler( + if handlerRegistration, err = informerFactory.Scheduling().V1alpha3().PodGroups().Informer().AddEventHandler( buildEvtResHandler(at, fwk.PodGroup), ); err != nil { return err diff --git a/pkg/scheduler/eventhandlers_test.go b/pkg/scheduler/eventhandlers_test.go index cfed7955f0b..303811c0b4b 100644 --- a/pkg/scheduler/eventhandlers_test.go +++ b/pkg/scheduler/eventhandlers_test.go @@ -29,7 +29,7 @@ import ( v1 "k8s.io/api/core/v1" resourceapi "k8s.io/api/resource/v1" resourcebetaapi "k8s.io/api/resource/v1beta2" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" storagev1 "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/runtime" diff --git a/pkg/scheduler/framework/interface.go b/pkg/scheduler/framework/interface.go index c5fd165ae57..3f8218e42dc 100644 --- a/pkg/scheduler/framework/interface.go +++ b/pkg/scheduler/framework/interface.go @@ -24,7 +24,7 @@ import ( "time" v1 "k8s.io/api/core/v1" - "k8s.io/api/scheduling/v1alpha2" + "k8s.io/api/scheduling/v1alpha3" "k8s.io/apimachinery/pkg/util/sets" fwk "k8s.io/kube-scheduler/framework" "k8s.io/kubernetes/pkg/scheduler/apis/config" @@ -172,7 +172,7 @@ type PodGroupPostFilterPlugin interface { fwk.Plugin // PodGroupPostFilter is called after a PodGroup cannot be scheduled. - PodGroupPostFilter(ctx context.Context, pg *v1alpha2.PodGroup, pods []*v1.Pod, pgSchedulingFunc PodGroupSchedulingFunc) *fwk.Status + PodGroupPostFilter(ctx context.Context, pg *v1alpha3.PodGroup, pods []*v1.Pod, pgSchedulingFunc PodGroupSchedulingFunc) *fwk.Status } // Framework manages the set of plugins in use by the scheduling framework. diff --git a/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption.go b/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption.go index a4cb5cd3d14..d1bfadf1a33 100644 --- a/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption.go +++ b/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption.go @@ -24,7 +24,7 @@ import ( v1 "k8s.io/api/core/v1" policy "k8s.io/api/policy/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" @@ -114,7 +114,7 @@ func New(_ context.Context, dpArgs runtime.Object, fh fwk.Handle, fts feature.Fe pl.Evaluator = preemption.NewEvaluator(Name, fh, &pl, pl.Executor) if pl.fts.EnableWorkloadAwarePreemption || pl.fts.EnableTopologyAwareWorkloadScheduling { - pl.pgLister = fh.SharedInformerFactory().Scheduling().V1alpha2().PodGroups().Lister() + pl.pgLister = fh.SharedInformerFactory().Scheduling().V1alpha3().PodGroups().Lister() } if pl.fts.EnableWorkloadAwarePreemption { pl.podGroupEvaluator = preemption.NewPodGroupEvaluator(fh, pl.Executor) diff --git a/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go b/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go index d813037a510..331177a4d6a 100644 --- a/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go +++ b/pkg/scheduler/framework/plugins/defaultpreemption/default_preemption_test.go @@ -34,7 +34,7 @@ import ( v1 "k8s.io/api/core/v1" policy "k8s.io/api/policy/v1" - "k8s.io/api/scheduling/v1alpha2" + "k8s.io/api/scheduling/v1alpha3" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/util/sets" @@ -529,7 +529,7 @@ func TestPostFilter(t *testing.T) { t.Fatal(err) } } - pgInformer := informerFactory.Scheduling().V1alpha2().PodGroups().Informer() + pgInformer := informerFactory.Scheduling().V1alpha3().PodGroups().Informer() for i := range tt.podGroups { if err := pgInformer.GetStore().Add(tt.podGroups[i]); err != nil { t.Fatal(err) @@ -2578,7 +2578,7 @@ func TestPreEnqueue(t *testing.T) { t.Fatal(err) } } - pgInformer := informerFactory.Scheduling().V1alpha2().PodGroups().Informer() + pgInformer := informerFactory.Scheduling().V1alpha3().PodGroups().Informer() for i := range tt.pgs { if err := pgInformer.GetStore().Add(tt.pgs[i]); err != nil { t.Fatal(err) @@ -2632,7 +2632,7 @@ func TestPreEnqueue(t *testing.T) { // Trigger preemption. Given custom PreemptPod implementation, the async preemption will not finish until // finishPreemption is closed. if tt.features.EnableWorkloadAwarePreemption && tt.podToTriggerPreemption.Spec.SchedulingGroup != nil { - pg, err := informerFactory.Scheduling().V1alpha2().PodGroups().Lister().PodGroups(tt.podToTriggerPreemption.Namespace).Get(*tt.podToTriggerPreemption.Spec.SchedulingGroup.PodGroupName) + pg, err := informerFactory.Scheduling().V1alpha3().PodGroups().Lister().PodGroups(tt.podToTriggerPreemption.Namespace).Get(*tt.podToTriggerPreemption.Spec.SchedulingGroup.PodGroupName) if err != nil { t.Fatalf("could not find pg: %v", err) } diff --git a/pkg/scheduler/framework/plugins/dynamicresources/dra_manager.go b/pkg/scheduler/framework/plugins/dynamicresources/dra_manager.go index a1703319f6c..14b0f1187b6 100644 --- a/pkg/scheduler/framework/plugins/dynamicresources/dra_manager.go +++ b/pkg/scheduler/framework/plugins/dynamicresources/dra_manager.go @@ -27,7 +27,7 @@ import ( "github.com/go-logr/logr" resourceapi "k8s.io/api/resource/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/types" @@ -78,7 +78,7 @@ func NewDRAManager(ctx context.Context, claimsCache *assumecache.AssumeCache, re pgLister := &podGroupLister{} if utilfeature.DefaultFeatureGate.Enabled(features.DRAWorkloadResourceClaims) { - pgLister.podGroupLister = informerFactory.Scheduling().V1alpha2().PodGroups().Lister() + pgLister.podGroupLister = informerFactory.Scheduling().V1alpha3().PodGroups().Lister() } manager.podGroupLister = pgLister diff --git a/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources.go b/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources.go index 9761971338c..c04830b643b 100644 --- a/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources.go +++ b/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources.go @@ -28,7 +28,7 @@ import ( v1 "k8s.io/api/core/v1" resourceapi "k8s.io/api/resource/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" apiequality "k8s.io/apimachinery/pkg/api/equality" apierrors "k8s.io/apimachinery/pkg/api/errors" apimeta "k8s.io/apimachinery/pkg/api/meta" diff --git a/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources_test.go b/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources_test.go index b6a3e608d20..a987b54dfed 100644 --- a/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources_test.go +++ b/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources_test.go @@ -36,7 +36,7 @@ import ( "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" resourceapi "k8s.io/api/resource/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" apierrors "k8s.io/apimachinery/pkg/api/errors" apiresource "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -4030,7 +4030,7 @@ func setup(tCtx ktesting.TContext, args *config.DynamicResourcesArgs, nodes []*v tCtx.ExpectNoError(err, "create resource class") } for _, podGroup := range podGroups { - _, err := tc.client.SchedulingV1alpha2().PodGroups(podGroup.Namespace).Create(tCtx, podGroup, metav1.CreateOptions{}) + _, err := tc.client.SchedulingV1alpha3().PodGroups(podGroup.Namespace).Create(tCtx, podGroup, metav1.CreateOptions{}) tCtx.ExpectNoError(err, "create pod group") } diff --git a/pkg/scheduler/framework/plugins/gangscheduling/gangscheduling.go b/pkg/scheduler/framework/plugins/gangscheduling/gangscheduling.go index 30dfd788690..a5fd1b566d5 100644 --- a/pkg/scheduler/framework/plugins/gangscheduling/gangscheduling.go +++ b/pkg/scheduler/framework/plugins/gangscheduling/gangscheduling.go @@ -22,7 +22,7 @@ import ( "time" v1 "k8s.io/api/core/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" schedulinglisters "k8s.io/client-go/listers/scheduling/v1alpha2" @@ -59,7 +59,7 @@ var _ fwk.PermitPlugin = &GangScheduling{} func New(_ context.Context, _ runtime.Object, fh fwk.Handle, fts feature.Features) (fwk.Plugin, error) { return &GangScheduling{ handle: fh, - podGroupLister: fh.SharedInformerFactory().Scheduling().V1alpha2().PodGroups().Lister(), + podGroupLister: fh.SharedInformerFactory().Scheduling().V1alpha3().PodGroups().Lister(), podGroupManager: fh.PodGroupManager(), snapshotLister: fh.SnapshotSharedLister(), }, nil diff --git a/pkg/scheduler/framework/plugins/gangscheduling/gangscheduling_test.go b/pkg/scheduler/framework/plugins/gangscheduling/gangscheduling_test.go index d458b3b87a7..c70b96231cb 100644 --- a/pkg/scheduler/framework/plugins/gangscheduling/gangscheduling_test.go +++ b/pkg/scheduler/framework/plugins/gangscheduling/gangscheduling_test.go @@ -22,7 +22,7 @@ import ( "github.com/google/go-cmp/cmp" v1 "k8s.io/api/core/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" "k8s.io/apimachinery/pkg/types" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/informers" @@ -264,7 +264,7 @@ func TestGangSchedulingFlow(t *testing.T) { cache := internalcache.New(ctx, nil, true) informerFactory := informers.NewSharedInformerFactory(fake.NewClientset(), 0) - podGroupInformer := informerFactory.Scheduling().V1alpha2().PodGroups() + podGroupInformer := informerFactory.Scheduling().V1alpha3().PodGroups() fakeActivator := &podActivatorMock{} snapshot := internalcache.NewEmptySnapshot() fh, err := frameworkruntime.NewFramework(ctx, nil, nil, diff --git a/pkg/scheduler/framework/plugins/topologyaware/topology_placement.go b/pkg/scheduler/framework/plugins/topologyaware/topology_placement.go index ccf7978748b..5c955adcef2 100644 --- a/pkg/scheduler/framework/plugins/topologyaware/topology_placement.go +++ b/pkg/scheduler/framework/plugins/topologyaware/topology_placement.go @@ -21,9 +21,9 @@ import ( "fmt" v1 "k8s.io/api/core/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" "k8s.io/apimachinery/pkg/runtime" - schedulinglisters "k8s.io/client-go/listers/scheduling/v1alpha2" + schedulinglisters "k8s.io/client-go/listers/scheduling/v1alpha3" "k8s.io/klog/v2" fwk "k8s.io/kube-scheduler/framework" "k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature" @@ -47,7 +47,7 @@ var _ fwk.PlacementGeneratePlugin = &TopologyPlacement{} func New(_ context.Context, _ runtime.Object, fh fwk.Handle, fts feature.Features) (*TopologyPlacement, error) { return &TopologyPlacement{ handle: fh, - podGroupLister: fh.SharedInformerFactory().Scheduling().V1alpha2().PodGroups().Lister(), + podGroupLister: fh.SharedInformerFactory().Scheduling().V1alpha3().PodGroups().Lister(), }, nil } diff --git a/pkg/scheduler/framework/plugins/topologyaware/topology_placement_test.go b/pkg/scheduler/framework/plugins/topologyaware/topology_placement_test.go index f42498f7f39..7489a706335 100644 --- a/pkg/scheduler/framework/plugins/topologyaware/topology_placement_test.go +++ b/pkg/scheduler/framework/plugins/topologyaware/topology_placement_test.go @@ -20,7 +20,7 @@ import ( "testing" v1 "k8s.io/api/core/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/informers" @@ -196,7 +196,7 @@ func TestGeneratePlacements(t *testing.T) { &v1.NodeList{Items: nodes}, ) informerFactory := informers.NewSharedInformerFactory(cs, 0) - _ = informerFactory.Scheduling().V1alpha2().PodGroups().Informer() + _ = informerFactory.Scheduling().V1alpha3().PodGroups().Informer() _ = informerFactory.Core().V1().Nodes().Informer() informerFactory.StartWithContext(tCtx) informerFactory.WaitForCacheSyncWithContext(tCtx) diff --git a/pkg/scheduler/framework/preemption/executor.go b/pkg/scheduler/framework/preemption/executor.go index 319e9a90279..6b363d80ba0 100644 --- a/pkg/scheduler/framework/preemption/executor.go +++ b/pkg/scheduler/framework/preemption/executor.go @@ -23,7 +23,7 @@ import ( "time" v1 "k8s.io/api/core/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" apierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" diff --git a/pkg/scheduler/framework/preemption/executor_test.go b/pkg/scheduler/framework/preemption/executor_test.go index c4d7f42592c..0e288b030f0 100644 --- a/pkg/scheduler/framework/preemption/executor_test.go +++ b/pkg/scheduler/framework/preemption/executor_test.go @@ -27,7 +27,7 @@ import ( "github.com/google/go-cmp/cmp" v1 "k8s.io/api/core/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" diff --git a/pkg/scheduler/framework/preemption/podgrouppreemption.go b/pkg/scheduler/framework/preemption/podgrouppreemption.go index c5b7e8cdec2..8196566cc75 100644 --- a/pkg/scheduler/framework/preemption/podgrouppreemption.go +++ b/pkg/scheduler/framework/preemption/podgrouppreemption.go @@ -24,7 +24,7 @@ import ( v1 "k8s.io/api/core/v1" policy "k8s.io/api/policy/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" "k8s.io/apimachinery/pkg/util/sets" policylisters "k8s.io/client-go/listers/policy/v1" schedulinglisters "k8s.io/client-go/listers/scheduling/v1alpha2" @@ -53,7 +53,7 @@ func NewPodGroupEvaluator(fh fwk.Handle, executor *Executor) *PodGroupEvaluator return &PodGroupEvaluator{ Handle: fh, pdbLister: fh.SharedInformerFactory().Policy().V1().PodDisruptionBudgets().Lister(), - podGroupLister: fh.SharedInformerFactory().Scheduling().V1alpha2().PodGroups().Lister(), + podGroupLister: fh.SharedInformerFactory().Scheduling().V1alpha3().PodGroups().Lister(), Executor: executor, } } diff --git a/pkg/scheduler/framework/preemption/podgrouppreemption_test.go b/pkg/scheduler/framework/preemption/podgrouppreemption_test.go index 788355efb9a..766e044c32f 100644 --- a/pkg/scheduler/framework/preemption/podgrouppreemption_test.go +++ b/pkg/scheduler/framework/preemption/podgrouppreemption_test.go @@ -25,7 +25,7 @@ import ( "github.com/google/go-cmp/cmp" v1 "k8s.io/api/core/v1" policy "k8s.io/api/policy/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" schedulinglisters "k8s.io/client-go/listers/scheduling/v1alpha2" diff --git a/pkg/scheduler/framework/preemption/types.go b/pkg/scheduler/framework/preemption/types.go index 27116765cb7..13c3d3cd3e3 100644 --- a/pkg/scheduler/framework/preemption/types.go +++ b/pkg/scheduler/framework/preemption/types.go @@ -22,7 +22,7 @@ import ( "sync/atomic" v1 "k8s.io/api/core/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" schedulinglisters "k8s.io/client-go/listers/scheduling/v1alpha2" diff --git a/pkg/scheduler/framework/preemption/types_test.go b/pkg/scheduler/framework/preemption/types_test.go index 24a7bb3fdf4..2995c152042 100644 --- a/pkg/scheduler/framework/preemption/types_test.go +++ b/pkg/scheduler/framework/preemption/types_test.go @@ -22,7 +22,7 @@ import ( "github.com/google/go-cmp/cmp" v1 "k8s.io/api/core/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" "k8s.io/apimachinery/pkg/util/sets" fwk "k8s.io/kube-scheduler/framework" "k8s.io/kubernetes/pkg/scheduler/framework" diff --git a/pkg/scheduler/framework/runtime/framework_test.go b/pkg/scheduler/framework/runtime/framework_test.go index cb06bed9c39..059e4e8db98 100644 --- a/pkg/scheduler/framework/runtime/framework_test.go +++ b/pkg/scheduler/framework/runtime/framework_test.go @@ -28,7 +28,7 @@ import ( "github.com/google/go-cmp/cmp/cmpopts" v1 "k8s.io/api/core/v1" - "k8s.io/api/scheduling/v1alpha2" + "k8s.io/api/scheduling/v1alpha3" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" diff --git a/pkg/scheduler/schedule_one_podgroup.go b/pkg/scheduler/schedule_one_podgroup.go index 63a54b99d8e..c46b711f37e 100644 --- a/pkg/scheduler/schedule_one_podgroup.go +++ b/pkg/scheduler/schedule_one_podgroup.go @@ -266,7 +266,7 @@ func (sched *Scheduler) runWorkloadAwarePreemption(ctx context.Context, schedFwk return fwk.NewStatus(fwk.Unschedulable, "default preemption plugin is not registered, workload aware preemption is disabled") } - pg, err := schedFwk.SharedInformerFactory().Scheduling().V1alpha2().PodGroups().Lister().PodGroups(podGroupInfo.Namespace).Get(podGroupInfo.Name) + pg, err := schedFwk.SharedInformerFactory().Scheduling().V1alpha3().PodGroups().Lister().PodGroups(podGroupInfo.Namespace).Get(podGroupInfo.Name) if err != nil { return fwk.AsStatus(fmt.Errorf("failed to get pod group object: %w", err)) } diff --git a/pkg/scheduler/schedule_one_podgroup_test.go b/pkg/scheduler/schedule_one_podgroup_test.go index cfa34514a84..b23d568d193 100644 --- a/pkg/scheduler/schedule_one_podgroup_test.go +++ b/pkg/scheduler/schedule_one_podgroup_test.go @@ -27,7 +27,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" v1 "k8s.io/api/core/v1" - schedulingv1alpha2 "k8s.io/api/scheduling/v1alpha2" + schedulingv1alpha3 "k8s.io/api/scheduling/v1alpha3" apimeta "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -100,7 +100,7 @@ func (mp *fakePodGroupPlugin) Permit(ctx context.Context, state fwk.CycleState, return fwk.NewStatus(fwk.Unschedulable, "default fake permit failure"), 0 } -func (mp *fakePodGroupPlugin) PodGroupPostFilter(ctx context.Context, pg *schedulingv1alpha2.PodGroup, pods []*v1.Pod, pgSchedulingFunc framework.PodGroupSchedulingFunc) *fwk.Status { +func (mp *fakePodGroupPlugin) PodGroupPostFilter(ctx context.Context, pg *schedulingv1alpha3.PodGroup, pods []*v1.Pod, pgSchedulingFunc framework.PodGroupSchedulingFunc) *fwk.Status { mp.podGroupPostFilterCalled = true if mp.podGroupPostFilterStatus != nil { return mp.podGroupPostFilterStatus @@ -348,7 +348,7 @@ func TestPodGroupCycle_UpdateSnapshotError(t *testing.T) { qInfo1 := &framework.QueuedPodInfo{PodInfo: &framework.PodInfo{Pod: p1}} qInfo2 := &framework.QueuedPodInfo{PodInfo: &framework.PodInfo{Pod: p2}} - testPodGroup := &schedulingv1alpha2.PodGroup{ + testPodGroup := &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg", Namespace: "default"}, } @@ -398,7 +398,7 @@ func TestPodGroupCycle_UpdateSnapshotError(t *testing.T) { client := clientsetfake.NewClientset(testPodGroup) informerFactory := informers.NewSharedInformerFactory(client, 0) - podGroupLister := informerFactory.Scheduling().V1alpha2().PodGroups().Lister() + podGroupLister := informerFactory.Scheduling().V1alpha3().PodGroups().Lister() informerFactory.Start(ctx.Done()) informerFactory.WaitForCacheSync(ctx.Done()) @@ -524,7 +524,7 @@ func TestPodGroupCycle_PodGroupPostFilter(t *testing.T) { client := clientsetfake.NewSimpleClientset(testPodGroup, testNode) informerFactory := informers.NewSharedInformerFactory(client, 0) - podGroupLister := informerFactory.Scheduling().V1alpha2().PodGroups().Lister() + podGroupLister := informerFactory.Scheduling().V1alpha3().PodGroups().Lister() informerFactory.Start(ctx.Done()) informerFactory.WaitForCacheSync(ctx.Done()) @@ -1079,7 +1079,7 @@ func TestSubmitPodGroupAlgorithmResult(t *testing.T) { qInfo2 := &framework.QueuedPodInfo{PodInfo: &framework.PodInfo{Pod: p2}} qInfo3 := &framework.QueuedPodInfo{PodInfo: &framework.PodInfo{Pod: p3}} - testPodGroup := &schedulingv1alpha2.PodGroup{ + testPodGroup := &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg", Namespace: "default"}, } @@ -1094,7 +1094,7 @@ func TestSubmitPodGroupAlgorithmResult(t *testing.T) { tests := []struct { name string - existingPodGroup *schedulingv1alpha2.PodGroup + existingPodGroup *schedulingv1alpha3.PodGroup algorithmResult podGroupAlgorithmResult expectBound sets.Set[string] expectPreempting sets.Set[string] @@ -1453,9 +1453,9 @@ func TestSubmitPodGroupAlgorithmResult(t *testing.T) { }, { name: "Already Scheduled, successful cycle keeps condition", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg", Namespace: "default"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{{ Type: schedulingapi.PodGroupScheduled, Status: metav1.ConditionTrue, @@ -1490,9 +1490,9 @@ func TestSubmitPodGroupAlgorithmResult(t *testing.T) { }, { name: "Already Scheduled, rejected cycle does not regress condition", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg", Namespace: "default"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{{ Type: schedulingapi.PodGroupScheduled, Status: metav1.ConditionTrue, @@ -1525,9 +1525,9 @@ func TestSubmitPodGroupAlgorithmResult(t *testing.T) { }, { name: "Already Scheduled, error cycle does not regress condition", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg", Namespace: "default"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{{ Type: schedulingapi.PodGroupScheduled, Status: metav1.ConditionTrue, @@ -1615,7 +1615,7 @@ func TestSubmitPodGroupAlgorithmResult(t *testing.T) { cache.AddNode(klog.FromContext(ctx), testNode) informerFactory := informers.NewSharedInformerFactory(client, 0) - podGroupLister := informerFactory.Scheduling().V1alpha2().PodGroups().Lister() + podGroupLister := informerFactory.Scheduling().V1alpha3().PodGroups().Lister() informerFactory.Start(ctx.Done()) informerFactory.WaitForCacheSync(ctx.Done()) @@ -1664,7 +1664,7 @@ func TestSubmitPodGroupAlgorithmResult(t *testing.T) { t.Errorf("Expected failed pods: %v, but got: %v", tt.expectFailed, failedPods) } - updatedPodGroup, err := client.SchedulingV1alpha2().PodGroups("default").Get(ctx, "pg", metav1.GetOptions{}) + updatedPodGroup, err := client.SchedulingV1alpha3().PodGroups("default").Get(ctx, "pg", metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PodGroup: %v", err) } @@ -1679,7 +1679,7 @@ func TestSubmitPodGroupAlgorithmResult(t *testing.T) { func TestUpdatePodGroupCondition(t *testing.T) { tests := []struct { name string - existingPodGroup *schedulingv1alpha2.PodGroup + existingPodGroup *schedulingv1alpha3.PodGroup namespace string podGroupName string condition *metav1.Condition @@ -1690,7 +1690,7 @@ func TestUpdatePodGroupCondition(t *testing.T) { }{ { name: "set Scheduled condition to True on empty status", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg1", Namespace: "ns1"}, }, namespace: "ns1", @@ -1710,7 +1710,7 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "set Scheduled condition to False with Unschedulable reason", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg2", Namespace: "ns1"}, }, namespace: "ns1", @@ -1730,7 +1730,7 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "set Scheduled condition to False with SchedulerError reason", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg3", Namespace: "ns1"}, }, namespace: "ns1", @@ -1750,9 +1750,9 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "transition from Unschedulable to Scheduled", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg4", Namespace: "ns1"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -1781,9 +1781,9 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "transition from SchedulerError to Scheduled", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg-se-to-true", Namespace: "ns1"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -1812,9 +1812,9 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "do not regress Scheduled to Unschedulable", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg-true-to-unsched", Namespace: "ns1"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -1844,9 +1844,9 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "do not regress Scheduled to SchedulerError", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg-true-to-se", Namespace: "ns1"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -1876,9 +1876,9 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "transition from Unschedulable to SchedulerError preserves LastTransitionTime", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg-unsched-to-se", Namespace: "ns1"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -1908,9 +1908,9 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "transition from SchedulerError to Unschedulable preserves LastTransitionTime", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg-se-to-unsched", Namespace: "ns1"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -1940,9 +1940,9 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "Scheduled to Scheduled preserves LastTransitionTime", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg-true-to-true", Namespace: "ns1"}, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -1989,7 +1989,7 @@ func TestUpdatePodGroupCondition(t *testing.T) { }, { name: "ObservedGeneration is set from PodGroup generation", - existingPodGroup: &schedulingv1alpha2.PodGroup{ + existingPodGroup: &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg-gen", Namespace: "ns1", Generation: 7}, }, namespace: "ns1", @@ -2020,7 +2020,7 @@ func TestUpdatePodGroupCondition(t *testing.T) { } client := clientsetfake.NewClientset(objects...) informerFactory := informers.NewSharedInformerFactory(client, 0) - podGroupLister := informerFactory.Scheduling().V1alpha2().PodGroups().Lister() + podGroupLister := informerFactory.Scheduling().V1alpha3().PodGroups().Lister() informerFactory.Start(ctx.Done()) informerFactory.WaitForCacheSync(ctx.Done()) sched := &Scheduler{client: client, podGroupLister: podGroupLister} @@ -2040,7 +2040,7 @@ func TestUpdatePodGroupCondition(t *testing.T) { } sched.updatePodGroupCondition(ctx, podGroupInfo, tt.condition) - updatedPodGroup, err := client.SchedulingV1alpha2().PodGroups(tt.namespace).Get(ctx, tt.podGroupName, metav1.GetOptions{}) + updatedPodGroup, err := client.SchedulingV1alpha3().PodGroups(tt.namespace).Get(ctx, tt.podGroupName, metav1.GetOptions{}) if tt.existingPodGroup == nil { if err == nil { t.Fatalf("Expected PodGroup to not be found, but got: %v", updatedPodGroup) @@ -2527,7 +2527,7 @@ func TestRunWorkloadAwarePreemption(t *testing.T) { tests := []struct { name string podGroupInfo *framework.QueuedPodGroupInfo - existingPodGroups []*schedulingv1alpha2.PodGroup + existingPodGroups []*schedulingv1alpha3.PodGroup pluginsRegistered bool pluginReturnStatus *fwk.Status expectedStatus *fwk.Status @@ -2559,12 +2559,12 @@ func TestRunWorkloadAwarePreemption(t *testing.T) { {PodInfo: &framework.PodInfo{Pod: st.MakePod().Name("p1").Namespace("default").Obj()}}, }, }, - existingPodGroups: []*schedulingv1alpha2.PodGroup{ + existingPodGroups: []*schedulingv1alpha3.PodGroup{ { ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "pg-with-constraints"}, - Spec: schedulingv1alpha2.PodGroupSpec{ - SchedulingConstraints: &schedulingv1alpha2.PodGroupSchedulingConstraints{ - Topology: []schedulingv1alpha2.TopologyConstraint{{}}, // non-empty + Spec: schedulingv1alpha3.PodGroupSpec{ + SchedulingConstraints: &schedulingv1alpha3.PodGroupSchedulingConstraints{ + Topology: []schedulingv1alpha3.TopologyConstraint{{}}, // non-empty }, }, }, @@ -2580,7 +2580,7 @@ func TestRunWorkloadAwarePreemption(t *testing.T) { {PodInfo: &framework.PodInfo{Pod: st.MakePod().Name("p1").Namespace("default").Obj()}}, }, }, - existingPodGroups: []*schedulingv1alpha2.PodGroup{ + existingPodGroups: []*schedulingv1alpha3.PodGroup{ { ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "pg-success"}, }, @@ -2597,7 +2597,7 @@ func TestRunWorkloadAwarePreemption(t *testing.T) { {PodInfo: &framework.PodInfo{Pod: st.MakePod().Name("p1").Namespace("default").Obj()}}, }, }, - existingPodGroups: []*schedulingv1alpha2.PodGroup{ + existingPodGroups: []*schedulingv1alpha3.PodGroup{ { ObjectMeta: metav1.ObjectMeta{Namespace: "default", Name: "pg-unschedulable"}, }, @@ -2614,7 +2614,7 @@ func TestRunWorkloadAwarePreemption(t *testing.T) { {PodInfo: &framework.PodInfo{Pod: st.MakePod().Name("p1").Namespace("default").Obj()}}, }, }, - existingPodGroups: []*schedulingv1alpha2.PodGroup{}, + existingPodGroups: []*schedulingv1alpha3.PodGroup{}, pluginsRegistered: true, pluginReturnStatus: fwk.NewStatus(fwk.Success), expectedStatus: fwk.AsStatus(fmt.Errorf("failed to get pod group object: %w", errors.New("podgroup.scheduling.k8s.io \"pg-unschedulable\" not found"))), @@ -2682,7 +2682,7 @@ func TestRunWorkloadAwarePreemption(t *testing.T) { t.Fatalf("Failed to create framework: %v", err) } - podGroupLister := informerFactory.Scheduling().V1alpha2().PodGroups().Lister() + podGroupLister := informerFactory.Scheduling().V1alpha3().PodGroups().Lister() if tt.pluginsRegistered { informerFactory.Start(ctx.Done()) diff --git a/pkg/scheduler/schedule_one_test.go b/pkg/scheduler/schedule_one_test.go index 3b379ffcc2f..ce5e8d9909e 100644 --- a/pkg/scheduler/schedule_one_test.go +++ b/pkg/scheduler/schedule_one_test.go @@ -38,7 +38,7 @@ import ( v1 "k8s.io/api/core/v1" eventsv1 "k8s.io/api/events/v1" - schedulingv1alpha2 "k8s.io/api/scheduling/v1alpha2" + schedulingv1alpha3 "k8s.io/api/scheduling/v1alpha3" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -1046,7 +1046,7 @@ func TestSchedulerScheduleOne(t *testing.T) { item.expectPodInUnschedulable = nil } - testPG := &schedulingv1alpha2.PodGroup{ + testPG := &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{Name: "pg", Namespace: item.sendPod.Namespace}, } clientObjs = []runtime.Object{item.sendPod, testPG} @@ -1073,7 +1073,7 @@ func TestSchedulerScheduleOne(t *testing.T) { internalCache := internalcache.New(ctx, apiDispatcher, scheduleAsPodGroup) if scheduleAsPodGroup { - podGroupLister = informerFactory.Scheduling().V1alpha2().PodGroups().Lister() + podGroupLister = informerFactory.Scheduling().V1alpha3().PodGroups().Lister() internalCache.AddPodGroupMember(item.sendPod) } cache := &fakecache.Cache{ diff --git a/pkg/scheduler/scheduler.go b/pkg/scheduler/scheduler.go index 91ee1cdda17..513c9ef26fe 100644 --- a/pkg/scheduler/scheduler.go +++ b/pkg/scheduler/scheduler.go @@ -31,7 +31,7 @@ import ( "k8s.io/client-go/informers" coreinformers "k8s.io/client-go/informers/core/v1" clientset "k8s.io/client-go/kubernetes" - schedulinglisters "k8s.io/client-go/listers/scheduling/v1alpha2" + schedulinglisters "k8s.io/client-go/listers/scheduling/v1alpha3" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" resourceslicetracker "k8s.io/dynamic-resource-allocation/resourceslice/tracker" @@ -315,7 +315,7 @@ func New(ctx context.Context, nodeLister := informerFactory.Core().V1().Nodes().Lister() var podGroupLister schedulinglisters.PodGroupLister if feature.DefaultFeatureGate.Enabled(features.GenericWorkload) { - podGroupLister = informerFactory.Scheduling().V1alpha2().PodGroups().Lister() + podGroupLister = informerFactory.Scheduling().V1alpha3().PodGroups().Lister() } snapshot := internalcache.NewEmptySnapshot() diff --git a/pkg/scheduler/testing/wrappers.go b/pkg/scheduler/testing/wrappers.go index f8dcaee4e26..b776525024e 100644 --- a/pkg/scheduler/testing/wrappers.go +++ b/pkg/scheduler/testing/wrappers.go @@ -24,7 +24,7 @@ import ( v1 "k8s.io/api/core/v1" policy "k8s.io/api/policy/v1" resourceapi "k8s.io/api/resource/v1" - schedulingapi "k8s.io/api/scheduling/v1alpha2" + schedulingapi "k8s.io/api/scheduling/v1alpha3" storagev1 "k8s.io/api/storage/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/pkg/scheduler/util/utils.go b/pkg/scheduler/util/utils.go index fbc28fa98e8..74979020a40 100644 --- a/pkg/scheduler/util/utils.go +++ b/pkg/scheduler/util/utils.go @@ -25,7 +25,7 @@ import ( v1 "k8s.io/api/core/v1" resourceapi "k8s.io/api/resource/v1" - schedulingv1alpha2 "k8s.io/api/scheduling/v1alpha2" + schedulingv1alpha3 "k8s.io/api/scheduling/v1alpha3" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" @@ -155,26 +155,26 @@ func PatchPodStatus(ctx context.Context, cs kubernetes.Interface, name string, n // PatchPodGroupStatus calculates the delta bytes change from to , // and then submits a request to API server to patch the PodGroup status changes. func PatchPodGroupStatus(ctx context.Context, cs kubernetes.Interface, name string, - namespace string, oldStatus *schedulingv1alpha2.PodGroupStatus, - newStatus *schedulingv1alpha2.PodGroupStatus) error { + namespace string, oldStatus *schedulingv1alpha3.PodGroupStatus, + newStatus *schedulingv1alpha3.PodGroupStatus) error { if newStatus == nil { return nil } if oldStatus == nil { - oldStatus = &schedulingv1alpha2.PodGroupStatus{} + oldStatus = &schedulingv1alpha3.PodGroupStatus{} } - oldData, err := json.Marshal(schedulingv1alpha2.PodGroup{Status: *oldStatus}) + oldData, err := json.Marshal(schedulingv1alpha3.PodGroup{Status: *oldStatus}) if err != nil { return err } - newData, err := json.Marshal(schedulingv1alpha2.PodGroup{Status: *newStatus}) + newData, err := json.Marshal(schedulingv1alpha3.PodGroup{Status: *newStatus}) if err != nil { return err } - patchBytes, err := strategicpatch.CreateTwoWayMergePatch(oldData, newData, &schedulingv1alpha2.PodGroup{}) + patchBytes, err := strategicpatch.CreateTwoWayMergePatch(oldData, newData, &schedulingv1alpha3.PodGroup{}) if err != nil { return fmt.Errorf("failed to create merge patch for podgroup %q/%q: %w", namespace, name, err) } @@ -184,7 +184,7 @@ func PatchPodGroupStatus(ctx context.Context, cs kubernetes.Interface, name stri } patchFn := func() error { - _, err := cs.SchedulingV1alpha2().PodGroups(namespace).Patch(ctx, name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}, "status") + _, err := cs.SchedulingV1alpha3().PodGroups(namespace).Patch(ctx, name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}, "status") return err } @@ -273,7 +273,7 @@ func GetHostPorts(pod *v1.Pod) []v1.ContainerPort { } // PodGroupPriority returns priority of a given pod group. -func PodGroupPriority(pg *schedulingv1alpha2.PodGroup) int32 { +func PodGroupPriority(pg *schedulingv1alpha3.PodGroup) int32 { if pg.Spec.Priority != nil { return *pg.Spec.Priority } diff --git a/pkg/scheduler/util/utils_test.go b/pkg/scheduler/util/utils_test.go index 3924fbe5f23..10581e49774 100644 --- a/pkg/scheduler/util/utils_test.go +++ b/pkg/scheduler/util/utils_test.go @@ -27,7 +27,7 @@ import ( "github.com/google/go-cmp/cmp" v1 "k8s.io/api/core/v1" - schedulingv1alpha2 "k8s.io/api/scheduling/v1alpha2" + schedulingv1alpha3 "k8s.io/api/scheduling/v1alpha3" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -368,24 +368,24 @@ func TestPatchPodGroupStatus(t *testing.T) { tests := []struct { name string - podGroup schedulingv1alpha2.PodGroup + podGroup schedulingv1alpha3.PodGroup client *clientsetfake.Clientset // validateErr checks if error returned from PatchPodGroupStatus is expected one or not. // (true means error is expected one.) validateErr func(goterr error) bool - statusToUpdate *schedulingv1alpha2.PodGroupStatus + statusToUpdate *schedulingv1alpha3.PodGroupStatus nilOldStatus bool }{ { name: "Should update podgroup conditions successfully", client: clientsetfake.NewClientset(), - podGroup: schedulingv1alpha2.PodGroup{ + podGroup: schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Namespace: "ns", Name: "pg1", }, }, - statusToUpdate: &schedulingv1alpha2.PodGroupStatus{ + statusToUpdate: &schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -400,12 +400,12 @@ func TestPatchPodGroupStatus(t *testing.T) { { name: "no-op when status is unchanged", client: clientsetfake.NewClientset(), - podGroup: schedulingv1alpha2.PodGroup{ + podGroup: schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Namespace: "ns", Name: "pg1", }, - Status: schedulingv1alpha2.PodGroupStatus{ + Status: schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -417,7 +417,7 @@ func TestPatchPodGroupStatus(t *testing.T) { }, }, }, - statusToUpdate: &schedulingv1alpha2.PodGroupStatus{ + statusToUpdate: &schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -432,7 +432,7 @@ func TestPatchPodGroupStatus(t *testing.T) { { name: "nil newStatus returns nil", client: clientsetfake.NewClientset(), - podGroup: schedulingv1alpha2.PodGroup{ + podGroup: schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Namespace: "ns", Name: "pg1", @@ -449,23 +449,23 @@ func TestPatchPodGroupStatus(t *testing.T) { client.PrependReactor("patch", "podgroups", func(action clienttesting.Action) (bool, runtime.Object, error) { defer func() { reqcount++ }() if reqcount == 0 { - return true, &schedulingv1alpha2.PodGroup{}, fmt.Errorf("connection refused: %w", syscall.ECONNREFUSED) + return true, &schedulingv1alpha3.PodGroup{}, fmt.Errorf("connection refused: %w", syscall.ECONNREFUSED) } if reqcount == 1 { - return false, &schedulingv1alpha2.PodGroup{}, nil + return false, &schedulingv1alpha3.PodGroup{}, nil } return true, nil, errors.New("requests comes in more than three times.") }) return client }(), - podGroup: schedulingv1alpha2.PodGroup{ + podGroup: schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Namespace: "ns", Name: "pg1", }, }, - statusToUpdate: &schedulingv1alpha2.PodGroupStatus{ + statusToUpdate: &schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -488,19 +488,19 @@ func TestPatchPodGroupStatus(t *testing.T) { if reqcount >= 4 { return true, nil, errors.New("requests comes in more than four times.") } - return true, &schedulingv1alpha2.PodGroup{}, fmt.Errorf("connection refused: %w", syscall.ECONNREFUSED) + return true, &schedulingv1alpha3.PodGroup{}, fmt.Errorf("connection refused: %w", syscall.ECONNREFUSED) }) return client }(), - podGroup: schedulingv1alpha2.PodGroup{ + podGroup: schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Namespace: "ns", Name: "pg1", }, }, validateErr: net.IsConnectionRefused, - statusToUpdate: &schedulingv1alpha2.PodGroupStatus{ + statusToUpdate: &schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -521,26 +521,26 @@ func TestPatchPodGroupStatus(t *testing.T) { client.PrependReactor("patch", "podgroups", func(action clienttesting.Action) (bool, runtime.Object, error) { defer func() { reqcount++ }() if reqcount == 0 { - return true, &schedulingv1alpha2.PodGroup{}, + return true, &schedulingv1alpha3.PodGroup{}, apierrors.NewConflict(schema.GroupResource{ Resource: "podgroups"}, "pg1", errors.New("the object has been modified")) } if reqcount == 1 { - return false, &schedulingv1alpha2.PodGroup{}, nil + return false, &schedulingv1alpha3.PodGroup{}, nil } return true, nil, errors.New("requests comes in more than three times.") }) return client }(), - podGroup: schedulingv1alpha2.PodGroup{ + podGroup: schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Namespace: "ns", Name: "pg1", }, }, - statusToUpdate: &schedulingv1alpha2.PodGroupStatus{ + statusToUpdate: &schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -555,13 +555,13 @@ func TestPatchPodGroupStatus(t *testing.T) { { name: "nil oldStatus patches successfully", client: clientsetfake.NewClientset(), - podGroup: schedulingv1alpha2.PodGroup{ + podGroup: schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Namespace: "ns", Name: "pg1", }, }, - statusToUpdate: &schedulingv1alpha2.PodGroupStatus{ + statusToUpdate: &schedulingv1alpha3.PodGroupStatus{ Conditions: []metav1.Condition{ { Type: schedulingapi.PodGroupScheduled, @@ -583,7 +583,7 @@ func TestPatchPodGroupStatus(t *testing.T) { defer cancel() client := tc.client - _, err := client.SchedulingV1alpha2().PodGroups(tc.podGroup.Namespace).Create(ctx, &tc.podGroup, metav1.CreateOptions{}) + _, err := client.SchedulingV1alpha3().PodGroups(tc.podGroup.Namespace).Create(ctx, &tc.podGroup, metav1.CreateOptions{}) if err != nil { t.Fatal(err) } @@ -603,7 +603,7 @@ func TestPatchPodGroupStatus(t *testing.T) { return } - retrievedPG, err := client.SchedulingV1alpha2().PodGroups(tc.podGroup.Namespace).Get(ctx, tc.podGroup.Name, metav1.GetOptions{}) + retrievedPG, err := client.SchedulingV1alpha3().PodGroups(tc.podGroup.Namespace).Get(ctx, tc.podGroup.Name, metav1.GetOptions{}) if err != nil { t.Fatal(err) } diff --git a/plugin/pkg/admission/job/admission.go b/plugin/pkg/admission/job/admission.go index ed93099b1e6..b97eee3082b 100644 --- a/plugin/pkg/admission/job/admission.go +++ b/plugin/pkg/admission/job/admission.go @@ -26,7 +26,7 @@ import ( "k8s.io/apiserver/pkg/admission" genericadmissioninitializer "k8s.io/apiserver/pkg/admission/initializer" "k8s.io/client-go/informers" - schedulingv1alpha2listers "k8s.io/client-go/listers/scheduling/v1alpha2" + schedulingv1alpha3listers "k8s.io/client-go/listers/scheduling/v1alpha2" "k8s.io/component-base/featuregate" "k8s.io/kubernetes/pkg/apis/batch" "k8s.io/kubernetes/pkg/features" @@ -57,7 +57,7 @@ type Plugin struct { genericWorkloadEnabled bool workloadWithJobEnabled bool inspectedFeatureGates bool - pgLister schedulingv1alpha2listers.PodGroupLister + pgLister schedulingv1alpha3listers.PodGroupLister } // NewPlugin creates a new JobValidation admission plugin. @@ -77,7 +77,7 @@ func (p *Plugin) SetExternalKubeInformerFactory(f informers.SharedInformerFactor if !p.genericWorkloadEnabled { return } - pgInformer := f.Scheduling().V1alpha2().PodGroups() + pgInformer := f.Scheduling().V1alpha3().PodGroups() p.pgLister = pgInformer.Lister() p.SetReadyFunc(pgInformer.Informer().HasSynced) } diff --git a/plugin/pkg/admission/job/admission_test.go b/plugin/pkg/admission/job/admission_test.go index 9c93f00cb82..779308bb715 100644 --- a/plugin/pkg/admission/job/admission_test.go +++ b/plugin/pkg/admission/job/admission_test.go @@ -19,7 +19,7 @@ package job import ( "testing" - schedulingv1alpha2 "k8s.io/api/scheduling/v1alpha2" + schedulingv1alpha3 "k8s.io/api/scheduling/v1alpha3" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" @@ -38,26 +38,26 @@ import ( func TestGangSchedulingParallelism(t *testing.T) { _, ctx := ktesting.NewTestContext(t) - gangPG := &schedulingv1alpha2.PodGroup{ + gangPG := &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Name: "gang-pg", Namespace: metav1.NamespaceDefault, }, - Spec: schedulingv1alpha2.PodGroupSpec{ - SchedulingPolicy: schedulingv1alpha2.PodGroupSchedulingPolicy{ - Gang: &schedulingv1alpha2.GangSchedulingPolicy{MinCount: 4}, + Spec: schedulingv1alpha3.PodGroupSpec{ + SchedulingPolicy: schedulingv1alpha3.PodGroupSchedulingPolicy{ + Gang: &schedulingv1alpha3.GangSchedulingPolicy{MinCount: 4}, }, }, } - basicPG := &schedulingv1alpha2.PodGroup{ + basicPG := &schedulingv1alpha3.PodGroup{ ObjectMeta: metav1.ObjectMeta{ Name: "basic-pg", Namespace: metav1.NamespaceDefault, }, - Spec: schedulingv1alpha2.PodGroupSpec{ - SchedulingPolicy: schedulingv1alpha2.PodGroupSchedulingPolicy{ - Basic: &schedulingv1alpha2.BasicSchedulingPolicy{}, + Spec: schedulingv1alpha3.PodGroupSpec{ + SchedulingPolicy: schedulingv1alpha3.PodGroupSchedulingPolicy{ + Basic: &schedulingv1alpha3.BasicSchedulingPolicy{}, }, }, } @@ -89,7 +89,7 @@ func TestGangSchedulingParallelism(t *testing.T) { enableFeatureGate bool oldJob *batch.Job newJob *batch.Job - podGroups []*schedulingv1alpha2.PodGroup + podGroups []*schedulingv1alpha3.PodGroup wantErr bool }{ "feature gate disabled: allows parallelism change": { @@ -99,7 +99,7 @@ func TestGangSchedulingParallelism(t *testing.T) { j.Spec.Parallelism = ptr.To[int32](2) return j }(), - podGroups: []*schedulingv1alpha2.PodGroup{gangPG}, + podGroups: []*schedulingv1alpha3.PodGroup{gangPG}, }, "no schedulingGroup: skips check (handled by validation)": { enableFeatureGate: true, @@ -114,7 +114,7 @@ func TestGangSchedulingParallelism(t *testing.T) { enableFeatureGate: true, oldJob: baseJob(ptr.To("gang-pg")), newJob: baseJob(ptr.To("gang-pg")), - podGroups: []*schedulingv1alpha2.PodGroup{gangPG}, + podGroups: []*schedulingv1alpha3.PodGroup{gangPG}, }, "gang PodGroup: rejects parallelism change": { enableFeatureGate: true, @@ -124,7 +124,7 @@ func TestGangSchedulingParallelism(t *testing.T) { j.Spec.Parallelism = ptr.To[int32](2) return j }(), - podGroups: []*schedulingv1alpha2.PodGroup{gangPG}, + podGroups: []*schedulingv1alpha3.PodGroup{gangPG}, wantErr: true, }, "basic PodGroup: allows parallelism change": { @@ -135,7 +135,7 @@ func TestGangSchedulingParallelism(t *testing.T) { j.Spec.Parallelism = ptr.To[int32](2) return j }(), - podGroups: []*schedulingv1alpha2.PodGroup{basicPG}, + podGroups: []*schedulingv1alpha3.PodGroup{basicPG}, }, "PodGroup not found: allows parallelism change": { enableFeatureGate: true, @@ -154,7 +154,7 @@ func TestGangSchedulingParallelism(t *testing.T) { j.Spec.Parallelism = ptr.To[int32](2) return j }(), - podGroups: []*schedulingv1alpha2.PodGroup{ + podGroups: []*schedulingv1alpha3.PodGroup{ { ObjectMeta: metav1.ObjectMeta{ Name: "controller-created-pg", @@ -169,9 +169,9 @@ func TestGangSchedulingParallelism(t *testing.T) { }, }, }, - Spec: schedulingv1alpha2.PodGroupSpec{ - SchedulingPolicy: schedulingv1alpha2.PodGroupSchedulingPolicy{ - Gang: &schedulingv1alpha2.GangSchedulingPolicy{MinCount: 4}, + Spec: schedulingv1alpha3.PodGroupSpec{ + SchedulingPolicy: schedulingv1alpha3.PodGroupSchedulingPolicy{ + Gang: &schedulingv1alpha3.GangSchedulingPolicy{MinCount: 4}, }, }, }, @@ -186,7 +186,7 @@ func TestGangSchedulingParallelism(t *testing.T) { j.Spec.Parallelism = ptr.To[int32](2) return j }(), - podGroups: []*schedulingv1alpha2.PodGroup{ + podGroups: []*schedulingv1alpha3.PodGroup{ { ObjectMeta: metav1.ObjectMeta{ Name: "controller-created-pg", @@ -201,9 +201,9 @@ func TestGangSchedulingParallelism(t *testing.T) { }, }, }, - Spec: schedulingv1alpha2.PodGroupSpec{ - SchedulingPolicy: schedulingv1alpha2.PodGroupSchedulingPolicy{ - Basic: &schedulingv1alpha2.BasicSchedulingPolicy{}, + Spec: schedulingv1alpha3.PodGroupSpec{ + SchedulingPolicy: schedulingv1alpha3.PodGroupSchedulingPolicy{ + Basic: &schedulingv1alpha3.BasicSchedulingPolicy{}, }, }, }, @@ -217,7 +217,7 @@ func TestGangSchedulingParallelism(t *testing.T) { j.Spec.Parallelism = ptr.To[int32](2) return j }(), - podGroups: []*schedulingv1alpha2.PodGroup{ + podGroups: []*schedulingv1alpha3.PodGroup{ { ObjectMeta: metav1.ObjectMeta{ Name: "other-gang-pg", @@ -232,9 +232,9 @@ func TestGangSchedulingParallelism(t *testing.T) { }, }, }, - Spec: schedulingv1alpha2.PodGroupSpec{ - SchedulingPolicy: schedulingv1alpha2.PodGroupSchedulingPolicy{ - Gang: &schedulingv1alpha2.GangSchedulingPolicy{MinCount: 4}, + Spec: schedulingv1alpha3.PodGroupSpec{ + SchedulingPolicy: schedulingv1alpha3.PodGroupSchedulingPolicy{ + Gang: &schedulingv1alpha3.GangSchedulingPolicy{MinCount: 4}, }, }, }, @@ -257,7 +257,7 @@ func TestGangSchedulingParallelism(t *testing.T) { p.SetExternalKubeInformerFactory(informerFactory) for _, pg := range tc.podGroups { - if err := informerFactory.Scheduling().V1alpha2().PodGroups().Informer().GetStore().Add(pg); err != nil { + if err := informerFactory.Scheduling().V1alpha3().PodGroups().Informer().GetStore().Add(pg); err != nil { t.Fatalf("failed to add PodGroup: %v", err) } }