diff --git a/cmd/helm/inspect.go b/cmd/helm/inspect.go index 6ecdd47f6..9baa88616 100644 --- a/cmd/helm/inspect.go +++ b/cmd/helm/inspect.go @@ -22,10 +22,10 @@ import ( "strings" "github.com/ghodss/yaml" - "github.com/golang/protobuf/ptypes/any" "github.com/spf13/cobra" "k8s.io/helm/pkg/chartutil" + "k8s.io/helm/pkg/hapi/chart" ) const inspectDesc = ` @@ -248,15 +248,15 @@ func (i *inspectCmd) run() error { if readme == nil { return nil } - fmt.Fprintln(i.out, string(readme.Value)) + fmt.Fprintln(i.out, string(readme.Data)) } return nil } -func findReadme(files []*any.Any) (file *any.Any) { +func findReadme(files []*chart.File) (file *chart.File) { for _, file := range files { for _, n := range readmeFileNames { - if strings.EqualFold(file.TypeUrl, n) { + if strings.EqualFold(file.Name, n) { return file } } diff --git a/cmd/helm/install.go b/cmd/helm/install.go index b51455477..db429b5f3 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -482,7 +482,7 @@ func defaultNamespace() string { func checkDependencies(ch *chart.Chart, reqs *chartutil.Requirements) error { missing := []string{} - deps := ch.GetDependencies() + deps := ch.Dependencies for _, r := range reqs.Dependencies { found := false for _, d := range deps { diff --git a/glide.lock b/glide.lock index 76db4a2a1..2473bf4a5 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: b78f3d1f316474c2afd90074058cb5b1b4eda432b7bc270e4b76141199387d37 -updated: 2018-04-16T23:16:59.971946077Z +hash: f61bc9a14aff4543b59b89891e4ad0ae787a0ce0e6d775d02b8964e857d41aad +updated: 2018-04-18T23:27:56.45176431Z imports: - name: cloud.google.com/go version: 3b1ae45394a234c385be014e9a488f2bb6eef821 diff --git a/glide.yaml b/glide.yaml index 250015fb4..e96a51c1d 100644 --- a/glide.yaml +++ b/glide.yaml @@ -15,12 +15,6 @@ import: - package: github.com/Masterminds/semver version: ~1.3.1 - package: github.com/technosophos/moniker -- package: github.com/golang/protobuf - version: 1643683e1b54a9e88ad26d98f81400c8c9d9f4f9 - subpackages: - - proto - - ptypes/any - - ptypes/timestamp - package: github.com/gosuri/uitable - package: github.com/asaskevich/govalidator version: ^4.0.0 diff --git a/pkg/chartutil/chartfile_test.go b/pkg/chartutil/chartfile_test.go old mode 100755 new mode 100644 diff --git a/pkg/chartutil/create.go b/pkg/chartutil/create.go index 586df6378..3b2fe64ad 100644 --- a/pkg/chartutil/create.go +++ b/pkg/chartutil/create.go @@ -299,11 +299,11 @@ func CreateFrom(chartfile *chart.Metadata, dest string, src string) error { schart.Metadata = chartfile - var updatedTemplates []*chart.Template + var updatedTemplates []*chart.File for _, template := range schart.Templates { newData := Transform(string(template.Data), "", schart.Metadata.Name) - updatedTemplates = append(updatedTemplates, &chart.Template{Name: template.Name, Data: newData}) + updatedTemplates = append(updatedTemplates, &chart.File{Name: template.Name, Data: newData}) } schart.Templates = updatedTemplates diff --git a/pkg/chartutil/files.go b/pkg/chartutil/files.go index ced8ce15a..ca149a5e7 100644 --- a/pkg/chartutil/files.go +++ b/pkg/chartutil/files.go @@ -22,11 +22,11 @@ import ( "path" "strings" - "github.com/ghodss/yaml" - "github.com/BurntSushi/toml" + "github.com/ghodss/yaml" "github.com/gobwas/glob" - "github.com/golang/protobuf/ptypes/any" + + "k8s.io/helm/pkg/hapi/chart" ) // Files is a map of files in a chart that can be accessed from a template. @@ -34,12 +34,10 @@ type Files map[string][]byte // NewFiles creates a new Files from chart files. // Given an []*any.Any (the format for files in a chart.Chart), extract a map of files. -func NewFiles(from []*any.Any) Files { +func NewFiles(from []*chart.File) Files { files := map[string][]byte{} - if from != nil { - for _, f := range from { - files[f.TypeUrl] = f.Value - } + for _, f := range from { + files[f.Name] = f.Data } return files } diff --git a/pkg/chartutil/files_test.go b/pkg/chartutil/files_test.go index 5cec35883..a6c9d1b65 100644 --- a/pkg/chartutil/files_test.go +++ b/pkg/chartutil/files_test.go @@ -18,7 +18,6 @@ package chartutil import ( "testing" - "github.com/golang/protobuf/ptypes/any" "github.com/stretchr/testify/assert" ) @@ -32,16 +31,16 @@ var cases = []struct { {"multiline/test.txt", "bar\nfoo"}, } -func getTestFiles() []*any.Any { - a := []*any.Any{} +func getTestFiles() Files { + a := make(Files, len(cases)) for _, c := range cases { - a = append(a, &any.Any{TypeUrl: c.path, Value: []byte(c.data)}) + a[c.path] = []byte(c.data) } return a } func TestNewFiles(t *testing.T) { - files := NewFiles(getTestFiles()) + files := getTestFiles() if len(files) != len(cases) { t.Errorf("Expected len() = %d, got %d", len(cases), len(files)) } @@ -59,7 +58,7 @@ func TestNewFiles(t *testing.T) { func TestFileGlob(t *testing.T) { as := assert.New(t) - f := NewFiles(getTestFiles()) + f := getTestFiles() matched := f.Glob("story/**") @@ -70,7 +69,7 @@ func TestFileGlob(t *testing.T) { func TestToConfig(t *testing.T) { as := assert.New(t) - f := NewFiles(getTestFiles()) + f := getTestFiles() out := f.Glob("**/captain.txt").AsConfig() as.Equal("captain.txt: The Captain", out) @@ -81,7 +80,7 @@ func TestToConfig(t *testing.T) { func TestToSecret(t *testing.T) { as := assert.New(t) - f := NewFiles(getTestFiles()) + f := getTestFiles() out := f.Glob("ship/**").AsSecrets() as.Equal("captain.txt: VGhlIENhcHRhaW4=\nstowaway.txt: TGVnYXR0", out) @@ -90,7 +89,7 @@ func TestToSecret(t *testing.T) { func TestLines(t *testing.T) { as := assert.New(t) - f := NewFiles(getTestFiles()) + f := getTestFiles() out := f.Lines("multiline/test.txt") as.Len(out, 2) diff --git a/pkg/chartutil/load.go b/pkg/chartutil/load.go index 1f8f33485..28514cf1e 100644 --- a/pkg/chartutil/load.go +++ b/pkg/chartutil/load.go @@ -28,8 +28,6 @@ import ( "path/filepath" "strings" - "github.com/golang/protobuf/ptypes/any" - "k8s.io/helm/pkg/hapi/chart" "k8s.io/helm/pkg/ignore" "k8s.io/helm/pkg/sympath" @@ -136,10 +134,10 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { } else if f.Name == "values.yaml" { c.Values = &chart.Config{Raw: string(f.Data)} } else if strings.HasPrefix(f.Name, "templates/") { - c.Templates = append(c.Templates, &chart.Template{Name: f.Name, Data: f.Data}) + c.Templates = append(c.Templates, &chart.File{Name: f.Name, Data: f.Data}) } else if strings.HasPrefix(f.Name, "charts/") { if filepath.Ext(f.Name) == ".prov" { - c.Files = append(c.Files, &any.Any{TypeUrl: f.Name, Value: f.Data}) + c.Files = append(c.Files, &chart.File{Name: f.Name, Data: f.Data}) continue } cname := strings.TrimPrefix(f.Name, "charts/") @@ -151,7 +149,7 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { scname := parts[0] subcharts[scname] = append(subcharts[scname], &BufferedFile{Name: cname, Data: f.Data}) } else { - c.Files = append(c.Files, &any.Any{TypeUrl: f.Name, Value: f.Data}) + c.Files = append(c.Files, &chart.File{Name: f.Name, Data: f.Data}) } } diff --git a/pkg/chartutil/load_test.go b/pkg/chartutil/load_test.go index 968c7e73c..da689fa6f 100644 --- a/pkg/chartutil/load_test.go +++ b/pkg/chartutil/load_test.go @@ -97,27 +97,13 @@ icon: https://example.com/64x64.png t.Errorf("Expected number of templates == 2, got %d", len(c.Templates)) } - c, err = LoadFiles([]*BufferedFile{}) + _, err = LoadFiles([]*BufferedFile{}) if err == nil { t.Fatal("Expected err to be non-nil") } if err.Error() != "chart metadata (Chart.yaml) missing" { t.Errorf("Expected chart metadata missing error, got '%s'", err.Error()) } - - // legacy check - c, err = LoadFiles([]*BufferedFile{ - { - Name: "values.toml", - Data: []byte{}, - }, - }) - if err == nil { - t.Fatal("Expected err to be non-nil") - } - if err.Error() != "values.toml is illegal as of 2.0.0-alpha.2" { - t.Errorf("Expected values.toml to be illegal, got '%s'", err.Error()) - } } // Packaging the chart on a Windows machine will produce an @@ -145,7 +131,7 @@ func verifyChart(t *testing.T, c *chart.Chart) { if len(c.Files) != numfiles { t.Errorf("Expected %d extra files, got %d", numfiles, len(c.Files)) for _, n := range c.Files { - t.Logf("\t%s", n.TypeUrl) + t.Logf("\t%s", n.Name) } } diff --git a/pkg/chartutil/requirements.go b/pkg/chartutil/requirements.go index 764f99b35..37743443e 100644 --- a/pkg/chartutil/requirements.go +++ b/pkg/chartutil/requirements.go @@ -98,8 +98,8 @@ type RequirementsLock struct { func LoadRequirements(c *chart.Chart) (*Requirements, error) { var data []byte for _, f := range c.Files { - if f.TypeUrl == requirementsName { - data = f.Value + if f.Name == requirementsName { + data = f.Data } } if len(data) == 0 { @@ -113,8 +113,8 @@ func LoadRequirements(c *chart.Chart) (*Requirements, error) { func LoadRequirementsLock(c *chart.Chart) (*RequirementsLock, error) { var data []byte for _, f := range c.Files { - if f.TypeUrl == lockfileName { - data = f.Value + if f.Name == lockfileName { + data = f.Data } } if len(data) == 0 { @@ -392,7 +392,7 @@ func processImportValues(c *chart.Chart) error { if err != nil { return err } - b := make(map[string]interface{}, 0) + b := make(map[string]interface{}) // import values from each dependency if specified in import-values for _, r := range reqs.Dependencies { if len(r.ImportValues) > 0 { diff --git a/pkg/chartutil/requirements_test.go b/pkg/chartutil/requirements_test.go index 5392cfb55..11ff3fb4c 100644 --- a/pkg/chartutil/requirements_test.go +++ b/pkg/chartutil/requirements_test.go @@ -287,7 +287,7 @@ func verifyRequirementsImportValues(t *testing.T, c *chart.Chart, v *chart.Confi if err != nil { t.Errorf("Error processing import values requirements %v", err) } - cv := c.GetValues() + cv := c.Values cc, err := ReadValues([]byte(cv.Raw)) if err != nil { t.Errorf("Error reading import values %v", err) diff --git a/pkg/chartutil/save.go b/pkg/chartutil/save.go index 082fe9f0e..3316c85a6 100644 --- a/pkg/chartutil/save.go +++ b/pkg/chartutil/save.go @@ -69,14 +69,14 @@ func SaveDir(c *chart.Chart, dest string) error { // Save files for _, f := range c.Files { - n := filepath.Join(outdir, f.TypeUrl) + n := filepath.Join(outdir, f.Name) d := filepath.Dir(n) if err := os.MkdirAll(d, 0755); err != nil { return err } - if err := ioutil.WriteFile(n, f.Value, 0755); err != nil { + if err := ioutil.WriteFile(n, f.Data, 0755); err != nil { return err } } @@ -186,8 +186,8 @@ func writeTarContents(out *tar.Writer, c *chart.Chart, prefix string) error { // Save files for _, f := range c.Files { - n := filepath.Join(base, f.TypeUrl) - if err := writeToTar(out, n, f.Value); err != nil { + n := filepath.Join(base, f.Name) + if err := writeToTar(out, n, f.Data); err != nil { return err } } diff --git a/pkg/chartutil/save_test.go b/pkg/chartutil/save_test.go index 3db77d38c..153452fca 100644 --- a/pkg/chartutil/save_test.go +++ b/pkg/chartutil/save_test.go @@ -22,8 +22,6 @@ import ( "strings" "testing" - "github.com/golang/protobuf/ptypes/any" - "k8s.io/helm/pkg/hapi/chart" ) @@ -42,8 +40,8 @@ func TestSave(t *testing.T) { Values: &chart.Config{ Raw: "ship: Pequod", }, - Files: []*any.Any{ - {TypeUrl: "scheherazade/shahryar.txt", Value: []byte("1,001 Nights")}, + Files: []*chart.File{ + {Name: "scheherazade/shahryar.txt", Data: []byte("1,001 Nights")}, }, } @@ -69,7 +67,7 @@ func TestSave(t *testing.T) { if c2.Values.Raw != c.Values.Raw { t.Fatal("Values data did not match") } - if len(c2.Files) != 1 || c2.Files[0].TypeUrl != "scheherazade/shahryar.txt" { + if len(c2.Files) != 1 || c2.Files[0].Name != "scheherazade/shahryar.txt" { t.Fatal("Files data did not match") } } @@ -89,8 +87,8 @@ func TestSaveDir(t *testing.T) { Values: &chart.Config{ Raw: "ship: Pequod", }, - Files: []*any.Any{ - {TypeUrl: "scheherazade/shahryar.txt", Value: []byte("1,001 Nights")}, + Files: []*chart.File{ + {Name: "scheherazade/shahryar.txt", Data: []byte("1,001 Nights")}, }, } @@ -109,7 +107,7 @@ func TestSaveDir(t *testing.T) { if c2.Values.Raw != c.Values.Raw { t.Fatal("Values data did not match") } - if len(c2.Files) != 1 || c2.Files[0].TypeUrl != "scheherazade/shahryar.txt" { + if len(c2.Files) != 1 || c2.Files[0].Name != "scheherazade/shahryar.txt" { t.Fatal("Files data did not match") } } diff --git a/pkg/chartutil/values.go b/pkg/chartutil/values.go index 18c5dd14a..7f131c1b3 100644 --- a/pkg/chartutil/values.go +++ b/pkg/chartutil/values.go @@ -417,8 +417,7 @@ func (v Values) PathValue(ypath string) (interface{}, error) { table := yps[:ypsLen-1] st := strings.Join(table, ".") // get the last element as a string key - key := yps[ypsLen-1:] - sk := string(key[0]) + sk := yps[ypsLen-1:][0] // get our table for table path t, err := v.Table(st) if err != nil { diff --git a/pkg/chartutil/values_test.go b/pkg/chartutil/values_test.go index dede0f00f..b5e77bbd7 100644 --- a/pkg/chartutil/values_test.go +++ b/pkg/chartutil/values_test.go @@ -24,8 +24,6 @@ import ( "text/template" "time" - "github.com/golang/protobuf/ptypes/any" - kversion "k8s.io/apimachinery/pkg/version" "k8s.io/helm/pkg/hapi/chart" @@ -90,7 +88,7 @@ where: c := &chart.Chart{ Metadata: &chart.Metadata{Name: "test"}, - Templates: []*chart.Template{}, + Templates: []*chart.File{}, Values: &chart.Config{Raw: chartValues}, Dependencies: []*chart.Chart{ { @@ -98,8 +96,8 @@ where: Values: &chart.Config{Raw: ""}, }, }, - Files: []*any.Any{ - {TypeUrl: "scheherazade/shahryar.txt", Value: []byte("1,001 Nights")}, + Files: []*chart.File{ + {Name: "scheherazade/shahryar.txt", Data: []byte("1,001 Nights")}, }, } v := &chart.Config{Raw: overideValues} @@ -153,9 +151,7 @@ where: t.Error("Expected Capabilities to have a Kube version") } - var vals Values - vals = res["Values"].(Values) - + vals := res["Values"].(Values) if vals["name"] != "Haroun" { t.Errorf("Expected 'Haroun', got %q (%v)", vals["name"], vals) } diff --git a/pkg/engine/engine_test.go b/pkg/engine/engine_test.go index d11944dd6..956357cde 100644 --- a/pkg/engine/engine_test.go +++ b/pkg/engine/engine_test.go @@ -23,8 +23,6 @@ import ( "k8s.io/helm/pkg/chartutil" "k8s.io/helm/pkg/hapi/chart" - - "github.com/golang/protobuf/ptypes/any" ) func TestSortTemplates(t *testing.T) { @@ -94,7 +92,7 @@ func TestRender(t *testing.T) { Name: "moby", Version: "1.2.3", }, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/test1", Data: []byte("{{.outer | title }} {{.inner | title}}")}, {Name: "templates/test2", Data: []byte("{{.global.callme | lower }}")}, {Name: "templates/test3", Data: []byte("{{.noValue}}")}, @@ -203,20 +201,20 @@ func TestParallelRenderInternals(t *testing.T) { func TestAllTemplates(t *testing.T) { ch1 := &chart.Chart{ Metadata: &chart.Metadata{Name: "ch1"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/foo", Data: []byte("foo")}, {Name: "templates/bar", Data: []byte("bar")}, }, Dependencies: []*chart.Chart{ { Metadata: &chart.Metadata{Name: "laboratory mice"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/pinky", Data: []byte("pinky")}, {Name: "templates/brain", Data: []byte("brain")}, }, Dependencies: []*chart.Chart{{ Metadata: &chart.Metadata{Name: "same thing we do every night"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/innermost", Data: []byte("innermost")}, }}, }, @@ -237,13 +235,13 @@ func TestRenderDependency(t *testing.T) { toptpl := `Hello {{template "myblock"}}` ch := &chart.Chart{ Metadata: &chart.Metadata{Name: "outerchart"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/outer", Data: []byte(toptpl)}, }, Dependencies: []*chart.Chart{ { Metadata: &chart.Metadata{Name: "innerchart"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/inner", Data: []byte(deptpl)}, }, }, @@ -278,7 +276,7 @@ func TestRenderNestedValues(t *testing.T) { deepest := &chart.Chart{ Metadata: &chart.Metadata{Name: "deepest"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: deepestpath, Data: []byte(`And this same {{.Values.what}} that smiles {{.Values.global.when}}`)}, {Name: checkrelease, Data: []byte(`Tomorrow will be {{default "happy" .Release.Name }}`)}, }, @@ -287,7 +285,7 @@ func TestRenderNestedValues(t *testing.T) { inner := &chart.Chart{ Metadata: &chart.Metadata{Name: "herrick"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: innerpath, Data: []byte(`Old {{.Values.who}} is still a-flyin'`)}, }, Values: &chart.Config{Raw: `who: "Robert"`}, @@ -296,7 +294,7 @@ func TestRenderNestedValues(t *testing.T) { outer := &chart.Chart{ Metadata: &chart.Metadata{Name: "top"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: outerpath, Data: []byte(`Gather ye {{.Values.what}} while ye may`)}, }, Values: &chart.Config{ @@ -363,21 +361,21 @@ global: func TestRenderBuiltinValues(t *testing.T) { inner := &chart.Chart{ Metadata: &chart.Metadata{Name: "Latium"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/Lavinia", Data: []byte(`{{.Template.Name}}{{.Chart.Name}}{{.Release.Name}}`)}, {Name: "templates/From", Data: []byte(`{{.Files.author | printf "%s"}} {{.Files.Get "book/title.txt"}}`)}, }, Values: &chart.Config{Raw: ``}, Dependencies: []*chart.Chart{}, - Files: []*any.Any{ - {TypeUrl: "author", Value: []byte("Virgil")}, - {TypeUrl: "book/title.txt", Value: []byte("Aeneid")}, + Files: []*chart.File{ + {Name: "author", Data: []byte("Virgil")}, + {Name: "book/title.txt", Data: []byte("Aeneid")}, }, } outer := &chart.Chart{ Metadata: &chart.Metadata{Name: "Troy"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/Aeneas", Data: []byte(`{{.Template.Name}}{{.Chart.Name}}{{.Release.Name}}`)}, }, Values: &chart.Config{Raw: ``}, @@ -415,7 +413,7 @@ func TestRenderBuiltinValues(t *testing.T) { func TestAlterFuncMap(t *testing.T) { c := &chart.Chart{ Metadata: &chart.Metadata{Name: "conrad"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/quote", Data: []byte(`{{include "conrad/templates/_partial" . | indent 2}} dead.`)}, {Name: "templates/_partial", Data: []byte(`{{.Release.Name}} - he`)}, }, @@ -443,7 +441,7 @@ func TestAlterFuncMap(t *testing.T) { reqChart := &chart.Chart{ Metadata: &chart.Metadata{Name: "conan"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/quote", Data: []byte(`All your base are belong to {{ required "A valid 'who' is required" .Values.who }}`)}, {Name: "templates/bases", Data: []byte(`All {{ required "A valid 'bases' is required" .Values.bases }} of them!`)}, }, @@ -478,7 +476,7 @@ func TestAlterFuncMap(t *testing.T) { tplChart := &chart.Chart{ Metadata: &chart.Metadata{Name: "TplFunction"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/base", Data: []byte(`Evaluate tpl {{tpl "Value: {{ .Values.value}}" .}}`)}, }, Values: &chart.Config{Raw: ``}, @@ -507,7 +505,7 @@ func TestAlterFuncMap(t *testing.T) { tplChartWithFunction := &chart.Chart{ Metadata: &chart.Metadata{Name: "TplFunction"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/base", Data: []byte(`Evaluate tpl {{tpl "Value: {{ .Values.value | quote}}" .}}`)}, }, Values: &chart.Config{Raw: ``}, @@ -536,7 +534,7 @@ func TestAlterFuncMap(t *testing.T) { tplChartWithInclude := &chart.Chart{ Metadata: &chart.Metadata{Name: "TplFunction"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/base", Data: []byte(`{{ tpl "{{include ` + "`" + `TplFunction/templates/_partial` + "`" + ` . | quote }}" .}}`)}, {Name: "templates/_partial", Data: []byte(`{{.Template.Name}}`)}, }, diff --git a/pkg/hapi/chart/chart.go b/pkg/hapi/chart/chart.go index a11b63530..9fac56441 100644 --- a/pkg/hapi/chart/chart.go +++ b/pkg/hapi/chart/chart.go @@ -1,54 +1,17 @@ package chart -import google_protobuf "github.com/golang/protobuf/ptypes/any" - // Chart is a helm package that contains metadata, a default config, zero or more // optionally parameterizable templates, and zero or more charts (dependencies). type Chart struct { // Contents of the Chartfile. Metadata *Metadata `json:"metadata,omitempty"` // Templates for this chart. - Templates []*Template `json:"templates,omitempty"` + Templates []*File `json:"templates,omitempty"` // Charts that this chart depends on. Dependencies []*Chart `json:"dependencies,omitempty"` // Default config for this template. Values *Config `json:"values,omitempty"` // Miscellaneous files in a chart archive, // e.g. README, LICENSE, etc. - Files []*google_protobuf.Any `json:"files,omitempty"` -} - -func (m *Chart) GetMetadata() *Metadata { - if m != nil { - return m.Metadata - } - return nil -} - -func (m *Chart) GetTemplates() []*Template { - if m != nil { - return m.Templates - } - return nil -} - -func (m *Chart) GetDependencies() []*Chart { - if m != nil { - return m.Dependencies - } - return nil -} - -func (m *Chart) GetValues() *Config { - if m != nil { - return m.Values - } - return nil -} - -func (m *Chart) GetFiles() []*google_protobuf.Any { - if m != nil { - return m.Files - } - return nil + Files []*File `json:"files,omitempty"` } diff --git a/pkg/hapi/chart/template.go b/pkg/hapi/chart/template.go index 95b8ff3d1..1f80f00f6 100644 --- a/pkg/hapi/chart/template.go +++ b/pkg/hapi/chart/template.go @@ -1,26 +1,12 @@ package chart -// Template represents a template as a name/value pair. +// File represents a file as a name/value pair. // // By convention, name is a relative path within the scope of the chart's // base directory. -type Template struct { +type File struct { // Name is the path-like name of the template. Name string `json:"name,omitempty"` // Data is the template as byte data. Data []byte `json:"data,omitempty"` } - -func (m *Template) GetName() string { - if m != nil { - return m.Name - } - return "" -} - -func (m *Template) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} diff --git a/pkg/helm/fake.go b/pkg/helm/fake.go index a84c9464d..36618d4fd 100644 --- a/pkg/helm/fake.go +++ b/pkg/helm/fake.go @@ -211,7 +211,7 @@ func ReleaseMock(opts *MockReleaseOptions) *release.Release { Name: "foo", Version: "0.1.0-beta.1", }, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/foo.tpl", Data: []byte(MockManifest)}, }, } diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index e08c99fbd..c42d7f2a9 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -113,7 +113,7 @@ func Templates(linter *support.Linter, values []byte, namespace string, strict b // NOTE: disabled for now, Refs https://github.com/kubernetes/helm/issues/1037 // linter.RunLinterRule(support.WarningSev, path, validateQuotes(string(preExecutedTemplate))) - renderedContent := renderedContentMap[filepath.Join(chart.GetMetadata().Name, fileName)] + renderedContent := renderedContentMap[filepath.Join(chart.Metadata.Name, fileName)] var yamlStruct K8sYamlStruct // Even though K8sYamlStruct only defines Metadata namespace, an error in any other // key will be raised as well diff --git a/pkg/releasetesting/test_suite_test.go b/pkg/releasetesting/test_suite_test.go index 324c8afa2..750cb0dee 100644 --- a/pkg/releasetesting/test_suite_test.go +++ b/pkg/releasetesting/test_suite_test.go @@ -217,7 +217,7 @@ func chartStub() *chart.Chart { Metadata: &chart.Metadata{ Name: "nemo", }, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithTestSuccessHook)}, }, diff --git a/pkg/tiller/release_server.go b/pkg/tiller/release_server.go index a5f2b2cdd..2e5937c05 100644 --- a/pkg/tiller/release_server.go +++ b/pkg/tiller/release_server.go @@ -267,7 +267,7 @@ func (s *ReleaseServer) renderResources(ch *chart.Chart, values chartutil.Values } } - s.Log("rendering %s chart using values", ch.GetMetadata().Name) + s.Log("rendering %s chart using values", ch.Metadata.Name) renderer := s.engine(ch) files, err := renderer.Render(ch, values) if err != nil { diff --git a/pkg/tiller/release_server_test.go b/pkg/tiller/release_server_test.go index 20baf40b4..bdc108eaa 100644 --- a/pkg/tiller/release_server_test.go +++ b/pkg/tiller/release_server_test.go @@ -112,7 +112,7 @@ func buildChart(opts ...chartOption) *chart.Chart { Name: "hello", }, // This adds a basic template and hooks. - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithHook)}, }, @@ -140,7 +140,7 @@ func withDependency(dependencyOpts ...chartOption) chartOption { func withNotes(notes string) chartOption { return func(opts *chartOptions) { - opts.Templates = append(opts.Templates, &chart.Template{ + opts.Templates = append(opts.Templates, &chart.File{ Name: "templates/NOTES.txt", Data: []byte(notes), }) @@ -149,7 +149,7 @@ func withNotes(notes string) chartOption { func withSampleTemplates() chartOption { return func(opts *chartOptions) { - sampleTemplates := []*chart.Template{ + sampleTemplates := []*chart.File{ // This adds basic templates and partials. {Name: "templates/goodbye", Data: []byte("goodbye: world")}, {Name: "templates/empty", Data: []byte("")}, @@ -361,7 +361,7 @@ func releaseWithKeepStub(rlsName string) *release.Release { Metadata: &chart.Metadata{ Name: "bunnychart", }, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/configmap", Data: []byte(manifestWithKeep)}, }, } diff --git a/pkg/tiller/release_update_test.go b/pkg/tiller/release_update_test.go index aafa0912b..30f013204 100644 --- a/pkg/tiller/release_update_test.go +++ b/pkg/tiller/release_update_test.go @@ -36,7 +36,7 @@ func TestUpdateRelease(t *testing.T) { Name: rel.Name, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)}, }, @@ -108,7 +108,7 @@ func TestUpdateRelease_ResetValues(t *testing.T) { Name: rel.Name, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)}, }, @@ -133,7 +133,7 @@ func TestUpdateRelease_ComplexReuseValues(t *testing.T) { Namespace: "spaced", Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithHook)}, }, @@ -153,7 +153,7 @@ func TestUpdateRelease_ComplexReuseValues(t *testing.T) { Name: rel.Name, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)}, }, @@ -177,7 +177,7 @@ func TestUpdateRelease_ComplexReuseValues(t *testing.T) { Name: rel.Name, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)}, }, @@ -203,7 +203,7 @@ func TestUpdateRelease_ComplexReuseValues(t *testing.T) { Name: rel.Name, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)}, }, @@ -233,7 +233,7 @@ func TestUpdateRelease_ReuseValues(t *testing.T) { Name: rel.Name, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)}, }, @@ -270,7 +270,7 @@ func TestUpdateRelease_ResetReuseValues(t *testing.T) { Name: rel.Name, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)}, }, @@ -301,7 +301,7 @@ func TestUpdateReleaseFailure(t *testing.T) { DisableHooks: true, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/something", Data: []byte("hello: world")}, }, }, @@ -343,7 +343,7 @@ func TestUpdateReleaseFailure_Force(t *testing.T) { DisableHooks: true, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/something", Data: []byte("text: 'Did you ever hear the tragedy of Darth Plagueis the Wise? I thought not. It’s not a story the Jedi would tell you. It’s a Sith legend. Darth Plagueis was a Dark Lord of the Sith, so powerful and so wise he could use the Force to influence the Midichlorians to create life... He had such a knowledge of the Dark Side that he could even keep the ones he cared about from dying. The Dark Side of the Force is a pathway to many abilities some consider to be unnatural. He became so powerful... The only thing he was afraid of was losing his power, which eventually, of course, he did. Unfortunately, he taught his apprentice everything he knew, then his apprentice killed him in his sleep. Ironic. He could save others from death, but not himself.'")}, }, }, @@ -385,7 +385,7 @@ func TestUpdateReleaseNoHooks(t *testing.T) { DisableHooks: true, Chart: &chart.Chart{ Metadata: &chart.Metadata{Name: "hello"}, - Templates: []*chart.Template{ + Templates: []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, {Name: "templates/hooks", Data: []byte(manifestWithUpgradeHooks)}, },