From 9f1d5acdc85d6d462fc6c730e9302c72d98f8f3e Mon Sep 17 00:00:00 2001 From: Jeong Jinwoo Date: Fri, 11 Aug 2023 21:37:55 +0900 Subject: [PATCH] fix: check both prev and current ids for filtering reject targets --- api/filters/replacement/replacement.go | 15 ++++++++++----- api/krusty/replacementtransformer_test.go | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/api/filters/replacement/replacement.go b/api/filters/replacement/replacement.go index d4fea260b..bea5690c4 100644 --- a/api/filters/replacement/replacement.go +++ b/api/filters/replacement/replacement.go @@ -126,8 +126,8 @@ func applyReplacement(nodes []*yaml.RNode, value *yaml.RNode, targetSelectors [] } // filter targets by matching resource IDs - for i, id := range ids { - if id.IsSelectedBy(selector.Select.ResId) && !rejectId(selector.Reject, &ids[i]) { + for _, id := range ids { + if id.IsSelectedBy(selector.Select.ResId) && !containsRejectId(selector.Reject, ids) { err := copyValueToTarget(possibleTarget, value, selector) if err != nil { return nil, err @@ -168,10 +168,15 @@ func matchesAnnoAndLabelSelector(n *yaml.RNode, selector *types.Selector) (bool, return annoMatch && labelMatch, nil } -func rejectId(rejects []*types.Selector, id *resid.ResId) bool { +func containsRejectId(rejects []*types.Selector, ids []resid.ResId) bool { for _, r := range rejects { - if !r.ResId.IsEmpty() && id.IsSelectedBy(r.ResId) { - return true + if r.ResId.IsEmpty() { + continue + } + for _, id := range ids { + if id.IsSelectedBy(r.ResId) { + return true + } } } return false diff --git a/api/krusty/replacementtransformer_test.go b/api/krusty/replacementtransformer_test.go index 677b68e83..273246756 100644 --- a/api/krusty/replacementtransformer_test.go +++ b/api/krusty/replacementtransformer_test.go @@ -604,7 +604,7 @@ spec: spec: containers: - image: app1:1.0 - name: something-else + name: app --- apiVersion: v1 data: