Merge pull request #3506 from natasha41575/FixSmpDirectiveWhenElementNotFound

$patch:delete should not add elements when element is not found
This commit is contained in:
Jeff Regan
2021-01-27 11:24:38 -08:00
committed by GitHub
4 changed files with 8 additions and 27 deletions

View File

@@ -60,11 +60,10 @@ func (p *PatchStrategicMergeTransformerPlugin) Config(
"patch appears to be empty; files=%v, Patch=%s", p.Paths, p.Patches)
}
// Merge the patches, looking for conflicts.
m, err := h.ResmapFactory().ConflatePatches(p.loadedPatches)
_, err = h.ResmapFactory().ConflatePatches(p.loadedPatches)
if err != nil {
return err
}
p.loadedPatches = m.Resources()
return nil
}

View File

@@ -69,28 +69,6 @@ spec:
image: helloworld
name: whatever
`
// Allow expected variable to be unused
_ = expected
// Currently, kustomize inserts $patch: delete elements into the resulting resources
erroneousActual := `
apiVersion: apps/v1
kind: Deployment
metadata:
name: whatever
spec:
template:
spec:
containers:
- env:
- $patch: delete
name: NOT_EXISTING_FOR_REMOVAL
- name: EXISTING
value: EXISTING_VALUE
image: helloworld
name: whatever
`
m := th.Run(".", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, erroneousActual)
th.AssertActualEqualsExpected(m, expected)
}

View File

@@ -59,6 +59,11 @@ func (m Merger) VisitMap(nodes walk.Sources, s *openapi.ResourceSchema) (*yaml.R
}
if yaml.IsMissingOrNull(nodes.Dest()) {
// Add
ps, _ := determineSmpDirective(nodes.Origin())
if ps == smpDelete {
return walk.ClearNode, nil
}
return nodes.Origin(), nil
}
if nodes.Origin().IsTaggedNull() {

View File

@@ -64,11 +64,10 @@ func (p *plugin) Config(
"patch appears to be empty; files=%v, Patch=%s", p.Paths, p.Patches)
}
// Merge the patches, looking for conflicts.
m, err := h.ResmapFactory().ConflatePatches(p.loadedPatches)
_, err = h.ResmapFactory().ConflatePatches(p.loadedPatches)
if err != nil {
return err
}
p.loadedPatches = m.Resources()
return nil
}