From 7b8aae466761448522acbd3beb2a16ad2283013a Mon Sep 17 00:00:00 2001 From: Matthew Fisher Date: Mon, 16 Apr 2018 16:46:47 -0700 Subject: [PATCH] Revert "feat: add --set and --values options to 'helm package'" This reverts commit a930eb7ff4dcba13831174496dda2445e81ebeaa. --- cmd/helm/package.go | 20 ----- cmd/helm/package_test.go | 152 -------------------------------------- docs/helm/helm_package.md | 21 +++--- 3 files changed, 9 insertions(+), 184 deletions(-) diff --git a/cmd/helm/package.go b/cmd/helm/package.go index bf171e534..ed44382c7 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -53,9 +53,6 @@ type packageCmd struct { save bool sign bool path string - valueFiles valueFiles - values []string - stringValues []string key string keyring string version string @@ -98,9 +95,6 @@ func newPackageCmd(out io.Writer) *cobra.Command { } f := cmd.Flags() - f.VarP(&pkg.valueFiles, "values", "f", "specify values in a YAML file or a URL(can specify multiple)") - f.StringArrayVar(&pkg.values, "set", []string{}, "set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") - f.StringArrayVar(&pkg.stringValues, "set-string", []string{}, "set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") f.BoolVar(&pkg.save, "save", true, "save packaged chart to local chart repository") f.BoolVar(&pkg.sign, "sign", false, "use a PGP private key to sign this package") f.StringVar(&pkg.key, "key", "", "name of the key to use when signing. Used if --sign is true") @@ -139,20 +133,6 @@ func (p *packageCmd) run() error { return err } - overrideVals, err := vals(p.valueFiles, p.values, p.stringValues) - if err != nil { - return err - } - combinedVals, err := chartutil.CoalesceValues(ch, &chart.Config{Raw: string(overrideVals)}) - if err != nil { - return err - } - newVals, err := combinedVals.YAML() - if err != nil { - return err - } - ch.Values = &chart.Config{Raw: newVals} - // If version is set, modify the version. if len(p.version) != 0 { if err := setVersion(ch, p.version); err != nil { diff --git a/cmd/helm/package_test.go b/cmd/helm/package_test.go index 4a2df3f54..4404586e0 100644 --- a/cmd/helm/package_test.go +++ b/cmd/helm/package_test.go @@ -21,7 +21,6 @@ import ( "os" "path/filepath" "regexp" - "strings" "testing" "github.com/spf13/cobra" @@ -123,13 +122,6 @@ func TestPackage(t *testing.T) { hasfile: "chart-missing-deps-0.1.0.tgz", err: true, }, - { - name: "package --values does-not-exist", - args: []string{"testdata/testcharts/alpine"}, - flags: map[string]string{"values": "does-not-exist"}, - expect: "does-not-exist: no such file or directory", - err: true, - }, } // Because these tests are destructive, we run them in a tempdir. @@ -253,150 +245,6 @@ func TestSetAppVersion(t *testing.T) { } } -func TestPackageValues(t *testing.T) { - testCases := []struct { - desc string - args []string - valuefilesContents []string - flags map[string]string - expected []string - }{ - { - desc: "helm package, single values file", - args: []string{"testdata/testcharts/alpine"}, - valuefilesContents: []string{"Name: chart-name-foo"}, - expected: []string{"Name: chart-name-foo"}, - }, - { - desc: "helm package, multiple values files", - args: []string{"testdata/testcharts/alpine"}, - valuefilesContents: []string{"Name: chart-name-foo", "foo: bar"}, - expected: []string{"Name: chart-name-foo", "foo: bar"}, - }, - { - desc: "helm package, with set option", - args: []string{"testdata/testcharts/alpine"}, - flags: map[string]string{"set": "Name=chart-name-foo"}, - expected: []string{"Name: chart-name-foo"}, - }, - { - desc: "helm package, set takes precedence over value file", - args: []string{"testdata/testcharts/alpine"}, - valuefilesContents: []string{"Name: chart-name-foo"}, - flags: map[string]string{"set": "Name=chart-name-bar"}, - expected: []string{"Name: chart-name-bar"}, - }, - } - - thome, err := tempHelmHome(t) - if err != nil { - t.Fatal(err) - } - cleanup := resetEnv() - defer func() { - os.RemoveAll(thome.String()) - cleanup() - }() - - settings.Home = thome - - for _, tc := range testCases { - var files []string - for _, contents := range tc.valuefilesContents { - f, err := createValuesFile(contents) - if err != nil { - t.Errorf("%q unexpected error creating temporary values file: %q", tc.desc, err) - } - defer os.RemoveAll(filepath.Dir(f)) - files = append(files, f) - } - valueFiles := strings.Join(files, ",") - - expected, err := chartutil.ReadValues([]byte(strings.Join(tc.expected, "\n"))) - if err != nil { - t.Errorf("unexpected error parsing values: %q", err) - } - - runAndVerifyPackageCommandValues(t, tc.args, tc.flags, valueFiles, expected) - } -} - -func runAndVerifyPackageCommandValues(t *testing.T, args []string, flags map[string]string, valueFiles string, expected chartutil.Values) { - outputDir, err := ioutil.TempDir("", "helm-package") - if err != nil { - t.Errorf("unexpected error creating temporary output directory: %q", err) - } - defer os.RemoveAll(outputDir) - - if len(flags) == 0 { - flags = make(map[string]string) - } - flags["destination"] = outputDir - - if len(valueFiles) > 0 { - flags["values"] = valueFiles - } - - cmd := newPackageCmd(&bytes.Buffer{}) - setFlags(cmd, flags) - err = cmd.RunE(cmd, args) - if err != nil { - t.Errorf("unexpected error: %q", err) - } - - outputFile := filepath.Join(outputDir, "alpine-0.1.0.tgz") - verifyOutputChartExists(t, outputFile) - - var actual chartutil.Values - actual, err = getChartValues(outputFile) - if err != nil { - t.Errorf("unexpected error extracting chart values: %q", err) - } - - verifyValues(t, actual, expected) -} - -func createValuesFile(data string) (string, error) { - outputDir, err := ioutil.TempDir("", "values-file") - if err != nil { - return "", err - } - - outputFile := filepath.Join(outputDir, "values.yaml") - if err = ioutil.WriteFile(outputFile, []byte(data), 0755); err != nil { - os.RemoveAll(outputFile) - return "", err - } - - return outputFile, nil -} - -func getChartValues(chartPath string) (chartutil.Values, error) { - - chart, err := chartutil.Load(chartPath) - if err != nil { - return nil, err - } - - return chartutil.ReadValues([]byte(chart.Values.Raw)) -} - -func verifyValues(t *testing.T, actual, expected chartutil.Values) { - for key, value := range expected.AsMap() { - if got := actual[key]; got != value { - t.Errorf("Expected %q, got %q (%v)", value, got, actual) - } - } -} - -func verifyOutputChartExists(t *testing.T, chartPath string) { - if chartFile, err := os.Stat(chartPath); err != nil { - t.Errorf("expected file %q, got err %q", chartPath, err) - } else if chartFile.Size() == 0 { - t.Errorf("file %q has zero bytes.", chartPath) - } -} - func setFlags(cmd *cobra.Command, flags map[string]string) { dest := cmd.Flags() for f, v := range flags { diff --git a/docs/helm/helm_package.md b/docs/helm/helm_package.md index 957f9c3b2..21090fa45 100644 --- a/docs/helm/helm_package.md +++ b/docs/helm/helm_package.md @@ -23,17 +23,14 @@ helm package [flags] [CHART_PATH] [...] ### Options ``` - --app-version string set the appVersion on the chart to this version - -u, --dependency-update update dependencies from "requirements.yaml" to dir "charts/" before packaging - -d, --destination string location to write the chart. (default ".") - --key string name of the key to use when signing. Used if --sign is true - --keyring string location of a public keyring (default "~/.gnupg/pubring.gpg") - --save save packaged chart to local chart repository (default true) - --set stringArray set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --set-string stringArray set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2) - --sign use a PGP private key to sign this package - -f, --values valueFiles specify values in a YAML file or a URL(can specify multiple) (default []) - --version string set the version on the chart to this semver version + --app-version string set the appVersion on the chart to this version + -u, --dependency-update update dependencies from "requirements.yaml" to dir "charts/" before packaging + -d, --destination string location to write the chart. (default ".") + --key string name of the key to use when signing. Used if --sign is true + --keyring string location of a public keyring (default "~/.gnupg/pubring.gpg") + --save save packaged chart to local chart repository (default true) + --sign use a PGP private key to sign this package + --version string set the version on the chart to this semver version ``` ### Options inherited from parent commands @@ -50,4 +47,4 @@ helm package [flags] [CHART_PATH] [...] ### SEE ALSO * [helm](helm.md) - The Helm package manager for Kubernetes. -###### Auto generated by spf13/cobra on 6-Apr-2018 +###### Auto generated by spf13/cobra on 16-Apr-2018