Skip to content

Commit 04263ef

Browse files
committed
refactored
Signed-off-by: Aleksandr Petrov <burnb83@gmail.com>
1 parent 5d27582 commit 04263ef

File tree

2 files changed

+25
-31
lines changed

2 files changed

+25
-31
lines changed

pkg/argocd/argocd.go

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -481,29 +481,20 @@ func SetKustomizeImage(app *v1alpha1.Application, newImage *image.ContainerImage
481481
return nil
482482
}
483483

484-
// ImageIsAllowed checks whether img is declared in image-list annotation
485-
func ImageIsAllowed(img *image.ContainerImage, list *image.ContainerImageList) bool {
486-
for _, i := range *list {
487-
if i.ImageName == img.ImageName {
488-
return true
489-
}
490-
}
491-
return false
492-
}
493-
494484
// GetImagesFromApplication returns the list of known images for the given application
495485
func GetImagesFromApplication(app *v1alpha1.Application) image.ContainerImageList {
496486
images := make(image.ContainerImageList, 0)
497487
annotations := app.Annotations
498488
imagesFromAnnotations := parseImageList(annotations)
499489

500-
appImgs := make(image.ContainerImageList, 0, len(app.Status.Summary.Images))
490+
appImgs := make(map[string]struct{}, len(app.Status.Summary.Images))
501491
for _, imageStr := range app.Status.Summary.Images {
502-
appImgs = append(appImgs, image.NewFromIdentifier(imageStr))
492+
img := image.NewFromIdentifier(imageStr)
493+
appImgs[img.ImageName] = struct{}{}
503494
}
504495

505496
for _, img := range *imagesFromAnnotations {
506-
if ImageIsAllowed(img, &appImgs) {
497+
if _, ok := appImgs[img.ImageName]; ok {
507498
images = append(images, img)
508499
}
509500
}

pkg/argocd/update.go

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -415,12 +415,13 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
415415
}
416416

417417
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)
420420
if err != nil {
421421
return nil, err
422422
}
423423

424+
newValues := make(map[string]string)
424425
images := GetImagesFromApplication(app)
425426
for _, c := range images {
426427
image := c.ImageAlias
@@ -439,17 +440,17 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
439440
if helmParamName == nil {
440441
return nil, fmt.Errorf("%s parameter not found", helmAnnotationParamName)
441442
}
443+
newValues[helmAnnotationParamName] = helmParamName.Value
442444

443445
helmParamVersion := getHelmParam(appSource.Helm.Parameters, helmAnnotationParamVersion)
444446
if helmParamVersion == nil {
445447
return nil, fmt.Errorf("%s parameter not found", helmAnnotationParamVersion)
446448
}
447-
448-
setNestedField(params, helmAnnotationParamName, helmParamName.Value)
449-
setNestedField(params, helmAnnotationParamVersion, helmParamVersion.Value)
449+
newValues[helmAnnotationParamVersion] = helmParamVersion.Value
450450
}
451+
mergeHelmValues(values, newValues)
451452

452-
override, err = yaml.Marshal(params)
453+
override, err = yaml.Marshal(values)
453454
} else {
454455
var params helmOverride
455456
newParams := helmOverride{
@@ -483,18 +484,6 @@ func marshalParamsOverride(app *v1alpha1.Application, originalData []byte) ([]by
483484
return override, nil
484485
}
485486

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-
498487
func mergeHelmOverride(t *helmOverride, o *helmOverride) {
499488
for _, param := range o.Helm.Parameters {
500489
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) {
506495
}
507496
}
508497

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+
509512
func mergeKustomizeOverride(t *kustomizeOverride, o *kustomizeOverride) {
510513
for _, image := range *o.Kustomize.Images {
511514
idx := t.Kustomize.Images.Find(image)

0 commit comments

Comments
 (0)