Merge pull request #379 from endocode/kayrus/trim_fix

cloudinit: trim trailing whitespaces in #cloud-config header
This commit is contained in:
Alex Crawford 2015-09-07 10:09:42 -07:00
commit 5f688a0a21
2 changed files with 4 additions and 5 deletions

View File

@ -19,6 +19,7 @@ import (
"reflect"
"regexp"
"strings"
"unicode"
"github.com/coreos/coreos-cloudinit/Godeps/_workspace/src/github.com/coreos/yaml"
)
@ -49,10 +50,8 @@ type CoreOS struct {
func IsCloudConfig(userdata string) bool {
header := strings.SplitN(userdata, "\n", 2)[0]
// Explicitly trim the header so we can handle user-data from
// non-unix operating systems. The rest of the file is parsed
// by yaml, which correctly handles CRLF.
header = strings.TrimSuffix(header, "\r")
// Trim trailing whitespaces
header = strings.TrimRightFunc(header, unicode.IsSpace)
return (header == "#cloud-config")
}

View File

@ -47,7 +47,7 @@ func TestParseHeaderCRLF(t *testing.T) {
}
func TestParseConfigCRLF(t *testing.T) {
contents := "#cloud-config\r\nhostname: foo\r\nssh_authorized_keys:\r\n - foobar\r\n"
contents := "#cloud-config \r\nhostname: foo\r\nssh_authorized_keys:\r\n - foobar\r\n"
ud, err := ParseUserData(contents)
if err != nil {
t.Fatalf("Failed parsing config: %v", err)