This is an automated email from the ASF dual-hosted git repository.
pbacsko 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 2322206c [YUNIKORN-3156] Update K8s dependency to 1.34 (#990)
2322206c is described below
commit 2322206c00c5e93c9e4e291a2856722ba42becf3
Author: Peter Bacsko <[email protected]>
AuthorDate: Mon Dec 1 13:43:07 2025 +0100
[YUNIKORN-3156] Update K8s dependency to 1.34 (#990)
Closes: #990
Signed-off-by: Peter Bacsko <[email protected]>
---
.github/workflows/pre-commit.yml | 1 +
Makefile | 2 +-
go.mod | 191 +++++++--------
go.sum | 307 +++++++++++++-----------
pkg/cache/application_test.go | 8 +
pkg/cache/context.go | 4 +-
pkg/cache/external/scheduler_cache.go | 35 +--
pkg/cache/external/scheduler_cache_test.go | 5 +-
pkg/cache/scheduler_callback_test.go | 3 +-
pkg/plugin/predicates/predicate_manager.go | 63 +++--
pkg/plugin/predicates/predicate_manager_test.go | 40 +--
pkg/plugin/scheduler_plugin.go | 37 +--
pkg/plugin/support/framework_handle.go | 39 +--
pkg/plugin/support/nodeinfo_lister.go | 9 +-
pkg/plugin/support/nodeinfo_lister_test.go | 3 +-
pkg/shim/scheduler_test.go | 8 +
16 files changed, 421 insertions(+), 334 deletions(-)
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
index 3db2dfc9..7c7dfd5f 100644
--- a/.github/workflows/pre-commit.yml
+++ b/.github/workflows/pre-commit.yml
@@ -49,6 +49,7 @@ jobs:
matrix:
k8s:
[
+ v1.34.0,
v1.33.1,
v1.32.2,
v1.31.6,
diff --git a/Makefile b/Makefile
index e3718493..af404bf1 100644
--- a/Makefile
+++ b/Makefile
@@ -71,7 +71,7 @@ export PATH := $(BASE_DIR)/$(TOOLS_DIR):$(GO_EXE_PATH):$(PATH)
# Default values for dev cluster
ifeq ($(K8S_VERSION),)
-K8S_VERSION := v1.33.1
+K8S_VERSION := v1.34.0
endif
ifeq ($(CLUSTER_NAME),)
CLUSTER_NAME := yk8s
diff --git a/go.mod b/go.mod
index f39eaa6c..847e648a 100644
--- a/go.mod
+++ b/go.mod
@@ -27,30 +27,31 @@ require (
github.com/apache/yunikorn-scheduler-interface
v0.0.0-20251021140208-d3b357b98dcd
github.com/google/go-cmp v0.7.0
github.com/google/uuid v1.6.0
- github.com/looplab/fsm v1.0.2
- github.com/onsi/ginkgo/v2 v2.21.0
- github.com/onsi/gomega v1.35.1
- github.com/prometheus/client_golang v1.22.0
+ github.com/looplab/fsm v1.0.3
+ github.com/onsi/ginkgo/v2 v2.27.2
+ github.com/onsi/gomega v1.38.2
+ github.com/prometheus/client_golang v1.23.2
github.com/sasha-s/go-deadlock v0.3.6
go.uber.org/zap v1.27.0
go.yaml.in/yaml/v3 v3.0.4
gotest.tools/v3 v3.5.2
- k8s.io/api v0.33.4
- k8s.io/apimachinery v0.33.4
- k8s.io/apiserver v0.33.4
- k8s.io/cli-runtime v0.33.4
- k8s.io/client-go v0.33.4
- k8s.io/component-base v0.33.4
- k8s.io/component-helpers v0.33.4
+ k8s.io/api v0.34.2
+ k8s.io/apimachinery v0.34.2
+ k8s.io/apiserver v0.34.2
+ k8s.io/cli-runtime v0.34.2
+ k8s.io/client-go v1.5.2
+ k8s.io/component-base v0.34.2
+ k8s.io/component-helpers v0.34.2
k8s.io/klog/v2 v2.130.1
- k8s.io/kube-scheduler v0.33.4
- k8s.io/kubectl v0.33.4
- k8s.io/kubernetes v1.33.4
+ k8s.io/kube-scheduler v0.34.2
+ k8s.io/kubectl v0.34.2
+ k8s.io/kubernetes v1.34.2
)
require (
- cel.dev/expr v0.19.1 // indirect
+ cel.dev/expr v0.24.0 // indirect
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 //
indirect
+ github.com/Masterminds/semver/v3 v3.4.0 // indirect
github.com/NYTimes/gziphandler v1.1.1 // indirect
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
@@ -61,12 +62,12 @@ require (
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc //
indirect
github.com/distribution/reference v0.6.0 // indirect
- github.com/emicklei/go-restful/v3 v3.11.0 // indirect
+ github.com/emicklei/go-restful/v3 v3.12.2 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
- github.com/fsnotify/fsnotify v1.7.0 // indirect
- github.com/fxamacker/cbor/v2 v2.7.0 // indirect
+ github.com/fsnotify/fsnotify v1.9.0 // indirect
+ github.com/fxamacker/cbor/v2 v2.9.0 // indirect
github.com/go-errors/errors v1.4.2 // indirect
- github.com/go-logr/logr v1.4.2 // indirect
+ github.com/go-logr/logr v1.4.3 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-openapi/jsonpointer v0.21.0 // indirect
github.com/go-openapi/jsonreference v0.20.2 // indirect
@@ -75,14 +76,13 @@ require (
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/btree v1.1.3 // indirect
- github.com/google/cel-go v0.23.2 // indirect
- github.com/google/gnostic-models v0.6.9 // indirect
- github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db // indirect
- github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // 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/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 //
indirect
github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 //
indirect
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // 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
@@ -93,70 +93,73 @@ require (
github.com/moby/spdystream v0.5.0 // indirect
github.com/moby/term v0.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd //
indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
+ 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/opencontainers/go-digest v1.0.0 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
- github.com/petermattis/goid v0.0.0-20250813065127-a731cc31b4fe //
indirect
+ github.com/petermattis/goid v0.0.0-20250904145737-900bdf8bb490 //
indirect
github.com/pkg/errors v0.9.1 // indirect
- github.com/prometheus/client_model v0.6.1 // indirect
- github.com/prometheus/common v0.62.0 // indirect
- github.com/prometheus/procfs v0.15.1 // indirect
- github.com/spf13/cobra v1.8.1 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/prometheus/client_model v0.6.2 // indirect
+ github.com/prometheus/common v0.66.1 // indirect
+ github.com/prometheus/procfs v0.16.1 // indirect
+ github.com/spf13/cobra v1.9.1 // indirect
+ github.com/spf13/pflag v1.0.6 // indirect
github.com/stoewer/go-strcase v1.3.0 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/xlab/treeprint v1.2.0 // indirect
- go.etcd.io/etcd/api/v3 v3.5.21 // indirect
- go.etcd.io/etcd/client/pkg/v3 v3.5.21 // indirect
- go.etcd.io/etcd/client/v3 v3.5.21 // indirect
+ go.etcd.io/etcd/api/v3 v3.6.4 // indirect
+ go.etcd.io/etcd/client/pkg/v3 v3.6.4 // indirect
+ go.etcd.io/etcd/client/v3 v3.6.4 // indirect
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
v0.58.0 // indirect
+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
v0.60.0 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0
// indirect
- go.opentelemetry.io/otel v1.34.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0
// indirect
- go.opentelemetry.io/otel/metric v1.34.0 // indirect
+ go.opentelemetry.io/otel v1.35.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0
// indirect
+ go.opentelemetry.io/otel/metric v1.35.0 // indirect
go.opentelemetry.io/otel/sdk v1.34.0 // indirect
- go.opentelemetry.io/otel/trace v1.34.0 // indirect
- go.opentelemetry.io/proto/otlp v1.4.0 // indirect
+ go.opentelemetry.io/otel/trace v1.35.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.5.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
+ go.yaml.in/yaml/v2 v2.4.2 // indirect
golang.org/x/crypto v0.41.0 // indirect
golang.org/x/exp v0.0.0-20250228200357-dead58393ab7 // indirect
- golang.org/x/net v0.43.0 // indirect
- golang.org/x/oauth2 v0.28.0 // indirect
- golang.org/x/sync v0.16.0 // indirect
- golang.org/x/sys v0.35.0 // indirect
+ golang.org/x/mod v0.30.0 // indirect
+ golang.org/x/net v0.47.0 // indirect
+ golang.org/x/oauth2 v0.30.0 // indirect
+ golang.org/x/sync v0.18.0 // indirect
+ golang.org/x/sys v0.38.0 // indirect
golang.org/x/term v0.34.0 // indirect
- golang.org/x/text v0.28.0 // indirect
+ golang.org/x/text v0.31.0 // indirect
golang.org/x/time v0.10.0 // indirect
- golang.org/x/tools v0.35.0 // indirect
- google.golang.org/genproto/googleapis/api
v0.0.0-20250106144421-5f5ef82da422 // indirect
- google.golang.org/genproto/googleapis/rpc
v0.0.0-20250115164207-1a7da9e5054f // indirect
- google.golang.org/grpc v1.71.0 // indirect
- google.golang.org/protobuf v1.36.5 // indirect
+ golang.org/x/tools v0.39.0 // indirect
+ google.golang.org/genproto/googleapis/api
v0.0.0-20250303144028-a0af3efb3deb // indirect
+ google.golang.org/genproto/googleapis/rpc
v0.0.0-20250303144028-a0af3efb3deb // indirect
+ google.golang.org/grpc v1.72.1 // indirect
+ google.golang.org/protobuf v1.36.8 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/apiextensions-apiserver v0.0.0 // indirect
- k8s.io/cloud-provider v0.33.4 // indirect
- k8s.io/controller-manager v0.33.4 // indirect
- k8s.io/csi-translation-lib v0.33.4 // indirect
- k8s.io/dynamic-resource-allocation v0.33.4 // indirect
- k8s.io/kms v0.33.4 // indirect
- k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
- k8s.io/kubelet v0.33.4 // indirect
- k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
+ k8s.io/cloud-provider v0.34.2 // indirect
+ k8s.io/controller-manager v0.34.2 // indirect
+ k8s.io/csi-translation-lib v0.34.2 // indirect
+ k8s.io/dynamic-resource-allocation v0.34.2 // indirect
+ k8s.io/kms v0.34.2 // indirect
+ k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
+ k8s.io/kubelet v0.34.2 // indirect
+ k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 //
indirect
- sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
- sigs.k8s.io/kustomize/api v0.19.0 // indirect
- sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
+ sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+ sigs.k8s.io/kustomize/api v0.20.1 // indirect
+ sigs.k8s.io/kustomize/kyaml v0.20.1 // indirect
sigs.k8s.io/randfill v1.0.0 // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
- sigs.k8s.io/yaml v1.4.0 // indirect
+ sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
+ sigs.k8s.io/yaml v1.6.0 // indirect
)
replace (
@@ -167,35 +170,35 @@ replace (
golang.org/x/sys => golang.org/x/sys v0.35.0
golang.org/x/text => golang.org/x/text v0.28.0
golang.org/x/tools => golang.org/x/tools v0.35.0
- k8s.io/api => k8s.io/api v0.33.4
- k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.33.4
- k8s.io/apimachinery => k8s.io/apimachinery v0.33.4
- k8s.io/apiserver => k8s.io/apiserver v0.33.4
- k8s.io/cli-runtime => k8s.io/cli-runtime v0.33.4
- k8s.io/client-go => k8s.io/client-go v0.33.4
- k8s.io/cloud-provider => k8s.io/cloud-provider v0.33.4
- k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.33.4
- k8s.io/code-generator => k8s.io/code-generator v0.33.4
- k8s.io/component-base => k8s.io/component-base v0.33.4
- k8s.io/component-helpers => k8s.io/component-helpers v0.33.4
- k8s.io/controller-manager => k8s.io/controller-manager v0.33.4
- k8s.io/cri-api => k8s.io/cri-api v0.33.4
- k8s.io/cri-client => k8s.io/cri-client v0.33.4
- k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.33.4
- k8s.io/dynamic-resource-allocation =>
k8s.io/dynamic-resource-allocation v0.33.4
- k8s.io/endpointslice => k8s.io/endpointslice v0.33.4
- k8s.io/externaljwt => k8s.io/externaljwt v0.33.4
+ k8s.io/api => k8s.io/api v0.34.2
+ k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.34.2
+ k8s.io/apimachinery => k8s.io/apimachinery v0.34.2
+ k8s.io/apiserver => k8s.io/apiserver v0.34.2
+ k8s.io/cli-runtime => k8s.io/cli-runtime v0.34.2
+ k8s.io/client-go => k8s.io/client-go v0.34.2
+ k8s.io/cloud-provider => k8s.io/cloud-provider v0.34.2
+ k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.34.2
+ k8s.io/code-generator => k8s.io/code-generator v0.34.2
+ k8s.io/component-base => k8s.io/component-base v0.34.2
+ k8s.io/component-helpers => k8s.io/component-helpers v0.34.2
+ k8s.io/controller-manager => k8s.io/controller-manager v0.34.2
+ k8s.io/cri-api => k8s.io/cri-api v0.34.2
+ k8s.io/cri-client => k8s.io/cri-client v0.34.2
+ k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.34.2
+ k8s.io/dynamic-resource-allocation =>
k8s.io/dynamic-resource-allocation v0.34.2
+ k8s.io/endpointslice => k8s.io/endpointslice v0.34.2
+ k8s.io/externaljwt => k8s.io/externaljwt v0.34.2
k8s.io/klog/v2 => k8s.io/klog/v2 v2.130.1
- k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.33.4
- k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.33.4
- k8s.io/kube-proxy => k8s.io/kube-proxy v0.33.4
- k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.33.4
- k8s.io/kubectl => k8s.io/kubectl v0.33.4
- k8s.io/kubelet => k8s.io/kubelet v0.33.4
- k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.33.4
- k8s.io/metrics => k8s.io/metrics v0.33.4
- k8s.io/mount-utils => k8s.io/mount-utils v0.33.4
- k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.33.4
- k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.33.4
- k8s.io/utils => k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
+ k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.34.2
+ k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.34.2
+ k8s.io/kube-proxy => k8s.io/kube-proxy v0.34.2
+ k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.34.2
+ k8s.io/kubectl => k8s.io/kubectl v0.34.2
+ k8s.io/kubelet => k8s.io/kubelet v0.34.2
+ k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.34.2
+ k8s.io/metrics => k8s.io/metrics v0.34.2
+ k8s.io/mount-utils => k8s.io/mount-utils v0.34.2
+ k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.34.2
+ k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.34.2
+ k8s.io/utils => k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
)
diff --git a/go.sum b/go.sum
index a190bf21..cd97fa45 100644
--- a/go.sum
+++ b/go.sum
@@ -1,7 +1,9 @@
-cel.dev/expr v0.19.1 h1:NciYrtDRIR0lNCnH1LFJegdjspNx9fI59O7TWcua/W4=
-cel.dev/expr v0.19.1/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw=
+cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY=
+cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161
h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0=
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod
h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
+github.com/Masterminds/semver/v3 v3.4.0
h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
+github.com/Masterminds/semver/v3 v3.4.0/go.mod
h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=
github.com/NYTimes/gziphandler v1.1.1
h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I=
github.com/NYTimes/gziphandler v1.1.1/go.mod
h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c=
github.com/antlr4-go/antlr/v4 v4.13.0
h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
@@ -24,7 +26,7 @@ github.com/coreos/go-semver v0.3.1
h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr
github.com/coreos/go-semver v0.3.1/go.mod
h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
github.com/coreos/go-systemd/v22 v22.5.0
h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod
h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod
h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod
h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
github.com/creack/pty v1.1.9/go.mod
h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
github.com/creack/pty v1.1.18/go.mod
h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
@@ -36,19 +38,25 @@ github.com/distribution/reference v0.6.0
h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr
github.com/distribution/reference v0.6.0/go.mod
h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/dustin/go-humanize v1.0.1
h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
github.com/dustin/go-humanize v1.0.1/go.mod
h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
-github.com/emicklei/go-restful/v3 v3.11.0
h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
-github.com/emicklei/go-restful/v3 v3.11.0/go.mod
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
+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/felixge/httpsnoop v1.0.4
h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod
h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/fsnotify/fsnotify v1.7.0
h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
-github.com/fsnotify/fsnotify v1.7.0/go.mod
h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
-github.com/fxamacker/cbor/v2 v2.7.0
h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
-github.com/fxamacker/cbor/v2 v2.7.0/go.mod
h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
+github.com/fsnotify/fsnotify v1.9.0
h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
+github.com/fsnotify/fsnotify v1.9.0/go.mod
h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+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=
+github.com/gkampitakis/ciinfo v0.3.2/go.mod
h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo=
+github.com/gkampitakis/go-diff v1.3.2
h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M=
+github.com/gkampitakis/go-diff v1.3.2/go.mod
h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk=
+github.com/gkampitakis/go-snaps v0.5.15
h1:amyJrvM1D33cPHwVrjo9jQxX8g/7E2wYdZ+01KS3zGE=
+github.com/gkampitakis/go-snaps v0.5.15/go.mod
h1:HNpx/9GoKisdhw9AFOBT1N7DBs9DiHo/hGheFGBZ+mc=
github.com/go-errors/errors v1.4.2
h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
github.com/go-errors/errors v1.4.2/go.mod
h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
github.com/go-logr/logr v1.2.2/go.mod
h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
-github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
-github.com/go-logr/logr v1.4.2/go.mod
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
+github.com/go-logr/logr v1.4.3/go.mod
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod
h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
@@ -63,48 +71,49 @@ github.com/go-openapi/swag v0.23.0
h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr
github.com/go-openapi/swag v0.23.0/go.mod
h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
github.com/go-task/slim-sprig/v3 v3.0.0
h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod
h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
+github.com/goccy/go-yaml v1.18.0
h1:8W7wMFS12Pcas7KU+VVkaiCng+kG8QiFeFwzFb+rwuw=
+github.com/goccy/go-yaml v1.18.0/go.mod
h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA=
github.com/godbus/dbus/v5 v5.0.4/go.mod
h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod
h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
-github.com/golang-jwt/jwt/v4 v4.5.2
h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI=
-github.com/golang-jwt/jwt/v4 v4.5.2/go.mod
h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
+github.com/golang-jwt/jwt/v5 v5.2.2
h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
+github.com/golang-jwt/jwt/v5 v5.2.2/go.mod
h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang/protobuf v1.5.4
h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod
h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
github.com/google/btree v1.1.3/go.mod
h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
-github.com/google/cel-go v0.23.2
h1:UdEe3CvQh3Nv+E/j9r1Y//WO0K0cSyD7/y0bzyLIMI4=
-github.com/google/cel-go v0.23.2/go.mod
h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo=
-github.com/google/gnostic-models v0.6.9
h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw=
-github.com/google/gnostic-models v0.6.9/go.mod
h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw=
-github.com/google/go-cmp v0.5.9/go.mod
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/cel-go v0.26.0
h1:DPGjXackMpJWH680oGY4lZhYjIameYmR+/6RBdDGmaI=
+github.com/google/cel-go v0.26.0/go.mod
h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM=
+github.com/google/gnostic-models v0.7.0
h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
+github.com/google/gnostic-models v0.7.0/go.mod
h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
github.com/google/go-cmp v0.6.0/go.mod
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
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-20241029153458-d1b30febd7db
h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo=
-github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod
h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
-github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
-github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod
h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
+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/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/grpc-ecosystem/go-grpc-middleware v1.3.0
h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
-github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod
h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
+github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1
h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA=
+github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus
v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU=
+github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.0
h1:FbSCl+KggFl+Ocym490i/EyXF4lPgLoUtcSWquBM0Rs=
+github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.0/go.mod
h1:qOchhhIlmRcqk/O9uCo/puJlyo07YINaIqdZfZG3Jkc=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod
h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0
h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod
h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0
h1:TmHmbvxPmaegwhDubVz0lICL0J5Ka2vwTzhoePEXsGE=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.24.0/go.mod
h1:qztMSjm835F2bXf+5HKAPIS5qsmQDqZna/PgVt4rWtI=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3
h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod
h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI=
github.com/inconshreveable/mousetrap v1.1.0
h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
github.com/inconshreveable/mousetrap v1.1.0/go.mod
h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/jonboulle/clockwork v0.4.0
h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4=
-github.com/jonboulle/clockwork v0.4.0/go.mod
h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc=
+github.com/jonboulle/clockwork v0.5.0
h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbdFz6I=
+github.com/jonboulle/clockwork v0.5.0/go.mod
h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60=
github.com/josharian/intern v1.0.0
h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod
h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/joshdk/go-junit v1.0.0
h1:S86cUKIdwBHWwA6xCmFlf3RTLfVXYQfvanM5Uh+K6GE=
+github.com/joshdk/go-junit v1.0.0/go.mod
h1:TiiV0PqkaNfFXjEiyjWM3XXrhVyCa1K4Zfga6W52ung=
github.com/json-iterator/go v1.1.12
h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod
h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/julienschmidt/httprouter v1.3.0
h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
@@ -124,10 +133,14 @@ github.com/kylelemons/godebug v1.1.0
h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod
h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de
h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod
h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
-github.com/looplab/fsm v1.0.2 h1:f0kdMzr4CRpXtaKKRUxwLYJ7PirTdwrtNumeLN+mDx8=
-github.com/looplab/fsm v1.0.2/go.mod
h1:PmD3fFvQEIsjMEfvZdrCDZ6y8VwKTwWNjlpEr6IKPO4=
+github.com/looplab/fsm v1.0.3 h1:qtxBsa2onOs0qFOtkqwf5zE0uP0+Te+wlIvXctPKpcw=
+github.com/looplab/fsm v1.0.3/go.mod
h1:PmD3fFvQEIsjMEfvZdrCDZ6y8VwKTwWNjlpEr6IKPO4=
github.com/mailru/easyjson v0.7.7
h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod
h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/maruel/natural v1.1.1
h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo=
+github.com/maruel/natural v1.1.1/go.mod
h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg=
+github.com/mfridman/tparse v0.18.0
h1:wh6dzOKaIwkUGyKgOntDW4liXSo37qg5AXbIhkMV3vE=
+github.com/mfridman/tparse v0.18.0/go.mod
h1:gEvqZTuCgEhPbYk/2lS3Kcxg1GmTxxU7kTC8DvP0i/A=
github.com/moby/spdystream v0.5.0
h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU=
github.com/moby/spdystream v0.5.0/go.mod
h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0=
@@ -135,36 +148,38 @@ github.com/moby/term v0.5.0/go.mod
h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2
h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
github.com/modern-go/reflect2 v1.0.2/go.mod
h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee
h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod
h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
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.21.0
h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM=
-github.com/onsi/ginkgo/v2 v2.21.0/go.mod
h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo=
-github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4=
-github.com/onsi/gomega v1.35.1/go.mod
h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog=
+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/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
+github.com/onsi/gomega v1.38.2/go.mod
h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
github.com/opencontainers/go-digest v1.0.0
h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod
h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/peterbourgon/diskv v2.0.1+incompatible
h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod
h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/petermattis/goid v0.0.0-20250813065127-a731cc31b4fe
h1:vHpqOnPlnkba8iSxU4j/CvDSS9J4+F4473esQsYLGoE=
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/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
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/prometheus/client_golang v1.22.0
h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
-github.com/prometheus/client_golang v1.22.0/go.mod
h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
-github.com/prometheus/client_model v0.6.1
h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
-github.com/prometheus/client_model v0.6.1/go.mod
h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
-github.com/prometheus/common v0.62.0
h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io=
-github.com/prometheus/common v0.62.0/go.mod
h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I=
-github.com/prometheus/procfs v0.15.1
h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
-github.com/prometheus/procfs v0.15.1/go.mod
h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
+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.66.1
h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs=
+github.com/prometheus/common v0.66.1/go.mod
h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA=
+github.com/prometheus/procfs v0.16.1
h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
+github.com/prometheus/procfs v0.16.1/go.mod
h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
github.com/rogpeppe/go-internal v1.13.1
h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
github.com/rogpeppe/go-internal v1.13.1/go.mod
h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/russross/blackfriday/v2 v2.1.0/go.mod
h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
@@ -176,10 +191,10 @@ github.com/sirupsen/logrus v1.9.3
h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
github.com/sirupsen/logrus v1.9.3/go.mod
h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=
github.com/soheilhy/cmux v0.1.5/go.mod
h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
-github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
-github.com/spf13/cobra v1.8.1/go.mod
h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
-github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
-github.com/spf13/pflag v1.0.5/go.mod
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod
h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
+github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
+github.com/spf13/pflag v1.0.6/go.mod
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stoewer/go-strcase v1.3.0
h1:g0eASXYtp+yvN9fK8sH94oCIk0fau9uV1/ZdJ0AVEzs=
github.com/stoewer/go-strcase v1.3.0/go.mod
h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo=
github.com/stretchr/objx v0.1.0/go.mod
h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -192,8 +207,16 @@ github.com/stretchr/testify v1.7.0/go.mod
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.1/go.mod
h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod
h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod
h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/stretchr/testify v1.10.0
h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
-github.com/stretchr/testify v1.10.0/go.mod
h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/stretchr/testify v1.11.1
h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
+github.com/stretchr/testify v1.11.1/go.mod
h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
+github.com/tidwall/gjson v1.18.0
h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY=
+github.com/tidwall/gjson v1.18.0/go.mod
h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
+github.com/tidwall/match v1.1.1/go.mod
h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
+github.com/tidwall/pretty v1.2.1
h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
+github.com/tidwall/pretty v1.2.1/go.mod
h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
+github.com/tidwall/sjson v1.2.5/go.mod
h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75
h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE=
github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod
h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
@@ -203,50 +226,50 @@ github.com/xiang90/probing
v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q
github.com/xlab/treeprint v1.2.0
h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
github.com/xlab/treeprint v1.2.0/go.mod
h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
github.com/yuin/goldmark v1.4.13/go.mod
h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.etcd.io/bbolt v1.3.11 h1:yGEzV1wPz2yVCLsD8ZAiGHhHVlczyC9d1rP43/VCRJ0=
-go.etcd.io/bbolt v1.3.11/go.mod h1:dksAq7YMXoljX0xu6VF5DMZGbhYYoLUalEiSySYAS4I=
-go.etcd.io/etcd/api/v3 v3.5.21 h1:A6O2/JDb3tvHhiIz3xf9nJ7REHvtEFJJ3veW3FbCnS8=
-go.etcd.io/etcd/api/v3 v3.5.21/go.mod
h1:c3aH5wcvXv/9dqIw2Y810LDXJfhSYdHQ0vxmP3CCHVY=
-go.etcd.io/etcd/client/pkg/v3 v3.5.21
h1:lPBu71Y7osQmzlflM9OfeIV2JlmpBjqBNlLtcoBqUTc=
-go.etcd.io/etcd/client/pkg/v3 v3.5.21/go.mod
h1:BgqT/IXPjK9NkeSDjbzwsHySX3yIle2+ndz28nVsjUs=
-go.etcd.io/etcd/client/v2 v2.305.21
h1:eLiFfexc2mE+pTLz9WwnoEsX5JTTpLCYVivKkmVXIRA=
-go.etcd.io/etcd/client/v2 v2.305.21/go.mod
h1:OKkn4hlYNf43hpjEM3Ke3aRdUkhSl8xjKjSf8eCq2J8=
-go.etcd.io/etcd/client/v3 v3.5.21
h1:T6b1Ow6fNjOLOtM0xSoKNQt1ASPCLWrF9XMHcH9pEyY=
-go.etcd.io/etcd/client/v3 v3.5.21/go.mod
h1:mFYy67IOqmbRf/kRUvsHixzo3iG+1OF2W2+jVIQRAnU=
-go.etcd.io/etcd/pkg/v3 v3.5.21 h1:jUItxeKyrDuVuWhdh0HtjUANwyuzcb7/FAeUfABmQsk=
-go.etcd.io/etcd/pkg/v3 v3.5.21/go.mod
h1:wpZx8Egv1g4y+N7JAsqi2zoUiBIUWznLjqJbylDjWgU=
-go.etcd.io/etcd/raft/v3 v3.5.21 h1:dOmE0mT55dIUsX77TKBLq+RgyumsQuYeiRQnW/ylugk=
-go.etcd.io/etcd/raft/v3 v3.5.21/go.mod
h1:fmcuY5R2SNkklU4+fKVBQi2biVp5vafMrWUEj4TJ4Cs=
-go.etcd.io/etcd/server/v3 v3.5.21
h1:9w0/k12majtgarGmlMVuhwXRI2ob3/d1Ik3X5TKo0yU=
-go.etcd.io/etcd/server/v3 v3.5.21/go.mod
h1:G1mOzdwuzKT1VRL7SqRchli/qcFrtLBTAQ4lV20sXXo=
+go.etcd.io/bbolt v1.4.2 h1:IrUHp260R8c+zYx/Tm8QZr04CX+qWS5PGfPdevhdm1I=
+go.etcd.io/bbolt v1.4.2/go.mod h1:Is8rSHO/b4f3XigBC0lL0+4FwAQv3HXEEIgFMuKHceM=
+go.etcd.io/etcd/api/v3 v3.6.4 h1:7F6N7toCKcV72QmoUKa23yYLiiljMrT4xCeBL9BmXdo=
+go.etcd.io/etcd/api/v3 v3.6.4/go.mod
h1:eFhhvfR8Px1P6SEuLT600v+vrhdDTdcfMzmnxVXXSbk=
+go.etcd.io/etcd/client/pkg/v3 v3.6.4
h1:9HBYrjppeOfFjBjaMTRxT3R7xT0GLK8EJMVC4xg6ok0=
+go.etcd.io/etcd/client/pkg/v3 v3.6.4/go.mod
h1:sbdzr2cl3HzVmxNw//PH7aLGVtY4QySjQFuaCgcRFAI=
+go.etcd.io/etcd/client/v3 v3.6.4
h1:YOMrCfMhRzY8NgtzUsHl8hC2EBSnuqbR3dh84Uryl7A=
+go.etcd.io/etcd/client/v3 v3.6.4/go.mod
h1:jaNNHCyg2FdALyKWnd7hxZXZxZANb0+KGY+YQaEMISo=
+go.etcd.io/etcd/pkg/v3 v3.6.4 h1:fy8bmXIec1Q35/jRZ0KOes8vuFxbvdN0aAFqmEfJZWA=
+go.etcd.io/etcd/pkg/v3 v3.6.4/go.mod
h1:kKcYWP8gHuBRcteyv6MXWSN0+bVMnfgqiHueIZnKMtE=
+go.etcd.io/etcd/server/v3 v3.6.4
h1:LsCA7CzjVt+8WGrdsnh6RhC0XqCsLkBly3ve5rTxMAU=
+go.etcd.io/etcd/server/v3 v3.6.4/go.mod
h1:aYCL/h43yiONOv0QIR82kH/2xZ7m+IWYjzRmyQfnCAg=
+go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ=
+go.etcd.io/raft/v3 v3.6.0/go.mod
h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo=
go.opentelemetry.io/auto/sdk v1.1.0
h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
go.opentelemetry.io/auto/sdk v1.1.0/go.mod
h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw=
+go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc
v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0
h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU=
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod
h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q=
-go.opentelemetry.io/otel v1.34.0
h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
-go.opentelemetry.io/otel v1.34.0/go.mod
h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0
h1:Vh5HayB/0HHfOQA7Ctx69E/Y/DcQSMPpKANYVMQ7fBA=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.33.0/go.mod
h1:cpgtDBaqD/6ok/UG0jT15/uKjAY8mRA53diogHBg3UI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0
h1:5pojmb1U1AogINhN3SurB+zm/nIcusopeBNp42f45QM=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.33.0/go.mod
h1:57gTHJSE5S1tqg+EKsLPlTWhpHMsWlVmer+LA926XiA=
-go.opentelemetry.io/otel/metric v1.34.0
h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
-go.opentelemetry.io/otel/metric v1.34.0/go.mod
h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
+go.opentelemetry.io/otel v1.35.0
h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=
+go.opentelemetry.io/otel v1.35.0/go.mod
h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0
h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod
h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0
h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod
h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
+go.opentelemetry.io/otel/metric v1.35.0
h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
+go.opentelemetry.io/otel/metric v1.35.0/go.mod
h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
go.opentelemetry.io/otel/sdk v1.34.0
h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
go.opentelemetry.io/otel/sdk v1.34.0/go.mod
h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
go.opentelemetry.io/otel/sdk/metric v1.34.0
h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod
h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
-go.opentelemetry.io/otel/trace v1.34.0
h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
-go.opentelemetry.io/otel/trace v1.34.0/go.mod
h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
-go.opentelemetry.io/proto/otlp v1.4.0
h1:TA9WRvW6zMwP+Ssb6fLoUIuirti1gGbP28GcKG1jgeg=
-go.opentelemetry.io/proto/otlp v1.4.0/go.mod
h1:PPBWZIP98o2ElSqI35IHfu7hIhSwvc5N38Jw8pXuGFY=
+go.opentelemetry.io/otel/trace v1.35.0
h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
+go.opentelemetry.io/otel/trace v1.35.0/go.mod
h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
+go.opentelemetry.io/proto/otlp v1.5.0
h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
+go.opentelemetry.io/proto/otlp v1.5.0/go.mod
h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod
h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod
h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
+go.yaml.in/yaml/v2 v2.4.2/go.mod
h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
go.yaml.in/yaml/v3 v3.0.4/go.mod
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
@@ -254,12 +277,15 @@ golang.org/x/crypto v0.41.0/go.mod
h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sU
golang.org/x/exp v0.0.0-20250228200357-dead58393ab7
h1:aWwlzYV971S4BXRS9AmqwDLAD85ouC6X+pocatKY58c=
golang.org/x/exp v0.0.0-20250228200357-dead58393ab7/go.mod
h1:BHOTPb3L19zxehTsLoJXVaTktb06DFgmdW6Wb9s8jqk=
golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ=
+golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk=
+golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc=
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
golang.org/x/oauth2 v0.28.0/go.mod
h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
-golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod
h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
+golang.org/x/sync v0.18.0/go.mod
h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/telemetry v0.0.0-20250710130107-8d8967aff50b/go.mod
h1:4ZwOYna0/zsOKwuR5X/m0QFOJpSZvAxFfkQT+Erd9D4=
@@ -271,16 +297,14 @@ golang.org/x/time v0.10.0
h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4=
golang.org/x/time v0.10.0/go.mod
h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0=
golang.org/x/tools v0.35.0/go.mod
h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80
h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ=
-google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod
h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro=
-google.golang.org/genproto/googleapis/api v0.0.0-20250106144421-5f5ef82da422
h1:GVIKPyP/kLIyVOgOnTwFOrvQaQUzOzGMCxgFUOEmm24=
-google.golang.org/genproto/googleapis/api
v0.0.0-20250106144421-5f5ef82da422/go.mod
h1:b6h1vNKhxaSoEI+5jc3PJUCustfli/mRab7295pY7rw=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20250115164207-1a7da9e5054f
h1:OxYkA3wjPsZyBylwymxSHa7ViiW1Sml4ToBrncvFehI=
-google.golang.org/genproto/googleapis/rpc
v0.0.0-20250115164207-1a7da9e5054f/go.mod
h1:+2Yz8+CLJbIfL9z73EW45avw8Lmge3xVElCP9zEKi50=
-google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg=
-google.golang.org/grpc v1.71.0/go.mod
h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec=
-google.golang.org/protobuf v1.36.5
h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
-google.golang.org/protobuf v1.36.5/go.mod
h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb
h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950=
+google.golang.org/genproto/googleapis/api
v0.0.0-20250303144028-a0af3efb3deb/go.mod
h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb
h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4=
+google.golang.org/genproto/googleapis/rpc
v0.0.0-20250303144028-a0af3efb3deb/go.mod
h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
+google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA=
+google.golang.org/grpc v1.72.1/go.mod
h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
+google.golang.org/protobuf v1.36.8
h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
+google.golang.org/protobuf v1.36.8/go.mod
h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
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=
@@ -295,58 +319,57 @@ 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.33.4 h1:oTzrFVNPXBjMu0IlpA2eDDIU49jsuEorGHB4cvKupkk=
-k8s.io/api v0.33.4/go.mod h1:VHQZ4cuxQ9sCUMESJV5+Fe8bGnqAARZ08tSTdHWfeAc=
-k8s.io/apiextensions-apiserver v0.33.4
h1:rtq5SeXiDbXmSwxsF0MLe2Mtv3SwprA6wp+5qh/CrOU=
-k8s.io/apiextensions-apiserver v0.33.4/go.mod
h1:mWXcZQkQV1GQyxeIjYApuqsn/081hhXPZwZ2URuJeSs=
-k8s.io/apimachinery v0.33.4 h1:SOf/JW33TP0eppJMkIgQ+L6atlDiP/090oaX0y9pd9s=
-k8s.io/apimachinery v0.33.4/go.mod
h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
-k8s.io/apiserver v0.33.4 h1:6N0TEVA6kASUS3owYDIFJjUH6lgN8ogQmzZvaFFj1/Y=
-k8s.io/apiserver v0.33.4/go.mod h1:8ODgXMnOoSPLMUg1aAzMFx+7wTJM+URil+INjbTZCok=
-k8s.io/cli-runtime v0.33.4 h1:V8NSxGfh24XzZVhXmIGzsApdBpGq0RQS2u/Fz1GvJwk=
-k8s.io/cli-runtime v0.33.4/go.mod
h1:V+ilyokfqjT5OI+XE+O515K7jihtr0/uncwoyVqXaIU=
-k8s.io/client-go v0.33.4 h1:TNH+CSu8EmXfitntjUPwaKVPN0AYMbc9F1bBS8/ABpw=
-k8s.io/client-go v0.33.4/go.mod h1:LsA0+hBG2DPwovjd931L/AoaezMPX9CmBgyVyBZmbCY=
-k8s.io/cloud-provider v0.33.4 h1:et4DyeV0W8W+m2ByS34VVFMg8Aj0sz+UDVwanNkspTo=
-k8s.io/cloud-provider v0.33.4/go.mod
h1:cAC2s7mGpqVWwUars8TFgnvgXy+trDOF3+WSeKNsy/M=
-k8s.io/component-base v0.33.4 h1:Jvb/aw/tl3pfgnJ0E0qPuYLT0NwdYs1VXXYQmSuxJGY=
-k8s.io/component-base v0.33.4/go.mod
h1:567TeSdixWW2Xb1yYUQ7qk5Docp2kNznKL87eygY8Rc=
-k8s.io/component-helpers v0.33.4
h1:DYHQPxWB3XIk7hwAQ4YczUelJ37PcUHfnLeee0qFqV8=
-k8s.io/component-helpers v0.33.4/go.mod
h1:kRgidIgCKFqOW/wy7D8IL3YOT3iaIRZu6FcTEyRr7WU=
-k8s.io/controller-manager v0.33.4
h1:HmlzmmNPu8H+cKEpAIRz0ptqpveKcj7KrCx9G+HXRAg=
-k8s.io/controller-manager v0.33.4/go.mod
h1:CpO8RarLcs7zh0sE4pqz88quF3xU3Dc4ZDfshnB8hw4=
-k8s.io/csi-translation-lib v0.33.4
h1:LmiElxqQwISv0c2mdL3rswmPIIN6Qh+4Lv0bdKTTFoM=
-k8s.io/csi-translation-lib v0.33.4/go.mod
h1:A4Kn6gTWX5EkxbHgtiDitNjDVvk2plie7lo8Hpa19Bg=
-k8s.io/dynamic-resource-allocation v0.33.4
h1:CzGpfPS14cj7W7FIaCcOG0S01UDmi52AxtNjU0YGSRM=
-k8s.io/dynamic-resource-allocation v0.33.4/go.mod
h1:3dtKRcjPY6XRhgOpsToIy/o2VffPdf647Iaro10rs9k=
+k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY=
+k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw=
+k8s.io/apiextensions-apiserver v0.34.2
h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo=
+k8s.io/apiextensions-apiserver v0.34.2/go.mod
h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE=
+k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4=
+k8s.io/apimachinery v0.34.2/go.mod
h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
+k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE=
+k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI=
+k8s.io/cli-runtime v0.34.2 h1:cct1GEuWc3IyVT8MSCoIWzRGw9HJ/C5rgP32H60H6aE=
+k8s.io/cli-runtime v0.34.2/go.mod
h1:X13tsrYexYUCIq8MarCBy8lrm0k0weFPTpcaNo7lms4=
+k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M=
+k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE=
+k8s.io/cloud-provider v0.34.2 h1:tNxZ6c+3cJdpNHvurzUdVvKNbB0pDxx3jE1AcZ8pMKA=
+k8s.io/cloud-provider v0.34.2/go.mod
h1:8XqzAplSoVLZzqut82sWHusz6X00C1Djk3BpeKAjfHY=
+k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ=
+k8s.io/component-base v0.34.2/go.mod
h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM=
+k8s.io/component-helpers v0.34.2
h1:RIUGDdU+QFzeVKLZ9f05sXTNAtJrRJ3bnbMLrogCrvM=
+k8s.io/component-helpers v0.34.2/go.mod
h1:pLi+GByuRTeFjjcezln8gHL7LcT6HImkwVQ3A2SQaEE=
+k8s.io/controller-manager v0.34.2
h1:bjdSLh5nnSde5jfRW/rdPDOSYbwUMxs+9JUcbyL6LP8=
+k8s.io/controller-manager v0.34.2/go.mod
h1:sR6wSdANfbdXBTtg2Fwp1ruo/1TJgSilooT6FDxZj4A=
+k8s.io/csi-translation-lib v0.34.2
h1:xvpxaoDfv0kPaLqUeTKGthr1jqmJgmSHgMnJevYPhY4=
+k8s.io/csi-translation-lib v0.34.2/go.mod
h1:un/6pCiR5QgE6HD16i2AY11+wSFbeVksolat1zntCZY=
+k8s.io/dynamic-resource-allocation v0.34.2
h1:SjlRGSWl6CZXoJwQNL+Y0wRfdH8PkJ4mHRNK6MMj0bY=
+k8s.io/dynamic-resource-allocation v0.34.2/go.mod
h1:ul6I+gfrCmC+OCuVdN0/iykyB2sPrIqh2WyKQ3RQPCU=
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
-k8s.io/kms v0.33.4 h1:rvsVglcIFa9WeKk5vd3mBufSG4D5dqponz1Jz5d6FXU=
-k8s.io/kms v0.33.4/go.mod h1:C1I8mjFFBNzfUZXYt9FZVJ8MJl7ynFbGgZFbBzkBJ3E=
-k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff
h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4=
-k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod
h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
-k8s.io/kube-scheduler v0.33.4 h1:RNlrqBL0lyILGCsD78xcuaDqAIfccL2j5g+eVJntWL8=
-k8s.io/kube-scheduler v0.33.4/go.mod
h1:bNYhEZ0GAj5wbnWa8B3Bu1AqlE9nLacFoezpEtSSqik=
-k8s.io/kubectl v0.33.4 h1:nXEI6Vi+oB9hXxoAHyHisXolm/l1qutK3oZQMak4N98=
-k8s.io/kubectl v0.33.4/go.mod h1:Xe7P9X4DfILvKmlBsVqUtzktkI56lEj22SJW7cFy6nE=
-k8s.io/kubelet v0.33.4 h1:+sbpLmSq+Y8DF/OQeyw75OpuiF60tvlYcmc/yjN+nl4=
-k8s.io/kubelet v0.33.4/go.mod h1:wboarviFRQld5rzZUjTliv7x00YVx+YhRd/p1OahX7Y=
-k8s.io/kubernetes v1.33.4 h1:T1d5FLUYm3/KyUeV7YJhKTR980zHCHb7K2xhCSo3lE8=
-k8s.io/kubernetes v1.33.4/go.mod
h1:nrt8sldmckKz2fCZhgRX3SKfS2e+CzXATPv6ITNkU00=
-k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738
h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
-k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
+k8s.io/kms v0.34.2 h1:91rj4MDZLyIT9KxG8J5/CcMH666Z88CF/xJQeuPfJc8=
+k8s.io/kms v0.34.2/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b
h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA=
+k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod
h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
+k8s.io/kube-scheduler v0.34.2 h1:TtLcaXeIpkqgzMr2ch7Ap8Cluq4M182XUDRlnOPDdoc=
+k8s.io/kube-scheduler v0.34.2/go.mod
h1:PTn4QYiSet8/00VQ2qGO/HWdo5iNJlVRCXz/7R3Ut5I=
+k8s.io/kubectl v0.34.2 h1:+fWGrVlDONMUmmQLDaGkQ9i91oszjjRAa94cr37hzqA=
+k8s.io/kubectl v0.34.2/go.mod h1:X2KTOdtZZNrTWmUD4oHApJ836pevSl+zvC5sI6oO2YQ=
+k8s.io/kubelet v0.34.2 h1:Dl+1uh7xwJr70r+SHKyIpvu6XvzuoPu0uDIC4cqgJUs=
+k8s.io/kubelet v0.34.2/go.mod h1:RfwR03iuKeVV7Z1qD9XKH98c3tlPImJpQ3qHIW40htM=
+k8s.io/kubernetes v1.34.2 h1:WQdDvYJazkmkwSncgNwGvVtaCt4TYXIU3wSMRgvp3MI=
+k8s.io/kubernetes v1.34.2/go.mod
h1:m6pZk6a179pRo2wsTiCPORJ86iOEQmfIzUvtyEF8BwA=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397
h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
+k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2
h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod
h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
-sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3
h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
-sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod
h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
-sigs.k8s.io/kustomize/api v0.19.0
h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ=
-sigs.k8s.io/kustomize/api v0.19.0/go.mod
h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o=
-sigs.k8s.io/kustomize/kyaml v0.19.0
h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA=
-sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod
h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY=
-sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod
h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8
h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
+sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/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/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/v4 v4.6.0
h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc=
-sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod
h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
-sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
-sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
+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/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
+sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff --git a/pkg/cache/application_test.go b/pkg/cache/application_test.go
index f54bf79c..8a5244e4 100644
--- a/pkg/cache/application_test.go
+++ b/pkg/cache/application_test.go
@@ -31,7 +31,9 @@ import (
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
apis "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apiserver/pkg/util/feature"
k8sEvents "k8s.io/client-go/tools/events"
+ "k8s.io/kubernetes/pkg/features"
"github.com/apache/yunikorn-k8shim/pkg/client"
"github.com/apache/yunikorn-k8shim/pkg/common"
@@ -45,6 +47,12 @@ import (
"github.com/apache/yunikorn-scheduler-interface/lib/go/si"
)
+func init() {
+ if err := feature.DefaultMutableFeatureGate.Set(fmt.Sprintf("%s=false",
features.DynamicResourceAllocation)); err != nil {
+ panic(fmt.Errorf("unable to set DynamicResourceAllocation
feature gate: %v", err))
+ }
+}
+
type recorderTime struct {
time int64
lock *locking.RWMutex
diff --git a/pkg/cache/context.go b/pkg/cache/context.go
index 7c6abde4..1fb26301 100644
--- a/pkg/cache/context.go
+++ b/pkg/cache/context.go
@@ -37,7 +37,7 @@ import (
"k8s.io/apimachinery/pkg/types"
"k8s.io/client-go/tools/cache"
"k8s.io/klog/v2"
- "k8s.io/kubernetes/pkg/scheduler/framework"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding"
schedulercache "github.com/apache/yunikorn-k8shim/pkg/cache/external"
@@ -658,7 +658,7 @@ func (ctx *Context) setConfigMap(index int, configMap
*v1.ConfigMap) map[string]
}
// EventsToRegister returns the Kubernetes events that should be watched for
updates which may effect predicate processing
-func (ctx *Context) EventsToRegister(queueingHintFn framework.QueueingHintFn)
[]framework.ClusterEventWithHint {
+func (ctx *Context) EventsToRegister(queueingHintFn fwk.QueueingHintFn)
[]fwk.ClusterEventWithHint {
return ctx.predManager.EventsToRegister(queueingHintFn)
}
diff --git a/pkg/cache/external/scheduler_cache.go
b/pkg/cache/external/scheduler_cache.go
index d2937edf..0e5c77f3 100644
--- a/pkg/cache/external/scheduler_cache.go
+++ b/pkg/cache/external/scheduler_cache.go
@@ -29,6 +29,7 @@ import (
storageV1 "k8s.io/api/storage/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/klog/v2"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework"
"github.com/apache/yunikorn-k8shim/pkg/client"
@@ -64,9 +65,9 @@ type SchedulerCache struct {
klogger klog.Logger
// cached data, re-calculated on demand from nodesMap
- nodesInfo []*framework.NodeInfo
- nodesInfoPodsWithAffinity []*framework.NodeInfo
- nodesInfoPodsWithReqAntiAffinity []*framework.NodeInfo
+ nodesInfo []fwk.NodeInfo
+ nodesInfoPodsWithAffinity []fwk.NodeInfo
+ nodesInfoPodsWithReqAntiAffinity []fwk.NodeInfo
// task bloom filter, recomputed whenever task scheduling state changes
taskBloomFilterRef atomic.Pointer[taskBloomFilter]
@@ -103,9 +104,9 @@ func (cache *SchedulerCache) GetNodesInfoMap()
map[string]*framework.NodeInfo {
// GetNodesInfo returns a (possibly cached) list of nodes. This is explicitly
for the use of the predicate
// shared lister and requires that the scheduler cache lock be held while
accessing.
-func (cache *SchedulerCache) GetNodesInfo() []*framework.NodeInfo {
+func (cache *SchedulerCache) GetNodesInfo() []fwk.NodeInfo {
if cache.nodesInfo == nil {
- nodeList := make([]*framework.NodeInfo, 0, len(cache.nodesMap))
+ nodeList := make([]fwk.NodeInfo, 0, len(cache.nodesMap))
for _, node := range cache.nodesMap {
nodeList = append(nodeList, node)
}
@@ -118,9 +119,9 @@ func (cache *SchedulerCache) GetNodesInfo()
[]*framework.NodeInfo {
// GetNodesInfoPodsWithAffinity returns a (possibly cached) list of nodes
which contain pods with affinity.
// This is explicitly for the use of the predicate shared lister and requires
that the scheduler cache lock
// be held while accessing.
-func (cache *SchedulerCache) GetNodesInfoPodsWithAffinity()
[]*framework.NodeInfo {
+func (cache *SchedulerCache) GetNodesInfoPodsWithAffinity() []fwk.NodeInfo {
if cache.nodesInfoPodsWithAffinity == nil {
- nodeList := make([]*framework.NodeInfo, 0, len(cache.nodesMap))
+ nodeList := make([]fwk.NodeInfo, 0, len(cache.nodesMap))
for _, node := range cache.nodesMap {
if len(node.PodsWithAffinity) > 0 {
nodeList = append(nodeList, node)
@@ -135,9 +136,9 @@ func (cache *SchedulerCache) GetNodesInfoPodsWithAffinity()
[]*framework.NodeInf
// GetNodesInfoPodsWithReqAntiAffinity returns a (possibly cached) list of
nodes which contain pods with required anti-affinity.
// This is explicitly for the use of the predicate shared lister and requires
that the scheduler cache lock
// be held while accessing.
-func (cache *SchedulerCache) GetNodesInfoPodsWithReqAntiAffinity()
[]*framework.NodeInfo {
+func (cache *SchedulerCache) GetNodesInfoPodsWithReqAntiAffinity()
[]fwk.NodeInfo {
if cache.nodesInfoPodsWithReqAntiAffinity == nil {
- nodeList := make([]*framework.NodeInfo, 0, len(cache.nodesMap))
+ nodeList := make([]fwk.NodeInfo, 0, len(cache.nodesMap))
for _, node := range cache.nodesMap {
if len(node.PodsWithRequiredAntiAffinity) > 0 {
nodeList = append(nodeList, node)
@@ -226,14 +227,15 @@ func (cache *SchedulerCache) removeNode(node *v1.Node)
(*v1.Node, []*v1.Pod) {
}
result := nodeInfo.Node()
- for _, pod := range nodeInfo.Pods {
- key := string(pod.Pod.UID)
+ for _, fwkPod := range nodeInfo.Pods {
+ pod := fwkPod.GetPod()
+ key := string(pod.UID)
delete(cache.assignedPods, key)
delete(cache.assumedPods, key)
delete(cache.pendingAllocations, key)
delete(cache.inProgressAllocations, key)
- cache.orphanedPods[key] = pod.Pod
- orphans = append(orphans, pod.Pod)
+ cache.orphanedPods[key] = pod
+ orphans = append(orphans, pod)
}
log.Log(log.ShimCacheExternal).Debug("Removing node from cache",
zap.String("nodeName", node.Name))
@@ -628,9 +630,10 @@ func (cache *SchedulerCache) List(selector
labels.Selector) ([]*v1.Pod, error) {
}
pods := make([]*v1.Pod, 0, maxSize)
for _, nodeInfo := range cache.nodesMap {
- for _, pod := range nodeInfo.Pods {
- if selector.Matches(labels.Set(pod.Pod.Labels)) {
- pods = append(pods, pod.Pod)
+ for _, fwkPod := range nodeInfo.Pods {
+ pod := fwkPod.GetPod()
+ if selector.Matches(labels.Set(pod.Labels)) {
+ pods = append(pods, pod)
}
}
}
diff --git a/pkg/cache/external/scheduler_cache_test.go
b/pkg/cache/external/scheduler_cache_test.go
index c00660f8..d97b125f 100644
--- a/pkg/cache/external/scheduler_cache_test.go
+++ b/pkg/cache/external/scheduler_cache_test.go
@@ -28,6 +28,7 @@ import (
schedulingv1 "k8s.io/api/scheduling/v1"
"k8s.io/apimachinery/pkg/api/resource"
apis "k8s.io/apimachinery/pkg/apis/meta/v1"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework"
"github.com/apache/yunikorn-k8shim/pkg/client"
@@ -991,7 +992,7 @@ func TestGetSchedulerCacheDao(t *testing.T) {
assert.Equal(t, dao.Statistics.PendingAllocations, 0)
}
-func expectHost1AndHost2(t *testing.T, nodesInfo []*framework.NodeInfo) {
+func expectHost1AndHost2(t *testing.T, nodesInfo []fwk.NodeInfo) {
assert.Assert(t, nodesInfo != nil, "nodesInfo list was not created")
assert.Equal(t, 2, len(nodesInfo), "nodesInfo list size")
m := make(map[string]bool)
@@ -1002,7 +1003,7 @@ func expectHost1AndHost2(t *testing.T, nodesInfo
[]*framework.NodeInfo) {
assert.Equal(t, true, m[host2], "node not found")
}
-func expectHost(t *testing.T, host string, nodesInfo []*framework.NodeInfo) {
+func expectHost(t *testing.T, host string, nodesInfo []fwk.NodeInfo) {
assert.Assert(t, nodesInfo != nil, "nodes list was not created or got
deleted")
assert.Equal(t, 1, len(nodesInfo), "nodes list size")
assert.Equal(t, host, nodesInfo[0].Node().Name)
diff --git a/pkg/cache/scheduler_callback_test.go
b/pkg/cache/scheduler_callback_test.go
index 8b0db9d9..22b8c37e 100644
--- a/pkg/cache/scheduler_callback_test.go
+++ b/pkg/cache/scheduler_callback_test.go
@@ -29,6 +29,7 @@ import (
v1 "k8s.io/api/core/v1"
apis "k8s.io/apimachinery/pkg/apis/meta/v1"
k8sEvents "k8s.io/client-go/tools/events"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework"
"github.com/apache/yunikorn-k8shim/pkg/client"
@@ -520,7 +521,7 @@ var _ predicates.PredicateManager = &mockPredicateManager{}
type mockPredicateManager struct{}
-func (m *mockPredicateManager) EventsToRegister(_ framework.QueueingHintFn)
[]framework.ClusterEventWithHint {
+func (m *mockPredicateManager) EventsToRegister(_ fwk.QueueingHintFn)
[]fwk.ClusterEventWithHint {
return nil
}
diff --git a/pkg/plugin/predicates/predicate_manager.go
b/pkg/plugin/predicates/predicate_manager.go
index c3824bc2..f53660ed 100644
--- a/pkg/plugin/predicates/predicate_manager.go
+++ b/pkg/plugin/predicates/predicate_manager.go
@@ -31,6 +31,7 @@ import (
"k8s.io/component-base/config/v1alpha1"
"k8s.io/klog/v2"
schedConfig "k8s.io/kube-scheduler/config/v1"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/features"
apiConfig "k8s.io/kubernetes/pkg/scheduler/apis/config"
"k8s.io/kubernetes/pkg/scheduler/apis/config/scheme"
@@ -44,7 +45,7 @@ import (
)
type PredicateManager interface {
- EventsToRegister(queueingHintFn framework.QueueingHintFn)
[]framework.ClusterEventWithHint
+ EventsToRegister(queueingHintFn fwk.QueueingHintFn)
[]fwk.ClusterEventWithHint
Predicates(pod *v1.Pod, node *framework.NodeInfo, allocate bool)
(plugin string, error error)
PreemptionPredicates(pod *v1.Pod, node *framework.NodeInfo, victims
[]*v1.Pod, startIndex int) (index int)
}
@@ -59,10 +60,11 @@ type predicateManagerImpl struct {
reservationFilters *[]framework.FilterPlugin
allocationFilters *[]framework.FilterPlugin
klogger klog.Logger
+ sharedLister framework.SharedLister
}
-func (p *predicateManagerImpl) EventsToRegister(queueingHintFn
framework.QueueingHintFn) []framework.ClusterEventWithHint {
- actionMap := make(map[framework.EventResource]framework.ActionType)
+func (p *predicateManagerImpl) EventsToRegister(queueingHintFn
fwk.QueueingHintFn) []fwk.ClusterEventWithHint {
+ actionMap := make(map[fwk.EventResource]fwk.ActionType)
for _, plugin := range *p.allocationPreFilters {
mergePluginEvents(actionMap, pluginEvents(plugin))
}
@@ -72,7 +74,7 @@ func (p *predicateManagerImpl)
EventsToRegister(queueingHintFn framework.Queuein
return buildClusterEvents(actionMap, queueingHintFn)
}
-func pluginEvents(plugin framework.Plugin) []framework.ClusterEventWithHint {
+func pluginEvents(plugin framework.Plugin) []fwk.ClusterEventWithHint {
ext, ok := plugin.(framework.EnqueueExtensions)
if !ok {
// legacy plugins that don't register for EnqueueExtensions get
a default list of events
@@ -85,18 +87,18 @@ func pluginEvents(plugin framework.Plugin)
[]framework.ClusterEventWithHint {
return events
}
-func mergePluginEvents(actionMap
map[framework.EventResource]framework.ActionType, events
[]framework.ClusterEventWithHint) {
- if _, ok := actionMap[framework.WildCard]; ok {
+func mergePluginEvents(actionMap map[fwk.EventResource]fwk.ActionType, events
[]fwk.ClusterEventWithHint) {
+ if _, ok := actionMap[fwk.WildCard]; ok {
// already registered for all events; skip further processing
return
}
for _, event := range events {
- if event.Event.IsWildCard() {
+ if IsWildCard(event.Event) {
// clear existing entries and add a wildcard entry
for k := range actionMap {
delete(actionMap, k)
}
- actionMap[framework.WildCard] = framework.All
+ actionMap[fwk.WildCard] = fwk.All
return
}
action, ok := actionMap[event.Event.Resource]
@@ -109,11 +111,11 @@ func mergePluginEvents(actionMap
map[framework.EventResource]framework.ActionTyp
}
}
-func buildClusterEvents(actionMap
map[framework.EventResource]framework.ActionType, queueingHintFn
framework.QueueingHintFn) []framework.ClusterEventWithHint {
- events := make([]framework.ClusterEventWithHint, 0)
+func buildClusterEvents(actionMap map[fwk.EventResource]fwk.ActionType,
queueingHintFn fwk.QueueingHintFn) []fwk.ClusterEventWithHint {
+ events := make([]fwk.ClusterEventWithHint, 0)
for resource, actionType := range actionMap {
- events = append(events, framework.ClusterEventWithHint{
- Event: framework.ClusterEvent{
+ events = append(events, fwk.ClusterEventWithHint{
+ Event: fwk.ClusterEvent{
Resource: resource,
ActionType: actionType},
QueueingHintFn: queueingHintFn,
@@ -172,7 +174,7 @@ func (p *predicateManagerImpl) PreemptionPredicates(pod
*v1.Pod, node *framework
return -1
}
-func (p *predicateManagerImpl) removePodFromNodeNoFail(node
*framework.NodeInfo, pod *v1.Pod) {
+func (p *predicateManagerImpl) removePodFromNodeNoFail(node fwk.NodeInfo, pod
*v1.Pod) {
if pod == nil {
return
}
@@ -212,12 +214,18 @@ func (p *predicateManagerImpl) podFitsNode(ctx
context.Context, state *framework
return "", nil
}
-func (p *predicateManagerImpl) runPreFilterPlugins(ctx context.Context, state
*framework.CycleState, plugins []framework.PreFilterPlugin, pod *v1.Pod, node
*framework.NodeInfo) (*framework.Status, string, map[string]bool) {
+func (p *predicateManagerImpl) runPreFilterPlugins(ctx context.Context, state
*framework.CycleState, plugins []framework.PreFilterPlugin, pod *v1.Pod, node
*framework.NodeInfo) (*fwk.Status, string, map[string]bool) {
var mergedNodes *framework.PreFilterResult
skip := make(map[string]bool)
+ allNodes, err := p.sharedLister.NodeInfos().List()
+ if err != nil {
+ log.Log(log.ShimPredicates).Error("failed to list nodes",
+ zap.Error(err))
+ return fwk.AsStatus(err), "", skip
+ }
for _, pl := range plugins {
plugin := pl.Name()
- nodes, status := p.runPreFilterPlugin(ctx, pl, state, pod)
+ nodes, status := p.runPreFilterPlugin(ctx, pl, state, pod,
allNodes)
if status.IsSkip() {
skip[plugin] = true
} else if !status.IsSuccess() {
@@ -229,23 +237,23 @@ func (p *predicateManagerImpl) runPreFilterPlugins(ctx
context.Context, state *f
zap.String("pluginName", plugin),
zap.String("pod", fmt.Sprintf("%s/%s",
pod.Namespace, pod.Name)),
zap.Error(err))
- return
framework.AsStatus(errors.Join(fmt.Errorf("running PreFilter plugin %q: ",
plugin), err)), plugin, skip
+ return fwk.AsStatus(errors.Join(fmt.Errorf("running
PreFilter plugin %q: ", plugin), err)), plugin, skip
}
// Merge is nil safe and returns a new PreFilterResult result
if mergedNodes was nil
mergedNodes = mergedNodes.Merge(nodes)
if !mergedNodes.AllNodes() &&
!mergedNodes.NodeNames.Has(node.Node().Name) {
- return
framework.NewStatus(framework.UnschedulableAndUnresolvable, "node not
eligible"), plugin, skip
+ return fwk.NewStatus(fwk.UnschedulableAndUnresolvable,
"node not eligible"), plugin, skip
}
}
return nil, "", skip
}
-func (p *predicateManagerImpl) runPreFilterPlugin(ctx context.Context, pl
framework.PreFilterPlugin, state *framework.CycleState, pod *v1.Pod)
(*framework.PreFilterResult, *framework.Status) {
- return pl.PreFilter(ctx, state, pod)
+func (p *predicateManagerImpl) runPreFilterPlugin(ctx context.Context, pl
framework.PreFilterPlugin, state *framework.CycleState, pod *v1.Pod, allNodes
[]fwk.NodeInfo) (*framework.PreFilterResult, *fwk.Status) {
+ return pl.PreFilter(ctx, state, pod, allNodes)
}
-func (p *predicateManagerImpl) runFilterPlugins(ctx context.Context, plugins
[]framework.FilterPlugin, state *framework.CycleState, pod *v1.Pod, nodeInfo
*framework.NodeInfo, skip map[string]bool) (*framework.Status, string) {
+func (p *predicateManagerImpl) runFilterPlugins(ctx context.Context, plugins
[]framework.FilterPlugin, state *framework.CycleState, pod *v1.Pod, nodeInfo
fwk.NodeInfo, skip map[string]bool) (*fwk.Status, string) {
for _, pl := range plugins {
plugin := pl.Name()
// skip plugin if prefilter returned skip
@@ -257,7 +265,7 @@ func (p *predicateManagerImpl) runFilterPlugins(ctx
context.Context, plugins []f
if !status.IsRejected() {
// Filter plugins are not supposed to return
any status other than
// Success or Unschedulable.
- status = framework.NewStatus(framework.Error,
fmt.Sprintf("running %q filter plugin for pod %q: %v", plugin, pod.Name,
status.Message()))
+ status = fwk.NewStatus(fwk.Error,
fmt.Sprintf("running %q filter plugin for pod %q: %v", plugin, pod.Name,
status.Message()))
log.Log(log.ShimPredicates).Error("failed
running Filter plugin",
zap.String("pluginName", plugin),
zap.String("pod", fmt.Sprintf("%s/%s",
pod.Namespace, pod.Name)),
@@ -267,10 +275,10 @@ func (p *predicateManagerImpl) runFilterPlugins(ctx
context.Context, plugins []f
return status, plugin
}
}
- return framework.NewStatus(framework.Success), ""
+ return fwk.NewStatus(fwk.Success), ""
}
-func (p *predicateManagerImpl) runFilterPlugin(ctx context.Context, pl
framework.FilterPlugin, state *framework.CycleState, pod *v1.Pod, nodeInfo
*framework.NodeInfo) *framework.Status {
+func (p *predicateManagerImpl) runFilterPlugin(ctx context.Context, pl
framework.FilterPlugin, state *framework.CycleState, pod *v1.Pod, nodeInfo
fwk.NodeInfo) *fwk.Status {
return pl.Filter(ctx, state, pod, nodeInfo)
}
@@ -289,6 +297,10 @@ func EnableOptionalKubernetesFeatureGates() {
if err := feature.DefaultMutableFeatureGate.Set(fmt.Sprintf("%s=true",
features.InPlacePodVerticalScaling)); err != nil {
log.Log(log.ShimPredicates).Fatal("Unable to set
InPlacePodVerticalScaling feature gate", zap.Error(err))
}
+ if err := feature.DefaultMutableFeatureGate.Set(fmt.Sprintf("%s=false",
features.DynamicResourceAllocation)); err != nil {
+ // disable explicitly
+ log.Log(log.ShimPredicates).Fatal("Unable to set
DynamicResourceAllocation feature gate", zap.Error(err))
+ }
}
func NewPredicateManager(handle framework.Handle) PredicateManager {
@@ -405,6 +417,7 @@ func newPredicateManagerInternal(
reservationFilters: filterPlugins(resFilt),
allocationFilters: filterPlugins(allocFilt),
klogger: klog.NewKlogr(),
+ sharedLister: handle.SnapshotSharedLister(),
}
return pm
@@ -527,3 +540,7 @@ func getPluginArgsOrDefault(pluginConfig
map[string]runtime.Object, name string)
}
return obj, err
}
+
+func IsWildCard(event fwk.ClusterEvent) bool {
+ return event.Resource == fwk.WildCard && event.ActionType == fwk.All
+}
diff --git a/pkg/plugin/predicates/predicate_manager_test.go
b/pkg/plugin/predicates/predicate_manager_test.go
index 1e35b248..a88e8bc2 100644
--- a/pkg/plugin/predicates/predicate_manager_test.go
+++ b/pkg/plugin/predicates/predicate_manager_test.go
@@ -20,6 +20,7 @@ package predicates
import (
"errors"
+ "fmt"
"strconv"
"strings"
"testing"
@@ -33,6 +34,7 @@ import (
"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"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/scheduler/framework"
@@ -51,6 +53,12 @@ import (
"github.com/apache/yunikorn-k8shim/pkg/plugin/support"
)
+func init() {
+ if err := feature.DefaultMutableFeatureGate.Set(fmt.Sprintf("%s=false",
features.DynamicResourceAllocation)); err != nil {
+ panic(fmt.Errorf("unable to set DynamicResourceAllocation
feature gate: %v", err))
+ }
+}
+
var (
extendedResourceA = v1.ResourceName("example.com/aaa")
hugePageResourceA =
v1helper.HugePageResourceName(resource.MustParse("2Mi"))
@@ -134,18 +142,18 @@ func TestEventsToRegister(t *testing.T) {
ep := enabledPlugins(nodename.Name, interpodaffinity.Name,
podtopologyspread.Name)
predicateManager := newPredicateManagerInternal(handle, ep, ep, ep, ep)
- var queueingHintFn framework.QueueingHintFn = func(logger klog.Logger,
pod *v1.Pod, oldObj, newObj interface{}) (framework.QueueingHint, error) {
+ var queueingHintFn fwk.QueueingHintFn = func(logger klog.Logger, pod
*v1.Pod, oldObj, newObj interface{}) (fwk.QueueingHint, error) {
// illegal sentinel to ensure we called the correct function
return -1, nil
}
events := predicateManager.EventsToRegister(queueingHintFn)
- assert.Equal(t, events[0].Event.Resource, framework.Node, "wrong
resource (0)")
- assert.Equal(t, events[0].Event.ActionType,
framework.Add|framework.Delete|framework.UpdateNodeLabel|framework.UpdateNodeTaint,
"wrong action type (0)")
+ assert.Equal(t, events[0].Event.Resource, fwk.Node, "wrong resource
(0)")
+ assert.Equal(t, events[0].Event.ActionType,
fwk.Add|fwk.Delete|fwk.UpdateNodeLabel|fwk.UpdateNodeTaint, "wrong action type
(0)")
fn0, err := events[0].QueueingHintFn(klog.NewKlogr(), nil, "", "")
assert.NilError(t, err)
assert.Equal(t, int(fn0), -1, "wrong fn (0)")
- assert.Equal(t, events[1].Event.Resource, framework.Pod, "wrong
resource (1)")
- assert.Equal(t, events[1].Event.ActionType,
framework.Add|framework.Delete|framework.UpdatePodLabel|framework.UpdatePodToleration,
"wrong action type (1)")
+ assert.Equal(t, events[1].Event.Resource, fwk.Pod, "wrong resource (1)")
+ assert.Equal(t, events[1].Event.ActionType,
fwk.Add|fwk.Delete|fwk.UpdatePodLabel|fwk.UpdatePodToleration, "wrong action
type (1)")
fn1, err := events[1].QueueingHintFn(klog.NewKlogr(), nil, "", "")
assert.NilError(t, err)
assert.Equal(t, int(fn1), -1, "wrong fn (1)")
@@ -2132,7 +2140,7 @@ func TestInterPodAffinity(t *testing.T) {
nodeInfo := framework.NewNodeInfo(podsOnNode...)
nodeInfo.SetNode(test.node)
- lister.nodeLister.nodeInfos =
[]*framework.NodeInfo{nodeInfo}
+ lister.nodeLister.nodeInfos = []fwk.NodeInfo{nodeInfo}
plugin, 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)
@@ -2236,7 +2244,7 @@ func TestReserveNodeSelector(t *testing.T) {
func lister() *sharedListerMock {
return &sharedListerMock{
nodeLister: &nodeListerMock{
- nodeInfos: make([]*framework.NodeInfo, 0),
+ nodeInfos: make([]fwk.NodeInfo, 0),
},
}
}
@@ -2271,34 +2279,34 @@ func (s *sharedListerMock) StorageInfos()
framework.StorageInfoLister {
}
type nodeListerMock struct {
- nodeInfos []*framework.NodeInfo
+ nodeInfos []fwk.NodeInfo
}
-func (n *nodeListerMock) List() ([]*framework.NodeInfo, error) {
+func (n *nodeListerMock) List() ([]fwk.NodeInfo, error) {
return n.nodeInfos, nil
}
-func (n *nodeListerMock) HavePodsWithAffinityList() ([]*framework.NodeInfo,
error) {
- result := make([]*framework.NodeInfo, 0, len(n.nodeInfos))
+func (n *nodeListerMock) HavePodsWithAffinityList() ([]fwk.NodeInfo, error) {
+ result := make([]fwk.NodeInfo, 0, len(n.nodeInfos))
for _, node := range n.nodeInfos {
- if len(node.PodsWithAffinity) > 0 {
+ if len(node.GetPodsWithAffinity()) > 0 {
result = append(result, node)
}
}
return result, nil
}
-func (n *nodeListerMock) HavePodsWithRequiredAntiAffinityList()
([]*framework.NodeInfo, error) {
- result := make([]*framework.NodeInfo, 0, len(n.nodeInfos))
+func (n *nodeListerMock) HavePodsWithRequiredAntiAffinityList()
([]fwk.NodeInfo, error) {
+ result := make([]fwk.NodeInfo, 0, len(n.nodeInfos))
for _, node := range n.nodeInfos {
- if len(node.PodsWithRequiredAntiAffinity) > 0 {
+ if len(node.GetPodsWithRequiredAntiAffinity()) > 0 {
result = append(result, node)
}
}
return result, nil
}
-func (n *nodeListerMock) Get(nodeName string) (*framework.NodeInfo, error) {
+func (n *nodeListerMock) Get(nodeName string) (fwk.NodeInfo, error) {
for _, node := range n.nodeInfos {
if node.Node().Name == nodeName {
return node, nil
diff --git a/pkg/plugin/scheduler_plugin.go b/pkg/plugin/scheduler_plugin.go
index 5d8974d8..0dd05d29 100644
--- a/pkg/plugin/scheduler_plugin.go
+++ b/pkg/plugin/scheduler_plugin.go
@@ -28,6 +28,7 @@ import (
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/informers"
"k8s.io/klog/v2"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework"
"github.com/apache/yunikorn-core/pkg/entrypoint"
@@ -87,7 +88,7 @@ func (sp *YuniKornSchedulerPlugin) Name() string {
}
// PreEnqueue is called prior to adding Pods to activeQ
-func (sp *YuniKornSchedulerPlugin) PreEnqueue(_ context.Context, pod *v1.Pod)
*framework.Status {
+func (sp *YuniKornSchedulerPlugin) PreEnqueue(_ context.Context, pod *v1.Pod)
*fwk.Status {
log.Log(log.ShimSchedulerPlugin).Debug("PreEnqueue check",
zap.String("namespace", pod.Namespace),
zap.String("pod", pod.Name))
@@ -106,7 +107,7 @@ func (sp *YuniKornSchedulerPlugin) PreEnqueue(_
context.Context, pod *v1.Pod) *f
if _, ok := sp.context.GetInProgressPodAllocation(taskID); ok {
// pod must have failed scheduling in a prior run,
reject it and return unschedulable
sp.failTask(pod, app, task)
- return
framework.NewStatus(framework.UnschedulableAndUnresolvable, "Pod is not ready
for scheduling")
+ return fwk.NewStatus(fwk.UnschedulableAndUnresolvable,
"Pod is not ready for scheduling")
}
nodeID, ok := sp.context.GetPendingPodAllocation(taskID)
@@ -122,23 +123,23 @@ func (sp *YuniKornSchedulerPlugin) PreEnqueue(_
context.Context, pod *v1.Pod) *f
schedState := task.GetTaskSchedulingState()
switch schedState {
case cache.TaskSchedPending:
- return
framework.NewStatus(framework.UnschedulableAndUnresolvable, "Pod is pending
scheduling")
+ return fwk.NewStatus(fwk.UnschedulableAndUnresolvable,
"Pod is pending scheduling")
case cache.TaskSchedFailed:
// allow the pod to proceed so that it will be marked
unschedulable by PreFilter
return nil
case cache.TaskSchedSkipped:
- return
framework.NewStatus(framework.UnschedulableAndUnresolvable, "Pod doesn't fit
within queue")
+ return fwk.NewStatus(fwk.UnschedulableAndUnresolvable,
"Pod doesn't fit within queue")
default:
- return
framework.NewStatus(framework.UnschedulableAndUnresolvable, fmt.Sprintf("Pod
unschedulable: %s", schedState.String()))
+ return fwk.NewStatus(fwk.UnschedulableAndUnresolvable,
fmt.Sprintf("Pod unschedulable: %s", schedState.String()))
}
}
// task not found (yet?) -- probably means cache update hasn't come
through yet
- return framework.NewStatus(framework.UnschedulableAndUnresolvable, "Pod
not ready for scheduling")
+ return fwk.NewStatus(fwk.UnschedulableAndUnresolvable, "Pod not ready
for scheduling")
}
// PreFilter is used to release pods to scheduler
-func (sp *YuniKornSchedulerPlugin) PreFilter(_ context.Context, _
*framework.CycleState, pod *v1.Pod) (*framework.PreFilterResult,
*framework.Status) {
+func (sp *YuniKornSchedulerPlugin) PreFilter(_ context.Context, _
fwk.CycleState, pod *v1.Pod, _ []fwk.NodeInfo) (*framework.PreFilterResult,
*fwk.Status) {
log.Log(log.ShimSchedulerPlugin).Debug("PreFilter check",
zap.String("namespace", pod.Namespace),
zap.String("pod", pod.Name))
@@ -150,7 +151,7 @@ func (sp *YuniKornSchedulerPlugin) PreFilter(_
context.Context, _ *framework.Cyc
zap.String("namespace", pod.Namespace),
zap.String("pod", pod.Name))
- return nil, framework.NewStatus(framework.Skip)
+ return nil, fwk.NewStatus(fwk.Skip)
}
taskID := string(pod.UID)
@@ -158,7 +159,7 @@ func (sp *YuniKornSchedulerPlugin) PreFilter(_
context.Context, _ *framework.Cyc
if _, ok := sp.context.GetInProgressPodAllocation(taskID); ok {
// pod must have failed scheduling, reject it and
return unschedulable
sp.failTask(pod, app, task)
- return nil,
framework.NewStatus(framework.UnschedulableAndUnresolvable, "Pod is not ready
for scheduling")
+ return nil,
fwk.NewStatus(fwk.UnschedulableAndUnresolvable, "Pod is not ready for
scheduling")
}
nodeID, ok := sp.context.GetPendingPodAllocation(taskID)
@@ -172,7 +173,7 @@ func (sp *YuniKornSchedulerPlugin) PreFilter(_
context.Context, _ *framework.Cyc
}
}
- return nil, framework.NewStatus(framework.UnschedulableAndUnresolvable,
"Pod is not ready for scheduling")
+ return nil, fwk.NewStatus(fwk.UnschedulableAndUnresolvable, "Pod is not
ready for scheduling")
}
// PreFilterExtensions is unused
@@ -181,7 +182,7 @@ func (sp *YuniKornSchedulerPlugin) PreFilterExtensions()
framework.PreFilterExte
}
// Filter is used to release specific pod/node combinations to scheduler
-func (sp *YuniKornSchedulerPlugin) Filter(_ context.Context, _
*framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo)
*framework.Status {
+func (sp *YuniKornSchedulerPlugin) Filter(_ context.Context, _ fwk.CycleState,
pod *v1.Pod, nodeInfo fwk.NodeInfo) *fwk.Status {
log.Log(log.ShimSchedulerPlugin).Debug("Filter check",
zap.String("namespace", pod.Namespace),
zap.String("pod", pod.Name),
@@ -214,11 +215,11 @@ func (sp *YuniKornSchedulerPlugin) Filter(_
context.Context, _ *framework.CycleS
}
}
- return framework.NewStatus(framework.UnschedulableAndUnresolvable, "Pod
is not fit for node")
+ return fwk.NewStatus(fwk.UnschedulableAndUnresolvable, "Pod is not fit
for node")
}
-func (sp *YuniKornSchedulerPlugin) EventsToRegister(_ context.Context)
([]framework.ClusterEventWithHint, error) {
- return sp.context.EventsToRegister(func(_ klog.Logger, pod *v1.Pod, _,
_ interface{}) (framework.QueueingHint, error) {
+func (sp *YuniKornSchedulerPlugin) EventsToRegister(_ context.Context)
([]fwk.ClusterEventWithHint, error) {
+ return sp.context.EventsToRegister(func(_ klog.Logger, pod *v1.Pod, _,
_ interface{}) (fwk.QueueingHint, error) {
// adapt our simpler function to the QueueingHintFn contract
return sp.queueingHint(pod)
}), nil
@@ -228,19 +229,19 @@ func (sp *YuniKornSchedulerPlugin) EventsToRegister(_
context.Context) ([]framew
// schedulable when it was not previously. Since YuniKorn maintains its own
internal scheduling state, only the pod
// is needed. This function will only be called on a previously unschedulable
pod by this plugin -- therefore this
// is definitely a YuniKorn pod.
-func (sp *YuniKornSchedulerPlugin) queueingHint(pod *v1.Pod)
(framework.QueueingHint, error) {
+func (sp *YuniKornSchedulerPlugin) queueingHint(pod *v1.Pod)
(fwk.QueueingHint, error) {
// Use the context's bloom filter to rule out this task if it is not
present. Given a large backlog,
// this will almost always return false and we can skip re-enqueue.
taskID := string(pod.UID)
if !sp.context.IsTaskMaybeSchedulable(taskID) {
- return framework.QueueSkip, nil
+ return fwk.QueueSkip, nil
}
- return framework.Queue, nil
+ return fwk.Queue, nil
}
// PostBind is used to mark allocations as completed once scheduling run is
finished
-func (sp *YuniKornSchedulerPlugin) PostBind(_ context.Context, _
*framework.CycleState, pod *v1.Pod, nodeName string) {
+func (sp *YuniKornSchedulerPlugin) PostBind(_ context.Context, _
fwk.CycleState, pod *v1.Pod, nodeName string) {
log.Log(log.ShimSchedulerPlugin).Debug("PostBind handler",
zap.String("namespace", pod.Namespace),
zap.String("pod", pod.Name),
diff --git a/pkg/plugin/support/framework_handle.go
b/pkg/plugin/support/framework_handle.go
index 599b46ef..e15f8040 100644
--- a/pkg/plugin/support/framework_handle.go
+++ b/pkg/plugin/support/framework_handle.go
@@ -28,6 +28,7 @@ import (
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/events"
"k8s.io/klog/v2"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework/parallelize"
"k8s.io/kubernetes/pkg/scheduler/util/assumecache"
@@ -65,62 +66,62 @@ func (p frameworkHandle) ResourceClaimCache()
*assumecache.AssumeCache {
// PodNominator stubs
-func (p frameworkHandle) AddNominatedPod(logger klog.Logger, pod
*framework.PodInfo, nominatingInfo *framework.NominatingInfo) {
+func (p frameworkHandle) AddNominatedPod(_ klog.Logger, _ fwk.PodInfo, _
*framework.NominatingInfo) {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
}
-func (p frameworkHandle) DeleteNominatedPodIfExists(pod *v1.Pod) {
+func (p frameworkHandle) DeleteNominatedPodIfExists(_ *v1.Pod) {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
}
-func (p frameworkHandle) UpdateNominatedPod(logger klog.Logger, oldPod
*v1.Pod, newPodInfo *framework.PodInfo) {
+func (p frameworkHandle) UpdateNominatedPod(_ klog.Logger, _ *v1.Pod, _
fwk.PodInfo) {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
}
-func (p frameworkHandle) NominatedPodsForNode(nodeName string)
[]*framework.PodInfo {
+func (p frameworkHandle) NominatedPodsForNode(_ string) []fwk.PodInfo {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return nil
}
// PluginsRunner stubs
-func (p frameworkHandle) RunPreScorePlugins(ctx context.Context, state
*framework.CycleState, pod *v1.Pod, infos []*framework.NodeInfo)
*framework.Status {
+func (p frameworkHandle) RunPreScorePlugins(_ context.Context, _
fwk.CycleState, _ *v1.Pod, _ []fwk.NodeInfo) *fwk.Status {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return nil
}
-func (p frameworkHandle) RunScorePlugins(ctx context.Context, state
*framework.CycleState, pod *v1.Pod, infos []*framework.NodeInfo)
([]framework.NodePluginScores, *framework.Status) {
+func (p frameworkHandle) RunScorePlugins(_ context.Context, _ fwk.CycleState,
_ *v1.Pod, _ []fwk.NodeInfo) ([]framework.NodePluginScores, *fwk.Status) {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return nil, nil
}
-func (p frameworkHandle) RunFilterPlugins(context.Context,
*framework.CycleState, *v1.Pod, *framework.NodeInfo) *framework.Status {
+func (p frameworkHandle) RunFilterPlugins(_ context.Context, _ fwk.CycleState,
_ *v1.Pod, _ fwk.NodeInfo) *fwk.Status {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return nil
}
-func (p frameworkHandle) RunPreFilterExtensionAddPod(ctx context.Context,
state *framework.CycleState, podToSchedule *v1.Pod, podInfoToAdd
*framework.PodInfo, nodeInfo *framework.NodeInfo) *framework.Status {
+func (p frameworkHandle) RunPreFilterExtensionAddPod(_ context.Context, _
fwk.CycleState, _ *v1.Pod, _ fwk.PodInfo, _ fwk.NodeInfo) *fwk.Status {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return nil
}
-func (p frameworkHandle) RunPreFilterExtensionRemovePod(ctx context.Context,
state *framework.CycleState, podToSchedule *v1.Pod, podInfoToRemove
*framework.PodInfo, nodeInfo *framework.NodeInfo) *framework.Status {
+func (p frameworkHandle) RunPreFilterExtensionRemovePod(_ context.Context, _
fwk.CycleState, _ *v1.Pod, _ fwk.PodInfo, _ fwk.NodeInfo) *fwk.Status {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return nil
}
// stubbed out to fulfill framework.Handle contract; these are all currently
unused by upstream K8S predicates
-func (p frameworkHandle) IterateOverWaitingPods(callback
func(framework.WaitingPod)) {
+func (p frameworkHandle) IterateOverWaitingPods(_ func(framework.WaitingPod)) {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
}
-func (p frameworkHandle) GetWaitingPod(uid types.UID) framework.WaitingPod {
+func (p frameworkHandle) GetWaitingPod(_ types.UID) framework.WaitingPod {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return nil
}
-func (p frameworkHandle) RejectWaitingPod(uid types.UID) bool {
+func (p frameworkHandle) RejectWaitingPod(_ types.UID) bool {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return false
}
@@ -135,7 +136,7 @@ func (p frameworkHandle) KubeConfig() *rest.Config {
return nil
}
-func (p frameworkHandle) RunFilterPluginsWithNominatedPods(ctx
context.Context, state *framework.CycleState, pod *v1.Pod, info
*framework.NodeInfo) *framework.Status {
+func (p frameworkHandle) RunFilterPluginsWithNominatedPods(_ context.Context,
_ fwk.CycleState, _ *v1.Pod, _ fwk.NodeInfo) *fwk.Status {
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
return nil
}
@@ -145,7 +146,7 @@ func (p frameworkHandle) Extenders() []framework.Extender {
return nil
}
-func (p frameworkHandle) Activate(logger klog.Logger, pods map[string]*v1.Pod)
{
+func (p frameworkHandle) Activate(_ klog.Logger, _ map[string]*v1.Pod) {
// currently only used by Preemption plugin, so not needed
log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
}
@@ -156,6 +157,16 @@ func (p frameworkHandle) SharedDRAManager()
framework.SharedDRAManager {
return nil
}
+func (p frameworkHandle) APIDispatcher() fwk.APIDispatcher {
+ log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
+ return nil
+}
+
+func (p frameworkHandle) APICacher() framework.APICacher {
+ log.Log(log.ShimFramework).Fatal("BUG: Should not be used by plugins")
+ return nil
+}
+
var _ framework.Handle = frameworkHandle{}
func NewFrameworkHandle(sharedLister framework.SharedLister, informerFactory
informers.SharedInformerFactory, clientSet kubernetes.Interface)
framework.Handle {
diff --git a/pkg/plugin/support/nodeinfo_lister.go
b/pkg/plugin/support/nodeinfo_lister.go
index c0534b1f..a013d4a3 100644
--- a/pkg/plugin/support/nodeinfo_lister.go
+++ b/pkg/plugin/support/nodeinfo_lister.go
@@ -21,6 +21,7 @@ package support
import (
"errors"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework"
"github.com/apache/yunikorn-k8shim/pkg/cache/external"
@@ -30,19 +31,19 @@ type nodeInfoListerImpl struct {
cache *external.SchedulerCache
}
-func (n nodeInfoListerImpl) List() ([]*framework.NodeInfo, error) {
+func (n nodeInfoListerImpl) List() ([]fwk.NodeInfo, error) {
return n.cache.GetNodesInfo(), nil
}
-func (n nodeInfoListerImpl) HavePodsWithAffinityList() ([]*framework.NodeInfo,
error) {
+func (n nodeInfoListerImpl) HavePodsWithAffinityList() ([]fwk.NodeInfo, error)
{
return n.cache.GetNodesInfoPodsWithAffinity(), nil
}
-func (n nodeInfoListerImpl) HavePodsWithRequiredAntiAffinityList()
([]*framework.NodeInfo, error) {
+func (n nodeInfoListerImpl) HavePodsWithRequiredAntiAffinityList()
([]fwk.NodeInfo, error) {
return n.cache.GetNodesInfoPodsWithReqAntiAffinity(), nil
}
-func (n nodeInfoListerImpl) Get(nodeName string) (*framework.NodeInfo, error) {
+func (n nodeInfoListerImpl) Get(nodeName string) (fwk.NodeInfo, error) {
nodes := n.cache.GetNodesInfoMap()
node, ok := nodes[nodeName]
if !ok {
diff --git a/pkg/plugin/support/nodeinfo_lister_test.go
b/pkg/plugin/support/nodeinfo_lister_test.go
index 4036c6af..311ec9a3 100644
--- a/pkg/plugin/support/nodeinfo_lister_test.go
+++ b/pkg/plugin/support/nodeinfo_lister_test.go
@@ -24,6 +24,7 @@ import (
"gotest.tools/v3/assert"
v1 "k8s.io/api/core/v1"
apis "k8s.io/apimachinery/pkg/apis/meta/v1"
+ fwk "k8s.io/kube-scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework"
"github.com/apache/yunikorn-k8shim/pkg/cache/external"
@@ -36,7 +37,7 @@ func TestList(t *testing.T) {
assert.NilError(t, err, "List failed")
assert.Assert(t, nodes != nil, "nodes was nil")
assert.Equal(t, 2, len(nodes), "wrong length")
- m := make(map[string]*framework.NodeInfo)
+ m := make(map[string]fwk.NodeInfo)
for _, node := range nodes {
m[node.Node().Name] = node
}
diff --git a/pkg/shim/scheduler_test.go b/pkg/shim/scheduler_test.go
index afdcf92c..3666b82e 100644
--- a/pkg/shim/scheduler_test.go
+++ b/pkg/shim/scheduler_test.go
@@ -28,6 +28,8 @@ import (
"k8s.io/apimachinery/pkg/api/resource"
apis "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
+ "k8s.io/apiserver/pkg/util/feature"
+ "k8s.io/kubernetes/pkg/features"
"github.com/apache/yunikorn-k8shim/pkg/cache"
"github.com/apache/yunikorn-k8shim/pkg/client"
@@ -39,6 +41,12 @@ import (
"github.com/apache/yunikorn-scheduler-interface/lib/go/si"
)
+func init() {
+ if err := feature.DefaultMutableFeatureGate.Set(fmt.Sprintf("%s=false",
features.DynamicResourceAllocation)); err != nil {
+ panic(fmt.Errorf("unable to set DynamicResourceAllocation
feature gate: %v", err))
+ }
+}
+
const configData = `
partitions:
- name: default
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]