This is an automated email from the ASF dual-hosted git repository.

manirajv06 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-k8shim.git


The following commit(s) were added to refs/heads/master by this push:
     new 16658fa1 [YUNIKORN-3295] K8s 1.36 API changes in Shim (#1039)
16658fa1 is described below

commit 16658fa11a1394acc1f6cf99b0f49c720c3cc516
Author: Manikandan R <[email protected]>
AuthorDate: Thu Jun 18 09:54:56 2026 +0530

    [YUNIKORN-3295] K8s 1.36 API changes in Shim (#1039)
    
    K8s 1.36.1 API changes in Shim
    - DRA Manager has been used as is without any manipulations on top of it. 
So, config, resource claims, resource claim template, drivers settings etc at 
K8s level would be used as is.
    - Updated Go version to 1.26.0 in go.mod
    Used Informers AddEventHandlersWithResyncPeriod instead of AddEventHandler 
(without "resyncPeriod" option) as we were passing '0' which doesn't have any 
effect on resync process anyway
    Used Streaming K8s API instead of API Machinery as it was deprecated
    Used component-helpers utils instead of resource helper as it was deprecated
    Refactored existing unit test mocks
    
    Closes: #1039
    
    Signed-off-by: Manikandan R <[email protected]>
---
 go.mod                                             | 115 ++++++++--------
 go.sum                                             | 124 +++++++++--------
 pkg/cache/context.go                               |  25 +++-
 pkg/client/apifactory.go                           |  26 ++--
 pkg/common/test/nodeinfo_lister_mock.go            |  70 ++++++++++
 pkg/common/test/shared_informer_mock.go            |   4 +
 .../test/shared_lister_mock.go}                    |  37 +++---
 .../test/storageinfo_lister_mock.go}               |  29 +---
 pkg/plugin/predicates/predicate_manager_test.go    | 146 ++++-----------------
 pkg/plugin/support/framework_handle.go             |  47 ++++---
 pkg/plugin/support/framework_handle_test.go        |  38 ++----
 pkg/plugin/support/mock_helpers.go                 |  66 ++++++++++
 pkg/plugin/support/shared_lister.go                |   6 +
 pkg/shim/scheduler.go                              |   4 +
 test/e2e/framework/helpers/k8s/k8s_utils.go        |  12 +-
 15 files changed, 396 insertions(+), 353 deletions(-)

diff --git a/go.mod b/go.mod
index d69180be..595b059f 100644
--- a/go.mod
+++ b/go.mod
@@ -18,7 +18,7 @@
 
 module github.com/apache/yunikorn-k8shim
 
-go 1.25.0
+go 1.26.0
 
 require (
        github.com/apache/yunikorn-core v0.0.0-20260605065500-fae6e256cd5c
@@ -26,24 +26,25 @@ require (
        github.com/google/go-cmp v0.7.0
        github.com/google/uuid v1.6.0
        github.com/looplab/fsm v1.0.3
-       github.com/onsi/ginkgo/v2 v2.27.2
+       github.com/onsi/ginkgo/v2 v2.28.1
        github.com/onsi/gomega v1.40.0
        github.com/prometheus/client_golang v1.23.2
        github.com/sasha-s/go-deadlock v0.3.9
        go.uber.org/zap v1.27.1
        go.yaml.in/yaml/v3 v3.0.4
        gotest.tools/v3 v3.5.2
-       k8s.io/api v0.35.5
-       k8s.io/apimachinery v0.35.5
-       k8s.io/apiserver v0.35.5
-       k8s.io/cli-runtime v0.35.5
-       k8s.io/client-go v0.35.5
-       k8s.io/component-base v0.35.5
-       k8s.io/component-helpers v0.35.5
-       k8s.io/klog/v2 v2.130.1
-       k8s.io/kube-scheduler v0.35.5
-       k8s.io/kubectl v0.35.5
-       k8s.io/kubernetes v1.35.5
+       k8s.io/api v0.36.1
+       k8s.io/apimachinery v0.36.1
+       k8s.io/apiserver v0.36.1
+       k8s.io/cli-runtime v0.36.1
+       k8s.io/client-go v0.36.1
+       k8s.io/component-base v0.36.1
+       k8s.io/component-helpers v0.36.1
+       k8s.io/dynamic-resource-allocation v0.36.1
+       k8s.io/klog/v2 v2.140.0
+       k8s.io/kube-scheduler v0.36.1
+       k8s.io/kubernetes v1.36.1
+       k8s.io/streaming v0.36.1
 )
 
 require (
@@ -56,7 +57,7 @@ require (
        github.com/blang/semver/v4 v4.0.0 // indirect
        github.com/cespare/xxhash/v2 v2.3.0 // indirect
        github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // 
indirect
-       github.com/emicklei/go-restful/v3 v3.12.2 // indirect
+       github.com/emicklei/go-restful/v3 v3.13.0 // indirect
        github.com/fxamacker/cbor/v2 v2.9.0 // indirect
        github.com/go-asn1-ber/asn1-ber v1.5.8-0.20250403174932-29230038a667 // 
indirect
        github.com/go-errors/errors v1.4.2 // indirect
@@ -69,9 +70,8 @@ require (
        github.com/google/btree v1.1.3 // indirect
        github.com/google/cel-go v0.26.0 // indirect
        github.com/google/gnostic-models v0.7.0 // indirect
-       github.com/google/pprof v0.0.0-20251114195745-4902fdda35c8 // indirect
+       github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 // indirect
        github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // 
indirect
-       github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // 
indirect
        github.com/inconshreveable/mousetrap v1.1.0 // indirect
        github.com/josharian/intern v1.0.0 // indirect
        github.com/json-iterator/go v1.1.12 // indirect
@@ -84,14 +84,13 @@ require (
        github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // 
indirect
        github.com/monochromegane/go-gitignore 
v0.0.0-20200626010858-205db1a8cc00 // indirect
        github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // 
indirect
-       github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // 
indirect
        github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
        github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490 // 
indirect
-       github.com/pmezard/go-difflib v1.0.0 // indirect
+       github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // 
indirect
        github.com/prometheus/client_model v0.6.2 // indirect
        github.com/prometheus/common v0.67.5 // indirect
-       github.com/prometheus/procfs v0.16.1 // indirect
-       github.com/spf13/cobra v1.10.0 // indirect
+       github.com/prometheus/procfs v0.19.2 // indirect
+       github.com/spf13/cobra v1.10.2 // indirect
        github.com/spf13/pflag v1.0.9 // indirect
        github.com/stoewer/go-strcase v1.3.0 // indirect
        github.com/x448/float16 v0.8.4 // indirect
@@ -115,22 +114,21 @@ require (
        google.golang.org/genproto/googleapis/api 
v0.0.0-20260209200024-4cfbd4190f57 // indirect
        google.golang.org/genproto/googleapis/rpc 
v0.0.0-20260226221140-a57be14db171 // indirect
        google.golang.org/grpc v1.79.3 // indirect
-       google.golang.org/protobuf v1.36.11 // indirect
+       google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af // 
indirect
        gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
        gopkg.in/yaml.v3 v3.0.1 // indirect
        k8s.io/apiextensions-apiserver v0.0.0 // indirect
        k8s.io/cloud-provider v0.34.2 // indirect
-       k8s.io/controller-manager v0.35.5 // indirect
+       k8s.io/controller-manager v0.36.1 // indirect
        k8s.io/csi-translation-lib v0.34.2 // indirect
-       k8s.io/dynamic-resource-allocation v0.35.5 // indirect
-       k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
-       k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect
+       k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a // indirect
+       k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 // indirect
        sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
-       sigs.k8s.io/kustomize/api v0.20.1 // indirect
-       sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect
+       sigs.k8s.io/kustomize/api v0.21.1 // indirect
+       sigs.k8s.io/kustomize/kyaml v0.21.1 // indirect
        sigs.k8s.io/randfill v1.0.0 // indirect
-       sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+       sigs.k8s.io/structured-merge-diff/v6 v6.3.2 // indirect
        sigs.k8s.io/yaml v1.6.0 // indirect
 )
 
@@ -140,34 +138,35 @@ replace (
        golang.org/x/net => golang.org/x/net v0.55.0
        golang.org/x/oauth2 => golang.org/x/oauth2 v0.36.0
        golang.org/x/time => golang.org/x/time v0.15.0
-       k8s.io/api => k8s.io/api v0.35.5
-       k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.35.5
-       k8s.io/apimachinery => k8s.io/apimachinery v0.35.5
-       k8s.io/apiserver => k8s.io/apiserver v0.35.5
-       k8s.io/cli-runtime => k8s.io/cli-runtime v0.35.5
-       k8s.io/client-go => k8s.io/client-go v0.35.5
-       k8s.io/cloud-provider => k8s.io/cloud-provider v0.35.5
-       k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.35.5
-       k8s.io/code-generator => k8s.io/code-generator v0.35.5
-       k8s.io/component-base => k8s.io/component-base v0.35.5
-       k8s.io/component-helpers => k8s.io/component-helpers v0.35.5
-       k8s.io/controller-manager => k8s.io/controller-manager v0.35.5
-       k8s.io/cri-api => k8s.io/cri-api v0.35.5
-       k8s.io/cri-client => k8s.io/cri-client v0.35.5
-       k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.35.5
-       k8s.io/dynamic-resource-allocation => 
k8s.io/dynamic-resource-allocation v0.35.5
-       k8s.io/endpointslice => k8s.io/endpointslice v0.35.5
-       k8s.io/externaljwt => k8s.io/externaljwt v0.35.5
-       k8s.io/klog/v2 => k8s.io/klog/v2 v2.130.1
-       k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.35.5
-       k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.35.5
-       k8s.io/kube-proxy => k8s.io/kube-proxy v0.35.5
-       k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.35.5
-       k8s.io/kubectl => k8s.io/kubectl v0.35.5
-       k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.35.5
-       k8s.io/metrics => k8s.io/metrics v0.35.5
-       k8s.io/mount-utils => k8s.io/mount-utils v0.35.5
-       k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.35.5
-       k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.35.5
-       k8s.io/utils => k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
+       k8s.io/api => k8s.io/api v0.36.1
+       k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.36.1
+       k8s.io/apimachinery => k8s.io/apimachinery v0.36.1
+       k8s.io/apiserver => k8s.io/apiserver v0.36.1
+       k8s.io/cli-runtime => k8s.io/cli-runtime v0.36.1
+       k8s.io/client-go => k8s.io/client-go v0.36.1
+       k8s.io/cloud-provider => k8s.io/cloud-provider v0.36.1
+       k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.36.1
+       k8s.io/code-generator => k8s.io/code-generator v0.36.1
+       k8s.io/component-base => k8s.io/component-base v0.36.1
+       k8s.io/component-helpers => k8s.io/component-helpers v0.36.1
+       k8s.io/controller-manager => k8s.io/controller-manager v0.36.1
+       k8s.io/cri-api => k8s.io/cri-api v0.36.1
+       k8s.io/cri-client => k8s.io/cri-client v0.36.1
+       k8s.io/cri-streaming => k8s.io/cri-streaming v0.36.1
+       k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.36.1
+       k8s.io/dynamic-resource-allocation => 
k8s.io/dynamic-resource-allocation v0.36.1
+       k8s.io/endpointslice => k8s.io/endpointslice v0.36.1
+       k8s.io/externaljwt => k8s.io/externaljwt v0.36.1
+       k8s.io/klog/v2 => k8s.io/klog/v2 v2.140.0
+       k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.36.1
+       k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.36.1
+       k8s.io/kube-proxy => k8s.io/kube-proxy v0.36.1
+       k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.36.1
+       k8s.io/kubectl => k8s.io/kubectl v0.36.1
+       k8s.io/kubelet => k8s.io/kubelet v0.36.1
+       k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.36.1
+       k8s.io/metrics => k8s.io/metrics v0.36.1
+       k8s.io/mount-utils => k8s.io/mount-utils v0.36.1
+       k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.36.1
+       k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.36.1
 )
diff --git a/go.sum b/go.sum
index 4fea3b63..1781b515 100644
--- a/go.sum
+++ b/go.sum
@@ -32,8 +32,8 @@ github.com/davecgh/go-spew 
v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1
 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/distribution/reference v0.6.0 
h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
 github.com/distribution/reference v0.6.0/go.mod 
h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
-github.com/emicklei/go-restful/v3 v3.12.2 
h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
-github.com/emicklei/go-restful/v3 v3.12.2/go.mod 
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+github.com/emicklei/go-restful/v3 v3.13.0 
h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes=
+github.com/emicklei/go-restful/v3 v3.13.0/go.mod 
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
 github.com/fxamacker/cbor/v2 v2.9.0 
h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
 github.com/fxamacker/cbor/v2 v2.9.0/go.mod 
h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
 github.com/gkampitakis/ciinfo v0.3.2 
h1:JcuOPk8ZU7nZQjdUhctuhQofk7BGHuIy0c9Ez8BNhXs=
@@ -75,14 +75,12 @@ github.com/google/gnostic-models v0.7.0/go.mod 
h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7O
 github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
 github.com/google/go-cmp v0.7.0/go.mod 
h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
 github.com/google/gofuzz v1.0.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20251114195745-4902fdda35c8 
h1:3DsUAV+VNEQa2CUVLxCY3f87278uWfIDhJnbdvDjvmE=
-github.com/google/pprof v0.0.0-20251114195745-4902fdda35c8/go.mod 
h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U=
+github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83 
h1:z2ogiKUYzX5Is6zr/vP9vJGqPwcdqsWjOt+V8J7+bTc=
+github.com/google/pprof v0.0.0-20260115054156-294ebfa9ad83/go.mod 
h1:MxpfABSjhmINe3F1It9d+8exIHFvUqtLIRCdOGNXqiI=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 
h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo=
 github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod 
h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA=
-github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 
h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
-github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod 
h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
 github.com/hashicorp/go-uuid v1.0.3 
h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
 github.com/hashicorp/go-uuid v1.0.3/go.mod 
h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/inconshreveable/mousetrap v1.1.0 
h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
@@ -142,10 +140,8 @@ github.com/monochromegane/go-gitignore 
v0.0.0-20200626010858-205db1a8cc00 h1:n6/
 github.com/monochromegane/go-gitignore 
v0.0.0-20200626010858-205db1a8cc00/go.mod 
h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 
h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod 
h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f 
h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus=
-github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod 
h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
-github.com/onsi/ginkgo/v2 v2.27.2 
h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns=
-github.com/onsi/ginkgo/v2 v2.27.2/go.mod 
h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=
+github.com/onsi/ginkgo/v2 v2.28.1 
h1:S4hj+HbZp40fNKuLUQOYLDgZLwNUVn19N3Atb98NCyI=
+github.com/onsi/ginkgo/v2 v2.28.1/go.mod 
h1:CLtbVInNckU3/+gC8LzkGUb9oF+e8W8TdUsxPwvdOgE=
 github.com/onsi/gomega v1.40.0 h1:Vtol0e1MghCD2ZVIilPDIg44XSL9l2QAn8ZNaljWcJc=
 github.com/onsi/gomega v1.40.0/go.mod 
h1:M/Uqpu/8qTjtzCLUA2zJHX9Iilrau25x1PdoSRbWh5A=
 github.com/opencontainers/go-digest v1.0.0 
h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
@@ -155,16 +151,17 @@ github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod 
h1:uqqh8zWWbv1HBMNONnaR
 github.com/petermattis/goid v0.0.0-20250813065127-a731cc31b4fe/go.mod 
h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
 github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490 
h1:QTvNkZ5ylY0PGgA+Lih+GdboMLY/G9SEGLMEGVjTVA4=
 github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490/go.mod 
h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4=
-github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 
h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
+github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/prometheus/client_golang v1.23.2 
h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o=
 github.com/prometheus/client_golang v1.23.2/go.mod 
h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg=
 github.com/prometheus/client_model v0.6.2 
h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
 github.com/prometheus/client_model v0.6.2/go.mod 
h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
 github.com/prometheus/common v0.67.5 
h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4=
 github.com/prometheus/common v0.67.5/go.mod 
h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw=
-github.com/prometheus/procfs v0.16.1 
h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
-github.com/prometheus/procfs v0.16.1/go.mod 
h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
+github.com/prometheus/procfs v0.19.2 
h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws=
+github.com/prometheus/procfs v0.19.2/go.mod 
h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw=
 github.com/robfig/cron/v3 v3.0.1 
h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
 github.com/robfig/cron/v3 v3.0.1/go.mod 
h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
 github.com/rogpeppe/go-internal v1.14.1 
h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
@@ -172,11 +169,10 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod 
h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7
 github.com/russross/blackfriday/v2 v2.1.0/go.mod 
h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/sasha-s/go-deadlock v0.3.9 
h1:fiaT9rB7g5sr5ddNZvlwheclN9IP86eFW9WgqlEQV+w=
 github.com/sasha-s/go-deadlock v0.3.9/go.mod 
h1:KuZj51ZFmx42q/mPaYbRk0P1xcwe697zsJKE03vD4/Y=
-github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
-github.com/sergi/go-diff v1.2.0/go.mod 
h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
-github.com/spf13/cobra v1.10.0 h1:a5/WeUlSDCvV5a45ljW2ZFtV0bTDpkfSAj3uqB6Sc+0=
-github.com/spf13/cobra v1.10.0/go.mod 
h1:9dhySC7dnTtEiqzmqfkLj47BslqLCUPMXjG2lj/NgoE=
-github.com/spf13/pflag v1.0.8/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
+github.com/sergi/go-diff v1.4.0/go.mod 
h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
+github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
+github.com/spf13/cobra v1.10.2/go.mod 
h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
 github.com/spf13/pflag v1.0.9 h1:9exaQaMOCwffKiiiYk6/BndUBv+iRViNW+4lEMi0PvY=
 github.com/spf13/pflag v1.0.9/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stoewer/go-strcase v1.3.0 
h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
@@ -258,8 +254,8 @@ google.golang.org/genproto/googleapis/rpc 
v0.0.0-20260226221140-a57be14db171 h1:
 google.golang.org/genproto/googleapis/rpc 
v0.0.0-20260226221140-a57be14db171/go.mod 
h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
 google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=
 google.golang.org/grpc v1.79.3/go.mod 
h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
-google.golang.org/protobuf v1.36.11 
h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
-google.golang.org/protobuf v1.36.11/go.mod 
h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
+google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af 
h1:+5/Sw3GsDNlEmu7TfklWKPdQ0Ykja5VEmq2i817+jbI=
+google.golang.org/protobuf v1.36.12-0.20260120151049-f2248ac996af/go.mod 
h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c 
h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod 
h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
@@ -272,53 +268,53 @@ gopkg.in/yaml.v3 v3.0.1 
h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
 gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
-k8s.io/api v0.35.5 h1:BrFeUDGY/LBtlA1R5RoxhlYRHs76RnQBc6xbm/y7hsQ=
-k8s.io/api v0.35.5/go.mod h1:xWkFhMnoPZdTAQh95Rlw3zZpUUNVlFHcuESUYd06BWM=
-k8s.io/apiextensions-apiserver v0.35.5 
h1:HttlJjgsx3ddLsASCqklkKvfBlwUoXma8VLpeMG5YL8=
-k8s.io/apiextensions-apiserver v0.35.5/go.mod 
h1:4xbAgP/jbt8sVHE3H4DfE1gSPLUoSzXrNqhZz1lTHKc=
-k8s.io/apimachinery v0.35.5 h1:lbjjjUfVeVqFbiOpyhqZHc8DhiYkWOxSNij7lHx2U8Y=
-k8s.io/apimachinery v0.35.5/go.mod 
h1:NNi1taPOpep0jOj+oRha3mBJPqvi0hGdaV8TCqGQ+cc=
-k8s.io/apiserver v0.35.5 h1:ZtFpSEmxf/VmOdbL3bo7hLxyNRorRegqOLmYSW0mxEo=
-k8s.io/apiserver v0.35.5/go.mod h1:6NNWFTq/UosCwUmqhQDC+3ApzSx5ekeYMIwzSG+49VU=
-k8s.io/cli-runtime v0.35.5 h1:zyeQFN1+2lr4/rksBWUyeVCA/pZUHrrDs3RYGrO4Wuw=
-k8s.io/cli-runtime v0.35.5/go.mod 
h1:TJnEEtxrk8C4AkFwhbH6mrTy6iPo/PM3NkrNU9RWGy4=
-k8s.io/client-go v0.35.5 h1:wUrgqVSmFRw75bgSHY7X0G/hZM/QYpV0Hg7SYYOYpFk=
-k8s.io/client-go v0.35.5/go.mod h1:Z0mDcAJsX1Y7RQfuQlJipiRtqf8Mhk2VDu1/JvRqdGo=
-k8s.io/cloud-provider v0.35.5 h1:uy8EUTMOImRCtT+BEPuVcJXZjvD+vhlpiSk8MebnbD4=
-k8s.io/cloud-provider v0.35.5/go.mod 
h1:q0oauUXdd7xZGwfv25OVWDneym2LEdJRFVPpDTvNQrU=
-k8s.io/component-base v0.35.5 h1:1y1xxfpFNkNi4RMi6bvPNN4aDr9VhOijtEfrqnhPijs=
-k8s.io/component-base v0.35.5/go.mod 
h1:n/+aL98XYINubqIu/Okh6mS/kZT2nMeN4IQkQR4VXRg=
-k8s.io/component-helpers v0.35.5 
h1:ng4/0ogRWwfusesdsvb7wsl4NBALzW6XW8nATVcq+m4=
-k8s.io/component-helpers v0.35.5/go.mod 
h1:kcOg9HS2PqnPeByHNv15d+wq7RnzBKPHYfgHALdaRzY=
-k8s.io/controller-manager v0.35.5 
h1:NVP0vIUmUXxC/+9GKepjOlPyVrjhh/+LRCxAM9zrVRM=
-k8s.io/controller-manager v0.35.5/go.mod 
h1:wa+lpKMHKqir8f5Jzcn5yHjKrBqywr7lsNuJJSMA8gY=
-k8s.io/csi-translation-lib v0.35.5 
h1:dsz37ZSsxyqBDqDLeaIow3djt/HezFNXb+Kage62+tw=
-k8s.io/csi-translation-lib v0.35.5/go.mod 
h1:T8cqGfjOupK24kLW2UR653Ee2KANff3qCo9dWP6mv9M=
-k8s.io/dynamic-resource-allocation v0.35.5 
h1:xwOBJoFP0Oq+SrVKiCM9lfGNY1OCA8jvejDvB07+I5U=
-k8s.io/dynamic-resource-allocation v0.35.5/go.mod 
h1:KEKLo0+J2cCENtzwa2Tg06XeRwZaSJBvCivXBU0d38Y=
-k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
-k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 
h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=
-k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod 
h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
-k8s.io/kube-scheduler v0.35.5 h1:ISmIG5Pj930rFCNmFG63YzaLMmSaElzq1sGFuGYxNdw=
-k8s.io/kube-scheduler v0.35.5/go.mod 
h1:csYs17kKX+9k4IvS5m3SU6ad4DoG9BiGRIEj6PzkQKk=
-k8s.io/kubectl v0.35.5 h1:768G/MoK8SlgMObXVukluHewKIf8RW7oJYa2MTDh3fk=
-k8s.io/kubectl v0.35.5/go.mod h1:rii0tmjY2HQVPSiurhP/XxlnMmrXbNzjPDTeUY8EOZU=
-k8s.io/kubelet v0.35.5 h1:asU07lJvTB9lK7XPEcQJdPrV96eu/zNGkJVSEWeZFFQ=
-k8s.io/kubelet v0.35.5/go.mod h1:cLyY+spNxyf1nXtkSavVfbHX7pZ7wwoWigoeH1iIMcE=
-k8s.io/kubernetes v1.35.5 h1:xnHap3r0mqp36mFaLOt1Jreh8Az2+ZEhiUtIJGhou2w=
-k8s.io/kubernetes v1.35.5/go.mod 
h1:fPfnQs8GtfrLQ+KuOcpvwQ+mV17jVcgdvPL6ZHxKp10=
-k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 
h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
-k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/api v0.36.1 h1:XbL/EMj8K2aJpJtePmqUyQMsM0D4QI2pvl7YKJ20FTY=
+k8s.io/api v0.36.1/go.mod h1:KOWo4ey3TINlXjeHVuwB3i+tXXnu+UcwFBHlI/9dvEo=
+k8s.io/apiextensions-apiserver v0.36.1 
h1:6JfYmPUsuUIHuN+3QxutXYWj492RqF5fBSx67GYK5Ks=
+k8s.io/apiextensions-apiserver v0.36.1/go.mod 
h1:pLzZin90riwisdzKwv/GoTwENooytoIx5zWJb4Hkby8=
+k8s.io/apimachinery v0.36.1 h1:G63Gjx2W+q0YD+72Vo8oY0nDnePVwnuzTmmy5ENrVSA=
+k8s.io/apimachinery v0.36.1/go.mod 
h1:ibYOR00vW/I1kzvi5SF0dRuJ52BvKtfvRdOn35GPQ+8=
+k8s.io/apiserver v0.36.1 h1:iMS5V+rPUertv5P9RaqJgmHHTuh4quWpoxchvMUY+JY=
+k8s.io/apiserver v0.36.1/go.mod h1:Cby1PbLWztu0GDOxoO6iFOyyqIsziHNEW+w9zVQ22Kw=
+k8s.io/cli-runtime v0.36.1 h1:yuC/BGnnj1YYPh6D1P+pZnzinCs6DvMq86yAeNqoqzM=
+k8s.io/cli-runtime v0.36.1/go.mod 
h1:ZQWHGt8xAF7KnviB79vX0lYNyUUqKIpU+LQg7exuFAw=
+k8s.io/client-go v0.36.1 h1:FN/K8QIT2CEDt+2WB2HnWrUANZ50AP5GII43/SP2JR0=
+k8s.io/client-go v0.36.1/go.mod h1:s6rAnCtTGYDQnpNjEhSaISV+2O8jwruZ6m3QOYBFbtU=
+k8s.io/cloud-provider v0.36.1 h1:2XWkuNJgkQHOxR0DtpTeOIEp5FQC++gDpIPo525MGsw=
+k8s.io/cloud-provider v0.36.1/go.mod 
h1:Qf8XEPVkSDT4yl28hbAR+hbomLvXF8tCdltc26J+luc=
+k8s.io/component-base v0.36.1 h1:iG6GsELftXqTNG9HG6kiVjatSgAw1sf5pJ6R5a6N0kA=
+k8s.io/component-base v0.36.1/go.mod 
h1:nf9XPlntRdqO6WMeEWAA5F93Y4ICZQdeT9GeqLDB3JI=
+k8s.io/component-helpers v0.36.1 
h1:BTrr5fzNSm8TkQfXrKT3N9ioWwiC4n2FTIwGTUo/ccg=
+k8s.io/component-helpers v0.36.1/go.mod 
h1:s38HnzKQRurbUnhI5IV8GwyL/a3lVuNCYZMTd+rITMM=
+k8s.io/controller-manager v0.36.1 
h1:d1ifPnAe3FFSnnvcDQiM93bGroFT1lF72GEBKsl+cbg=
+k8s.io/controller-manager v0.36.1/go.mod 
h1:jeJUuFlgbgohGJWrm59Wdlgo3WqxssWXgD2sU6HG/Vo=
+k8s.io/csi-translation-lib v0.36.1 
h1:9Sn7idYrOqwWsJk6hnxeit6LdlN2c3Ckny2veYCyjYk=
+k8s.io/csi-translation-lib v0.36.1/go.mod 
h1:UfN3pfuAOwEkmXU86Bmp0Vrn0NPFx1Z/Cpxb9sYkzTY=
+k8s.io/dynamic-resource-allocation v0.36.1 
h1:nMdVWmGuL+juHRvuBWGTngH2OYUmokwgRftEZArSIyY=
+k8s.io/dynamic-resource-allocation v0.36.1/go.mod 
h1:3dFGuVbN4Ui5M4EaXxFM+AktFQPKqiBAtyYb8zi3zw4=
+k8s.io/klog/v2 v2.140.0 h1:Tf+J3AH7xnUzZyVVXhTgGhEKnFqye14aadWv7bzXdzc=
+k8s.io/klog/v2 v2.140.0/go.mod h1:o+/RWfJ6PwpnFn7OyAG3QnO47BFsymfEfrz6XyYSSp0=
+k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a 
h1:xCeOEAOoGYl2jnJoHkC3hkbPJgdATINPMAxaynU2Ovg=
+k8s.io/kube-openapi v0.0.0-20260317180543-43fb72c5454a/go.mod 
h1:uGBT7iTA6c6MvqUvSXIaYZo9ukscABYi2btjhvgKGZ0=
+k8s.io/kube-scheduler v0.36.1 h1:khJErGq9+JaHniVCxAulvQ4WvYxPj9/95bjJS0bXnjA=
+k8s.io/kube-scheduler v0.36.1/go.mod 
h1:iPnJPkET29aL/Ox0qupytdKosDz0qPj7xGH4MM+dz14=
+k8s.io/kubelet v0.36.1 h1:FcHiG9wv92xerRPNxztuhYWqwS4IilOQNPxTPQewYgo=
+k8s.io/kubelet v0.36.1/go.mod h1:e6IeoCwqc2TbneCKu6P8HjmWLi7U6SOh3Pocs32iGFM=
+k8s.io/kubernetes v1.36.1 h1:Mt7NKigaZ2KmOmCLhX81lGlH9JU5wjXnYhXnxAun9XA=
+k8s.io/kubernetes v1.36.1/go.mod 
h1:MLdeJ3qw2CWH9BFml5GvptxQVQckz54fJOZ/WuixpFE=
+k8s.io/streaming v0.36.1 h1:L+K68n4Gg940BGNNYtUBvL1WTLL0YnKT3s+P1MNAmR4=
+k8s.io/streaming v0.36.1/go.mod h1:z6fV3D+NVkoeqRMtWwlUZK6U17SY/LqNzOxWL6GyR/s=
+k8s.io/utils v0.0.0-20260507154919-ff6756f316d2 
h1:wU4tMEhLGgIbLvXQb1cfN+EcM0wf7zC6CPF+C79jroc=
+k8s.io/utils v0.0.0-20260507154919-ff6756f316d2/go.mod 
h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
 sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 
h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
 sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
-sigs.k8s.io/kustomize/api v0.20.1 
h1:iWP1Ydh3/lmldBnH/S5RXgT98vWYMaTUL1ADcr+Sv7I=
-sigs.k8s.io/kustomize/api v0.20.1/go.mod 
h1:t6hUFxO+Ph0VxIk1sKp1WS0dOjbPCtLJ4p8aADLwqjM=
-sigs.k8s.io/kustomize/kyaml v0.20.1 
h1:PCMnA2mrVbRP3NIB6v9kYCAc38uvFLVs8j/CD567A78=
-sigs.k8s.io/kustomize/kyaml v0.20.1/go.mod 
h1:0EmkQHRUsJxY8Ug9Niig1pUMSCGHxQ5RklbpV/Ri6po=
+sigs.k8s.io/kustomize/api v0.21.1 
h1:lzqbzvz2CSvsjIUZUBNFKtIMsEw7hVLJp0JeSIVmuJs=
+sigs.k8s.io/kustomize/api v0.21.1/go.mod 
h1:f3wkKByTrgpgltLgySCntrYoq5d3q7aaxveSagwTlwI=
+sigs.k8s.io/kustomize/kyaml v0.21.1 
h1:IVlbmhC076nf6foyL6Taw4BkrLuEsXUXNpsE+ScX7fI=
+sigs.k8s.io/kustomize/kyaml v0.21.1/go.mod 
h1:hmxADesM3yUN2vbA5z1/YTBnzLJ1dajdqpQonwBL1FQ=
 sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
 sigs.k8s.io/randfill v1.0.0/go.mod 
h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
-sigs.k8s.io/structured-merge-diff/v6 v6.3.0 
h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
-sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod 
h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.2 
h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod 
h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
 sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
 sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/pkg/cache/context.go b/pkg/cache/context.go
index fc742129..d94f006b 100644
--- a/pkg/cache/context.go
+++ b/pkg/cache/context.go
@@ -35,10 +35,15 @@ import (
        schedulingv1 "k8s.io/api/scheduling/v1"
        "k8s.io/apimachinery/pkg/labels"
        "k8s.io/apimachinery/pkg/types"
+       "k8s.io/apiserver/pkg/util/feature"
        "k8s.io/client-go/tools/cache"
+       "k8s.io/dynamic-resource-allocation/resourceslice/tracker"
        "k8s.io/klog/v2"
        fwk "k8s.io/kube-scheduler/framework"
+       "k8s.io/kubernetes/pkg/features"
+       "k8s.io/kubernetes/pkg/scheduler/framework/plugins/dynamicresources"
        "k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding"
+       "k8s.io/kubernetes/pkg/scheduler/util/assumecache"
 
        schedulercache "github.com/apache/yunikorn-k8shim/pkg/cache/external"
        "github.com/apache/yunikorn-k8shim/pkg/client"
@@ -105,8 +110,24 @@ func NewContextWithBootstrapConfigMaps(apis 
client.APIProvider, bootstrapConfigM
        sharedLister := support.NewSharedLister(ctx.schedulerCache)
        clientSet := apis.GetAPIs().KubeClient.GetClientSet()
        informerFactory := apis.GetAPIs().InformerFactory
-       ctx.predManager = 
predicates.NewPredicateManager(support.NewFrameworkHandle(sharedLister, 
informerFactory, clientSet, 
support.NewCSIManager(apis.GetAPIs().CSINodeInformer.Lister())))
-
+       csiManager := 
support.NewCSIManager(apis.GetAPIs().CSINodeInformer.Lister())
+
+       var sharedDRAManager *dynamicresources.DefaultDRAManager
+       if 
feature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) {
+               resourceClaimInformer := 
informerFactory.Resource().V1().ResourceClaims().Informer()
+               resourceClaimCache := assumecache.NewAssumeCache(ctx.klogger, 
resourceClaimInformer, "ResourceClaim", "", nil)
+               resourceSliceTracker, err := 
tracker.StartTracker(context.TODO(), tracker.Options{
+                       EnableDeviceTaintRules: 
feature.DefaultFeatureGate.Enabled(features.DRADeviceTaints),
+                       SliceInformer:          
informerFactory.Resource().V1().ResourceSlices(),
+                       ClassInformer:          
informerFactory.Resource().V1().DeviceClasses(),
+                       TaintInformer:          
informerFactory.Resource().V1beta2().DeviceTaintRules()})
+               if err != nil {
+                       log.Log(log.ShimClient).Error("unable to create the 
resource slice tracker", zap.Error(err))
+                       return nil
+               }
+               sharedDRAManager = 
dynamicresources.NewDRAManager(context.TODO(), resourceClaimCache, 
resourceSliceTracker, informerFactory)
+       }
+       ctx.predManager = 
predicates.NewPredicateManager(support.NewFrameworkHandle(sharedLister, 
informerFactory, clientSet, csiManager, sharedDRAManager))
        return ctx
 }
 
diff --git a/pkg/client/apifactory.go b/pkg/client/apifactory.go
index 1e9bff61..93c87e54 100644
--- a/pkg/client/apifactory.go
+++ b/pkg/client/apifactory.go
@@ -20,7 +20,6 @@ package client
 
 import (
        "errors"
-       "time"
 
        "go.uber.org/zap"
        "k8s.io/client-go/informers"
@@ -195,37 +194,30 @@ func (s *APIFactory) AddEventHandler(handlers 
*ResourceEventHandlers) error {
        }
 
        log.Log(log.ShimClient).Info("registering event handler", 
zap.Stringer("type", handlers.Type))
-       if err := s.addEventHandlers(handlers.Type, h, 0); err != nil {
+       if err := s.addEventHandlers(handlers.Type, h); err != nil {
                return errors.Join(errors.New("failed to initialize event 
handlers: "), err)
        }
        return nil
 }
 
 func (s *APIFactory) addEventHandlers(
-       handlerType Type, handler cache.ResourceEventHandler, resyncPeriod 
time.Duration) error {
+       handlerType Type, handler cache.ResourceEventHandler) error {
        var err error
        switch handlerType {
        case PodInformerHandlers:
-               _, err = s.GetAPIs().PodInformer.Informer().
-                       AddEventHandlerWithResyncPeriod(handler, resyncPeriod)
+               _, err = 
s.GetAPIs().PodInformer.Informer().AddEventHandler(handler)
        case NodeInformerHandlers:
-               _, err = s.GetAPIs().NodeInformer.Informer().
-                       AddEventHandlerWithResyncPeriod(handler, resyncPeriod)
+               _, err = 
s.GetAPIs().NodeInformer.Informer().AddEventHandler(handler)
        case ConfigMapInformerHandlers:
-               _, err = s.GetAPIs().ConfigMapInformer.Informer().
-                       AddEventHandlerWithResyncPeriod(handler, resyncPeriod)
+               _, err = 
s.GetAPIs().ConfigMapInformer.Informer().AddEventHandler(handler)
        case StorageInformerHandlers:
-               _, err = s.GetAPIs().StorageClassInformer.Informer().
-                       AddEventHandlerWithResyncPeriod(handler, resyncPeriod)
+               _, err = 
s.GetAPIs().StorageClassInformer.Informer().AddEventHandler(handler)
        case PVInformerHandlers:
-               _, err = s.GetAPIs().PVInformer.Informer().
-                       AddEventHandlerWithResyncPeriod(handler, resyncPeriod)
+               _, err = 
s.GetAPIs().PVInformer.Informer().AddEventHandler(handler)
        case PVCInformerHandlers:
-               _, err = s.GetAPIs().PVCInformer.Informer().
-                       AddEventHandlerWithResyncPeriod(handler, resyncPeriod)
+               _, err = 
s.GetAPIs().PVCInformer.Informer().AddEventHandler(handler)
        case PriorityClassInformerHandlers:
-               _, err = s.GetAPIs().PriorityClassInformer.Informer().
-                       AddEventHandlerWithResyncPeriod(handler, resyncPeriod)
+               _, err = 
s.GetAPIs().PriorityClassInformer.Informer().AddEventHandler(handler)
        }
 
        if err != nil {
diff --git a/pkg/common/test/nodeinfo_lister_mock.go 
b/pkg/common/test/nodeinfo_lister_mock.go
new file mode 100644
index 00000000..9d58af09
--- /dev/null
+++ b/pkg/common/test/nodeinfo_lister_mock.go
@@ -0,0 +1,70 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package test
+
+import (
+       "errors"
+
+       fwk "k8s.io/kube-scheduler/framework"
+)
+
+type NodeInfoListerMock struct {
+       nodeInfos []fwk.NodeInfo
+}
+
+func (n *NodeInfoListerMock) List() ([]fwk.NodeInfo, error) {
+       return n.nodeInfos, nil
+}
+
+func (n *NodeInfoListerMock) HavePodsWithAffinityList() ([]fwk.NodeInfo, 
error) {
+       result := make([]fwk.NodeInfo, 0, len(n.nodeInfos))
+       for _, node := range n.nodeInfos {
+               if len(node.GetPodsWithAffinity()) > 0 {
+                       result = append(result, node)
+               }
+       }
+       return result, nil
+}
+
+func (n *NodeInfoListerMock) HavePodsWithRequiredAntiAffinityList() 
([]fwk.NodeInfo, error) {
+       result := make([]fwk.NodeInfo, 0, len(n.nodeInfos))
+       for _, node := range n.nodeInfos {
+               if len(node.GetPodsWithRequiredAntiAffinity()) > 0 {
+                       result = append(result, node)
+               }
+       }
+       return result, nil
+}
+
+func (n *NodeInfoListerMock) Get(nodeName string) (fwk.NodeInfo, error) {
+       for _, node := range n.nodeInfos {
+               if node.Node().Name == nodeName {
+                       return node, nil
+               }
+       }
+       return nil, errors.New("node not found")
+}
+
+func (n *NodeInfoListerMock) Set(nodeInfos []fwk.NodeInfo) {
+       n.nodeInfos = nodeInfos
+}
+
+func NewNodeInfoListerMock() *NodeInfoListerMock {
+       return &NodeInfoListerMock{}
+}
diff --git a/pkg/common/test/shared_informer_mock.go 
b/pkg/common/test/shared_informer_mock.go
index ca8a1f80..f549e4ab 100644
--- a/pkg/common/test/shared_informer_mock.go
+++ b/pkg/common/test/shared_informer_mock.go
@@ -40,6 +40,10 @@ var (
 type SharedInformerMock struct {
 }
 
+func (s *SharedInformerMock) HasSyncedChecker() cache.DoneChecker {
+       return nil
+}
+
 func (s *SharedInformerMock) AddEventHandlerWithOptions(_ 
cache.ResourceEventHandler, _ cache.HandlerOptions) 
(cache.ResourceEventHandlerRegistration, error) {
        return nil, nil
 }
diff --git a/pkg/plugin/support/shared_lister.go 
b/pkg/common/test/shared_lister_mock.go
similarity index 54%
copy from pkg/plugin/support/shared_lister.go
copy to pkg/common/test/shared_lister_mock.go
index 425a27db..991a3199 100644
--- a/pkg/plugin/support/shared_lister.go
+++ b/pkg/common/test/shared_lister_mock.go
@@ -16,32 +16,39 @@
  limitations under the License.
 */
 
-package support
+package test
 
 import (
        fwk "k8s.io/kube-scheduler/framework"
-
-       "github.com/apache/yunikorn-k8shim/pkg/cache/external"
 )
 
-type sharedListerImpl struct {
-       nodeInfos    fwk.NodeInfoLister
-       storageInfos fwk.StorageInfoLister
+type SharedListerMock struct {
+       nodeLister    *NodeInfoListerMock
+       storageLister *StorageInfoListerMock
 }
 
-func (s sharedListerImpl) NodeInfos() fwk.NodeInfoLister {
-       return s.nodeInfos
+func (s *SharedListerMock) PodGroupStates() fwk.PodGroupStateLister {
+       return nil
 }
 
-func (s sharedListerImpl) StorageInfos() fwk.StorageInfoLister {
-       return s.storageInfos
+func (s *SharedListerMock) NodeInfos() fwk.NodeInfoLister {
+       return s.nodeLister
 }
 
-var _ fwk.SharedLister = &sharedListerImpl{}
+func (s *SharedListerMock) StorageInfos() fwk.StorageInfoLister {
+       return s.storageLister
+}
 
-func NewSharedLister(cache *external.SchedulerCache) fwk.SharedLister {
-       return &sharedListerImpl{
-               nodeInfos:    NewNodeInfoLister(cache),
-               storageInfos: NewStorageInfoLister(cache),
+func NewEmptySharedListerMock() fwk.SharedLister {
+       return &SharedListerMock{}
+}
+func (s *SharedListerMock) NodeLister() *NodeInfoListerMock {
+       return s.nodeLister
+}
+func NewSharedListerMock() *SharedListerMock {
+       return &SharedListerMock{
+               nodeLister: &NodeInfoListerMock{
+                       nodeInfos: make([]fwk.NodeInfo, 0),
+               },
        }
 }
diff --git a/pkg/plugin/support/shared_lister.go 
b/pkg/common/test/storageinfo_lister_mock.go
similarity index 55%
copy from pkg/plugin/support/shared_lister.go
copy to pkg/common/test/storageinfo_lister_mock.go
index 425a27db..24502c46 100644
--- a/pkg/plugin/support/shared_lister.go
+++ b/pkg/common/test/storageinfo_lister_mock.go
@@ -16,32 +16,15 @@
  limitations under the License.
 */
 
-package support
+package test
 
-import (
-       fwk "k8s.io/kube-scheduler/framework"
-
-       "github.com/apache/yunikorn-k8shim/pkg/cache/external"
-)
-
-type sharedListerImpl struct {
-       nodeInfos    fwk.NodeInfoLister
-       storageInfos fwk.StorageInfoLister
+type StorageInfoListerMock struct {
 }
 
-func (s sharedListerImpl) NodeInfos() fwk.NodeInfoLister {
-       return s.nodeInfos
+func (s *StorageInfoListerMock) IsPVCUsedByPods(key string) bool {
+       return false
 }
 
-func (s sharedListerImpl) StorageInfos() fwk.StorageInfoLister {
-       return s.storageInfos
-}
-
-var _ fwk.SharedLister = &sharedListerImpl{}
-
-func NewSharedLister(cache *external.SchedulerCache) fwk.SharedLister {
-       return &sharedListerImpl{
-               nodeInfos:    NewNodeInfoLister(cache),
-               storageInfos: NewStorageInfoLister(cache),
-       }
+func NewStorageInfoListerMock() *StorageInfoListerMock {
+       return &StorageInfoListerMock{}
 }
diff --git a/pkg/plugin/predicates/predicate_manager_test.go 
b/pkg/plugin/predicates/predicate_manager_test.go
index 90af431a..0ab2b52c 100644
--- a/pkg/plugin/predicates/predicate_manager_test.go
+++ b/pkg/plugin/predicates/predicate_manager_test.go
@@ -19,7 +19,6 @@
 package predicates
 
 import (
-       "errors"
        "strconv"
        "strings"
        "testing"
@@ -30,8 +29,6 @@ import (
        "k8s.io/apimachinery/pkg/api/resource"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apiserver/pkg/util/feature"
-       "k8s.io/client-go/informers"
-       "k8s.io/client-go/kubernetes"
        "k8s.io/klog/v2"
        fwk "k8s.io/kube-scheduler/framework"
        v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
@@ -59,12 +56,8 @@ var (
 )
 
 func TestPreemptionPredicatesEmpty(t *testing.T) {
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
-
        ep := enabledPlugins(noderesources.Name)
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
 
        pod := &v1.Pod{}
@@ -76,12 +69,8 @@ func TestPreemptionPredicatesEmpty(t *testing.T) {
 }
 
 func TestPreemptionPredicates(t *testing.T) {
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
-
        ep := enabledPlugins(noderesources.Name)
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
 
        pod := newResourcePod(framework.Resource{MilliCPU: 500, Memory: 
5000000})
@@ -128,12 +117,8 @@ func TestPreemptionPredicates(t *testing.T) {
 }
 
 func TestEventsToRegister(t *testing.T) {
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
-
        ep := enabledPlugins(nodename.Name, interpodaffinity.Name, 
podtopologyspread.Name)
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
 
        var queueingHintFn fwk.QueueingHintFn = func(logger klog.Logger, pod 
*v1.Pod, oldObj, newObj interface{}) (fwk.QueueingHint, error) {
@@ -154,12 +139,8 @@ func TestEventsToRegister(t *testing.T) {
 }
 
 func TestPodFitsHost(t *testing.T) {
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
-
        ep := enabledPlugins(nodename.Name)
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
        tests := []struct {
                pod  *v1.Pod
@@ -241,11 +222,8 @@ func newPod(host string, hostPortInfos ...string) *v1.Pod {
 }
 
 func TestPodFitsHostPorts(t *testing.T) {
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
        ep := enabledPlugins(nodeports.Name)
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
 
        tests := []struct {
@@ -358,11 +336,8 @@ func TestPodFitsHostPorts(t *testing.T) {
 
 //nolint:funlen
 func TestPodFitsSelector(t *testing.T) {
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
        ep := enabledPlugins(nodeports.Name, nodeaffinity.Name)
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
 
        tests := []struct {
@@ -1118,11 +1093,8 @@ func TestEnableOptionalKubernetesFeatureGates(t 
*testing.T) {
 }
 
 func TestRunGeneralPredicates(t *testing.T) {
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
        ep := enabledPlugins(noderesources.Name, nodename.Name, nodeports.Name, 
nodevolumelimits.CSIName)
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
 
        resourceTests := []struct {
@@ -1197,11 +1169,8 @@ func TestRunGeneralPredicates(t *testing.T) {
 
 //nolint:funlen
 func TestInterPodAffinity(t *testing.T) {
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
        ep := enabledPlugins(interpodaffinity.Name, nodeaffinity.Name)
+       handle, lister := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
 
        podLabel := map[string]string{"service": "securityscan"}
@@ -2134,10 +2103,10 @@ func TestInterPodAffinity(t *testing.T) {
 
                        nodeInfo := framework.NewNodeInfo(podsOnNode...)
                        nodeInfo.SetNode(test.node)
-                       lister.nodeLister.nodeInfos = []fwk.NodeInfo{nodeInfo}
-                       plugin, err := predicateManager.Predicates(test.pod, 
nodeInfo, true)
+                       lister.NodeLister().Set([]fwk.NodeInfo{nodeInfo})
+                       pl, err := predicateManager.Predicates(test.pod, 
nodeInfo, true)
                        if (err == nil) != test.fits {
-                               t.Errorf("%s expected fit state '%t' did not 
match real state and err = %v, plugin = %v", test.name, test.fits, err, plugin)
+                               t.Errorf("%s expected fit state '%t' did not 
match real state and err = %v, plugin = %v", test.name, test.fits, err, pl)
                        }
                })
        }
@@ -2158,11 +2127,8 @@ func TestReserveAlloc(t *testing.T) {
        nodeInfo.SetNode(node)
 
        // no predicates configured that are run by reservations
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
        ep := enabledPlugins()
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
        _, err := predicateManager.Predicates(pod, nodeInfo, false)
        assert.NilError(t, err, "error should have been nil, no predicates 
given")
@@ -2202,11 +2168,8 @@ func TestReserveNodeSelector(t *testing.T) {
        nodeInfo := framework.NewNodeInfo(pod)
        nodeInfo.SetNode(node)
 
-       clientSet := clientSet()
-       informerFactory := informerFactory(clientSet)
-       lister := lister()
-       handle := support.NewFrameworkHandle(lister, informerFactory, 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
        ep := enabledPlugins(nodename.Name, nodeports.Name, 
podtopologyspread.Name, nodeaffinity.Name)
+       handle, _ := getFrameworkHandle()
        predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
 
        testCases := []struct {
@@ -2235,22 +2198,6 @@ func TestReserveNodeSelector(t *testing.T) {
        }
 }
 
-func lister() *sharedListerMock {
-       return &sharedListerMock{
-               nodeLister: &nodeListerMock{
-                       nodeInfos: make([]fwk.NodeInfo, 0),
-               },
-       }
-}
-
-func informerFactory(clientSet kubernetes.Interface) 
informers.SharedInformerFactory {
-       return informers.NewSharedInformerFactory(clientSet, 0)
-}
-
-func clientSet() kubernetes.Interface {
-       return client.NewKubeClientMock(false).GetClientSet()
-}
-
 func enabledPlugins(name ...string) map[string]bool {
        pm := make(map[string]bool)
        for _, k := range name {
@@ -2259,63 +2206,14 @@ func enabledPlugins(name ...string) map[string]bool {
        return pm
 }
 
-type sharedListerMock struct {
-       nodeLister    *nodeListerMock
-       storageLister *storageListerMock
-}
-
-func (s *sharedListerMock) NodeInfos() fwk.NodeInfoLister {
-       return s.nodeLister
-}
-
-func (s *sharedListerMock) StorageInfos() fwk.StorageInfoLister {
-       return s.storageLister
-}
-
-type nodeListerMock struct {
-       nodeInfos []fwk.NodeInfo
-}
-
-func (n *nodeListerMock) List() ([]fwk.NodeInfo, error) {
-       return n.nodeInfos, nil
-}
-
-func (n *nodeListerMock) HavePodsWithAffinityList() ([]fwk.NodeInfo, error) {
-       result := make([]fwk.NodeInfo, 0, len(n.nodeInfos))
-       for _, node := range n.nodeInfos {
-               if len(node.GetPodsWithAffinity()) > 0 {
-                       result = append(result, node)
-               }
-       }
-       return result, nil
-}
-
-func (n *nodeListerMock) HavePodsWithRequiredAntiAffinityList() 
([]fwk.NodeInfo, error) {
-       result := make([]fwk.NodeInfo, 0, len(n.nodeInfos))
-       for _, node := range n.nodeInfos {
-               if len(node.GetPodsWithRequiredAntiAffinity()) > 0 {
-                       result = append(result, node)
-               }
-       }
-       return result, nil
-}
-
-func (n *nodeListerMock) Get(nodeName string) (fwk.NodeInfo, error) {
-       for _, node := range n.nodeInfos {
-               if node.Node().Name == nodeName {
-                       return node, nil
-               }
-       }
-       return nil, errors.New("node not found")
-}
-
-type storageListerMock struct {
-}
-
-func (s *storageListerMock) IsPVCUsedByPods(key string) bool {
-       return false
+func getFrameworkHandle() (fwk.Handle, *test.SharedListerMock) {
+       clientSet := support.ClientSet()
+       si := support.InformerFactory(clientSet)
+       lister := support.Lister()
+       handle := support.NewFrameworkHandle(lister, si, clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()),
 support.SharedDRAManager())
+       return handle, lister
 }
 
-var _ fwk.SharedLister = &sharedListerMock{}
-var _ fwk.NodeInfoLister = &nodeListerMock{}
-var _ fwk.StorageInfoLister = &storageListerMock{}
+var _ fwk.SharedLister = test.NewSharedListerMock()
+var _ fwk.NodeInfoLister = test.NewNodeInfoListerMock()
+var _ fwk.StorageInfoLister = test.NewStorageInfoListerMock()
diff --git a/pkg/plugin/support/framework_handle.go 
b/pkg/plugin/support/framework_handle.go
index 86a633b4..30f3c37a 100644
--- a/pkg/plugin/support/framework_handle.go
+++ b/pkg/plugin/support/framework_handle.go
@@ -40,25 +40,43 @@ type frameworkHandle struct {
        sharedInformerFactory informers.SharedInformerFactory
        clientSet             kubernetes.Interface
        parallelizer          fwk.Parallelizer
-       sharedCSIManager      fwk.CSIManager
+       csiManager            fwk.CSIManager
+       sharedDRAManager      fwk.SharedDRAManager
 }
 
-func (p frameworkHandle) SharedCSIManager() fwk.CSIManager {
-       log.Log(log.ShimFramework).Debug("BUG: Should not be used by plugins")
-       return p.sharedCSIManager
+func (p frameworkHandle) AddPodInPreBind(uid types.UID, cancel 
context.CancelCauseFunc) {
+       log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
 }
 
-func (p frameworkHandle) ProfileName() string {
+func (p frameworkHandle) GetPodInPreBind(uid types.UID) fwk.PodInPreBind {
        log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
-       return ""
+       return nil
 }
 
-func (p frameworkHandle) WorkloadManager() fwk.WorkloadManager {
+func (p frameworkHandle) RemovePodInPreBind(uid types.UID) {
+       log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
+}
+
+func (p frameworkHandle) EventRecorder() events.EventRecorderLogger {
        log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
        return nil
 }
 
-func (p frameworkHandle) SignPod(ctx context.Context, pod *v1.Pod, 
recordPluginStats bool) fwk.PodSignature {
+func (p frameworkHandle) PodGroupManager() fwk.PodGroupManager {
+       log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
+       return nil
+}
+
+func (p frameworkHandle) SharedCSIManager() fwk.CSIManager {
+       return p.csiManager
+}
+
+func (p frameworkHandle) ProfileName() string {
+       log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
+       return ""
+}
+
+func (p frameworkHandle) SignPod(ctx context.Context, pod *v1.Pod) 
fwk.PodSignature {
        log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
        return nil
 }
@@ -146,11 +164,6 @@ func (p frameworkHandle) RejectWaitingPod(_ types.UID) 
bool {
        return false
 }
 
-func (p frameworkHandle) EventRecorder() events.EventRecorder {
-       log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
-       return nil
-}
-
 func (p frameworkHandle) KubeConfig() *rest.Config {
        log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
        return nil
@@ -172,8 +185,7 @@ func (p frameworkHandle) Activate(_ klog.Logger, _ 
map[string]*v1.Pod) {
 }
 
 func (p frameworkHandle) SharedDRAManager() fwk.SharedDRAManager {
-       log.Log(log.ShimFramework).Debug("BUG: Should not be used by plugins")
-       return nil
+       return p.sharedDRAManager
 }
 
 func (p frameworkHandle) APIDispatcher() fwk.APIDispatcher {
@@ -188,12 +200,13 @@ func (p frameworkHandle) APICacher() fwk.APICacher {
 
 var _ fwk.Handle = frameworkHandle{}
 
-func NewFrameworkHandle(sharedLister fwk.SharedLister, informerFactory 
informers.SharedInformerFactory, clientSet kubernetes.Interface, 
sharedCSIManager fwk.CSIManager) fwk.Handle {
+func NewFrameworkHandle(sharedLister fwk.SharedLister, informerFactory 
informers.SharedInformerFactory, clientSet kubernetes.Interface, csiManager 
fwk.CSIManager, draManager fwk.SharedDRAManager) fwk.Handle {
        return &frameworkHandle{
                sharedLister:          sharedLister,
                sharedInformerFactory: informerFactory,
                clientSet:             clientSet,
                parallelizer:          
parallelize.NewParallelizer(parallelize.DefaultParallelism),
-               sharedCSIManager:      sharedCSIManager,
+               csiManager:            csiManager,
+               sharedDRAManager:      draManager,
        }
 }
diff --git a/pkg/plugin/support/framework_handle_test.go 
b/pkg/plugin/support/framework_handle_test.go
index 99d49838..9d823387 100644
--- a/pkg/plugin/support/framework_handle_test.go
+++ b/pkg/plugin/support/framework_handle_test.go
@@ -22,54 +22,38 @@ import (
        "testing"
 
        "gotest.tools/v3/assert"
-       "k8s.io/client-go/informers"
-       "k8s.io/client-go/kubernetes"
-       fwk "k8s.io/kube-scheduler/framework"
 
-       "github.com/apache/yunikorn-k8shim/pkg/cache/external"
        "github.com/apache/yunikorn-k8shim/pkg/client"
        "github.com/apache/yunikorn-k8shim/pkg/common/test"
 )
 
 func TestNewFrameworkHandle(t *testing.T) {
-       clientSet := clientSet()
-       handle := NewFrameworkHandle(lister(), informerFactory(clientSet), 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
+       clientSet := ClientSet()
+       handle := NewFrameworkHandle(Lister(), InformerFactory(clientSet), 
clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()),
 SharedDRAManager())
        _, ok := handle.(*frameworkHandle)
        assert.Assert(t, ok, "handle was of wrong type")
 }
 
 func TestSnapshotSharedLister(t *testing.T) {
-       sl := lister()
-       clientSet := clientSet()
-       handle := NewFrameworkHandle(sl, informerFactory(clientSet), clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
+       sl := Lister()
+       clientSet := ClientSet()
+       handle := NewFrameworkHandle(sl, InformerFactory(clientSet), clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()),
 SharedDRAManager())
        sl2 := handle.SnapshotSharedLister()
        assert.Equal(t, sl, sl2, "wrong shared lister")
 }
 
 func TestSharedInformerFactory(t *testing.T) {
-       clientSet := clientSet()
-       si := informerFactory(clientSet)
-       handle := NewFrameworkHandle(lister(), si, clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
+       clientSet := ClientSet()
+       si := InformerFactory(clientSet)
+       lister := Lister()
+       handle := NewFrameworkHandle(lister, si, clientSet, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()),
 SharedDRAManager())
        si2 := handle.SharedInformerFactory()
        assert.Equal(t, si, si2, "wrong shared informer")
 }
 
 func TestClientSet(t *testing.T) {
-       cs := clientSet()
-       handle := NewFrameworkHandle(lister(), informerFactory(cs), cs, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()))
+       cs := ClientSet()
+       handle := NewFrameworkHandle(Lister(), InformerFactory(cs), cs, 
test.NewCSIManagerMock(client.NewMockedAPIProvider(false).GetAPIs().CSINodeInformer.Lister()),
 SharedDRAManager())
        cs2 := handle.ClientSet()
        assert.Equal(t, cs, cs2, "wrong clientset")
 }
-
-func lister() fwk.SharedLister {
-       cache := 
external.NewSchedulerCache(client.NewMockedAPIProvider(false).GetAPIs())
-       return NewSharedLister(cache)
-}
-
-func informerFactory(clientSet kubernetes.Interface) 
informers.SharedInformerFactory {
-       return informers.NewSharedInformerFactory(clientSet, 0)
-}
-
-func clientSet() kubernetes.Interface {
-       return client.NewKubeClientMock(false).GetClientSet()
-}
diff --git a/pkg/plugin/support/mock_helpers.go 
b/pkg/plugin/support/mock_helpers.go
new file mode 100644
index 00000000..0d74eb3a
--- /dev/null
+++ b/pkg/plugin/support/mock_helpers.go
@@ -0,0 +1,66 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package support
+
+import (
+       "context"
+
+       "k8s.io/apiserver/pkg/util/feature"
+       "k8s.io/client-go/informers"
+       "k8s.io/client-go/kubernetes"
+       "k8s.io/dynamic-resource-allocation/resourceslice/tracker"
+       "k8s.io/klog/v2"
+       "k8s.io/kubernetes/pkg/features"
+       "k8s.io/kubernetes/pkg/scheduler/framework/plugins/dynamicresources"
+       "k8s.io/kubernetes/pkg/scheduler/util/assumecache"
+
+       "github.com/apache/yunikorn-k8shim/pkg/client"
+       "github.com/apache/yunikorn-k8shim/pkg/common/test"
+)
+
+func InformerFactory(clientSet kubernetes.Interface) 
informers.SharedInformerFactory {
+       return informers.NewSharedInformerFactory(clientSet, 0)
+}
+
+func ClientSet() kubernetes.Interface {
+       return client.NewKubeClientMock(false).GetClientSet()
+}
+
+func Lister() *test.SharedListerMock {
+       return test.NewSharedListerMock()
+}
+
+func SharedDRAManager() *dynamicresources.DefaultDRAManager {
+       if 
feature.DefaultFeatureGate.Enabled(features.DynamicResourceAllocation) {
+               resourceClaimInformer := 
InformerFactory(ClientSet()).Resource().V1().ResourceClaims().Informer()
+               resourceClaimCache := 
assumecache.NewAssumeCache(klog.NewKlogr(), resourceClaimInformer, 
"ResourceClaim", "", nil)
+               resourceSliceTracker, err := 
tracker.StartTracker(context.TODO(), tracker.Options{
+                       EnableDeviceTaintRules: 
feature.DefaultFeatureGate.Enabled(features.DRADeviceTaints),
+                       SliceInformer:          
InformerFactory(ClientSet()).Resource().V1().ResourceSlices(),
+                       ClassInformer:          
InformerFactory(ClientSet()).Resource().V1().DeviceClasses(),
+                       TaintInformer:          
InformerFactory(ClientSet()).Resource().V1beta2().DeviceTaintRules()})
+               if err != nil {
+                       return nil
+               }
+               sharedDRAManager := 
dynamicresources.NewDRAManager(context.TODO(), resourceClaimCache, 
resourceSliceTracker, InformerFactory(ClientSet()))
+               return sharedDRAManager
+       } else {
+               return nil
+       }
+}
diff --git a/pkg/plugin/support/shared_lister.go 
b/pkg/plugin/support/shared_lister.go
index 425a27db..f86f6068 100644
--- a/pkg/plugin/support/shared_lister.go
+++ b/pkg/plugin/support/shared_lister.go
@@ -22,6 +22,7 @@ import (
        fwk "k8s.io/kube-scheduler/framework"
 
        "github.com/apache/yunikorn-k8shim/pkg/cache/external"
+       "github.com/apache/yunikorn-k8shim/pkg/log"
 )
 
 type sharedListerImpl struct {
@@ -29,6 +30,11 @@ type sharedListerImpl struct {
        storageInfos fwk.StorageInfoLister
 }
 
+func (s sharedListerImpl) PodGroupStates() fwk.PodGroupStateLister {
+       log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
+       return nil
+}
+
 func (s sharedListerImpl) NodeInfos() fwk.NodeInfoLister {
        return s.nodeInfos
 }
diff --git a/pkg/shim/scheduler.go b/pkg/shim/scheduler.go
index 3f2d3021..7f5a07f1 100644
--- a/pkg/shim/scheduler.go
+++ b/pkg/shim/scheduler.go
@@ -75,6 +75,10 @@ func NewShimScheduler(scheduler api.SchedulerAPI, configs 
*conf.SchedulerConf, b
                return nil
        }
        context := cache.NewContextWithBootstrapConfigMaps(apiFactory, 
bootstrapConfigMaps)
+       if context == nil {
+               log.Log(log.Shim).Fatal("problem in creating the context")
+               return nil
+       }
        rmCallback := cache.NewAsyncRMCallback(context)
 
        eventBroadcaster := k8events.NewBroadcaster(&k8events.EventSinkImpl{
diff --git a/test/e2e/framework/helpers/k8s/k8s_utils.go 
b/test/e2e/framework/helpers/k8s/k8s_utils.go
index e450bec8..5c24d813 100644
--- a/test/e2e/framework/helpers/k8s/k8s_utils.go
+++ b/test/e2e/framework/helpers/k8s/k8s_utils.go
@@ -32,6 +32,8 @@ import (
        "github.com/onsi/ginkgo/v2"
        "github.com/onsi/gomega"
        clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
+       "k8s.io/client-go/transport/spdy"
+       "k8s.io/streaming/pkg/httpstream"
 
        "go.uber.org/zap"
        appsv1 "k8s.io/api/apps/v1"
@@ -43,7 +45,6 @@ import (
        k8serrors "k8s.io/apimachinery/pkg/api/errors"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
        "k8s.io/apimachinery/pkg/types"
-       "k8s.io/apimachinery/pkg/util/httpstream"
        "k8s.io/apimachinery/pkg/util/wait"
        "k8s.io/apimachinery/pkg/version"
        "k8s.io/cli-runtime/pkg/genericclioptions"
@@ -53,9 +54,8 @@ import (
        "k8s.io/client-go/tools/cache"
        "k8s.io/client-go/tools/clientcmd"
        "k8s.io/client-go/tools/portforward"
-       "k8s.io/client-go/transport/spdy"
        "k8s.io/client-go/util/retry"
-       resourcehelper "k8s.io/kubectl/pkg/util/resource"
+       helper "k8s.io/component-helpers/resource"
        podutil "k8s.io/kubernetes/pkg/api/v1/pod"
 
        "github.com/apache/yunikorn-k8shim/pkg/common/constants"
@@ -349,7 +349,7 @@ func SetPortForwarder(req PortForwardAPodRequest, dialer 
httpstream.Dialer, port
 
        var err error
        if fw == nil {
-               fw, err = portforward.New(dialer, []string{fmt.Sprintf("%d:%d", 
req.LocalPort, req.PodPort)}, req.StopCh, req.ReadyCh, req.Streams.Out, 
req.Streams.ErrOut)
+               fw, err = portforward.NewForStreaming(dialer, 
[]string{fmt.Sprintf("%d:%d", req.LocalPort, req.PodPort)}, req.StopCh, 
req.ReadyCh, req.Streams.Out, req.Streams.ErrOut)
        }
        return err
 }
@@ -364,7 +364,7 @@ func (k *KubeCtl) PortForwardPod(req 
PortForwardAPodRequest) error {
                return err
        }
 
-       dialer := spdy.NewDialer(upgrader, &http.Client{Transport: transport}, 
http.MethodPost, &url.URL{Scheme: "https", Path: path, Host: hostIP})
+       dialer := spdy.NewDialerForStreaming(upgrader, &http.Client{Transport: 
transport}, http.MethodPost, &url.URL{Scheme: "https", Path: path, Host: 
hostIP})
        err = SetPortForwarder(req, dialer, []string{fmt.Sprintf("%d:%d", 
req.LocalPort, req.PodPort)})
        if err != nil {
                return err
@@ -1492,7 +1492,7 @@ func GetPodsTotalRequests(podList *v1.PodList) (reqs 
v1.ResourceList) {
                pod := podList.Items[i]
                podReqs := v1.ResourceList{}
                if pod.Status.Phase == v1.PodRunning {
-                       podReqs, _ = resourcehelper.PodRequestsAndLimits(&pod)
+                       podReqs = helper.PodRequests(&pod, 
helper.PodResourcesOptions{Reuse: podReqs})
                }
                for podReqName, podReqValue := range podReqs {
                        if value, ok := reqs[podReqName]; !ok {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to