diff --git a/examples/charts/replicatedservice-3.tgz b/examples/charts/replicatedservice-3.tgz new file mode 100644 index 000000000..adc9cf39b Binary files /dev/null and b/examples/charts/replicatedservice-3.tgz differ diff --git a/examples/charts/replicatedservice-v3.tgz b/examples/charts/replicatedservice-v3.tgz deleted file mode 100644 index eefd10ae0..000000000 Binary files a/examples/charts/replicatedservice-v3.tgz and /dev/null differ diff --git a/examples/charts/replicatedservice/Chart.yaml b/examples/charts/replicatedservice/Chart.yaml index 869ebea4d..2790b9c9d 100644 --- a/examples/charts/replicatedservice/Chart.yaml +++ b/examples/charts/replicatedservice/Chart.yaml @@ -1,7 +1,7 @@ name: replicatedservice description: Port of the replicatedservice template from kubernetes/charts -version: 3 +version: "3" +home: "" expander: name: Expandybird entrypoint: templates/replicatedservice.py -schema: templates/replicatedservice.py.schema diff --git a/pkg/chart/chart.go b/pkg/chart/chart.go index 4a3281745..d36c15f1e 100644 --- a/pkg/chart/chart.go +++ b/pkg/chart/chart.go @@ -20,7 +20,6 @@ import ( "archive/tar" "bytes" "compress/gzip" - "encoding/base64" "errors" "fmt" "io" @@ -412,16 +411,16 @@ func (c *Chart) loadMember(filename string) (*Member, error) { return nil, err } - b, err := ioutil.ReadFile(filename) + content, err := ioutil.ReadFile(filename) if err != nil { return nil, err } path := strings.TrimPrefix(filename, dir) - content := base64.StdEncoding.EncodeToString(b) + path = strings.TrimLeft(path, "/") result := &Member{ Path: path, - Content: []byte(content), + Content: content, } return result, nil diff --git a/pkg/chart/chart_test.go b/pkg/chart/chart_test.go index c8a5d6f78..b4f93a2b9 100644 --- a/pkg/chart/chart_test.go +++ b/pkg/chart/chart_test.go @@ -17,13 +17,14 @@ limitations under the License. package chart import ( - "encoding/base64" "fmt" "io/ioutil" "path/filepath" + "reflect" "testing" "github.com/kubernetes/helm/pkg/log" + "github.com/kubernetes/helm/pkg/util" ) const ( @@ -202,7 +203,7 @@ func findMember(root, path string, members []*Member) error { for _, member := range members { if member.Path == path { filename := filepath.Join(root, path) - if err := compareContent(filename, string(member.Content)); err != nil { + if err := compareContent(filename, member.Content); err != nil { return err } @@ -233,20 +234,52 @@ func TestLoadMember(t *testing.T) { } filename := filepath.Join(c.loader.dir(), testmember) - if err := compareContent(filename, string(member.Content)); err != nil { + if err := compareContent(filename, member.Content); err != nil { t.Fatal(err) } } -func compareContent(filename, content string) error { - b, err := ioutil.ReadFile(filename) +func TestLoadContent(t *testing.T) { + c, err := LoadDir(testdir) + if err != nil { + t.Errorf("Failed to load chart: %s", err) + } + + content, err := c.LoadContent() + if err != nil { + t.Errorf("Failed to load chart content: %s", err) + } + + want := c.Chartfile() + have := content.Chartfile + if !reflect.DeepEqual(want, have) { + t.Errorf("Unexpected chart file\nwant:\n%s\nhave:\n%s\n", + util.ToYAMLOrError(want), util.ToYAMLOrError(have)) + } + + for _, member := range content.Members { + have := member.Content + wantMember, err := c.LoadMember(member.Path) + if err != nil { + t.Errorf("Failed to load chart member: %s", err) + } + + t.Logf("%s:\n%s\n\n", member.Path, member.Content) + want := wantMember.Content + if !reflect.DeepEqual(want, have) { + t.Errorf("Unexpected chart member %s\nwant:\n%v\nhave:\n%v\n", member.Path, want, have) + } + } +} + +func compareContent(filename string, content []byte) error { + compare, err := ioutil.ReadFile(filename) if err != nil { return fmt.Errorf("Cannot read test file %s: %s", filename, err) } - compare := base64.StdEncoding.EncodeToString(b) - if content != compare { - return fmt.Errorf("Expected member content\n%v\ngot\n%v", []byte(compare), []byte(content)) + if !reflect.DeepEqual(compare, content) { + return fmt.Errorf("Expected member content\n%v\ngot\n%v", compare, content) } return nil diff --git a/pkg/expansion/service.go b/pkg/expansion/service.go index e7c135b75..8a589a063 100644 --- a/pkg/expansion/service.go +++ b/pkg/expansion/service.go @@ -49,14 +49,18 @@ func NewService(address string, port int, backend Expander) *Service { badRequest(resp, err.Error()) return } + + reqMsg := fmt.Sprintf("\nhandling request:\n%s\n", util.ToYAMLOrError(request)) + util.LogHandlerText("expansion service", reqMsg) response, err := backend.ExpandChart(request) if err != nil { badRequest(resp, fmt.Sprintf("error expanding chart: %s", err)) return } + util.LogHandlerExit("expansion service", http.StatusOK, "OK", resp.ResponseWriter) - message := fmt.Sprintf("\nResources:\n%s\n", response.Resources) - util.LogHandlerText("expansion service", message) + respMsg := fmt.Sprintf("\nreturning response:\n%s\n", util.ToYAMLOrError(response.Resources)) + util.LogHandlerText("expansion service", respMsg) resp.WriteEntity(response) } webService.Route(