@@ -449,57 +449,27 @@ func ParseConfigFile(filePath string) (*RayClusterConfig, error) {
449
449
if err := yaml .UnmarshalStrict (data , & overrideConfig ); err != nil {
450
450
return nil , fmt .Errorf ("failed to parse YAML: %w" , err )
451
451
}
452
- config , err := mergeWithDefaultConfig (& overrideConfig )
453
- if err != nil {
454
- return nil , fmt .Errorf ("failed to merge config with defaults: %w" , err )
455
- }
456
- return config , nil
457
- }
452
+ // detach worker groups from default config
453
+ overrideConfigWG := overrideConfig .WorkerGroups
454
+ overrideConfig .WorkerGroups = nil
458
455
459
- func mergeWithDefaultConfig (overrideConfig * RayClusterConfig ) (* RayClusterConfig , error ) {
460
456
config := newRayClusterConfigWithDefaults ()
461
-
462
- // The defaults are not set in the default raycluster config,
463
- // so we directly copy the values from overrideConfig
464
- config .Namespace = overrideConfig .Namespace
465
- config .Name = overrideConfig .Name
466
- config .ServiceAccount = overrideConfig .ServiceAccount
467
- config .GKE = overrideConfig .GKE
468
- config .Autoscaler = overrideConfig .Autoscaler
469
-
470
- if overrideConfig .RayVersion != nil {
471
- config .RayVersion = overrideConfig .RayVersion
472
- }
473
-
474
- if overrideConfig .Labels != nil {
475
- config .Labels = make (map [string ]string )
476
- maps .Copy (config .Labels , overrideConfig .Labels )
477
- }
478
- if overrideConfig .Annotations != nil {
479
- config .Annotations = make (map [string ]string )
480
- maps .Copy (config .Annotations , overrideConfig .Annotations )
481
- }
482
-
483
- if overrideConfig .Image != nil {
484
- config .Image = overrideConfig .Image
485
- }
486
-
487
- if overrideConfig .Head != nil {
488
- err := mergo .Merge (config .Head , overrideConfig .Head , mergo .WithOverride )
489
- if err != nil {
490
- return nil , fmt .Errorf ("failed to merge head config: %w" , err )
491
- }
457
+ err = mergo .Merge (config , & overrideConfig , mergo .WithOverride )
458
+ if err != nil {
459
+ return nil , fmt .Errorf ("failed to merge config with defaults: %w" , err )
492
460
}
493
-
494
- if overrideConfig .WorkerGroups != nil {
495
- for len (config .WorkerGroups ) < len (overrideConfig .WorkerGroups ) {
461
+ // merge WorkerGroups and keep the default values for missing fields
462
+ // if overrideConfigWG is not nil, we will merge the worker groups from the config file
463
+ // and keep the default values for missing fields
464
+ if overrideConfigWG != nil {
465
+ for len (config .WorkerGroups ) < len (overrideConfigWG ) {
496
466
config .WorkerGroups = append (config .WorkerGroups , WorkerGroup {
497
467
Replicas : util .DefaultWorkerReplicas ,
498
468
CPU : ptr .To (util .DefaultWorkerCPU ),
499
469
Memory : ptr .To (util .DefaultWorkerMemory ),
500
470
})
501
471
}
502
- for i , workerGroup := range overrideConfig . WorkerGroups {
472
+ for i , workerGroup := range overrideConfigWG {
503
473
err := mergo .Merge (& config .WorkerGroups [i ], workerGroup , mergo .WithOverride )
504
474
if err != nil {
505
475
return nil , fmt .Errorf ("failed to merge worker group %d: %w" , i , err )
0 commit comments