@@ -415,12 +415,13 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
415
415
}
416
416
417
417
if strings .HasPrefix (app .Annotations [common .WriteBackTargetAnnotation ], common .HelmPrefix ) {
418
- params := make (map [interface {}]interface {})
419
- err = yaml .Unmarshal (originalData , & params )
418
+ values := make (map [interface {}]interface {})
419
+ err = yaml .Unmarshal (originalData , & values )
420
420
if err != nil {
421
421
return nil , err
422
422
}
423
423
424
+ newValues := make (map [string ]string )
424
425
images := GetImagesFromApplication (app )
425
426
for _ , c := range images {
426
427
image := c .ImageAlias
@@ -439,17 +440,17 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
439
440
if helmParamName == nil {
440
441
return nil , fmt .Errorf ("%s parameter not found" , helmAnnotationParamName )
441
442
}
443
+ newValues [helmAnnotationParamName ] = helmParamName .Value
442
444
443
445
helmParamVersion := getHelmParam (appSource .Helm .Parameters , helmAnnotationParamVersion )
444
446
if helmParamVersion == nil {
445
447
return nil , fmt .Errorf ("%s parameter not found" , helmAnnotationParamVersion )
446
448
}
447
-
448
- setNestedField (params , helmAnnotationParamName , helmParamName .Value )
449
- setNestedField (params , helmAnnotationParamVersion , helmParamVersion .Value )
449
+ newValues [helmAnnotationParamVersion ] = helmParamVersion .Value
450
450
}
451
+ mergeHelmValues (values , newValues )
451
452
452
- override , err = yaml .Marshal (params )
453
+ override , err = yaml .Marshal (values )
453
454
} else {
454
455
var params helmOverride
455
456
newParams := helmOverride {
@@ -483,18 +484,6 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
483
484
return override , nil
484
485
}
485
486
486
- func setNestedField (data map [interface {}]interface {}, fieldPath string , newValue string ) {
487
- fields := strings .Split (fieldPath , "." )
488
- lastFieldIndex := len (fields ) - 1
489
- for i , name := range fields {
490
- if i == lastFieldIndex {
491
- data [name ] = newValue
492
- } else {
493
- data = data [name ].(map [interface {}]interface {})
494
- }
495
- }
496
- }
497
-
498
487
func mergeHelmOverride (t * helmOverride , o * helmOverride ) {
499
488
for _ , param := range o .Helm .Parameters {
500
489
idx := slices .IndexFunc (t .Helm .Parameters , func (tp v1alpha1.HelmParameter ) bool { return tp .Name == param .Name })
@@ -506,6 +495,20 @@ func mergeHelmOverride(t *helmOverride, o *helmOverride) {
506
495
}
507
496
}
508
497
498
+ func mergeHelmValues (values map [interface {}]interface {}, newValues map [string ]string ) {
499
+ for fieldPath , newValue := range newValues {
500
+ fields := strings .Split (fieldPath , "." )
501
+ lastFieldIndex := len (fields ) - 1
502
+ for i , name := range fields {
503
+ if i == lastFieldIndex {
504
+ values [name ] = newValue
505
+ } else {
506
+ values = values [name ].(map [interface {}]interface {})
507
+ }
508
+ }
509
+ }
510
+ }
511
+
509
512
func mergeKustomizeOverride (t * kustomizeOverride , o * kustomizeOverride ) {
510
513
for _ , image := range * o .Kustomize .Images {
511
514
idx := t .Kustomize .Images .Find (image )
0 commit comments