Skip to content

Commit 1475638

Browse files
committed
add scheduler backend
Signed-off-by: kangclzjc <kangz@nvidia.com>
1 parent a9716b8 commit 1475638

File tree

30 files changed

+2083
-138
lines changed

30 files changed

+2083
-138
lines changed

operator/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# builder
2-
FROM --platform=$BUILDPLATFORM golang:1.24.5 AS builder
2+
FROM --platform=$BUILDPLATFORM golang:1.25.0 AS builder
33
WORKDIR /go/src/github.com/ai-dynamo/grove
44
COPY ../. .
55

operator/api/common/labels.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ const (
4343
LabelPodCliqueScalingGroupReplicaIndex = "grove.io/podcliquescalinggroup-replica-index"
4444
// LabelPodTemplateHash is a key for a label that sets the hash of the PodSpec. This label will be set on a PodClique and will be shared by all pods in the PodClique.
4545
LabelPodTemplateHash = "grove.io/pod-template-hash"
46+
// LabelSchedulerBackend is a key for a label that specifies which scheduler backend should handle the PodGang.
47+
// Values: "workload" (for default-scheduler), "kai" (for KAI scheduler), etc.
48+
LabelSchedulerBackend = "grove.io/scheduler-backend"
4649
)
4750

4851
// Labels for setting component names for all managed resources whose lifecycle

operator/api/config/v1alpha1/types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ type OperatorConfiguration struct {
6363
LogFormat LogFormat `json:"logFormat"`
6464
Authorizer AuthorizerConfig `json:"authorizer"`
6565
ClusterTopology ClusterTopologyConfiguration `json:"clusterTopology"`
66+
// SchedulerName is the name of the scheduler backend with which this instance of Grove operator will run.
67+
// Valid values: "kai-scheduler" or "grove-scheduler"
68+
// Defaults to "kai-scheduler" if not specified.
69+
// +optional
70+
SchedulerName string `json:"schedulerName,omitempty"`
6671
}
6772

6873
// LeaderElectionConfiguration defines the configuration for the leader election.

operator/api/core/v1alpha1/zz_generated.deepcopy.go

Lines changed: 32 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

operator/charts/templates/_helpers.tpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ config.yaml: |
2525
concurrentSyncs: {{ .Values.config.controllers.podCliqueSet.concurrentSyncs }}
2626
podClique:
2727
concurrentSyncs: {{ .Values.config.controllers.podClique.concurrentSyncs }}
28+
{{- if .Values.config.schedulerName }}
29+
schedulerName: {{ .Values.config.schedulerName | default "kai-scheduler" }}
30+
{{- end }}
2831
{{- if .Values.config.debugging }}
2932
debugging:
3033
enableProfiling: {{ .Values.config.debugging.enableProfiling }}

operator/charts/templates/clusterrole.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,33 @@ rules:
99
- scheduler.grove.io
1010
resources:
1111
- podgangs
12+
- podgangs/status
13+
verbs:
14+
- create
15+
- get
16+
- list
17+
- watch
18+
- delete
19+
- deletecollection
20+
- patch
21+
- update
22+
- apiGroups:
23+
- scheduling.k8s.io
24+
resources:
25+
- workloads
26+
verbs:
27+
- create
28+
- get
29+
- list
30+
- watch
31+
- delete
32+
- deletecollection
33+
- patch
34+
- update
35+
- apiGroups:
36+
- scheduling.run.ai
37+
resources:
38+
- podgroups
1239
verbs:
1340
- create
1441
- get

operator/charts/values.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ config:
5858
concurrentSyncs: 3
5959
podClique:
6060
concurrentSyncs: 3
61+
# SchedulerName is the name of the scheduler backend with which this instance of Grove operator will run
62+
# Valid values: "kai-scheduler" or "grove-scheduler"
63+
# Default: "kai-scheduler"
64+
schedulerName: kai-scheduler
6165
logLevel: info
6266
logFormat: json
6367
clusterTopology:

operator/go.mod

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
module github.com/ai-dynamo/grove/operator
22

3-
go 1.24.0
4-
5-
toolchain go1.24.5
3+
go 1.25.0
64

75
require (
86
github.com/ai-dynamo/grove/operator/api v0.0.0
@@ -18,11 +16,11 @@ require (
1816
github.com/stretchr/testify v1.11.1
1917
go.uber.org/zap v1.27.0
2018
helm.sh/helm/v3 v3.19.2
21-
k8s.io/api v0.34.2
19+
k8s.io/api v0.35.0-beta.0
2220
k8s.io/apiextensions-apiserver v0.34.2
23-
k8s.io/apimachinery v0.34.2
21+
k8s.io/apimachinery v0.35.0-beta.0
2422
k8s.io/cli-runtime v0.34.2
25-
k8s.io/client-go v0.34.2
23+
k8s.io/client-go v0.35.0-beta.0
2624
k8s.io/klog/v2 v2.130.1
2725
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4
2826
sigs.k8s.io/controller-runtime v0.22.4
@@ -131,7 +129,6 @@ require (
131129
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
132130
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
133131
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
134-
github.com/onsi/ginkgo/v2 v2.23.4 // indirect
135132
github.com/opencontainers/go-digest v1.0.0 // indirect
136133
github.com/opencontainers/image-spec v1.1.1 // indirect
137134
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
@@ -175,7 +172,7 @@ require (
175172
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
176173
go.uber.org/atomic v1.11.0 // indirect
177174
go.uber.org/multierr v1.11.0 // indirect
178-
go.yaml.in/yaml/v2 v2.4.2 // indirect
175+
go.yaml.in/yaml/v2 v2.4.3 // indirect
179176
go.yaml.in/yaml/v3 v3.0.4 // indirect
180177
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect
181178
golang.org/x/crypto v0.45.0 // indirect
@@ -191,15 +188,15 @@ require (
191188
google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect
192189
google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect
193190
google.golang.org/grpc v1.72.1 // indirect
194-
google.golang.org/protobuf v1.36.7 // indirect
191+
google.golang.org/protobuf v1.36.8 // indirect
195192
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
196193
gopkg.in/inf.v0 v0.9.1 // indirect
197194
gopkg.in/ini.v1 v1.67.0 // indirect
198195
gopkg.in/yaml.v2 v2.4.0 // indirect
199196
gopkg.in/yaml.v3 v3.0.1 // indirect
200197
k8s.io/apiserver v0.34.2 // indirect
201198
k8s.io/component-base v0.34.2 // indirect
202-
k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 // indirect
199+
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect
203200
k8s.io/kubectl v0.34.0 // indirect
204201
oras.land/oras-go/v2 v2.6.0 // indirect
205202
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect

operator/go.sum

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -356,13 +356,14 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
356356
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
357357
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
358358
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
359+
github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU=
359360
github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
360-
github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus=
361-
github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8=
361+
github.com/onsi/ginkgo/v2 v2.27.2 h1:LzwLj0b89qtIy6SSASkzlNvX6WktqurSHwkk2ipF/Ns=
362+
github.com/onsi/ginkgo/v2 v2.27.2/go.mod h1:ArE1D/XhNXBXCBkKOLkbsb2c81dQHCRcF5zwn/ykDRo=
362363
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
363364
github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
364-
github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY=
365-
github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o=
365+
github.com/onsi/gomega v1.38.2 h1:eZCjf2xjZAqe+LeWvKb5weQ+NcPwX84kqJ0cZNxok2A=
366+
github.com/onsi/gomega v1.38.2/go.mod h1:W2MJcYxRGV63b418Ai34Ud0hEdTVXq9NW9+Sx6uXf3k=
366367
github.com/open-policy-agent/cert-controller v0.14.0 h1:TPc19BOHOs4tARruTT5o4bzir7Ed6FF+j3EXP/nmZBs=
367368
github.com/open-policy-agent/cert-controller v0.14.0/go.mod h1:UhE/FU54DnKo+Rt0Yf3r+oKjgy6kqSH8Vsjo+5bGrSo=
368369
github.com/open-policy-agent/frameworks/constraint v0.0.0-20241101234656-e78c8abd754a h1:gQtOJ50XFyL2Xh3lDD9zP4KQ2PY4mZKQ9hDcWc81Sp8=
@@ -422,8 +423,8 @@ github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 h1:EfpWLLCyXw8PSM2/XNJLjI3Pb
422423
github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnAfVjZNvfJTYfPetfZk5yoSTLaQ=
423424
github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM=
424425
github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA=
425-
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
426-
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
426+
github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
427+
github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
427428
github.com/rubenv/sql-migrate v1.8.0 h1:dXnYiJk9k3wetp7GfQbKJcPHjVJL6YK19tKj8t2Ns0o=
428429
github.com/rubenv/sql-migrate v1.8.0/go.mod h1:F2bGFBwCU+pnmbtNYDeKvSuvL6lBVtXDXUUv5t+u1qw=
429430
github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
@@ -550,16 +551,14 @@ go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU
550551
go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
551552
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
552553
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
553-
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
554-
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
555554
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
556555
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
557556
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
558557
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
559558
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
560559
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
561-
go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
562-
go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
560+
go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
561+
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
563562
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
564563
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
565564
go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M=
@@ -642,8 +641,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.
642641
google.golang.org/grpc v1.0.5/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
643642
google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA=
644643
google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
645-
google.golang.org/protobuf v1.36.7 h1:IgrO7UwFQGJdRNXH/sQux4R1Dj1WAKcLElzeeRaXV2A=
646-
google.golang.org/protobuf v1.36.7/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
644+
google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
645+
google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
647646
gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
648647
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
649648
gopkg.in/cenkalti/backoff.v2 v2.2.1 h1:eJ9UAg01/HIHG987TwxvnzK2MgxXq97YY6rYDpY9aII=
@@ -678,26 +677,26 @@ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
678677
gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
679678
helm.sh/helm/v3 v3.19.2 h1:psQjaM8aIWrSVEly6PgYtLu/y6MRSmok4ERiGhZmtUY=
680679
helm.sh/helm/v3 v3.19.2/go.mod h1:gX10tB5ErM+8fr7bglUUS/UfTOO8UUTYWIBH1IYNnpE=
681-
k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY=
682-
k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw=
680+
k8s.io/api v0.35.0-beta.0 h1:eqAAVeSatXNnsPjaeFrFGqSl5ihtPY4e8Txy2nYPOnw=
681+
k8s.io/api v0.35.0-beta.0/go.mod h1:UXuvkssy8lHPSP381eqqBOW4BvRTicVpRjv7k2sjo4Y=
683682
k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo=
684683
k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE=
685-
k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4=
686-
k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
684+
k8s.io/apimachinery v0.35.0-beta.0 h1:vVoDiASLwUEv5yZceZCBRPXBc1f9wUOZs7ZbEbGr5sY=
685+
k8s.io/apimachinery v0.35.0-beta.0/go.mod h1:dR9KPaf5L0t2p9jZg/wCGB4b3ma2sXZ2zdNqILs+Sak=
687686
k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE=
688687
k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI=
689688
k8s.io/cli-runtime v0.34.2 h1:cct1GEuWc3IyVT8MSCoIWzRGw9HJ/C5rgP32H60H6aE=
690689
k8s.io/cli-runtime v0.34.2/go.mod h1:X13tsrYexYUCIq8MarCBy8lrm0k0weFPTpcaNo7lms4=
691-
k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M=
692-
k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE=
690+
k8s.io/client-go v0.35.0-beta.0 h1:4APvMU7+XwWF+XoqAv+gbtSmwjPCXXXo4XVcY89Rde0=
691+
k8s.io/client-go v0.35.0-beta.0/go.mod h1:+XxnPEoaCIB5G0zpwXRh3AnT+CvgS5lA+AFr9EtHUcA=
693692
k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ=
694693
k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM=
695694
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
696695
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
697696
k8s.io/kube-aggregator v0.33.4 h1:TdIJKHb0/bLpby7FblXIaVEzyA1jGEjzt/n9cRvwq8U=
698697
k8s.io/kube-aggregator v0.33.4/go.mod h1:wZuctdRvGde5bwzxkZRs0GYj2KOpCNgx8rRGVoNb62k=
699-
k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3 h1:liMHz39T5dJO1aOKHLvwaCjDbf07wVh6yaUlTpunnkE=
700-
k8s.io/kube-openapi v0.0.0-20250814151709-d7b6acb124c3/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
698+
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE=
699+
k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ=
701700
k8s.io/kubectl v0.34.0 h1:NcXz4TPTaUwhiX4LU+6r6udrlm0NsVnSkP3R9t0dmxs=
702701
k8s.io/kubectl v0.34.0/go.mod h1:bmd0W5i+HuG7/p5sqicr0Li0rR2iIhXL0oUyLF3OjR4=
703702
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 h1:SjGebBtkBqHFOli+05xYbK8YF1Dzkbzn+gDM4X9T4Ck=

operator/internal/controller/common/component/types.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,10 @@ const (
7575
KindPod Kind = "Pod"
7676
// KindPodCliqueScalingGroup indicates that the resource is a PodCliqueScalingGroup.
7777
KindPodCliqueScalingGroup Kind = "PodCliqueScalingGroup"
78-
// KindPodGang indicates that the resource is a PodGang.
78+
// KindPodGang indicates that the resource is a PodGang (Grove custom scheduler API).
7979
KindPodGang Kind = "PodGang"
80+
// KindWorkload indicates that the resource is a Workload (Kubernetes 1.35+ gang scheduling API).
81+
KindWorkload Kind = "Workload"
8082
// KindPodCliqueSetReplica indicates that the resource is a PodCliqueSet replica.
8183
KindPodCliqueSetReplica Kind = "PodCliqueSetReplica"
8284
)

0 commit comments

Comments
 (0)