From 5cf98316c38b733a26dc9ba3c137e6769d4fdeb8 Mon Sep 17 00:00:00 2001 From: kurochan Date: Fri, 9 Dec 2022 03:06:07 +0900 Subject: [PATCH] consider new line at EOF on parsing kubernetes manifest --- .../kubernetes/testdata/patch_configmap_field.yaml | 4 ++-- .../testdata/patch_configmap_field_multi_ops.yaml | 4 ++-- pkg/app/piped/platformprovider/kubernetes/manifest.go | 7 ++++++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pkg/app/piped/executor/kubernetes/testdata/patch_configmap_field.yaml b/pkg/app/piped/executor/kubernetes/testdata/patch_configmap_field.yaml index adc653e76f..56e406b95c 100644 --- a/pkg/app/piped/executor/kubernetes/testdata/patch_configmap_field.yaml +++ b/pkg/app/piped/executor/kubernetes/testdata/patch_configmap_field.yaml @@ -3,7 +3,7 @@ kind: ConfigMap metadata: name: envoy-config data: - envoy-config: |- + envoy-config: | admin: address: socket_address: @@ -42,7 +42,7 @@ kind: ConfigMap metadata: name: envoy-config data: - envoy-config: |- + envoy-config: | admin: address: socket_address: diff --git a/pkg/app/piped/executor/kubernetes/testdata/patch_configmap_field_multi_ops.yaml b/pkg/app/piped/executor/kubernetes/testdata/patch_configmap_field_multi_ops.yaml index 3553d6b2d1..efeb218de7 100644 --- a/pkg/app/piped/executor/kubernetes/testdata/patch_configmap_field_multi_ops.yaml +++ b/pkg/app/piped/executor/kubernetes/testdata/patch_configmap_field_multi_ops.yaml @@ -3,7 +3,7 @@ kind: ConfigMap metadata: name: envoy-config data: - envoy-config: |- + envoy-config: | admin: address: socket_address: @@ -151,7 +151,7 @@ kind: ConfigMap metadata: name: envoy-config data: - envoy-config: |- + envoy-config: | admin: address: socket_address: diff --git a/pkg/app/piped/platformprovider/kubernetes/manifest.go b/pkg/app/piped/platformprovider/kubernetes/manifest.go index fe3d0af38a..8b1c982931 100644 --- a/pkg/app/piped/platformprovider/kubernetes/manifest.go +++ b/pkg/app/piped/platformprovider/kubernetes/manifest.go @@ -224,12 +224,17 @@ func ParseManifests(data string) ([]Manifest, error) { manifests = make([]Manifest, 0, len(parts)) ) - for _, part := range parts { + newLineAtEOF := strings.HasSuffix(data, "\n") + for i, part := range parts { // Ignore all the cases where no content between separator. part = strings.TrimSpace(part) if len(part) == 0 { continue } + // Append new line which trim by document separator. + if i != len(parts)-1 || newLineAtEOF { + part += "\n" + } var obj unstructured.Unstructured if err := yaml.Unmarshal([]byte(part), &obj); err != nil { return nil, err