diff --git a/slice/cmd/main.go b/slice/cmd/main.go index 13139b6dc..8989a4b31 100644 --- a/slice/cmd/main.go +++ b/slice/cmd/main.go @@ -37,7 +37,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/webhook" jobset "sigs.k8s.io/jobset/api/jobset/v1alpha2" kueuealpha "sigs.k8s.io/kueue/apis/kueue/v1alpha1" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" "tpu-slice-controller/api/v1beta1" "tpu-slice-controller/internal/controller" diff --git a/slice/go.mod b/slice/go.mod index cac2ccdee..6348d0497 100644 --- a/slice/go.mod +++ b/slice/go.mod @@ -5,22 +5,34 @@ go 1.25.0 require ( github.com/go-logr/logr v1.4.3 github.com/google/go-cmp v0.7.0 - github.com/onsi/ginkgo/v2 v2.25.3 + github.com/onsi/ginkgo/v2 v2.27.2 github.com/onsi/gomega v1.38.2 - github.com/open-policy-agent/cert-controller v0.14.0 - go.uber.org/zap v1.27.0 - k8s.io/api v0.34.1 - k8s.io/apimachinery v0.34.1 - k8s.io/client-go v0.34.1 - k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 - sigs.k8s.io/controller-runtime v0.22.3 + github.com/open-policy-agent/cert-controller v0.15.0 + go.uber.org/zap v1.27.1 + k8s.io/api v0.34.2 + k8s.io/apimachinery v0.34.2 + k8s.io/client-go v0.34.2 + k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 + sigs.k8s.io/controller-runtime v0.22.4 sigs.k8s.io/jobset v0.10.1 - sigs.k8s.io/kueue v0.14.5 + sigs.k8s.io/kueue v0.15.2 ) require ( github.com/Masterminds/semver/v3 v3.4.0 // indirect - github.com/cert-manager/cert-manager v1.18.2 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect + github.com/cert-manager/cert-manager v1.19.1 // indirect + github.com/go-openapi/swag/cmdutils v0.25.4 // indirect + github.com/go-openapi/swag/conv v0.25.4 // indirect + github.com/go-openapi/swag/fileutils v0.25.4 // indirect + github.com/go-openapi/swag/jsonname v0.25.4 // indirect + github.com/go-openapi/swag/jsonutils v0.25.4 // indirect + github.com/go-openapi/swag/loading v0.25.4 // indirect + github.com/go-openapi/swag/mangling v0.25.4 // indirect + github.com/go-openapi/swag/netutils v0.25.4 // indirect + github.com/go-openapi/swag/stringutils v0.25.4 // indirect + github.com/go-openapi/swag/typeutils v0.25.4 // indirect + github.com/go-openapi/swag/yamlutils v0.25.4 // indirect github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect github.com/kubeflow/trainer/v2 v2.1.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect @@ -28,9 +40,11 @@ require ( github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - sigs.k8s.io/gateway-api v1.1.0 // indirect + golang.org/x/mod v0.29.0 // indirect + sigs.k8s.io/cluster-inventory-api v0.0.0-20251028164203-2e3fabb46733 // indirect + sigs.k8s.io/gateway-api v1.4.0 // indirect sigs.k8s.io/lws v0.7.0 // indirect - sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect + sigs.k8s.io/structured-merge-diff/v6 v6.3.1 // indirect volcano.sh/apis v1.13.1-0.20251028070205-46d20c0699e7 // indirect ) @@ -39,33 +53,30 @@ require ( github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect - github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/emicklei/go-restful/v3 v3.12.2 // indirect + github.com/emicklei/go-restful/v3 v3.13.0 // indirect github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/zapr v1.3.0 // indirect - github.com/go-openapi/jsonpointer v0.21.1 // indirect - github.com/go-openapi/jsonreference v0.21.0 // indirect - github.com/go-openapi/swag v0.23.1 // indirect + github.com/go-openapi/jsonpointer v0.22.3 // indirect + github.com/go-openapi/jsonreference v0.21.3 // indirect + github.com/go-openapi/swag v0.25.4 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/google/btree v1.1.3 // indirect github.com/google/cel-go v0.26.0 // indirect - github.com/google/gnostic-models v0.7.0 // indirect + github.com/google/gnostic-models v0.7.1 // indirect github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1 // 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 - github.com/kubeflow/mpi-operator v0.6.0 // indirect + github.com/kubeflow/mpi-operator v0.7.0 // indirect github.com/kubeflow/training-operator v1.9.3 // indirect - github.com/mailru/easyjson v0.9.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect @@ -74,51 +85,49 @@ require ( github.com/prometheus/client_golang v1.23.2 // 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/ray-project/kuberay/ray-operator v1.4.2 // indirect + github.com/prometheus/procfs v0.17.0 // indirect + github.com/ray-project/kuberay/ray-operator v1.5.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cobra v1.10.1 // indirect github.com/spf13/pflag v1.0.10 // indirect - github.com/stoewer/go-strcase v1.3.0 // indirect + github.com/stoewer/go-strcase v1.3.1 // indirect github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect - go.opentelemetry.io/otel v1.36.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.36.0 // indirect - go.opentelemetry.io/otel/sdk v1.34.0 // indirect - go.opentelemetry.io/otel/trace v1.36.0 // indirect - go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/otel v1.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 // indirect + go.opentelemetry.io/otel/metric v1.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.37.0 // indirect + go.opentelemetry.io/otel/trace v1.37.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/atomic v1.11.0 // indirect - go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect + golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect golang.org/x/net v0.47.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/oauth2 v0.33.0 // indirect golang.org/x/sync v0.18.0 // indirect golang.org/x/sys v0.38.0 // indirect golang.org/x/term v0.37.0 // indirect golang.org/x/text v0.31.0 // indirect - golang.org/x/time v0.11.0 // indirect + golang.org/x/time v0.14.0 // indirect golang.org/x/tools v0.38.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.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 + google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 // indirect + google.golang.org/grpc v1.75.1 // indirect + google.golang.org/protobuf v1.36.10 // indirect + gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/apiserver v0.34.1 // indirect - k8s.io/component-base v0.34.1 // indirect - k8s.io/component-helpers v0.34.1 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/apiserver v0.34.2 // indirect + k8s.io/component-base v0.34.2 // indirect + k8s.io/component-helpers v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 - k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect - sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect + k8s.io/kube-openapi v0.0.0-20251125145642-4e65d59e963e // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.33.0 // indirect + sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/yaml v1.6.0 // indirect ) diff --git a/slice/go.sum b/slice/go.sum index 634773246..a90efd00c 100644 --- a/slice/go.sum +++ b/slice/go.sum @@ -10,10 +10,10 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= -github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/cert-manager/cert-manager v1.18.2 h1:H2P75ycGcTMauV3gvpkDqLdS3RSXonWF2S49QGA1PZE= -github.com/cert-manager/cert-manager v1.18.2/go.mod h1:icDJx4kG9BCNpGjBvrmsFd99d+lXUvWdkkcrSSQdIiw= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= +github.com/cert-manager/cert-manager v1.19.1 h1:Txh8L/nLWTDcb7ZnXuXbTe15BxQnLbLirXmbNk0fGgY= +github.com/cert-manager/cert-manager v1.19.1/go.mod h1:8Ps1VXCQRGKT8zNvLQlhDK1gFKWmYKdIPQFmvTS2JeA= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -23,8 +23,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU= -github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= +github.com/emicklei/go-restful/v3 v3.13.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU= @@ -35,6 +35,12 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S 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-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -42,14 +48,44 @@ 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= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/jsonpointer v0.21.1 h1:whnzv/pNXtK2FbX/W9yJfRmE2gsmkfahjMKB0fZvcic= -github.com/go-openapi/jsonpointer v0.21.1/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk= -github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= -github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= -github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= +github.com/go-openapi/jsonpointer v0.22.3 h1:dKMwfV4fmt6Ah90zloTbUKWMD+0he+12XYAsPotrkn8= +github.com/go-openapi/jsonpointer v0.22.3/go.mod h1:0lBbqeRsQ5lIanv3LHZBrmRGHLHcQoOXQnf88fHlGWo= +github.com/go-openapi/jsonreference v0.21.3 h1:96Dn+MRPa0nYAR8DR1E03SblB5FJvh7W6krPI0Z7qMc= +github.com/go-openapi/jsonreference v0.21.3/go.mod h1:RqkUP0MrLf37HqxZxrIAtTWW4ZJIK1VzduhXYBEeGc4= +github.com/go-openapi/swag v0.25.4 h1:OyUPUFYDPDBMkqyxOTkqDYFnrhuhi9NR6QVUvIochMU= +github.com/go-openapi/swag v0.25.4/go.mod h1:zNfJ9WZABGHCFg2RnY0S4IOkAcVTzJ6z2Bi+Q4i6qFQ= +github.com/go-openapi/swag/cmdutils v0.25.4 h1:8rYhB5n6WawR192/BfUu2iVlxqVR9aRgGJP6WaBoW+4= +github.com/go-openapi/swag/cmdutils v0.25.4/go.mod h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0= +github.com/go-openapi/swag/conv v0.25.4 h1:/Dd7p0LZXczgUcC/Ikm1+YqVzkEeCc9LnOWjfkpkfe4= +github.com/go-openapi/swag/conv v0.25.4/go.mod h1:3LXfie/lwoAv0NHoEuY1hjoFAYkvlqI/Bn5EQDD3PPU= +github.com/go-openapi/swag/fileutils v0.25.4 h1:2oI0XNW5y6UWZTC7vAxC8hmsK/tOkWXHJQH4lKjqw+Y= +github.com/go-openapi/swag/fileutils v0.25.4/go.mod h1:cdOT/PKbwcysVQ9Tpr0q20lQKH7MGhOEb6EwmHOirUk= +github.com/go-openapi/swag/jsonname v0.25.4 h1:bZH0+MsS03MbnwBXYhuTttMOqk+5KcQ9869Vye1bNHI= +github.com/go-openapi/swag/jsonname v0.25.4/go.mod h1:GPVEk9CWVhNvWhZgrnvRA6utbAltopbKwDu8mXNUMag= +github.com/go-openapi/swag/jsonutils v0.25.4 h1:VSchfbGhD4UTf4vCdR2F4TLBdLwHyUDTd1/q4i+jGZA= +github.com/go-openapi/swag/jsonutils v0.25.4/go.mod h1:7OYGXpvVFPn4PpaSdPHJBtF0iGnbEaTk8AvBkoWnaAY= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4 h1:IACsSvBhiNJwlDix7wq39SS2Fh7lUOCJRmx/4SN4sVo= +github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.4/go.mod h1:Mt0Ost9l3cUzVv4OEZG+WSeoHwjWLnarzMePNDAOBiM= +github.com/go-openapi/swag/loading v0.25.4 h1:jN4MvLj0X6yhCDduRsxDDw1aHe+ZWoLjW+9ZQWIKn2s= +github.com/go-openapi/swag/loading v0.25.4/go.mod h1:rpUM1ZiyEP9+mNLIQUdMiD7dCETXvkkC30z53i+ftTE= +github.com/go-openapi/swag/mangling v0.25.4 h1:2b9kBJk9JvPgxr36V23FxJLdwBrpijI26Bx5JH4Hp48= +github.com/go-openapi/swag/mangling v0.25.4/go.mod h1:6dxwu6QyORHpIIApsdZgb6wBk/DPU15MdyYj/ikn0Hg= +github.com/go-openapi/swag/netutils v0.25.4 h1:Gqe6K71bGRb3ZQLusdI8p/y1KLgV4M/k+/HzVSqT8H0= +github.com/go-openapi/swag/netutils v0.25.4/go.mod h1:m2W8dtdaoX7oj9rEttLyTeEFFEBvnAx9qHd5nJEBzYg= +github.com/go-openapi/swag/stringutils v0.25.4 h1:O6dU1Rd8bej4HPA3/CLPciNBBDwZj9HiEpdVsb8B5A8= +github.com/go-openapi/swag/stringutils v0.25.4/go.mod h1:GTsRvhJW5xM5gkgiFe0fV3PUlFm0dr8vki6/VSRaZK0= +github.com/go-openapi/swag/typeutils v0.25.4 h1:1/fbZOUN472NTc39zpa+YGHn3jzHWhv42wAJSN91wRw= +github.com/go-openapi/swag/typeutils v0.25.4/go.mod h1:Ou7g//Wx8tTLS9vG0UmzfCsjZjKhpjxayRKTHXf2pTE= +github.com/go-openapi/swag/yamlutils v0.25.4 h1:6jdaeSItEUb7ioS9lFoCZ65Cne1/RZtPBZ9A56h92Sw= +github.com/go-openapi/swag/yamlutils v0.25.4/go.mod h1:MNzq1ulQu+yd8Kl7wPOut/YHAAU/H6hL91fF+E2RFwc= +github.com/go-openapi/testify/enable/yaml/v2 v2.0.2 h1:0+Y41Pz1NkbTHz8NngxTuAXxEodtNSI1WG1c/m5Akw4= +github.com/go-openapi/testify/enable/yaml/v2 v2.0.2/go.mod h1:kme83333GCtJQHXQ8UKX3IBZu6z8T5Dvy5+CW3NLUUg= +github.com/go-openapi/testify/v2 v2.0.2 h1:X999g3jeLcoY8qctY/c/Z8iBHTbwLz7R2WXd6Ub6wls= +github.com/go-openapi/testify/v2 v2.0.2/go.mod h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54= 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/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= @@ -58,8 +94,8 @@ 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.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/gnostic-models v0.7.1 h1:SisTfuFKJSKM5CPZkffwi6coztzzeYUhc3v4yxLWH8c= +github.com/google/gnostic-models v0.7.1/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ= 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= @@ -71,12 +107,12 @@ 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/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/grpc-ecosystem/grpc-gateway/v2 v2.27.1 h1:X5VWvz21y3gzm9Nw/kaUeku/1+uBhcekkmy4IkffJww= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.1/go.mod h1:Zanoh4+gvIgluNqcfMVTJueD4wSS5hT7zTt4Mrutd90= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -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/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -87,16 +123,18 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kubeflow/mpi-operator v0.6.0 h1:RzzG03oyQIiHe/SH2k19N+Hp4QkxEsG2l9G1T7US+ys= -github.com/kubeflow/mpi-operator v0.6.0/go.mod h1:lu3cj3ESq3SdS29nbHC26TuXiTYYQYTHJ6fcy5Xv20c= +github.com/kubeflow/mpi-operator v0.7.0 h1:ID1eyzAFOMofgynEvfy4//S3q7Ra1OSexrggb1VcC1o= +github.com/kubeflow/mpi-operator v0.7.0/go.mod h1:F6RbTC2l6Q7zrpCUA++sickyWWj32K/pk5WJhZnKS/c= github.com/kubeflow/trainer/v2 v2.1.0 h1:jRABD9ZYToamNH2atHze3L/VC/v6KCAqUEqsOQOjVTg= github.com/kubeflow/trainer/v2 v2.1.0/go.mod h1:AgnSIoJi4J2LEiywx1g43/8rOpM49hpD8KA3LTQzl0M= github.com/kubeflow/training-operator v1.9.3 h1:aaSHqskOtCY8Dn8sVd+l9p5XAczW6O0nYMPjVLAw/lc= github.com/kubeflow/training-operator v1.9.3/go.mod h1:6zI0hgeCOheiW5Z12IcVkKBuSWm714fz8mUvYu4Fid4= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= -github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= +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/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -109,12 +147,12 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq 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.25.3 h1:Ty8+Yi/ayDAGtk4XxmmfUy4GabvM+MegeB4cDLRi6nw= -github.com/onsi/ginkgo/v2 v2.25.3/go.mod h1:43uiyQC4Ed2tkOzLsEYm7hnrb7UJTWHYNsuy3bG/snE= +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/open-policy-agent/cert-controller v0.14.0 h1:TPc19BOHOs4tARruTT5o4bzir7Ed6FF+j3EXP/nmZBs= -github.com/open-policy-agent/cert-controller v0.14.0/go.mod h1:UhE/FU54DnKo+Rt0Yf3r+oKjgy6kqSH8Vsjo+5bGrSo= +github.com/open-policy-agent/cert-controller v0.15.0 h1:q5GaZgcbjHw8T6a+NWZxa8JvVB97VHJodbiticU6Rj0= +github.com/open-policy-agent/cert-controller v0.15.0/go.mod h1:6zxrUxL0sFlTQzNFToeo2ysfQ9lloVXj2fitZBVdXWU= github.com/open-policy-agent/frameworks/constraint v0.0.0-20241101234656-e78c8abd754a h1:gQtOJ50XFyL2Xh3lDD9zP4KQ2PY4mZKQ9hDcWc81Sp8= github.com/open-policy-agent/frameworks/constraint v0.0.0-20241101234656-e78c8abd754a/go.mod h1:tI7nc6H6os2UYZRvSm9Y7bq4oMoXqhwA0WfnqKpoAgc= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -124,8 +162,6 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/project-codeflare/appwrapper v1.1.2 h1:iEEyYGSDXOxMXc/AZEvTDDXy1DNi+cWUQ93uM6XAXJc= github.com/project-codeflare/appwrapper v1.1.2/go.mod h1:+Pfxe92YSxrFqO1ovRZTQ1PRrQqkdq5fLCxn1Ok6ZlQ= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= @@ -134,12 +170,12 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw 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/ray-project/kuberay/ray-operator v1.4.2 h1:A4tGzbIky8sInAUxZBdBb+rrpZ7fbqoxdsOtm559Zqg= -github.com/ray-project/kuberay/ray-operator v1.4.2/go.mod h1:oZaK6ZxZS57/JYvCbJdU1FdIMPW1JJNv6TqbAcUjE/8= -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/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= +github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= +github.com/ray-project/kuberay/ray-operator v1.5.1 h1:7FJYmB8oM+cnjv1VYCj/TfzRZG4XHvvt5Ayn5pZ5A1c= +github.com/ray-project/kuberay/ray-operator v1.5.1/go.mod h1:itUPJnr3QwoZT70gRgsWFpBolquuZtDRCkdA1lrAb7Y= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -148,8 +184,8 @@ github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4 github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/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/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= +github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -162,44 +198,50 @@ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= 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/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= 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/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.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= -go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= -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.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= -go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= -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.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= -go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= -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.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= +go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0 h1:Ahq7pZmv87yiyn3jeFz/LekZmPLLdKejuO3NcK9MssM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.37.0/go.mod h1:MJTqhM0im3mRLw1i8uGHnCvUEeS7VwRyxlLC78PA18M= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0 h1:EtFWSnwW9hGObjkIdmlnWSydO+Qs8OwzfzXLUPg4xOc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.37.0/go.mod h1:QjUEoiGCPkvFZ/MjK6ZZfNOS6mfVEVKYE99dFhuN2LI= +go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= +go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= +go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= +go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= +go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= +go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= +go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= +go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= +go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= -go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= 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/mock v0.6.0 h1:hyF9dfmbgIX5EfOdasqLsWD6xqpNZlXblLB/Dbnwv3Y= go.uber.org/mock v0.6.0/go.mod h1:KiVJ4BqZJaMj4svdfmHM0AUx4NJYO8ZNpPnZn1Z+BBU= 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.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= 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.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -207,18 +249,20 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q= golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= +golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/oauth2 v0.33.0 h1:4Q+qn+E5z8gPRJfmRy7C2gGG3T4jIprK6aSYgTXGRpo= +golang.org/x/oauth2 v0.33.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -236,8 +280,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= +golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -250,66 +294,70 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.5.0 h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0= gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= -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= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074 h1:mVXdvnmR3S3BQOqHECm9NGMjYiRtEvDYcqAqedTXY6s= +google.golang.org/genproto/googleapis/api v0.0.0-20250721164621-a45f3dfb1074/go.mod h1:vYFwMYFbmA8vl6Z/krj/h7+U/AqpHknwJX4Uqgfyc7I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 h1:i8QOKZfYg6AbGVZzUAY3LrNWCKF8O6zFisU9Wl9RER4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= +google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= +google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= +google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/evanphx/json-patch.v4 v4.12.0 h1:n6jtcsulIzXPJaxegRbvFNNrZDjbij7ny3gmSPG+6V4= -gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= +gopkg.in/evanphx/json-patch.v4 v4.13.0 h1:czT3CmqEaQ1aanPc5SdlgQrrEIb8w/wwCvWWnfEbYzo= +gopkg.in/evanphx/json-patch.v4 v4.13.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWMG4EsWvDvM72M= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= -k8s.io/component-helpers v0.34.1 h1:gWhH3CCdwAx5P3oJqZKb4Lg5FYZTWVbdWtOI8n9U4XY= -k8s.io/component-helpers v0.34.1/go.mod h1:4VgnUH7UA/shuBur+OWoQC0xfb69sy/93ss0ybZqm3c= +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/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +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/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-aggregator v0.33.4 h1:TdIJKHb0/bLpby7FblXIaVEzyA1jGEjzt/n9cRvwq8U= -k8s.io/kube-aggregator v0.33.4/go.mod h1:wZuctdRvGde5bwzxkZRs0GYj2KOpCNgx8rRGVoNb62k= -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/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/controller-runtime v0.22.3 h1:I7mfqz/a/WdmDCEnXmSPm8/b/yRTy6JsKKENTijTq8Y= -sigs.k8s.io/controller-runtime v0.22.3/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8= -sigs.k8s.io/gateway-api v1.1.0 h1:DsLDXCi6jR+Xz8/xd0Z1PYl2Pn0TyaFMOPPZIj4inDM= -sigs.k8s.io/gateway-api v1.1.0/go.mod h1:ZH4lHrL2sDi0FHZ9jjneb8kKnGzFWyrTya35sWUTrRs= +k8s.io/kube-aggregator v0.34.1 h1:WNLV0dVNoFKmuyvdWLd92iDSyD/TSTjqwaPj0U9XAEU= +k8s.io/kube-aggregator v0.34.1/go.mod h1:RU8j+5ERfp0h+gIvWtxRPfsa5nK7rboDm8RST8BJfYQ= +k8s.io/kube-openapi v0.0.0-20251125145642-4e65d59e963e h1:iW9ChlU0cU16w8MpVYjXk12dqQ4BPFBEgif+ap7/hqQ= +k8s.io/kube-openapi v0.0.0-20251125145642-4e65d59e963e/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= +k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck= +k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.33.0 h1:qPrZsv1cwQiFeieFlRqT627fVZ+tyfou/+S5S0H5ua0= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.33.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw= +sigs.k8s.io/cluster-inventory-api v0.0.0-20251028164203-2e3fabb46733 h1:l90ANqblqFrE4L2QLLk+9iPjfmaLRvOFL51l/fgwUgg= +sigs.k8s.io/cluster-inventory-api v0.0.0-20251028164203-2e3fabb46733/go.mod h1:guwenlZ9iIfYlNxn7ExCfugOLTh6wjjRX3adC36YCmQ= +sigs.k8s.io/controller-runtime v0.22.4 h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A= +sigs.k8s.io/controller-runtime v0.22.4/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8= +sigs.k8s.io/gateway-api v1.4.0 h1:ZwlNM6zOHq0h3WUX2gfByPs2yAEsy/EenYJB78jpQfQ= +sigs.k8s.io/gateway-api v1.4.0/go.mod h1:AR5RSqciWP98OPckEjOjh2XJhAe2Na4LHyXD2FUY7Qk= sigs.k8s.io/jobset v0.10.1 h1:u8QKifNsrWVrlRFe6w2ofYTqFT9ma2DRHxfeB2m9xyU= sigs.k8s.io/jobset v0.10.1/go.mod h1:B9jF+ttb/qAs6LyJ036QTJ0LwvVnY/ax1fIKAqn4AYE= -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/kueue v0.14.5 h1:unpTOOfJllW1v4gT0ZaUwcW5bvbr6iJZAXHV/+dkdV0= -sigs.k8s.io/kueue v0.14.5/go.mod h1:+v3aesCedri8udt13YfTEFFvzLi5rvB4nj5XMvBfYEg= +sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg= +sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= +sigs.k8s.io/kueue v0.15.2 h1:UYjEd8lx3Am1njcvpyEO/QkwCFerE6WW6qaaXNYg768= +sigs.k8s.io/kueue v0.15.2/go.mod h1:e4vf5Nve0M1NkYKs6ysUWtQg7iE4UlG1wTR8dn7Dm+I= sigs.k8s.io/lws v0.7.0 h1:qWfzX8+UBak+Hq0+m/PuE3uO0mp/3dmm5q/h/7z31A8= sigs.k8s.io/lws v0.7.0/go.mod h1:WLg0CkyJTRQWMUOUam6qi9qRmcj3LAIWQUT81d4BGr4= 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/scheduler-plugins v0.34.1-devel h1:tT0/rFgjM7+VVDTKkcjA/XxhpYgRyq+RV0P7QW1Pxvo= sigs.k8s.io/scheduler-plugins v0.34.1-devel/go.mod h1:YQJimEVm3dpz9va/BlzgsK1HQ3KGIehABDz+D5PPP50= -sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco= -sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE= +sigs.k8s.io/structured-merge-diff/v6 v6.3.1 h1:JrhdFMqOd/+3ByqlP2I45kTOZmTRLBUm5pvRjeheg7E= +sigs.k8s.io/structured-merge-diff/v6 v6.3.1/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= volcano.sh/apis v1.13.1-0.20251028070205-46d20c0699e7 h1:uRQSF3S3+nsi1IcE0brZBwzqzh6Ne8Gz3SHyBcCENRA= diff --git a/slice/internal/controller/admissioncheck_controller.go b/slice/internal/controller/admissioncheck_controller.go index 6d4bbe2e3..996d78143 100644 --- a/slice/internal/controller/admissioncheck_controller.go +++ b/slice/internal/controller/admissioncheck_controller.go @@ -25,7 +25,7 @@ import ( ctrl "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/reconcile" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" ) type AdmissionCheckReconciler struct { diff --git a/slice/internal/controller/admissioncheck_controller_test.go b/slice/internal/controller/admissioncheck_controller_test.go index b01db882c..83d00b5f0 100644 --- a/slice/internal/controller/admissioncheck_controller_test.go +++ b/slice/internal/controller/admissioncheck_controller_test.go @@ -27,7 +27,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/reconcile" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" utiltesting "tpu-slice-controller/internal/util/testing" ) diff --git a/slice/internal/controller/indexer.go b/slice/internal/controller/indexer.go index 2bac20175..470a6c205 100644 --- a/slice/internal/controller/indexer.go +++ b/slice/internal/controller/indexer.go @@ -22,7 +22,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" "tpu-slice-controller/api/v1beta1" "tpu-slice-controller/internal/core" diff --git a/slice/internal/controller/workload_controller.go b/slice/internal/controller/workload_controller.go index 16669e619..caaa9dd46 100644 --- a/slice/internal/controller/workload_controller.go +++ b/slice/internal/controller/workload_controller.go @@ -42,9 +42,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/handler" "sigs.k8s.io/controller-runtime/pkg/reconcile" jobset "sigs.k8s.io/jobset/api/jobset/v1alpha2" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" "sigs.k8s.io/kueue/pkg/util/admissioncheck" "sigs.k8s.io/kueue/pkg/util/podset" + "sigs.k8s.io/kueue/pkg/util/tas" "sigs.k8s.io/kueue/pkg/workload" "tpu-slice-controller/api/v1beta1" @@ -583,7 +584,7 @@ func parseTopologyAssignment(topologyAssignment *kueue.TopologyAssignment, nodes // we already validated that all assignments have a valid level, // in validateRelevantWorkload. hostnameLevelIndex := topology.HostnameLevelIndex(topologyAssignment) - for _, domain := range topologyAssignment.Domains { + for domain := range tas.InternalSeqFrom(topologyAssignment) { nodeName := domain.Values[hostnameLevelIndex] if subBlockId := topology.GetTPUSubBlockLabelValue(nodes, nodeName); !seenSubBlockIds.Has(subBlockId) { subBlockIds = append(subBlockIds, subBlockId) diff --git a/slice/internal/controller/workload_controller_test.go b/slice/internal/controller/workload_controller_test.go index 5750231f7..da918b87f 100644 --- a/slice/internal/controller/workload_controller_test.go +++ b/slice/internal/controller/workload_controller_test.go @@ -41,7 +41,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/priorityqueue" "sigs.k8s.io/controller-runtime/pkg/reconcile" jobset "sigs.k8s.io/jobset/api/jobset/v1alpha2" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" slice "tpu-slice-controller/api/v1beta1" "tpu-slice-controller/internal/core" @@ -113,18 +113,16 @@ func TestWorkloadReconciler(t *testing.T) { } baseLevels := []string{"kubernetes.io/hostname"} basePodSetAssignment1Wrapper := utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker1"}, - Count: 2, - }, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("worker1"). + Obj(), }) basePodSetAssignment2Wrapper := utiltesting.MakePodSetAssignment("ps2"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker2"}, - Count: 2, - }, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("worker2"). + Obj(), }) basePodSetWithAffinity := func() kueue.PodSet { ps := utiltesting.MakePodSet("ps1", 2, ptr.To(int32(1))). @@ -477,11 +475,11 @@ func TestWorkloadReconciler(t *testing.T) { &kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment(nil, []kueue.TopologyDomainAssignment{ - { - Values: []string{"domain1", "domain2"}, - Count: 2, - }, + TopologyAssignment(nil, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("domain1"). + Value("domain2"). + Obj(), }).Obj(), }, }, now, @@ -501,11 +499,11 @@ func TestWorkloadReconciler(t *testing.T) { &kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment(nil, []kueue.TopologyDomainAssignment{ - { - Values: []string{"domain1", "domain2"}, - Count: 2, - }, + TopologyAssignment(nil, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("domain1"). + Value("domain2"). + Obj(), }).Obj(), }, }, now, @@ -529,11 +527,11 @@ func TestWorkloadReconciler(t *testing.T) { &kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment(nil, []kueue.TopologyDomainAssignment{ - { - Values: []string{"domain1", "domain2"}, - Count: 2, - }, + TopologyAssignment(nil, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("domain1"). + Value("domain2"). + Obj(), }).Obj(), }, }, now, @@ -553,11 +551,11 @@ func TestWorkloadReconciler(t *testing.T) { &kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment(nil, []kueue.TopologyDomainAssignment{ - { - Values: []string{"domain1", "domain2"}, - Count: 2, - }, + TopologyAssignment(nil, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("domain1"). + Value("domain2"). + Obj(), }).Obj(), }, }, now, @@ -622,11 +620,11 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment([]string{"cloud.google.com/gce-topology-block", core.TPUSubBlockLabel}, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker1"}, - Count: 2, - }, + TopologyAssignment([]string{"cloud.google.com/gce-topology-block", core.TPUSubBlockLabel}, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("block1"). + Value("worker1"). + Obj(), }).Obj(), }, }, now). @@ -639,11 +637,11 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment([]string{"cloud.google.com/gce-topology-block", core.TPUSubBlockLabel}, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker1"}, - Count: 2, - }, + TopologyAssignment([]string{"cloud.google.com/gce-topology-block", core.TPUSubBlockLabel}, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("block1"). + Value("worker1"). + Obj(), }).Obj(), }, }, now). @@ -818,15 +816,10 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker1"}, - Count: 2, - }, - { - Values: []string{"worker2"}, - Count: 2, - }, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(2, 2). + Value("worker1", "worker2"). + Obj(), }).Obj(), }, }, now). @@ -845,15 +838,10 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker1"}, - Count: 2, - }, - { - Values: []string{"worker2"}, - Count: 2, - }, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(2, 2). + Value("worker1", "worker2"). + Obj(), }).Obj(), }, }, now). @@ -893,13 +881,16 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("rj1"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - {Values: []string{"worker2"}, Count: 16}, - {Values: []string{"worker3"}, Count: 16}, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(2, 16). + Value("worker2", "worker3"). + Obj(), }).Obj(), utiltesting.MakePodSetAssignment("rj2"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - {Values: []string{"worker1"}, Count: 16}, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(1, 16). + Value("worker1"). + Obj(), }).Obj(), }, }, now). @@ -922,13 +913,16 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("rj1"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - {Values: []string{"worker2"}, Count: 16}, - {Values: []string{"worker3"}, Count: 16}, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(2, 16). + Value("worker2", "worker3"). + Obj(), }).Obj(), utiltesting.MakePodSetAssignment("rj2"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - {Values: []string{"worker1"}, Count: 16}, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(1, 16). + Value("worker1"). + Obj(), }).Obj(), }, }, now). @@ -967,14 +961,16 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("rj1"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - {Values: []string{"worker1"}, Count: 16}, - {Values: []string{"worker2"}, Count: 16}, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(2, 16). + Value("worker1", "worker2"). + Obj(), }).Obj(), utiltesting.MakePodSetAssignment("rj2"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - {Values: []string{"worker3"}, Count: 16}, - {Values: []string{"worker4"}, Count: 16}, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(2, 16). + Value("worker3", "worker4"). + Obj(), }).Obj(), }, }, now). @@ -997,14 +993,16 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("rj1"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - {Values: []string{"worker1"}, Count: 16}, - {Values: []string{"worker2"}, Count: 16}, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(2, 16). + Value("worker1", "worker2"). + Obj(), }).Obj(), utiltesting.MakePodSetAssignment("rj2"). - TopologyAssignment(baseLevels, []kueue.TopologyDomainAssignment{ - {Values: []string{"worker3"}, Count: 16}, - {Values: []string{"worker4"}, Count: 16}, + TopologyAssignment(baseLevels, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSliceUniversal(2, 16). + Value("worker3", "worker4"). + Obj(), }).Obj(), }, }, now). @@ -1200,18 +1198,16 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment([]string{"kubernetes.io/hostname"}, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker1"}, - Count: 2, - }, + TopologyAssignment([]string{"kubernetes.io/hostname"}, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("worker1"). + Obj(), }).Obj(), utiltesting.MakePodSetAssignment("ps2"). - TopologyAssignment([]string{"kubernetes.io/hostname"}, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker2"}, - Count: 2, - }, + TopologyAssignment([]string{"kubernetes.io/hostname"}, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("worker2"). + Obj(), }).Obj(), }, }, now). @@ -1225,18 +1221,16 @@ func TestWorkloadReconciler(t *testing.T) { ReserveQuota(&kueue.Admission{ PodSetAssignments: []kueue.PodSetAssignment{ utiltesting.MakePodSetAssignment("ps1"). - TopologyAssignment([]string{"kubernetes.io/hostname"}, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker1"}, - Count: 2, - }, + TopologyAssignment([]string{"kubernetes.io/hostname"}, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("worker1"). + Obj(), }).Obj(), utiltesting.MakePodSetAssignment("ps2"). - TopologyAssignment([]string{"kubernetes.io/hostname"}, []kueue.TopologyDomainAssignment{ - { - Values: []string{"worker2"}, - Count: 2, - }, + TopologyAssignment([]string{"kubernetes.io/hostname"}, []kueue.TopologyAssignmentSlice{ + utiltesting.MakeTopologyAssignmentSlice(1, []int32{2}). + Value("worker2"). + Obj(), }).Obj(), }, }, now). diff --git a/slice/internal/core/slice.go b/slice/internal/core/slice.go index 9ec63a444..d4158ee90 100644 --- a/slice/internal/core/slice.go +++ b/slice/internal/core/slice.go @@ -23,7 +23,7 @@ import ( "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/controller-runtime/pkg/client" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" "tpu-slice-controller/api/v1beta1" ) diff --git a/slice/internal/core/slice_test.go b/slice/internal/core/slice_test.go index 86f6cc86a..db5c76457 100644 --- a/slice/internal/core/slice_test.go +++ b/slice/internal/core/slice_test.go @@ -19,7 +19,7 @@ package core import ( "testing" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" ) func TestSliceName(t *testing.T) { diff --git a/slice/internal/topology/topology.go b/slice/internal/topology/topology.go index e0703c4e7..1884778ca 100644 --- a/slice/internal/topology/topology.go +++ b/slice/internal/topology/topology.go @@ -16,7 +16,7 @@ package topology import ( corev1 "k8s.io/api/core/v1" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" ) // HostnameLevelIndex returns the index of the hostname level in the topology diff --git a/slice/internal/topology/validation.go b/slice/internal/topology/validation.go index 719e80b53..a47a6135f 100644 --- a/slice/internal/topology/validation.go +++ b/slice/internal/topology/validation.go @@ -16,7 +16,8 @@ package topology import ( corev1 "k8s.io/api/core/v1" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" + "sigs.k8s.io/kueue/pkg/util/tas" "tpu-slice-controller/internal/core" ) @@ -56,7 +57,7 @@ func IsAssignmentValid(psa kueue.PodSetAssignment, nodes map[string]corev1.Node) return false } - for _, domain := range psa.TopologyAssignment.Domains { + for domain := range tas.InternalSeqFrom(psa.TopologyAssignment) { nodeName := domain.Values[hostnameLevelIndex] if GetTPUSubBlockLabelValue(nodes, nodeName) == "" { return false diff --git a/slice/internal/util/testing/wrappers.go b/slice/internal/util/testing/wrappers.go index f912aee4e..925d73597 100644 --- a/slice/internal/util/testing/wrappers.go +++ b/slice/internal/util/testing/wrappers.go @@ -29,7 +29,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" "tpu-slice-controller/api/v1beta1" "tpu-slice-controller/internal/core" @@ -222,15 +222,15 @@ func MakePodSetAssignment(name string) *PodSetAssignmentWrapper { } } -func (w *PodSetAssignmentWrapper) TopologyAssignment(levels []string, domains []kueue.TopologyDomainAssignment) *PodSetAssignmentWrapper { +func (w *PodSetAssignmentWrapper) TopologyAssignment(levels []string, slices []kueue.TopologyAssignmentSlice) *PodSetAssignmentWrapper { if w.PodSetAssignment.TopologyAssignment == nil { w.PodSetAssignment.TopologyAssignment = &kueue.TopologyAssignment{ - Levels: make([]string, 0, len(levels)), - Domains: make([]kueue.TopologyDomainAssignment, 0, len(domains)), + Levels: make([]string, 0, len(levels)), + Slices: make([]kueue.TopologyAssignmentSlice, 0, len(slices)), } } w.PodSetAssignment.TopologyAssignment.Levels = append(w.PodSetAssignment.TopologyAssignment.Levels, levels...) - w.PodSetAssignment.TopologyAssignment.Domains = append(w.PodSetAssignment.TopologyAssignment.Domains, domains...) + w.PodSetAssignment.TopologyAssignment.Slices = append(w.PodSetAssignment.TopologyAssignment.Slices, slices...) return w } @@ -247,6 +247,44 @@ func (w *PodSetAssignmentWrapper) Name(name string) *PodSetAssignmentWrapper { return w } +type TopologyAssignmentSliceWrapper struct { + kueue.TopologyAssignmentSlice +} + +func makeTopologyAssignmentSlice(domainCount int, podCounts kueue.TopologyAssignmentSlicePodCounts) *TopologyAssignmentSliceWrapper { + return &TopologyAssignmentSliceWrapper{ + kueue.TopologyAssignmentSlice{ + DomainCount: int32(domainCount), + PodCounts: podCounts, + }, + } +} + +func MakeTopologyAssignmentSlice(domainCount int, podCounts []int32) *TopologyAssignmentSliceWrapper { + return makeTopologyAssignmentSlice(domainCount, kueue.TopologyAssignmentSlicePodCounts{ + Individual: podCounts, + }) +} + +func MakeTopologyAssignmentSliceUniversal(domainCount int, podCount int32) *TopologyAssignmentSliceWrapper { + return makeTopologyAssignmentSlice(domainCount, kueue.TopologyAssignmentSlicePodCounts{ + Universal: ptr.To(podCount), + }) +} + +func (w *TopologyAssignmentSliceWrapper) Value(roots ...string) *TopologyAssignmentSliceWrapper { + w.ValuesPerLevel = append(w.ValuesPerLevel, kueue.TopologyAssignmentSliceLevelValues{ + Individual: &kueue.TopologyAssignmentSliceLevelIndividualValues{ + Roots: roots, + }, + }) + return w +} + +func (w *TopologyAssignmentSliceWrapper) Obj() kueue.TopologyAssignmentSlice { + return w.TopologyAssignmentSlice +} + // SliceWrapper wraps a Slice. type SliceWrapper struct { v1beta1.Slice @@ -460,7 +498,7 @@ func MakeClusterQueue(name string) *ClusterQueueWrapper { NamespaceSelector: &metav1.LabelSelector{}, QueueingStrategy: kueue.BestEffortFIFO, FlavorFungibility: &kueue.FlavorFungibility{ - WhenCanBorrow: kueue.Borrow, + WhenCanBorrow: kueue.MayStopSearch, WhenCanPreempt: kueue.TryNextFlavor, }, }, @@ -503,9 +541,23 @@ func (c *ClusterQueueWrapper) ResourceGroup(flavors ...kueue.FlavorQuotas) *Clus return c } -// AdmissionChecks replaces the queue additional checks -func (c *ClusterQueueWrapper) AdmissionChecks(checks ...kueue.AdmissionCheckReference) *ClusterQueueWrapper { - c.Spec.AdmissionChecks = checks +// AdmissionChecksStrategy replaces the queue additional checks +func (c *ClusterQueueWrapper) AdmissionChecksStrategy(checks kueue.AdmissionChecksStrategy) *ClusterQueueWrapper { + c.Spec.AdmissionChecksStrategy = &checks + return c +} + +// AdmissionChecks sets the admission checks for the ClusterQueue +func (c *ClusterQueueWrapper) AdmissionChecks(checks ...string) *ClusterQueueWrapper { + rules := make([]kueue.AdmissionCheckStrategyRule, len(checks)) + for i, check := range checks { + rules[i] = kueue.AdmissionCheckStrategyRule{ + Name: kueue.AdmissionCheckReference(check), + } + } + c.Spec.AdmissionChecksStrategy = &kueue.AdmissionChecksStrategy{ + AdmissionChecks: rules, + } return c } diff --git a/slice/test/e2e/config/kueue/controller_manager_config.yaml b/slice/test/e2e/config/kueue/controller_manager_config.yaml index d7adc087a..bbdad677c 100644 --- a/slice/test/e2e/config/kueue/controller_manager_config.yaml +++ b/slice/test/e2e/config/kueue/controller_manager_config.yaml @@ -1,4 +1,4 @@ -apiVersion: config.kueue.x-k8s.io/v1beta1 +apiVersion: config.kueue.x-k8s.io/v1beta2 kind: Configuration metrics: enableClusterQueueResources: true @@ -13,7 +13,7 @@ controller: ClusterQueue.kueue.x-k8s.io: 1 ResourceFlavor.kueue.x-k8s.io: 1 fairSharing: - enable: true + preemptionStrategies: ["LessThanOrEqualToFinalShare", "LessThanInitialShare"] clientConnection: qps: 50 burst: 100 diff --git a/slice/test/e2e/jobset_test.go b/slice/test/e2e/jobset_test.go index 838ea0d74..ac45a3aeb 100644 --- a/slice/test/e2e/jobset_test.go +++ b/slice/test/e2e/jobset_test.go @@ -31,8 +31,9 @@ import ( "k8s.io/utils/ptr" "sigs.k8s.io/controller-runtime/pkg/client" jobset "sigs.k8s.io/jobset/api/jobset/v1alpha2" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" jobsetcontroller "sigs.k8s.io/kueue/pkg/controller/jobs/jobset" + "sigs.k8s.io/kueue/pkg/util/tas" "sigs.k8s.io/kueue/pkg/workload" "sigs.k8s.io/kueue/test/util" @@ -77,7 +78,7 @@ var _ = ginkgo.Describe("JobSet", func() { utils.MustCreate(ctx, k8sClient, ac) cq = testing.MakeClusterQueue("cq"). - AdmissionChecks(kueue.AdmissionCheckReference(ac.Name)). + AdmissionChecks(ac.Name). ResourceGroup(*testing.MakeFlavorQuotas(rf.Name). Resource(extraResource, "9999"). Obj()). @@ -105,7 +106,7 @@ var _ = ginkgo.Describe("JobSet", func() { wantSliceSize int32 tpuRequests string unhealthyNodes []string - wantDomains []kueue.TopologyDomainAssignment + wantDomains []tas.TopologyDomainAssignment wantPartitionIds []string useNodeAffinity bool } @@ -231,14 +232,11 @@ var _ = ginkgo.Describe("JobSet", func() { ginkgo.By("Verifying TopologyAssignment", func() { gomega.Expect(createdWorkload.Status.Admission).ShouldNot(gomega.BeNil()) gomega.Expect(createdWorkload.Status.Admission.PodSetAssignments).Should(gomega.HaveLen(1)) - gomega.Expect(createdWorkload.Status.Admission.PodSetAssignments[0].TopologyAssignment).Should(gomega.BeComparableTo( - &kueue.TopologyAssignment{ - Levels: []string{"kubernetes.io/hostname"}, - Domains: tc.wantDomains, - }, - )) - }) + assignment := tas.InternalFrom(createdWorkload.Status.Admission.PodSetAssignments[0].TopologyAssignment) + gomega.Expect(assignment.Levels).Should(gomega.Equal([]string{"kubernetes.io/hostname"})) + gomega.Expect(assignment.Domains).Should(gomega.BeComparableTo(tc.wantDomains)) + }) createdSlice := &slice.Slice{} sliceKey := core.SliceKeyFromWorkload(createdWorkload, "rj1", 0) @@ -323,7 +321,7 @@ var _ = ginkgo.Describe("JobSet", func() { parallelism: 16, replicas: 1, wantSliceSize: 16, - wantDomains: []kueue.TopologyDomainAssignment{{ + wantDomains: []tas.TopologyDomainAssignment{{ Values: []string{"kind-worker"}, Count: 16, }}, @@ -336,7 +334,7 @@ var _ = ginkgo.Describe("JobSet", func() { replicas: 1, unhealthyNodes: []string{"kind-worker"}, wantSliceSize: 16, - wantDomains: []kueue.TopologyDomainAssignment{{ + wantDomains: []tas.TopologyDomainAssignment{{ Values: []string{"kind-worker2"}, Count: 16, }}, @@ -348,7 +346,7 @@ var _ = ginkgo.Describe("JobSet", func() { parallelism: 64, replicas: 1, wantSliceSize: 64, - wantDomains: []kueue.TopologyDomainAssignment{{ + wantDomains: []tas.TopologyDomainAssignment{{ Values: []string{"kind-worker"}, Count: 64, }}, @@ -360,7 +358,7 @@ var _ = ginkgo.Describe("JobSet", func() { parallelism: 48, replicas: 1, wantSliceSize: 16, - wantDomains: []kueue.TopologyDomainAssignment{ + wantDomains: []tas.TopologyDomainAssignment{ { Values: []string{"kind-worker2"}, Count: 16, @@ -382,7 +380,7 @@ var _ = ginkgo.Describe("JobSet", func() { parallelism: 96, replicas: 1, wantSliceSize: 32, - wantDomains: []kueue.TopologyDomainAssignment{ + wantDomains: []tas.TopologyDomainAssignment{ { Values: []string{"kind-worker2"}, Count: 32, @@ -404,7 +402,7 @@ var _ = ginkgo.Describe("JobSet", func() { parallelism: 128, replicas: 1, wantSliceSize: 64, - wantDomains: []kueue.TopologyDomainAssignment{ + wantDomains: []tas.TopologyDomainAssignment{ { Values: []string{"kind-worker2"}, Count: 64, @@ -422,7 +420,7 @@ var _ = ginkgo.Describe("JobSet", func() { parallelism: 16, replicas: 1, wantSliceSize: 16, - wantDomains: []kueue.TopologyDomainAssignment{{Values: []string{"kind-worker"}, Count: 16}}, + wantDomains: []tas.TopologyDomainAssignment{{Values: []string{"kind-worker"}, Count: 16}}, wantPartitionIds: []string{"sb1"}, useNodeAffinity: true, }), @@ -435,7 +433,7 @@ var _ = ginkgo.Describe("JobSet", func() { replicas int32 wantSliceSize int32 tpuRequests string - wantDomains []kueue.TopologyDomainAssignment + wantDomains []tas.TopologyDomainAssignment wantPartitionIds [][]string } ginkgo.DescribeTable("with", func(tc testCase) { @@ -533,7 +531,7 @@ var _ = ginkgo.Describe("JobSet", func() { parallelism: 16, replicas: 2, wantSliceSize: 16, - wantDomains: []kueue.TopologyDomainAssignment{ + wantDomains: []tas.TopologyDomainAssignment{ { Values: []string{"kind-worker"}, Count: 16, @@ -551,7 +549,7 @@ var _ = ginkgo.Describe("JobSet", func() { parallelism: 16, replicas: 3, wantSliceSize: 16, - wantDomains: []kueue.TopologyDomainAssignment{ + wantDomains: []tas.TopologyDomainAssignment{ { Values: []string{"kind-worker2"}, Count: 16, @@ -753,7 +751,7 @@ var _ = ginkgo.Describe("JobSet", func() { Name: kueue.AdmissionCheckReference(ac.Name), State: kueue.CheckStatePending, Message: `Slices are in states: 1 CREATED`, - }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates"))) + }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates", "RetryCount"))) }, utils.Timeout, utils.Interval).Should(gomega.Succeed()) }) @@ -768,7 +766,7 @@ var _ = ginkgo.Describe("JobSet", func() { Name: kueue.AdmissionCheckReference(ac.Name), State: kueue.CheckStateReady, Message: `Slices are in states: 1 ACTIVE`, - }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates"))) + }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates", "RetryCount"))) }, utils.LongTimeout, utils.Interval).Should(gomega.Succeed()) }) @@ -872,7 +870,7 @@ var _ = ginkgo.Describe("JobSet", func() { Name: kueue.AdmissionCheckReference(ac.Name), State: kueue.CheckStatePending, Message: `Slices are in states: 1 CREATED`, - }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates"))) + }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates", "RetryCount"))) }, utils.Timeout, utils.Interval).Should(gomega.Succeed()) }) @@ -894,7 +892,7 @@ var _ = ginkgo.Describe("JobSet", func() { Name: kueue.AdmissionCheckReference(ac.Name), State: kueue.CheckStateReady, Message: `Slices are in states: 1 ACTIVE`, - }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates"))) + }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates", "RetryCount"))) }, utils.Timeout, utils.Interval).Should(gomega.Succeed()) }) }) @@ -981,7 +979,7 @@ var _ = ginkgo.Describe("JobSet", func() { Name: kueue.AdmissionCheckReference(ac.Name), State: kueue.CheckStateReady, Message: `Slices are in states: 1 ACTIVE`, - }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates"))) + }}, cmpopts.IgnoreFields(kueue.AdmissionCheckState{}, "LastTransitionTime", "PodSetUpdates", "RetryCount"))) }, utils.LongTimeout, utils.Interval).Should(gomega.Succeed()) }) }) @@ -1078,24 +1076,20 @@ var _ = ginkgo.Describe("JobSet", func() { ginkgo.By("Verifying TopologyAssignment", func() { gomega.Expect(createdWorkload.Status.Admission).ShouldNot(gomega.BeNil()) gomega.Expect(createdWorkload.Status.Admission.PodSetAssignments).Should(gomega.HaveLen(2)) - gomega.Expect(createdWorkload.Status.Admission.PodSetAssignments[0].TopologyAssignment).Should(gomega.BeComparableTo( - &kueue.TopologyAssignment{ - Levels: []string{"kubernetes.io/hostname"}, - Domains: []kueue.TopologyDomainAssignment{{ - Values: []string{"kind-worker"}, - Count: 16, - }}, - }, - )) - gomega.Expect(createdWorkload.Status.Admission.PodSetAssignments[1].TopologyAssignment).Should(gomega.BeComparableTo( - &kueue.TopologyAssignment{ - Levels: []string{"kubernetes.io/hostname"}, - Domains: []kueue.TopologyDomainAssignment{{ - Values: []string{"kind-worker2"}, - Count: 16, - }}, - }, - )) + + assignment1 := tas.InternalFrom(createdWorkload.Status.Admission.PodSetAssignments[0].TopologyAssignment) + gomega.Expect(assignment1.Levels).Should(gomega.Equal([]string{"kubernetes.io/hostname"})) + gomega.Expect(assignment1.Domains).Should(gomega.BeComparableTo([]tas.TopologyDomainAssignment{{ + Values: []string{"kind-worker"}, + Count: 16, + }})) + + assignment2 := tas.InternalFrom(createdWorkload.Status.Admission.PodSetAssignments[1].TopologyAssignment) + gomega.Expect(assignment2.Levels).Should(gomega.Equal([]string{"kubernetes.io/hostname"})) + gomega.Expect(assignment2.Domains).Should(gomega.BeComparableTo([]tas.TopologyDomainAssignment{{ + Values: []string{"kind-worker2"}, + Count: 16, + }})) }) createdSlice1 := &slice.Slice{} diff --git a/slice/test/utils/e2e.go b/slice/test/utils/e2e.go index e8051c7fa..1a6e6aed7 100644 --- a/slice/test/utils/e2e.go +++ b/slice/test/utils/e2e.go @@ -36,7 +36,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client/config" jobset "sigs.k8s.io/jobset/api/jobset/v1alpha2" kueuealpha "sigs.k8s.io/kueue/apis/kueue/v1alpha1" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" slice "tpu-slice-controller/api/v1beta1" "tpu-slice-controller/internal/core" diff --git a/slice/test/utils/utils.go b/slice/test/utils/utils.go index 5ab81f07f..f8cebecbf 100644 --- a/slice/test/utils/utils.go +++ b/slice/test/utils/utils.go @@ -44,7 +44,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" "sigs.k8s.io/controller-runtime/pkg/log/zap" jobset "sigs.k8s.io/jobset/api/jobset/v1alpha2" - kueue "sigs.k8s.io/kueue/apis/kueue/v1beta1" + kueue "sigs.k8s.io/kueue/apis/kueue/v1beta2" podconstants "sigs.k8s.io/kueue/pkg/controller/jobs/pod/constants" "tpu-slice-controller/internal/controller"