diff --git a/kyaml/kio/byteio_reader.go b/kyaml/kio/byteio_reader.go index 4f20a52f5..7d0aeda79 100644 --- a/kyaml/kio/byteio_reader.go +++ b/kyaml/kio/byteio_reader.go @@ -43,6 +43,7 @@ type ByteReadWriter struct { Results *yaml.RNode + NoWrap bool WrappingAPIVersion string WrappingKind string } @@ -53,10 +54,15 @@ func (rw *ByteReadWriter) Read() ([]*yaml.RNode, error) { OmitReaderAnnotations: rw.OmitReaderAnnotations, } val, err := b.Read() - rw.FunctionConfig = b.FunctionConfig + if rw.FunctionConfig == nil { + rw.FunctionConfig = b.FunctionConfig + } rw.Results = b.Results - rw.WrappingAPIVersion = b.WrappingAPIVersion - rw.WrappingKind = b.WrappingKind + + if !rw.NoWrap { + rw.WrappingAPIVersion = b.WrappingAPIVersion + rw.WrappingKind = b.WrappingKind + } return val, errors.Wrap(err) } diff --git a/kyaml/kio/byteio_readwriter_test.go b/kyaml/kio/byteio_readwriter_test.go index e7cea1b2b..0e965186a 100644 --- a/kyaml/kio/byteio_readwriter_test.go +++ b/kyaml/kio/byteio_readwriter_test.go @@ -10,6 +10,7 @@ import ( "github.com/stretchr/testify/assert" "sigs.k8s.io/kustomize/kyaml/kio" + "sigs.k8s.io/kustomize/kyaml/yaml" ) func TestByteReadWriter(t *testing.T) { @@ -226,6 +227,68 @@ metadata: `, instance: kio.ByteReadWriter{KeepReaderAnnotations: true}, }, + + { + name: "manual_override_wrap", + input: ` +apiVersion: config.kubernetes.io/v1alpha1 +kind: ResourceList +items: +- kind: Deployment + spec: + replicas: 1 +- kind: Service + spec: + selectors: + foo: bar +functionConfig: + a: b # something +`, + expectedOutput: ` +kind: Deployment +spec: + replicas: 1 +--- +kind: Service +spec: + selectors: + foo: bar +`, + instance: kio.ByteReadWriter{NoWrap: true}, + }, + + { + name: "manual_override_function_config", + input: ` +apiVersion: config.kubernetes.io/v1alpha1 +kind: ResourceList +items: +- kind: Deployment + spec: + replicas: 1 +- kind: Service + spec: + selectors: + foo: bar +functionConfig: + a: b # something +`, + expectedOutput: ` +apiVersion: config.kubernetes.io/v1alpha1 +kind: ResourceList +items: +- kind: Deployment + spec: + replicas: 1 +- kind: Service + spec: + selectors: + foo: bar +functionConfig: + c: d +`, + instance: kio.ByteReadWriter{FunctionConfig: yaml.MustParse(`c: d`)}, + }, } for i := range testCases {