Skip to content

Commit f0cbdb2

Browse files
travisgrothmumoshu
authored andcommitted
Skip yaml blocks without any metadata (#127)
Fixes #48
1 parent a779b3b commit f0cbdb2

File tree

3 files changed

+32
-7
lines changed

3 files changed

+32
-7
lines changed

manifest/parse.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"log"
88
"strings"
99

10-
"gopkg.in/yaml.v2"
10+
yaml "gopkg.in/yaml.v2"
1111
"k8s.io/helm/pkg/proto/hapi/release"
1212
)
1313

@@ -90,20 +90,27 @@ func Parse(manifest string, defaultNamespace string) map[string]*MappingResult {
9090
if strings.TrimSpace(content) == "" {
9191
continue
9292
}
93-
var metadata metadata
94-
if err := yaml.Unmarshal([]byte(content), &metadata); err != nil {
93+
var parsedMetadata metadata
94+
if err := yaml.Unmarshal([]byte(content), &parsedMetadata); err != nil {
9595
log.Fatalf("YAML unmarshal error: %s\nCan't unmarshal %s", err, content)
9696
}
97-
if metadata.Metadata.Namespace == "" {
98-
metadata.Metadata.Namespace = defaultNamespace
97+
98+
//Skip content without any metadata. It is probably a template that
99+
//only contains comments in the current state.
100+
if (metadata{}) == parsedMetadata {
101+
continue
102+
}
103+
104+
if parsedMetadata.Metadata.Namespace == "" {
105+
parsedMetadata.Metadata.Namespace = defaultNamespace
99106
}
100-
name := metadata.String()
107+
name := parsedMetadata.String()
101108
if _, ok := result[name]; ok {
102109
log.Printf("Error: Found duplicate key %#v in manifest", name)
103110
} else {
104111
result[name] = &MappingResult{
105112
Name: name,
106-
Kind: metadata.Kind,
113+
Kind: parsedMetadata.Kind,
107114
Content: content,
108115
}
109116
}

manifest/parse_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,13 @@ func TestDeployV1Beta1(t *testing.T) {
5858
foundObjects(Parse(string(spec), "default")),
5959
)
6060
}
61+
62+
func TestEmpty(t *testing.T) {
63+
spec, err := ioutil.ReadFile("testdata/empty.yaml")
64+
require.NoError(t, err)
65+
66+
require.Equal(t,
67+
[]string{},
68+
foundObjects(Parse(string(spec), "default")),
69+
)
70+
}

manifest/testdata/empty.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
# Source: nginx/pod.yaml
3+
# This template is empty
4+
# and only contains comments
5+
---
6+
# Source: nginx/pod.yaml
7+
# This template is empty
8+
# and only contains comments

0 commit comments

Comments
 (0)