Skip to content

Commit 6c7cacb

Browse files
Mutate/Validate all WorkerGroupSpecs
1 parent d5d308b commit 6c7cacb

File tree

1 file changed

+24
-23
lines changed

1 file changed

+24
-23
lines changed

pkg/controllers/raycluster_webhook.go

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -100,24 +100,26 @@ func (w *rayClusterWebhook) Default(ctx context.Context, obj runtime.Object) err
100100
}
101101

102102
// WorkerGroupSpec
103-
if len(rayCluster.Spec.WorkerGroupSpecs) != 0 {
103+
for i := range rayCluster.Spec.WorkerGroupSpecs {
104+
workerSpec := &rayCluster.Spec.WorkerGroupSpecs[i]
105+
104106
// Append the list of environment variables for the worker container
105107
for _, envVar := range envVarList() {
106-
rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].Env = upsert(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].Env, envVar, withEnvVarName(envVar.Name))
108+
workerSpec.Template.Spec.Containers[0].Env = upsert(workerSpec.Template.Spec.Containers[0].Env, envVar, withEnvVarName(envVar.Name))
107109
}
108110

109111
// Append the CA volumes
110112
for _, caVol := range caVolumes(rayCluster) {
111-
rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Volumes = upsert(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Volumes, caVol, withVolumeName(caVol.Name))
113+
workerSpec.Template.Spec.Volumes = upsert(workerSpec.Template.Spec.Volumes, caVol, withVolumeName(caVol.Name))
112114
}
113115

114116
// Append the certificate volume mounts
115117
for _, mount := range certVolumeMounts() {
116-
rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].VolumeMounts = upsert(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].VolumeMounts, mount, byVolumeMountName)
118+
workerSpec.Template.Spec.Containers[0].VolumeMounts = upsert(workerSpec.Template.Spec.Containers[0].VolumeMounts, mount, byVolumeMountName)
117119
}
118120

119121
// Append the create-cert Init Container
120-
rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.InitContainers = upsert(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.InitContainers, rayWorkerInitContainer(), withContainerName(initContainerName))
122+
workerSpec.Template.Spec.InitContainers = upsert(workerSpec.Template.Spec.InitContainers, rayWorkerInitContainer(), withContainerName(initContainerName))
121123
}
122124
}
123125

@@ -387,14 +389,13 @@ func validateHeadInitContainer(rayCluster *rayv1.RayCluster, domain string) fiel
387389
func validateWorkerInitContainer(rayCluster *rayv1.RayCluster) field.ErrorList {
388390
var allErrors field.ErrorList
389391

390-
if len(rayCluster.Spec.WorkerGroupSpecs) == 0 {
391-
return allErrors
392-
}
393-
394-
if err := contains(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.InitContainers, rayWorkerInitContainer(), byContainerName,
395-
field.NewPath("spec", "workerGroupSpecs", "0", "template", "spec", "initContainers"),
392+
for i := range rayCluster.Spec.WorkerGroupSpecs {
393+
workerSpec := &rayCluster.Spec.WorkerGroupSpecs[i]
394+
if err := contains(workerSpec.Template.Spec.InitContainers, rayWorkerInitContainer(), byContainerName,
395+
field.NewPath("spec", "workerGroupSpecs", strconv.Itoa(i), "template", "spec", "initContainers"),
396396
"create-cert Init Container is immutable"); err != nil {
397397
allErrors = append(allErrors, err)
398+
}
398399
}
399400

400401
return allErrors
@@ -409,9 +410,10 @@ func validateCaVolumes(rayCluster *rayv1.RayCluster) field.ErrorList {
409410
"ca-vol and server-cert Secret volumes are immutable"); err != nil {
410411
allErrors = append(allErrors, err)
411412
}
412-
if len(rayCluster.Spec.WorkerGroupSpecs) != 0 {
413-
if err := contains(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Volumes, caVol, byVolumeName,
414-
field.NewPath("spec", "workerGroupSpecs", "0", "template", "spec", "volumes"),
413+
for i := range rayCluster.Spec.WorkerGroupSpecs {
414+
workerSpec := &rayCluster.Spec.WorkerGroupSpecs[i]
415+
if err := contains(workerSpec.Template.Spec.Volumes, caVol, byVolumeName,
416+
field.NewPath("spec", "workerGroupSpecs", strconv.Itoa(i), "template", "spec", "volumes"),
415417
"ca-vol and server-cert Secret volumes are immutable"); err != nil {
416418
allErrors = append(allErrors, err)
417419
}
@@ -438,15 +440,14 @@ func validateHeadEnvVars(rayCluster *rayv1.RayCluster) field.ErrorList {
438440
func validateWorkerEnvVars(rayCluster *rayv1.RayCluster) field.ErrorList {
439441
var allErrors field.ErrorList
440442

441-
if len(rayCluster.Spec.WorkerGroupSpecs) == 0 {
442-
return allErrors
443-
}
444-
445-
for _, envVar := range envVarList() {
446-
if err := contains(rayCluster.Spec.WorkerGroupSpecs[0].Template.Spec.Containers[0].Env, envVar, byEnvVarName,
447-
field.NewPath("spec", "workerGroupSpecs", "0", "template", "spec", "containers", strconv.Itoa(0), "env"),
448-
"RAY_TLS related environment variables are immutable"); err != nil {
449-
allErrors = append(allErrors, err)
443+
for i := range rayCluster.Spec.WorkerGroupSpecs {
444+
workerSpec := &rayCluster.Spec.WorkerGroupSpecs[i]
445+
for _, envVar := range envVarList() {
446+
if err := contains(workerSpec.Template.Spec.Containers[0].Env, envVar, byEnvVarName,
447+
field.NewPath("spec", "workerGroupSpecs", strconv.Itoa(i), "template", "spec", "containers", strconv.Itoa(0), "env"),
448+
"RAY_TLS related environment variables are immutable"); err != nil {
449+
allErrors = append(allErrors, err)
450+
}
450451
}
451452
}
452453

0 commit comments

Comments
 (0)