fix: check both prev and current ids for filtering reject targets

This commit is contained in:
Jeong Jinwoo
2023-08-11 21:37:55 +09:00
parent 9756d92a91
commit 9f1d5acdc8
2 changed files with 11 additions and 6 deletions

View File

@@ -126,8 +126,8 @@ func applyReplacement(nodes []*yaml.RNode, value *yaml.RNode, targetSelectors []
} }
// filter targets by matching resource IDs // filter targets by matching resource IDs
for i, id := range ids { for _, id := range ids {
if id.IsSelectedBy(selector.Select.ResId) && !rejectId(selector.Reject, &ids[i]) { if id.IsSelectedBy(selector.Select.ResId) && !containsRejectId(selector.Reject, ids) {
err := copyValueToTarget(possibleTarget, value, selector) err := copyValueToTarget(possibleTarget, value, selector)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -168,10 +168,15 @@ func matchesAnnoAndLabelSelector(n *yaml.RNode, selector *types.Selector) (bool,
return annoMatch && labelMatch, nil 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 { for _, r := range rejects {
if !r.ResId.IsEmpty() && id.IsSelectedBy(r.ResId) { if r.ResId.IsEmpty() {
return true continue
}
for _, id := range ids {
if id.IsSelectedBy(r.ResId) {
return true
}
} }
} }
return false return false

View File

@@ -604,7 +604,7 @@ spec:
spec: spec:
containers: containers:
- image: app1:1.0 - image: app1:1.0
name: something-else name: app
--- ---
apiVersion: v1 apiVersion: v1
data: data: