From dc158f6208782b888fc5be6d23d8991042cf9f9c Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Mon, 5 Feb 2024 13:54:21 +0000 Subject: [PATCH 001/206] fix(helm): pass down username/password CLI parameters to OCI registry clients When username/password parameters are passed in via the CLI they are not passed down to the client handling requests to OCI registries. This change ensures this happens Signed-off-by: Evans Mungai --- cmd/helm/install.go | 2 +- cmd/helm/pull.go | 2 +- cmd/helm/push.go | 4 +++- cmd/helm/root.go | 37 +++++++++++++++++++++++++++++-------- cmd/helm/show.go | 2 +- cmd/helm/template.go | 2 +- cmd/helm/upgrade.go | 2 +- pkg/action/install.go | 1 + pkg/registry/client.go | 31 +++++++++++++++++++++++++++++++ 9 files changed, 69 insertions(+), 14 deletions(-) diff --git a/cmd/helm/install.go b/cmd/helm/install.go index d987d300f..74573ee81 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -137,7 +137,7 @@ func newInstallCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { }, RunE: func(_ *cobra.Command, args []string) error { registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, - client.InsecureSkipTLSverify, client.PlainHTTP) + client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) } diff --git a/cmd/helm/pull.go b/cmd/helm/pull.go index af3092aff..4ca2c47e8 100644 --- a/cmd/helm/pull.go +++ b/cmd/helm/pull.go @@ -65,7 +65,7 @@ func newPullCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, - client.InsecureSkipTLSverify, client.PlainHTTP) + client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) } diff --git a/cmd/helm/push.go b/cmd/helm/push.go index 3375155ed..be804661b 100644 --- a/cmd/helm/push.go +++ b/cmd/helm/push.go @@ -68,7 +68,9 @@ func newPushCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { return nil, cobra.ShellCompDirectiveNoFileComp }, RunE: func(cmd *cobra.Command, args []string) error { - registryClient, err := newRegistryClient(o.certFile, o.keyFile, o.caFile, o.insecureSkipTLSverify, o.plainHTTP) + registryClient, err := newRegistryClient( + o.certFile, o.keyFile, o.caFile, o.insecureSkipTLSverify, o.plainHTTP, "", "", + ) if err != nil { return fmt.Errorf("missing registry client: %w", err) } diff --git a/cmd/helm/root.go b/cmd/helm/root.go index 55b7e8892..beb62bd39 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -21,6 +21,7 @@ import ( "fmt" "io" "log" + "net/http" "os" "strings" @@ -29,6 +30,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/clientcmd" + "helm.sh/helm/v3/internal/tlsutil" "helm.sh/helm/v3/pkg/action" "helm.sh/helm/v3/pkg/registry" "helm.sh/helm/v3/pkg/repo" @@ -153,7 +155,7 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string flags.ParseErrorsWhitelist.UnknownFlags = true flags.Parse(args) - registryClient, err := newDefaultRegistryClient(false) + registryClient, err := newDefaultRegistryClient(false, "", "") if err != nil { return nil, err } @@ -258,27 +260,30 @@ func checkForExpiredRepos(repofile string) { } -func newRegistryClient(certFile, keyFile, caFile string, insecureSkipTLSverify, plainHTTP bool) (*registry.Client, error) { +func newRegistryClient( + certFile, keyFile, caFile string, insecureSkipTLSverify, plainHTTP bool, username, password string, +) (*registry.Client, error) { if certFile != "" && keyFile != "" || caFile != "" || insecureSkipTLSverify { - registryClient, err := newRegistryClientWithTLS(certFile, keyFile, caFile, insecureSkipTLSverify) + registryClient, err := newRegistryClientWithTLS(certFile, keyFile, caFile, insecureSkipTLSverify, username, password) if err != nil { return nil, err } return registryClient, nil } - registryClient, err := newDefaultRegistryClient(plainHTTP) + registryClient, err := newDefaultRegistryClient(plainHTTP, username, password) if err != nil { return nil, err } return registryClient, nil } -func newDefaultRegistryClient(plainHTTP bool) (*registry.Client, error) { +func newDefaultRegistryClient(plainHTTP bool, username, password string) (*registry.Client, error) { opts := []registry.ClientOption{ registry.ClientOptDebug(settings.Debug), registry.ClientOptEnableCache(true), registry.ClientOptWriter(os.Stderr), registry.ClientOptCredentialsFile(settings.RegistryConfig), + registry.ClientOptBasicAuth(username, password), } if plainHTTP { opts = append(opts, registry.ClientOptPlainHTTP()) @@ -292,10 +297,26 @@ func newDefaultRegistryClient(plainHTTP bool) (*registry.Client, error) { return registryClient, nil } -func newRegistryClientWithTLS(certFile, keyFile, caFile string, insecureSkipTLSverify bool) (*registry.Client, error) { +func newRegistryClientWithTLS( + certFile, keyFile, caFile string, insecureSkipTLSverify bool, username, password string, +) (*registry.Client, error) { + tlsConf, err := tlsutil.NewClientTLS(certFile, keyFile, caFile, insecureSkipTLSverify) + if err != nil { + return nil, fmt.Errorf("can't create TLS config for client: %w", err) + } + // Create a new registry client - registryClient, err := registry.NewRegistryClientWithTLS(os.Stderr, certFile, keyFile, caFile, insecureSkipTLSverify, - settings.RegistryConfig, settings.Debug, + registryClient, err := registry.NewClient( + registry.ClientOptDebug(settings.Debug), + registry.ClientOptEnableCache(true), + registry.ClientOptWriter(os.Stderr), + registry.ClientOptCredentialsFile(settings.RegistryConfig), + registry.ClientOptHTTPClient(&http.Client{ + Transport: &http.Transport{ + TLSClientConfig: tlsConf, + }, + }), + registry.ClientOptBasicAuth(username, password), ) if err != nil { return nil, err diff --git a/cmd/helm/show.go b/cmd/helm/show.go index 28eb9756d..b615ac97b 100644 --- a/cmd/helm/show.go +++ b/cmd/helm/show.go @@ -227,7 +227,7 @@ func runShow(args []string, client *action.Show) (string, error) { func addRegistryClient(client *action.Show) error { registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, - client.InsecureSkipTLSverify, client.PlainHTTP) + client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) } diff --git a/cmd/helm/template.go b/cmd/helm/template.go index a16cbc76e..16895d22d 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -74,7 +74,7 @@ func newTemplateCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, - client.InsecureSkipTLSverify, client.PlainHTTP) + client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) } diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index e7c6dd166..1b640f546 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -98,7 +98,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { client.Namespace = settings.Namespace() registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, - client.InsecureSkipTLSverify, client.PlainHTTP) + client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) } diff --git a/pkg/action/install.go b/pkg/action/install.go index e3538a4f5..2c776f352 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -754,6 +754,7 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) ( getter.WithTLSClientConfig(c.CertFile, c.KeyFile, c.CaFile), getter.WithInsecureSkipVerifyTLS(c.InsecureSkipTLSverify), getter.WithPlainHTTP(c.PlainHTTP), + getter.WithBasicAuth(c.Username, c.Password), }, RepositoryConfig: settings.RepositoryConfig, RepositoryCache: settings.RepositoryCache, diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 7538cf69b..0d353e8a2 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -18,6 +18,7 @@ package registry // import "helm.sh/helm/v3/pkg/registry" import ( "context" + "encoding/base64" "encoding/json" "fmt" "io" @@ -56,6 +57,8 @@ type ( enableCache bool // path to repository config file e.g. ~/.docker/config.json credentialsFile string + username string + password string out io.Writer authorizer auth.Client registryAuthorizer *registryauth.Client @@ -105,6 +108,19 @@ func NewClient(options ...ClientOption) (*Client, error) { if client.plainHTTP { opts = append(opts, auth.WithResolverPlainHTTP()) } + + // if username and password are set, use them for authentication + // by adding the basic auth Authorization header to the resolver + if client.username != "" && client.password != "" { + concat := client.username + ":" + client.password + encodedAuth := base64.StdEncoding.EncodeToString([]byte(concat)) + opts = append(opts, auth.WithResolverHeaders( + http.Header{ + "Authorization": []string{"Basic " + encodedAuth}, + }, + )) + } + resolver, err := client.authorizer.ResolverWithOpts(opts...) if err != nil { return nil, err @@ -125,6 +141,13 @@ func NewClient(options ...ClientOption) (*Client, error) { }, Cache: cache, Credential: func(ctx context.Context, reg string) (registryauth.Credential, error) { + if client.username != "" && client.password != "" { + return registryauth.Credential{ + Username: client.username, + Password: client.password, + }, nil + } + dockerClient, ok := client.authorizer.(*dockerauth.Client) if !ok { return registryauth.EmptyCredential, errors.New("unable to obtain docker client") @@ -168,6 +191,14 @@ func ClientOptEnableCache(enableCache bool) ClientOption { } } +// ClientOptBasicAuth returns a function that sets the username and password setting on client options set +func ClientOptBasicAuth(username, password string) ClientOption { + return func(client *Client) { + client.username = username + client.password = password + } +} + // ClientOptWriter returns a function that sets the writer setting on client options set func ClientOptWriter(out io.Writer) ClientOption { return func(client *Client) { From c86a8cbd53cacc6ef127d45122cfade0b50c0c0d Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Mon, 4 Jul 2022 18:43:29 -0300 Subject: [PATCH 002/206] perf(dep-up): do not update the same repo multiple times Signed-off-by: Felipe Santos --- pkg/downloader/manager.go | 18 +++++++++ pkg/downloader/manager_test.go | 69 ++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index a5b0af080..d0f101dab 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -659,9 +659,27 @@ func (m *Manager) UpdateRepositories() error { return nil } +// Filter out duplicate repos by URL, including those with trailing slashes. +func dedupeRepos(repos []*repo.Entry) []*repo.Entry { + seen := make(map[string]*repo.Entry) + for _, r := range repos { + // Normalize URL by removing trailing slashes. + r.URL = strings.TrimSuffix(r.URL, "/") + seen[r.URL] = r + } + var unique []*repo.Entry + for _, r := range seen { + unique = append(unique, r) + } + return unique +} + func (m *Manager) parallelRepoUpdate(repos []*repo.Entry) error { var wg sync.WaitGroup + + repos = dedupeRepos(repos) + for _, c := range repos { r, err := repo.NewChartRepository(c, m.Getters) if err != nil { diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index f7ab1a568..13c94e116 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -26,6 +26,7 @@ import ( "helm.sh/helm/v3/pkg/chart/loader" "helm.sh/helm/v3/pkg/chartutil" "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v3/pkg/repo" "helm.sh/helm/v3/pkg/repo/repotest" ) @@ -572,3 +573,71 @@ func TestKey(t *testing.T) { } } } + +// Test dedupeRepos tests that the dedupeRepos function correctly deduplicates +func TestDedupeRepos(t *testing.T) { + tests := []struct { + name string + repos []*repo.Entry + want []*repo.Entry + }{ + { + name: "no duplicates", + repos: []*repo.Entry{ + { + URL: "https://example.com/charts", + }, + { + URL: "https://example.com/charts2", + }, + }, + want: []*repo.Entry{ + { + URL: "https://example.com/charts", + }, + { + URL: "https://example.com/charts2", + }, + }, + }, + { + name: "duplicates", + repos: []*repo.Entry{ + { + URL: "https://example.com/charts", + }, + { + URL: "https://example.com/charts", + }, + }, + want: []*repo.Entry{ + { + URL: "https://example.com/charts", + }, + }, + }, + { + name: "duplicates with trailing slash", + repos: []*repo.Entry{ + { + URL: "https://example.com/charts", + }, + { + URL: "https://example.com/charts/", + }, + }, + want: []*repo.Entry{ + { + URL: "https://example.com/charts", + }, + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := dedupeRepos(tt.repos); !reflect.DeepEqual(got, tt.want) { + t.Errorf("received:\n%v\nwant:\n%v", got, tt.want) + } + }) + } +} From 5a58751a053ea59b88399487a5f0f8f5c27b9461 Mon Sep 17 00:00:00 2001 From: Ryan Hockstad Date: Wed, 13 Mar 2024 18:17:00 -0400 Subject: [PATCH 003/206] merge null child chart objects Signed-off-by: Ryan Hockstad --- pkg/chartutil/coalesce.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pkg/chartutil/coalesce.go b/pkg/chartutil/coalesce.go index f0272fd6a..40bce2a68 100644 --- a/pkg/chartutil/coalesce.go +++ b/pkg/chartutil/coalesce.go @@ -237,6 +237,9 @@ func coalesceValues(printf printFn, c *chart.Chart, v map[string]interface{}, pr printf("warning: skipped value for %s.%s: Not a table.", subPrefix, key) } } else { + // If the key is a child chart, coalesce tables with Merge set to true + merge := childChartMergeTrue(c, key, merge) + // Because v has higher precedence than nv, dest values override src // values. coalesceTablesFullKey(printf, dest, src, concatPrefix(subPrefix, key), merge) @@ -249,6 +252,15 @@ func coalesceValues(printf printFn, c *chart.Chart, v map[string]interface{}, pr } } +func childChartMergeTrue(chrt *chart.Chart, key string, merge bool) bool { + for _, subchart := range chrt.Dependencies() { + if subchart.Name() == key { + return true + } + } + return merge +} + // CoalesceTables merges a source map into a destination map. // // dest is considered authoritative. From 7672a1700d4dd85ae9885c8e443d673ef1d898ce Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Wed, 19 Jun 2024 13:20:14 +0100 Subject: [PATCH 004/206] Add username/password to push subcommand Signed-off-by: Evans Mungai --- cmd/helm/push.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cmd/helm/push.go b/cmd/helm/push.go index 84b8a823b..b1a835ac1 100644 --- a/cmd/helm/push.go +++ b/cmd/helm/push.go @@ -40,6 +40,8 @@ type registryPushOptions struct { caFile string insecureSkipTLSverify bool plainHTTP bool + password string + username string } func newPushCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { @@ -69,7 +71,7 @@ func newPushCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { }, RunE: func(_ *cobra.Command, args []string) error { registryClient, err := newRegistryClient( - o.certFile, o.keyFile, o.caFile, o.insecureSkipTLSverify, o.plainHTTP, "", "", + o.certFile, o.keyFile, o.caFile, o.insecureSkipTLSverify, o.plainHTTP, o.username, o.password, ) if err != nil { @@ -99,6 +101,8 @@ func newPushCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { f.StringVar(&o.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") f.BoolVar(&o.insecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart upload") f.BoolVar(&o.plainHTTP, "plain-http", false, "use insecure HTTP connections for the chart upload") + f.StringVar(&o.username, "username", "", "chart repository username where to locate the requested chart") + f.StringVar(&o.password, "password", "", "chart repository password where to locate the requested chart") return cmd } From 837ae4242cb58a96ed0129db3ca7fa1ff7a33ab5 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Wed, 19 Jun 2024 16:37:44 +0100 Subject: [PATCH 005/206] Add username/password to dependency build/update subcommands Signed-off-by: Evans Mungai --- cmd/helm/dependency.go | 14 ++++++++++++++ cmd/helm/dependency_build.go | 16 ++++++++++------ cmd/helm/dependency_update.go | 15 ++++++++++----- cmd/helm/flags.go | 2 +- cmd/helm/install.go | 2 +- cmd/helm/pull.go | 2 +- cmd/helm/show.go | 2 +- cmd/helm/template.go | 2 +- cmd/helm/upgrade.go | 2 +- pkg/action/dependency.go | 15 +++++++++++---- pkg/action/install.go | 6 +++--- pkg/action/pull.go | 4 ++-- 12 files changed, 56 insertions(+), 26 deletions(-) diff --git a/cmd/helm/dependency.go b/cmd/helm/dependency.go index 228c73c80..0fead7083 100644 --- a/cmd/helm/dependency.go +++ b/cmd/helm/dependency.go @@ -20,6 +20,7 @@ import ( "path/filepath" "github.com/spf13/cobra" + "github.com/spf13/pflag" "helm.sh/helm/v3/cmd/helm/require" "helm.sh/helm/v3/pkg/action" @@ -120,3 +121,16 @@ func newDependencyListCmd(out io.Writer) *cobra.Command { f.UintVar(&client.ColumnWidth, "max-col-width", 80, "maximum column width for output table") return cmd } + +func addDependencySubcommandFlags(f *pflag.FlagSet, client *action.Dependency) { + f.BoolVar(&client.Verify, "verify", false, "verify the packages against signatures") + f.StringVar(&client.Keyring, "keyring", defaultKeyring(), "keyring containing public keys") + f.BoolVar(&client.SkipRefresh, "skip-refresh", false, "do not refresh the local repository cache") + f.StringVar(&client.Username, "username", "", "chart repository username where to locate the requested chart") + f.StringVar(&client.Password, "password", "", "chart repository password where to locate the requested chart") + f.StringVar(&client.CertFile, "cert-file", "", "identify HTTPS client using this SSL certificate file") + f.StringVar(&client.KeyFile, "key-file", "", "identify HTTPS client using this SSL key file") + f.BoolVar(&client.InsecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart download") + f.BoolVar(&client.PlainHTTP, "plain-http", false, "use insecure HTTP connections for the chart download") + f.StringVar(&client.CAFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") +} \ No newline at end of file diff --git a/cmd/helm/dependency_build.go b/cmd/helm/dependency_build.go index 2cf0c6c81..8ef8fb04b 100644 --- a/cmd/helm/dependency_build.go +++ b/cmd/helm/dependency_build.go @@ -41,7 +41,7 @@ If no lock file is found, 'helm dependency build' will mirror the behavior of 'helm dependency update'. ` -func newDependencyBuildCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { +func newDependencyBuildCmd(_ *action.Configuration, out io.Writer) *cobra.Command { client := action.NewDependency() cmd := &cobra.Command{ @@ -54,13 +54,19 @@ func newDependencyBuildCmd(cfg *action.Configuration, out io.Writer) *cobra.Comm if len(args) > 0 { chartpath = filepath.Clean(args[0]) } + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) + if err != nil { + return fmt.Errorf("missing registry client: %w", err) + } + man := &downloader.Manager{ Out: out, ChartPath: chartpath, Keyring: client.Keyring, SkipUpdate: client.SkipRefresh, Getters: getter.All(settings), - RegistryClient: cfg.RegistryClient, + RegistryClient: registryClient, RepositoryConfig: settings.RepositoryConfig, RepositoryCache: settings.RepositoryCache, Debug: settings.Debug, @@ -68,7 +74,7 @@ func newDependencyBuildCmd(cfg *action.Configuration, out io.Writer) *cobra.Comm if client.Verify { man.Verify = downloader.VerifyIfPossible } - err := man.Build() + err = man.Build() if e, ok := err.(downloader.ErrRepoNotFound); ok { return fmt.Errorf("%s. Please add the missing repos via 'helm repo add'", e.Error()) } @@ -77,9 +83,7 @@ func newDependencyBuildCmd(cfg *action.Configuration, out io.Writer) *cobra.Comm } f := cmd.Flags() - f.BoolVar(&client.Verify, "verify", false, "verify the packages against signatures") - f.StringVar(&client.Keyring, "keyring", defaultKeyring(), "keyring containing public keys") - f.BoolVar(&client.SkipRefresh, "skip-refresh", false, "do not refresh the local repository cache") + addDependencySubcommandFlags(f, client) return cmd } diff --git a/cmd/helm/dependency_update.go b/cmd/helm/dependency_update.go index cb6e9c0cc..a5fb5796d 100644 --- a/cmd/helm/dependency_update.go +++ b/cmd/helm/dependency_update.go @@ -16,6 +16,7 @@ limitations under the License. package main import ( + "fmt" "io" "path/filepath" @@ -43,7 +44,7 @@ in the Chart.yaml file, but (b) at the wrong version. ` // newDependencyUpdateCmd creates a new dependency update command. -func newDependencyUpdateCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { +func newDependencyUpdateCmd(_ *action.Configuration, out io.Writer) *cobra.Command { client := action.NewDependency() cmd := &cobra.Command{ @@ -57,13 +58,19 @@ func newDependencyUpdateCmd(cfg *action.Configuration, out io.Writer) *cobra.Com if len(args) > 0 { chartpath = filepath.Clean(args[0]) } + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) + if err != nil { + return fmt.Errorf("missing registry client: %w", err) + } + man := &downloader.Manager{ Out: out, ChartPath: chartpath, Keyring: client.Keyring, SkipUpdate: client.SkipRefresh, Getters: getter.All(settings), - RegistryClient: cfg.RegistryClient, + RegistryClient: registryClient, RepositoryConfig: settings.RepositoryConfig, RepositoryCache: settings.RepositoryCache, Debug: settings.Debug, @@ -76,9 +83,7 @@ func newDependencyUpdateCmd(cfg *action.Configuration, out io.Writer) *cobra.Com } f := cmd.Flags() - f.BoolVar(&client.Verify, "verify", false, "verify the packages against signatures") - f.StringVar(&client.Keyring, "keyring", defaultKeyring(), "keyring containing public keys") - f.BoolVar(&client.SkipRefresh, "skip-refresh", false, "do not refresh the local repository cache") + addDependencySubcommandFlags(f, client) return cmd } diff --git a/cmd/helm/flags.go b/cmd/helm/flags.go index 62e9f90fa..b3f5ca091 100644 --- a/cmd/helm/flags.go +++ b/cmd/helm/flags.go @@ -62,7 +62,7 @@ func addChartPathOptionsFlags(f *pflag.FlagSet, c *action.ChartPathOptions) { f.StringVar(&c.KeyFile, "key-file", "", "identify HTTPS client using this SSL key file") f.BoolVar(&c.InsecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart download") f.BoolVar(&c.PlainHTTP, "plain-http", false, "use insecure HTTP connections for the chart download") - f.StringVar(&c.CaFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") + f.StringVar(&c.CAFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") f.BoolVar(&c.PassCredentialsAll, "pass-credentials", false, "pass credentials to all domains") } diff --git a/cmd/helm/install.go b/cmd/helm/install.go index cc57e2908..df2b8cd52 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -140,7 +140,7 @@ func newInstallCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { return compInstall(args, toComplete, client) }, RunE: func(_ *cobra.Command, args []string) error { - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/pull.go b/cmd/helm/pull.go index de4918d72..c12638f3f 100644 --- a/cmd/helm/pull.go +++ b/cmd/helm/pull.go @@ -64,7 +64,7 @@ func newPullCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { client.Version = ">0.0.0-0" } - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/show.go b/cmd/helm/show.go index 1387c8617..153153f4d 100644 --- a/cmd/helm/show.go +++ b/cmd/helm/show.go @@ -226,7 +226,7 @@ func runShow(args []string, client *action.Show) (string, error) { } func addRegistryClient(client *action.Show) error { - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/template.go b/cmd/helm/template.go index ff6621a49..30f6054bc 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -73,7 +73,7 @@ func newTemplateCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { client.KubeVersion = parsedKubeVersion } - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index bbb561046..64bb9808c 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -102,7 +102,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { RunE: func(_ *cobra.Command, args []string) error { client.Namespace = settings.Namespace() - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/pkg/action/dependency.go b/pkg/action/dependency.go index 3265f1f17..b5305168e 100644 --- a/pkg/action/dependency.go +++ b/pkg/action/dependency.go @@ -34,10 +34,17 @@ import ( // // It provides the implementation of 'helm dependency' and its respective subcommands. type Dependency struct { - Verify bool - Keyring string - SkipRefresh bool - ColumnWidth uint + Verify bool + Keyring string + SkipRefresh bool + ColumnWidth uint + Username string + Password string + CertFile string + KeyFile string + CAFile string + InsecureSkipTLSverify bool + PlainHTTP bool } // NewDependency creates a new Dependency object with the given configuration. diff --git a/pkg/action/install.go b/pkg/action/install.go index fb64e0678..a65b45a84 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -115,7 +115,7 @@ type Install struct { // ChartPathOptions captures common options used for controlling chart paths type ChartPathOptions struct { - CaFile string // --ca-file + CAFile string // --ca-file CertFile string // --cert-file KeyFile string // --key-file InsecureSkipTLSverify bool // --insecure-skip-verify @@ -759,7 +759,7 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) ( Getters: getter.All(settings), Options: []getter.Option{ getter.WithPassCredentialsAll(c.PassCredentialsAll), - getter.WithTLSClientConfig(c.CertFile, c.KeyFile, c.CaFile), + getter.WithTLSClientConfig(c.CertFile, c.KeyFile, c.CAFile), getter.WithInsecureSkipVerifyTLS(c.InsecureSkipTLSverify), getter.WithPlainHTTP(c.PlainHTTP), getter.WithBasicAuth(c.Username, c.Password), @@ -778,7 +778,7 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) ( } if c.RepoURL != "" { chartURL, err := repo.FindChartInAuthAndTLSAndPassRepoURL(c.RepoURL, c.Username, c.Password, name, version, - c.CertFile, c.KeyFile, c.CaFile, c.InsecureSkipTLSverify, c.PassCredentialsAll, getter.All(settings)) + c.CertFile, c.KeyFile, c.CAFile, c.InsecureSkipTLSverify, c.PassCredentialsAll, getter.All(settings)) if err != nil { return "", err } diff --git a/pkg/action/pull.go b/pkg/action/pull.go index 787553125..7405bf7c5 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -88,7 +88,7 @@ func (p *Pull) Run(chartRef string) (string, error) { Options: []getter.Option{ getter.WithBasicAuth(p.Username, p.Password), getter.WithPassCredentialsAll(p.PassCredentialsAll), - getter.WithTLSClientConfig(p.CertFile, p.KeyFile, p.CaFile), + getter.WithTLSClientConfig(p.CertFile, p.KeyFile, p.CAFile), getter.WithInsecureSkipVerifyTLS(p.InsecureSkipTLSverify), getter.WithPlainHTTP(p.PlainHTTP), }, @@ -122,7 +122,7 @@ func (p *Pull) Run(chartRef string) (string, error) { } if p.RepoURL != "" { - chartURL, err := repo.FindChartInAuthAndTLSAndPassRepoURL(p.RepoURL, p.Username, p.Password, chartRef, p.Version, p.CertFile, p.KeyFile, p.CaFile, p.InsecureSkipTLSverify, p.PassCredentialsAll, getter.All(p.Settings)) + chartURL, err := repo.FindChartInAuthAndTLSAndPassRepoURL(p.RepoURL, p.Username, p.Password, chartRef, p.Version, p.CertFile, p.KeyFile, p.CAFile, p.InsecureSkipTLSverify, p.PassCredentialsAll, getter.All(p.Settings)) if err != nil { return out.String(), err } From 0ad80e3b58e7c4be56a0378bbd0b0a4cebd799a0 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Wed, 19 Jun 2024 17:26:39 +0100 Subject: [PATCH 006/206] Run go fmt Signed-off-by: Evans Mungai --- cmd/helm/dependency.go | 2 +- cmd/helm/install.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/helm/dependency.go b/cmd/helm/dependency.go index 0fead7083..67d1f5441 100644 --- a/cmd/helm/dependency.go +++ b/cmd/helm/dependency.go @@ -133,4 +133,4 @@ func addDependencySubcommandFlags(f *pflag.FlagSet, client *action.Dependency) { f.BoolVar(&client.InsecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart download") f.BoolVar(&client.PlainHTTP, "plain-http", false, "use insecure HTTP connections for the chart download") f.StringVar(&client.CAFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") -} \ No newline at end of file +} diff --git a/cmd/helm/install.go b/cmd/helm/install.go index df2b8cd52..435966b36 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -85,7 +85,7 @@ set for a key called 'foo', the 'newbar' value would take precedence: $ helm install --set foo=bar --set foo=newbar myredis ./redis -Similarly, in the following example 'foo' is set to '["four"]': +Similarly, in the following example 'foo' is set to '["four"]': $ helm install --set-json='foo=["one", "two", "three"]' --set-json='foo=["four"]' myredis ./redis From 12d8d28534644f1cad8be2c57c7d52e07f7b27c9 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Wed, 19 Jun 2024 18:37:31 +0100 Subject: [PATCH 007/206] Add username/password to package subcommand Signed-off-by: Evans Mungai --- cmd/helm/package.go | 17 +++++++++++++++-- pkg/action/package.go | 11 +++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/cmd/helm/package.go b/cmd/helm/package.go index b96110ee8..444f98246 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -47,7 +47,7 @@ If '--keyring' is not specified, Helm usually defaults to the public keyring unless your environment is otherwise configured. ` -func newPackageCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { +func newPackageCmd(_ *action.Configuration, out io.Writer) *cobra.Command { client := action.NewPackage() valueOpts := &values.Options{} @@ -75,6 +75,12 @@ func newPackageCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { return err } + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) + if err != nil { + return fmt.Errorf("missing registry client: %w", err) + } + for i := 0; i < len(args); i++ { path, err := filepath.Abs(args[i]) if err != nil { @@ -91,7 +97,7 @@ func newPackageCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { Keyring: client.Keyring, Getters: p, Debug: settings.Debug, - RegistryClient: cfg.RegistryClient, + RegistryClient: registryClient, RepositoryConfig: settings.RepositoryConfig, RepositoryCache: settings.RepositoryCache, } @@ -119,6 +125,13 @@ func newPackageCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { f.StringVar(&client.AppVersion, "app-version", "", "set the appVersion on the chart to this version") f.StringVarP(&client.Destination, "destination", "d", ".", "location to write the chart.") f.BoolVarP(&client.DependencyUpdate, "dependency-update", "u", false, `update dependencies from "Chart.yaml" to dir "charts/" before packaging`) + f.StringVar(&client.Username, "username", "", "chart repository username where to locate the requested chart") + f.StringVar(&client.Password, "password", "", "chart repository password where to locate the requested chart") + f.StringVar(&client.CertFile, "cert-file", "", "identify HTTPS client using this SSL certificate file") + f.StringVar(&client.KeyFile, "key-file", "", "identify HTTPS client using this SSL key file") + f.BoolVar(&client.InsecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart download") + f.BoolVar(&client.PlainHTTP, "plain-http", false, "use insecure HTTP connections for the chart download") + f.StringVar(&client.CAFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") return cmd } diff --git a/pkg/action/package.go b/pkg/action/package.go index 013b32f55..a425dc433 100644 --- a/pkg/action/package.go +++ b/pkg/action/package.go @@ -44,8 +44,15 @@ type Package struct { Destination string DependencyUpdate bool - RepositoryConfig string - RepositoryCache string + RepositoryConfig string + RepositoryCache string + PlainHTTP bool + Username string + Password string + CertFile string + KeyFile string + CAFile string + InsecureSkipTLSverify bool } // NewPackage creates a new Package object with the given configuration. From 532362457c161a99f398b52358366632fd395fd4 Mon Sep 17 00:00:00 2001 From: Matteo Bianchi <37507190+mbianchidev@users.noreply.github.com> Date: Sun, 28 Jul 2024 17:44:59 +0200 Subject: [PATCH 008/206] Update ADOPTERS.md Signed-off-by: Matteo Bianchi <37507190+mbianchidev@users.noreply.github.com> --- ADOPTERS.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index b75bf5efb..b74299b0d 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -7,10 +7,13 @@ - [Blood Orange](https://bloodorange.io) - [IBM](https://www.ibm.com) +- [InfoCert](https://www.infocert.it/) - [Microsoft](https://microsoft.com) +- [Omnistrate](https://omnistrate.com) - [Qovery](https://www.qovery.com/) - [Samsung SDS](https://www.samsungsds.com/) - [Softonic](https://hello.softonic.com/) +- [SyncTune](https://mb-consulting.dev) - [Syself](https://syself.com) - [Ville de Montreal](https://montreal.ca) From 0687961da4f708cd69c5cbde0f446b989671f0a5 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Fri, 2 Aug 2024 16:57:09 +0100 Subject: [PATCH 009/206] Revert CAFile rename breaking change Signed-off-by: Evans Mungai --- cmd/helm/flags.go | 2 +- cmd/helm/install.go | 2 +- cmd/helm/pull.go | 2 +- cmd/helm/show.go | 2 +- cmd/helm/template.go | 2 +- cmd/helm/upgrade.go | 2 +- pkg/action/install.go | 6 +++--- pkg/action/pull.go | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/cmd/helm/flags.go b/cmd/helm/flags.go index b3f5ca091..62e9f90fa 100644 --- a/cmd/helm/flags.go +++ b/cmd/helm/flags.go @@ -62,7 +62,7 @@ func addChartPathOptionsFlags(f *pflag.FlagSet, c *action.ChartPathOptions) { f.StringVar(&c.KeyFile, "key-file", "", "identify HTTPS client using this SSL key file") f.BoolVar(&c.InsecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart download") f.BoolVar(&c.PlainHTTP, "plain-http", false, "use insecure HTTP connections for the chart download") - f.StringVar(&c.CAFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") + f.StringVar(&c.CaFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") f.BoolVar(&c.PassCredentialsAll, "pass-credentials", false, "pass credentials to all domains") } diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 435966b36..d056bac8c 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -140,7 +140,7 @@ func newInstallCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { return compInstall(args, toComplete, client) }, RunE: func(_ *cobra.Command, args []string) error { - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/pull.go b/cmd/helm/pull.go index c12638f3f..de4918d72 100644 --- a/cmd/helm/pull.go +++ b/cmd/helm/pull.go @@ -64,7 +64,7 @@ func newPullCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { client.Version = ">0.0.0-0" } - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/show.go b/cmd/helm/show.go index 153153f4d..1387c8617 100644 --- a/cmd/helm/show.go +++ b/cmd/helm/show.go @@ -226,7 +226,7 @@ func runShow(args []string, client *action.Show) (string, error) { } func addRegistryClient(client *action.Show) error { - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/template.go b/cmd/helm/template.go index 30f6054bc..ff6621a49 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -73,7 +73,7 @@ func newTemplateCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { client.KubeVersion = parsedKubeVersion } - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 64bb9808c..bbb561046 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -102,7 +102,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { RunE: func(_ *cobra.Command, args []string) error { client.Namespace = settings.Namespace() - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/pkg/action/install.go b/pkg/action/install.go index a65b45a84..fb64e0678 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -115,7 +115,7 @@ type Install struct { // ChartPathOptions captures common options used for controlling chart paths type ChartPathOptions struct { - CAFile string // --ca-file + CaFile string // --ca-file CertFile string // --cert-file KeyFile string // --key-file InsecureSkipTLSverify bool // --insecure-skip-verify @@ -759,7 +759,7 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) ( Getters: getter.All(settings), Options: []getter.Option{ getter.WithPassCredentialsAll(c.PassCredentialsAll), - getter.WithTLSClientConfig(c.CertFile, c.KeyFile, c.CAFile), + getter.WithTLSClientConfig(c.CertFile, c.KeyFile, c.CaFile), getter.WithInsecureSkipVerifyTLS(c.InsecureSkipTLSverify), getter.WithPlainHTTP(c.PlainHTTP), getter.WithBasicAuth(c.Username, c.Password), @@ -778,7 +778,7 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) ( } if c.RepoURL != "" { chartURL, err := repo.FindChartInAuthAndTLSAndPassRepoURL(c.RepoURL, c.Username, c.Password, name, version, - c.CertFile, c.KeyFile, c.CAFile, c.InsecureSkipTLSverify, c.PassCredentialsAll, getter.All(settings)) + c.CertFile, c.KeyFile, c.CaFile, c.InsecureSkipTLSverify, c.PassCredentialsAll, getter.All(settings)) if err != nil { return "", err } diff --git a/pkg/action/pull.go b/pkg/action/pull.go index 7405bf7c5..787553125 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -88,7 +88,7 @@ func (p *Pull) Run(chartRef string) (string, error) { Options: []getter.Option{ getter.WithBasicAuth(p.Username, p.Password), getter.WithPassCredentialsAll(p.PassCredentialsAll), - getter.WithTLSClientConfig(p.CertFile, p.KeyFile, p.CAFile), + getter.WithTLSClientConfig(p.CertFile, p.KeyFile, p.CaFile), getter.WithInsecureSkipVerifyTLS(p.InsecureSkipTLSverify), getter.WithPlainHTTP(p.PlainHTTP), }, @@ -122,7 +122,7 @@ func (p *Pull) Run(chartRef string) (string, error) { } if p.RepoURL != "" { - chartURL, err := repo.FindChartInAuthAndTLSAndPassRepoURL(p.RepoURL, p.Username, p.Password, chartRef, p.Version, p.CertFile, p.KeyFile, p.CAFile, p.InsecureSkipTLSverify, p.PassCredentialsAll, getter.All(p.Settings)) + chartURL, err := repo.FindChartInAuthAndTLSAndPassRepoURL(p.RepoURL, p.Username, p.Password, chartRef, p.Version, p.CertFile, p.KeyFile, p.CaFile, p.InsecureSkipTLSverify, p.PassCredentialsAll, getter.All(p.Settings)) if err != nil { return out.String(), err } From a1c0318480db42ceba02ccc499cc40c3d3c0f0a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 21:10:27 +0000 Subject: [PATCH 010/206] Bump actions/upload-artifact Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 97a0fba1372883ab732affbe8f94b823f91727db to c24449f33cd45d4826c6702db7e49f7cdb9b551d. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/97a0fba1372883ab732affbe8f94b823f91727db...c24449f33cd45d4826c6702db7e49f7cdb9b551d) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 60be0ecf7..a56e6f06a 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -55,7 +55,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@97a0fba1372883ab732affbe8f94b823f91727db # v3.pre.node20 + uses: actions/upload-artifact@c24449f33cd45d4826c6702db7e49f7cdb9b551d # v3.pre.node20 with: name: SARIF file path: results.sarif From d351b091ca0be7dc8e5b91b1731cb7159ccdde02 Mon Sep 17 00:00:00 2001 From: Niladri Halder Date: Fri, 20 Sep 2024 02:19:53 +0530 Subject: [PATCH 011/206] Add annotations and dependencies to get metadata output The output of helm get metadata includes a subset of the fields contained in the chart.Metadata struct. This change adds the values of the annotations field and the dependencies field to the output. Signed-off-by: Niladri Halder --- cmd/helm/get_metadata.go | 4 ++ cmd/helm/testdata/output/get-metadata.json | 2 +- cmd/helm/testdata/output/get-metadata.txt | 2 + cmd/helm/testdata/output/get-metadata.yaml | 13 +++++ pkg/action/get_metadata.go | 55 +++++++++++++++------- pkg/chart/dependency.go | 16 +++---- pkg/release/mock.go | 18 +++++++ 7 files changed, 84 insertions(+), 26 deletions(-) diff --git a/cmd/helm/get_metadata.go b/cmd/helm/get_metadata.go index dbc7b6eff..e8ad832bd 100644 --- a/cmd/helm/get_metadata.go +++ b/cmd/helm/get_metadata.go @@ -22,6 +22,7 @@ import ( "log" "github.com/spf13/cobra" + k8sLabels "k8s.io/apimachinery/pkg/labels" "helm.sh/helm/v3/cmd/helm/require" "helm.sh/helm/v3/pkg/action" @@ -78,10 +79,13 @@ func (w metadataWriter) WriteTable(out io.Writer) error { _, _ = fmt.Fprintf(out, "CHART: %v\n", w.metadata.Chart) _, _ = fmt.Fprintf(out, "VERSION: %v\n", w.metadata.Version) _, _ = fmt.Fprintf(out, "APP_VERSION: %v\n", w.metadata.AppVersion) + _, _ = fmt.Fprintf(out, "ANNOTATIONS: %v\n", k8sLabels.Set(w.metadata.Annotations).String()) + _, _ = fmt.Fprintf(out, "DEPENDENCIES: %v\n", w.metadata.FormattedDepNames()) _, _ = fmt.Fprintf(out, "NAMESPACE: %v\n", w.metadata.Namespace) _, _ = fmt.Fprintf(out, "REVISION: %v\n", w.metadata.Revision) _, _ = fmt.Fprintf(out, "STATUS: %v\n", w.metadata.Status) _, _ = fmt.Fprintf(out, "DEPLOYED_AT: %v\n", w.metadata.DeployedAt) + return nil } diff --git a/cmd/helm/testdata/output/get-metadata.json b/cmd/helm/testdata/output/get-metadata.json index 1d5152b24..4c015b977 100644 --- a/cmd/helm/testdata/output/get-metadata.json +++ b/cmd/helm/testdata/output/get-metadata.json @@ -1 +1 @@ -{"name":"thomas-guide","chart":"foo","version":"0.1.0-beta.1","appVersion":"1.0","namespace":"default","revision":1,"status":"deployed","deployedAt":"1977-09-02T22:04:05Z"} +{"name":"thomas-guide","chart":"foo","version":"0.1.0-beta.1","appVersion":"1.0","annotations":{"category":"web-apps","supported":"true"},"dependencies":[{"name":"cool-plugin","version":"1.0.0","repository":"https://coolplugin.io/charts","condition":"coolPlugin.enabled","enabled":true},{"name":"crds","version":"2.7.1","repository":"","condition":"crds.enabled"}],"namespace":"default","revision":1,"status":"deployed","deployedAt":"1977-09-02T22:04:05Z"} diff --git a/cmd/helm/testdata/output/get-metadata.txt b/cmd/helm/testdata/output/get-metadata.txt index b91f1b86a..01083b333 100644 --- a/cmd/helm/testdata/output/get-metadata.txt +++ b/cmd/helm/testdata/output/get-metadata.txt @@ -2,6 +2,8 @@ NAME: thomas-guide CHART: foo VERSION: 0.1.0-beta.1 APP_VERSION: 1.0 +ANNOTATIONS: category=web-apps,supported=true +DEPENDENCIES: cool-plugin,crds NAMESPACE: default REVISION: 1 STATUS: deployed diff --git a/cmd/helm/testdata/output/get-metadata.yaml b/cmd/helm/testdata/output/get-metadata.yaml index b6d49b038..6298436c9 100644 --- a/cmd/helm/testdata/output/get-metadata.yaml +++ b/cmd/helm/testdata/output/get-metadata.yaml @@ -1,5 +1,18 @@ +annotations: + category: web-apps + supported: "true" appVersion: "1.0" chart: foo +dependencies: +- condition: coolPlugin.enabled + enabled: true + name: cool-plugin + repository: https://coolplugin.io/charts + version: 1.0.0 +- condition: crds.enabled + name: crds + repository: "" + version: 2.7.1 deployedAt: "1977-09-02T22:04:05Z" name: thomas-guide namespace: default diff --git a/pkg/action/get_metadata.go b/pkg/action/get_metadata.go index ec096ae16..f79788c3b 100644 --- a/pkg/action/get_metadata.go +++ b/pkg/action/get_metadata.go @@ -16,7 +16,13 @@ limitations under the License. package action -import "time" +import ( + "sort" + "strings" + "time" + + "helm.sh/helm/v3/pkg/chart" +) // GetMetadata is the action for checking a given release's metadata. // @@ -28,14 +34,16 @@ type GetMetadata struct { } type Metadata struct { - Name string `json:"name" yaml:"name"` - Chart string `json:"chart" yaml:"chart"` - Version string `json:"version" yaml:"version"` - AppVersion string `json:"appVersion" yaml:"appVersion"` - Namespace string `json:"namespace" yaml:"namespace"` - Revision int `json:"revision" yaml:"revision"` - Status string `json:"status" yaml:"status"` - DeployedAt string `json:"deployedAt" yaml:"deployedAt"` + Name string `json:"name" yaml:"name"` + Chart string `json:"chart" yaml:"chart"` + Version string `json:"version" yaml:"version"` + AppVersion string `json:"appVersion" yaml:"appVersion"` + Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"` + Dependencies []*chart.Dependency `json:"dependencies,omitempty" yaml:"dependencies,omitempty"` + Namespace string `json:"namespace" yaml:"namespace"` + Revision int `json:"revision" yaml:"revision"` + Status string `json:"status" yaml:"status"` + DeployedAt string `json:"deployedAt" yaml:"deployedAt"` } // NewGetMetadata creates a new GetMetadata object with the given configuration. @@ -57,13 +65,26 @@ func (g *GetMetadata) Run(name string) (*Metadata, error) { } return &Metadata{ - Name: rel.Name, - Chart: rel.Chart.Metadata.Name, - Version: rel.Chart.Metadata.Version, - AppVersion: rel.Chart.Metadata.AppVersion, - Namespace: rel.Namespace, - Revision: rel.Version, - Status: rel.Info.Status.String(), - DeployedAt: rel.Info.LastDeployed.Format(time.RFC3339), + Name: rel.Name, + Chart: rel.Chart.Metadata.Name, + Version: rel.Chart.Metadata.Version, + AppVersion: rel.Chart.Metadata.AppVersion, + Dependencies: rel.Chart.Metadata.Dependencies, + Annotations: rel.Chart.Metadata.Annotations, + Namespace: rel.Namespace, + Revision: rel.Version, + Status: rel.Info.Status.String(), + DeployedAt: rel.Info.LastDeployed.Format(time.RFC3339), }, nil } + +// FormattedDepNames formats metadata.dependencies names into a comma-separated list. +func (m *Metadata) FormattedDepNames() string { + depsNames := make([]string, 0, len(m.Dependencies)) + for _, dep := range m.Dependencies { + depsNames = append(depsNames, dep.Name) + } + sort.StringSlice(depsNames).Sort() + + return strings.Join(depsNames, ",") +} diff --git a/pkg/chart/dependency.go b/pkg/chart/dependency.go index 4ef5eeb32..eda0f5a89 100644 --- a/pkg/chart/dependency.go +++ b/pkg/chart/dependency.go @@ -25,28 +25,28 @@ type Dependency struct { // Name is the name of the dependency. // // This must mach the name in the dependency's Chart.yaml. - Name string `json:"name"` + Name string `json:"name" yaml:"name"` // Version is the version (range) of this chart. // // A lock file will always produce a single version, while a dependency // may contain a semantic version range. - Version string `json:"version,omitempty"` + Version string `json:"version,omitempty" yaml:"version,omitempty"` // The URL to the repository. // // Appending `index.yaml` to this string should result in a URL that can be // used to fetch the repository index. - Repository string `json:"repository"` + Repository string `json:"repository" yaml:"repository"` // A yaml path that resolves to a boolean, used for enabling/disabling charts (e.g. subchart1.enabled ) - Condition string `json:"condition,omitempty"` + Condition string `json:"condition,omitempty" yaml:"condition,omitempty"` // Tags can be used to group charts for enabling/disabling together - Tags []string `json:"tags,omitempty"` + Tags []string `json:"tags,omitempty" yaml:"tags,omitempty"` // Enabled bool determines if chart should be loaded - Enabled bool `json:"enabled,omitempty"` + Enabled bool `json:"enabled,omitempty" yaml:"enabled,omitempty"` // ImportValues holds the mapping of source values to parent key to be imported. Each item can be a // string or pair of child/parent sublist items. - ImportValues []interface{} `json:"import-values,omitempty"` + ImportValues []interface{} `json:"import-values,omitempty" yaml:"import-values,omitempty"` // Alias usable alias to be used for the chart - Alias string `json:"alias,omitempty"` + Alias string `json:"alias,omitempty" yaml:"alias,omitempty"` } // Validate checks for common problems with the dependency datastructure in diff --git a/pkg/release/mock.go b/pkg/release/mock.go index a28e1dc16..eb0b5157d 100644 --- a/pkg/release/mock.go +++ b/pkg/release/mock.go @@ -74,6 +74,24 @@ func Mock(opts *MockReleaseOptions) *Release { Name: "foo", Version: "0.1.0-beta.1", AppVersion: "1.0", + Annotations: map[string]string{ + "category": "web-apps", + "supported": "true", + }, + Dependencies: []*chart.Dependency{ + { + Name: "cool-plugin", + Version: "1.0.0", + Repository: "https://coolplugin.io/charts", + Condition: "coolPlugin.enabled", + Enabled: true, + }, + { + Name: "crds", + Version: "2.7.1", + Condition: "crds.enabled", + }, + }, }, Templates: []*chart.File{ {Name: "templates/foo.tpl", Data: []byte(MockManifest)}, From 81c6a9085ce2faaf2fd95694e3266d2c4377f755 Mon Sep 17 00:00:00 2001 From: dnskr Date: Mon, 5 Aug 2024 23:45:50 +0200 Subject: [PATCH 012/206] ref(create): don't render empty resource fields Signed-off-by: Denis Krivenko Signed-off-by: dnskr --- pkg/chartutil/create.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pkg/chartutil/create.go b/pkg/chartutil/create.go index 22c73a5e1..b69f18ef5 100644 --- a/pkg/chartutil/create.go +++ b/pkg/chartutil/create.go @@ -327,24 +327,34 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} serviceAccountName: {{ include ".serviceAccountName" . }} + {{- with .Values.podSecurityContext }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml . | nindent 8 }} + {{- end }} containers: - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http containerPort: {{ .Values.service.port }} protocol: TCP + {{- with .Values.livenessProbe }} livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.readinessProbe }} readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.resources }} resources: - {{- toYaml .Values.resources | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} {{- with .Values.volumeMounts }} volumeMounts: {{- toYaml . | nindent 12 }} From d25b0d9056fe1d7ff60280aa1c19f1771d687b9d Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Tue, 22 Oct 2024 17:56:58 +0100 Subject: [PATCH 013/206] Remove unnecessary function arguments Signed-off-by: Evans Mungai --- cmd/helm/dependency.go | 2 +- cmd/helm/dependency_build.go | 2 +- cmd/helm/package.go | 2 +- cmd/helm/root.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/helm/dependency.go b/cmd/helm/dependency.go index 67d1f5441..d3bb094e2 100644 --- a/cmd/helm/dependency.go +++ b/cmd/helm/dependency.go @@ -94,7 +94,7 @@ func newDependencyCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { cmd.AddCommand(newDependencyListCmd(out)) cmd.AddCommand(newDependencyUpdateCmd(cfg, out)) - cmd.AddCommand(newDependencyBuildCmd(cfg, out)) + cmd.AddCommand(newDependencyBuildCmd(out)) return cmd } diff --git a/cmd/helm/dependency_build.go b/cmd/helm/dependency_build.go index 8ef8fb04b..8998711ad 100644 --- a/cmd/helm/dependency_build.go +++ b/cmd/helm/dependency_build.go @@ -41,7 +41,7 @@ If no lock file is found, 'helm dependency build' will mirror the behavior of 'helm dependency update'. ` -func newDependencyBuildCmd(_ *action.Configuration, out io.Writer) *cobra.Command { +func newDependencyBuildCmd(out io.Writer) *cobra.Command { client := action.NewDependency() cmd := &cobra.Command{ diff --git a/cmd/helm/package.go b/cmd/helm/package.go index 444f98246..f601ce3b9 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -47,7 +47,7 @@ If '--keyring' is not specified, Helm usually defaults to the public keyring unless your environment is otherwise configured. ` -func newPackageCmd(_ *action.Configuration, out io.Writer) *cobra.Command { +func newPackageCmd(out io.Writer) *cobra.Command { client := action.NewPackage() valueOpts := &values.Options{} diff --git a/cmd/helm/root.go b/cmd/helm/root.go index 3095448bc..2ba8a882e 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -169,7 +169,7 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string newPullCmd(actionConfig, out), newShowCmd(actionConfig, out), newLintCmd(out), - newPackageCmd(actionConfig, out), + newPackageCmd(out), newRepoCmd(out), newSearchCmd(out), newVerifyCmd(out), From 3c4d0bb06138713bd009b3daf34f34a18a0850d7 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Tue, 22 Oct 2024 18:38:58 +0100 Subject: [PATCH 014/206] Fix failing tests Signed-off-by: Evans Mungai --- pkg/registry/utils_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/registry/utils_test.go b/pkg/registry/utils_test.go index d7aba2bb7..12640418e 100644 --- a/pkg/registry/utils_test.go +++ b/pkg/registry/utils_test.go @@ -89,6 +89,7 @@ func setup(suite *TestSuite, tlsEnabled, insecure bool) *registry.Registry { ClientOptWriter(suite.Out), ClientOptCredentialsFile(credentialsFile), ClientOptResolver(nil), + ClientOptBasicAuth(testUsername, testPassword), } if tlsEnabled { @@ -128,11 +129,12 @@ func setup(suite *TestSuite, tlsEnabled, insecure bool) *registry.Registry { // This is required because Docker enforces HTTP if the registry // host is localhost/127.0.0.1. suite.DockerRegistryHost = fmt.Sprintf("helm-test-registry:%d", port) - suite.srv, _ = mockdns.NewServer(map[string]mockdns.Zone{ + suite.srv, err = mockdns.NewServer(map[string]mockdns.Zone{ "helm-test-registry.": { A: []string{"127.0.0.1"}, }, }, false) + suite.Nil(err, "no error creating mock DNS server") suite.srv.PatchNet(net.DefaultResolver) config.HTTP.Addr = fmt.Sprintf(":%d", port) From bdaa93b969f246119c4fd14267d286b041fb8f7f Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Tue, 22 Oct 2024 18:50:23 +0100 Subject: [PATCH 015/206] Ensure test fails without causing panic Signed-off-by: Evans Mungai --- pkg/registry/utils_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/registry/utils_test.go b/pkg/registry/utils_test.go index 12640418e..ee78ea76f 100644 --- a/pkg/registry/utils_test.go +++ b/pkg/registry/utils_test.go @@ -351,7 +351,7 @@ func testPull(suite *TestSuite) { // full pull with chart and prov result, err := suite.RegistryClient.Pull(ref, PullOptWithProv(true)) - suite.Nil(err, "no error pulling a chart with prov") + suite.Require().Nil(err, "no error pulling a chart with prov") // Validate the output // Note: these digests/sizes etc may change if the test chart/prov files are modified, From ad9fb68fa3911979ccaba1e230a8043971b84042 Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Fri, 20 Sep 2024 09:47:39 -0600 Subject: [PATCH 016/206] feat: allow installation by OCI digest Signed-off-by: Terry Howe --- cmd/helm/pull_test.go | 19 ++++-- pkg/downloader/chart_downloader.go | 36 +++++++++- pkg/downloader/chart_downloader_test.go | 6 ++ pkg/getter/ocigetter.go | 4 ++ pkg/registry/client.go | 40 +++++++++--- pkg/registry/reference.go | 71 ++++++++++++++++++++ pkg/registry/reference_test.go | 87 +++++++++++++++++++++++++ pkg/registry/util.go | 26 -------- 8 files changed, 244 insertions(+), 45 deletions(-) create mode 100644 pkg/registry/reference.go create mode 100644 pkg/registry/reference_test.go diff --git a/cmd/helm/pull_test.go b/cmd/helm/pull_test.go index ae70595f9..fe6a5a68e 100644 --- a/cmd/helm/pull_test.go +++ b/cmd/helm/pull_test.go @@ -183,15 +183,20 @@ func TestPullCmd(t *testing.T) { wantError: true, }, { - name: "Fail fetching OCI chart without version specified", - args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.1.0", ociSrv.RegistryURL), - wantErrorMsg: "Error: --version flag is explicitly required for OCI registries", - wantError: true, + name: "Fetching OCI chart without version option specified", + args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.1.0", ociSrv.RegistryURL), + expectFile: "./oci-dependent-chart-0.1.0.tgz", }, { - name: "Fail fetching OCI chart without version specified", - args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.1.0 --version 0.1.0", ociSrv.RegistryURL), - wantError: true, + name: "Fetching OCI chart with version specified", + args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.1.0 --version 0.1.0", ociSrv.RegistryURL), + expectFile: "./oci-dependent-chart-0.1.0.tgz", + }, + { + name: "Fail fetching OCI chart with version mismatch", + args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.2.0 --version 0.1.0", ociSrv.RegistryURL), + wantErrorMsg: "Error: chart reference and version mismatch: 0.2.0 is not 0.1.0", + wantError: true, }, } diff --git a/pkg/downloader/chart_downloader.go b/pkg/downloader/chart_downloader.go index a95894e00..2d2e22f68 100644 --- a/pkg/downloader/chart_downloader.go +++ b/pkg/downloader/chart_downloader.go @@ -143,7 +143,39 @@ func (c *ChartDownloader) DownloadTo(ref, version, dest string) (string, *proven func (c *ChartDownloader) getOciURI(ref, version string, u *url.URL) (*url.URL, error) { var tag string - var err error + + registryReference, err := registry.NewReference(u.Path) + if err != nil { + return nil, err + } + + if version == "" { + // Use OCI URI tag as default + version = registryReference.Tag + } else { + if registryReference.Tag != "" && registryReference.Tag != version { + return nil, errors.Errorf("chart reference and version mismatch: %s is not %s", version, registryReference.Tag) + } + } + + if registryReference.Digest != "" { + if registryReference.Tag == "" { + // Install by digest only + return u, nil + } + + // Validate the tag if it was specified + path := registryReference.Registry + "/" + registryReference.Repository + ":" + registryReference.Tag + desc, err := c.RegistryClient.Resolve(path) + if err != nil { + // The resource does not have to be tagged when digest is specified + return u, nil + } + if desc != nil && desc.Digest.String() != registryReference.Digest { + return nil, errors.Errorf("chart reference digest mismatch: %s is not %s", desc.Digest.String(), registryReference.Digest) + } + return u, nil + } // Evaluate whether an explicit version has been provided. Otherwise, determine version to use _, errSemVer := semver.NewVersion(version) @@ -169,7 +201,7 @@ func (c *ChartDownloader) getOciURI(ref, version string, u *url.URL) (*url.URL, } } - u.Path = fmt.Sprintf("%s:%s", u.Path, tag) + u.Path = fmt.Sprintf("%s/%s:%s", registryReference.Registry, registryReference.Repository, tag) return u, err } diff --git a/pkg/downloader/chart_downloader_test.go b/pkg/downloader/chart_downloader_test.go index 131e21306..1a741bc1b 100644 --- a/pkg/downloader/chart_downloader_test.go +++ b/pkg/downloader/chart_downloader_test.go @@ -53,6 +53,12 @@ func TestResolveChartRef(t *testing.T) { {name: "full URL, file", ref: "file:///foo-1.2.3.tgz", fail: true}, {name: "invalid", ref: "invalid-1.2.3", fail: true}, {name: "not found", ref: "nosuchthing/invalid-1.2.3", fail: true}, + {name: "ref with tag", ref: "oci://example.com/helm-charts/nginx:15.4.2", expect: "oci://example.com/helm-charts/nginx:15.4.2"}, + {name: "no repository", ref: "oci://", fail: true}, + {name: "oci ref", ref: "oci://example.com/helm-charts/nginx", version: "15.4.2", expect: "oci://example.com/helm-charts/nginx:15.4.2"}, + {name: "oci ref with sha256", ref: "oci://example.com/install/by/sha@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.1", expect: "oci://example.com/install/by/sha@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6"}, + {name: "oci ref with sha256 and version", ref: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.1", expect: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6"}, + {name: "oci ref with sha256 and version mismatch", ref: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.2", fail: true}, } c := ChartDownloader{ diff --git a/pkg/getter/ocigetter.go b/pkg/getter/ocigetter.go index 0547cdcbb..5b0522395 100644 --- a/pkg/getter/ocigetter.go +++ b/pkg/getter/ocigetter.go @@ -20,6 +20,7 @@ import ( "fmt" "net" "net/http" + "path" "strings" "sync" "time" @@ -58,6 +59,9 @@ func (g *OCIGetter) get(href string) (*bytes.Buffer, error) { ref := strings.TrimPrefix(href, fmt.Sprintf("%s://", registry.OCIScheme)) + if version := g.opts.version; version != "" && !strings.Contains(path.Base(ref), ":") { + ref = fmt.Sprintf("%s:%s", ref, version) + } var pullOpts []registry.PullOption requestingProv := strings.HasSuffix(ref, ".prov") if requestingProv { diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 42f736816..32d2773a3 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -319,7 +319,7 @@ type ( // Pull downloads a chart from a registry func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { - parsedRef, err := parseReference(ref) + parsedRef, err := NewReference(ref) if err != nil { return nil, err } @@ -351,13 +351,13 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { } var descriptors, layers []ocispec.Descriptor - remotesResolver, err := c.resolver(parsedRef) + remotesResolver, err := c.resolver(parsedRef.OrasReference) if err != nil { return nil, err } registryStore := content.Registry{Resolver: remotesResolver} - manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.String(), memoryStore, "", + manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.OrasReference.String(), memoryStore, "", oras.WithPullEmptyNameAllowed(), oras.WithAllowedMediaTypes(allowedMediaTypes), oras.WithLayerDescriptors(func(l []ocispec.Descriptor) { @@ -419,7 +419,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { }, Chart: &DescriptorPullSummaryWithMeta{}, Prov: &DescriptorPullSummary{}, - Ref: parsedRef.String(), + Ref: parsedRef.OrasReference.String(), } var getManifestErr error if _, manifestData, ok := memoryStore.Get(manifest); !ok { @@ -535,7 +535,7 @@ type ( // Push uploads a chart to a registry. func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResult, error) { - parsedRef, err := parseReference(ref) + parsedRef, err := NewReference(ref) if err != nil { return nil, err } @@ -590,16 +590,16 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu return nil, err } - if err := memoryStore.StoreManifest(parsedRef.String(), manifest, manifestData); err != nil { + if err := memoryStore.StoreManifest(parsedRef.OrasReference.String(), manifest, manifestData); err != nil { return nil, err } - remotesResolver, err := c.resolver(parsedRef) + remotesResolver, err := c.resolver(parsedRef.OrasReference) if err != nil { return nil, err } registryStore := content.Registry{Resolver: remotesResolver} - _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.String(), registryStore, "", + _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.OrasReference.String(), registryStore, "", oras.WithNameValidation(nil)) if err != nil { return nil, err @@ -620,7 +620,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu }, Chart: chartSummary, Prov: &descriptorPushSummary{}, // prevent nil references - Ref: parsedRef.String(), + Ref: parsedRef.OrasReference.String(), } if operation.provData != nil { result.Prov = &descriptorPushSummary{ @@ -630,7 +630,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu } fmt.Fprintf(c.out, "Pushed: %s\n", result.Ref) fmt.Fprintf(c.out, "Digest: %s\n", result.Manifest.Digest) - if strings.Contains(parsedRef.Reference, "_") { + if strings.Contains(parsedRef.OrasReference.Reference, "_") { fmt.Fprintf(c.out, "%s contains an underscore.\n", result.Ref) fmt.Fprint(c.out, registryUnderscoreMessage+"\n") } @@ -701,3 +701,23 @@ func (c *Client) Tags(ref string) ([]string, error) { return tags, nil } + +// Resolve a reference to a descriptor. +func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { + ctx := context.Background() + parsedRef, err := NewReference(ref) + if err != nil { + return nil, err + } + if parsedRef.Registry == "" { + return nil, nil + } + + remotesResolver, err := c.resolver(parsedRef.OrasReference) + if err != nil { + return nil, err + } + + _, desc, err := remotesResolver.Resolve(ctx, ref) + return &desc, err +} diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go new file mode 100644 index 000000000..09b99588b --- /dev/null +++ b/pkg/registry/reference.go @@ -0,0 +1,71 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package registry + +import ( + "strings" + + orasregistry "oras.land/oras-go/pkg/registry" +) + +type Reference struct { + OrasReference orasregistry.Reference + Registry string + Repository string + Tag string + Digest string +} + +// NewReference will parse and validate the reference, and clean tags when +// applicable tags are only cleaned when plus (+) signs are present, and are +// converted to underscores (_) before pushing +// See https://github.com/helm/helm/issues/10166 +func NewReference(raw string) (result Reference, err error) { + // Remove oci:// prefix if it is there + raw = strings.TrimPrefix(raw, OCIScheme+"://") + + // The sole possible reference modification is replacing plus (+) signs + // present in tags with underscores (_). To do this properly, we first + // need to identify a tag, and then pass it on to the reference parser + // NOTE: Passing immediately to the reference parser will fail since (+) + // signs are an invalid tag character, and simply replacing all plus (+) + // occurrences could invalidate other portions of the URI + lastIndex := strings.LastIndex(raw, "@") + if lastIndex >= 0 { + result.Digest = raw[(lastIndex + 1):] + raw = raw[:lastIndex] + } + parts := strings.Split(raw, ":") + if len(parts) > 1 && !strings.Contains(parts[len(parts)-1], "/") { + tag := parts[len(parts)-1] + + if tag != "" { + // Replace any plus (+) signs with known underscore (_) conversion + newTag := strings.ReplaceAll(tag, "+", "_") + raw = strings.ReplaceAll(raw, tag, newTag) + } + } + + result.OrasReference, err = orasregistry.ParseReference(raw) + if err != nil { + return result, err + } + result.Registry = result.OrasReference.Registry + result.Repository = result.OrasReference.Repository + result.Tag = result.OrasReference.Reference + return result, nil +} diff --git a/pkg/registry/reference_test.go b/pkg/registry/reference_test.go new file mode 100644 index 000000000..986c10edd --- /dev/null +++ b/pkg/registry/reference_test.go @@ -0,0 +1,87 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package registry + +import "testing" + +func verify(t *testing.T, actual Reference, registry, repository, tag, digest string) { + if registry != actual.OrasReference.Registry { + t.Errorf("Oras Reference registry expected %v actual %v", registry, actual.Registry) + } + if repository != actual.OrasReference.Repository { + t.Errorf("Oras Reference repository expected %v actual %v", repository, actual.Repository) + } + if tag != actual.OrasReference.Reference { + t.Errorf("Oras Reference reference expected %v actual %v", tag, actual.Tag) + } + if registry != actual.Registry { + t.Errorf("Registry expected %v actual %v", registry, actual.Registry) + } + if repository != actual.Repository { + t.Errorf("Repository expected %v actual %v", repository, actual.Repository) + } + if tag != actual.Tag { + t.Errorf("Tag expected %v actual %v", tag, actual.Tag) + } + if digest != actual.Digest { + t.Errorf("Digest expected %v actual %v", digest, actual.Digest) + } +} + +func TestNewReference(t *testing.T) { + actual, err := NewReference("registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "registry.example.com", "repository", "1.0", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + + actual, err = NewReference("oci://registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "registry.example.com", "repository", "1.0", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + + actual, err = NewReference("a/b:1@c") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "a", "b", "1", "c") + + actual, err = NewReference("a/b:@") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "a", "b", "", "") + + actual, err = NewReference("registry.example.com/repository:1.0+001") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "registry.example.com", "repository", "1.0_001", "") + + actual, err = NewReference("thing:1.0") + if err == nil { + t.Errorf("Expect error error %v", err) + } + verify(t, actual, "", "", "", "") + + actual, err = NewReference("registry.example.com/the/repository@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "registry.example.com", "the/repository", "", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") +} diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 727cdae03..44519de41 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -32,7 +32,6 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" orascontext "oras.land/oras-go/pkg/context" - "oras.land/oras-go/pkg/registry" "helm.sh/helm/v3/internal/tlsutil" "helm.sh/helm/v3/pkg/chart" @@ -115,31 +114,6 @@ func ctx(out io.Writer, debug bool) context.Context { return ctx } -// parseReference will parse and validate the reference, and clean tags when -// applicable tags are only cleaned when plus (+) signs are present, and are -// converted to underscores (_) before pushing -// See https://github.com/helm/helm/issues/10166 -func parseReference(raw string) (registry.Reference, error) { - // The sole possible reference modification is replacing plus (+) signs - // present in tags with underscores (_). To do this properly, we first - // need to identify a tag, and then pass it on to the reference parser - // NOTE: Passing immediately to the reference parser will fail since (+) - // signs are an invalid tag character, and simply replacing all plus (+) - // occurrences could invalidate other portions of the URI - parts := strings.Split(raw, ":") - if len(parts) > 1 && !strings.Contains(parts[len(parts)-1], "/") { - tag := parts[len(parts)-1] - - if tag != "" { - // Replace any plus (+) signs with known underscore (_) conversion - newTag := strings.ReplaceAll(tag, "+", "_") - raw = strings.ReplaceAll(raw, tag, newTag) - } - } - - return registry.ParseReference(raw) -} - // NewRegistryClientWithTLS is a helper function to create a new registry client with TLS enabled. func NewRegistryClientWithTLS(out io.Writer, certFile, keyFile, caFile string, insecureSkipTLSverify bool, registryConfig string, debug bool) (*Client, error) { tlsConf, err := tlsutil.NewClientTLS(certFile, keyFile, caFile, insecureSkipTLSverify) From aca7e8d775a3674b41d989ac5be263236273be7b Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Fri, 20 Sep 2024 11:55:34 -0600 Subject: [PATCH 017/206] fix: issue with helm template and oci chart Signed-off-by: Terry Howe --- pkg/registry/client.go | 8 ++++---- pkg/registry/reference.go | 7 +++++++ pkg/registry/reference_test.go | 12 ++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 32d2773a3..4291fe568 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -357,7 +357,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { } registryStore := content.Registry{Resolver: remotesResolver} - manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.OrasReference.String(), memoryStore, "", + manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.String(), memoryStore, "", oras.WithPullEmptyNameAllowed(), oras.WithAllowedMediaTypes(allowedMediaTypes), oras.WithLayerDescriptors(func(l []ocispec.Descriptor) { @@ -419,7 +419,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { }, Chart: &DescriptorPullSummaryWithMeta{}, Prov: &DescriptorPullSummary{}, - Ref: parsedRef.OrasReference.String(), + Ref: parsedRef.String(), } var getManifestErr error if _, manifestData, ok := memoryStore.Get(manifest); !ok { @@ -590,7 +590,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu return nil, err } - if err := memoryStore.StoreManifest(parsedRef.OrasReference.String(), manifest, manifestData); err != nil { + if err := memoryStore.StoreManifest(parsedRef.String(), manifest, manifestData); err != nil { return nil, err } @@ -620,7 +620,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu }, Chart: chartSummary, Prov: &descriptorPushSummary{}, // prevent nil references - Ref: parsedRef.OrasReference.String(), + Ref: parsedRef.String(), } if operation.provData != nil { result.Prov = &descriptorPushSummary{ diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go index 09b99588b..2ba0266a9 100644 --- a/pkg/registry/reference.go +++ b/pkg/registry/reference.go @@ -69,3 +69,10 @@ func NewReference(raw string) (result Reference, err error) { result.Tag = result.OrasReference.Reference return result, nil } + +func (r *Reference) String() string { + if r.Tag == "" { + return r.OrasReference.String() + "@" + r.Digest + } + return r.OrasReference.String() +} diff --git a/pkg/registry/reference_test.go b/pkg/registry/reference_test.go index 986c10edd..d62a62eb4 100644 --- a/pkg/registry/reference_test.go +++ b/pkg/registry/reference_test.go @@ -40,6 +40,18 @@ func verify(t *testing.T, actual Reference, registry, repository, tag, digest st if digest != actual.Digest { t.Errorf("Digest expected %v actual %v", digest, actual.Digest) } + expectedString := registry + if repository != "" { + expectedString = expectedString + "/" + repository + } + if tag != "" { + expectedString = expectedString + ":" + tag + } else { + expectedString = expectedString + "@" + digest + } + if actual.String() != expectedString { + t.Errorf("String expected %s actual %s", expectedString, actual.String()) + } } func TestNewReference(t *testing.T) { From d2b94f62004e79864ec530989109cf0effd4aaae Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Thu, 24 Oct 2024 07:38:41 -0600 Subject: [PATCH 018/206] fix: make ORAS reference private Signed-off-by: Terry Howe --- pkg/downloader/chart_downloader.go | 68 +----------------------- pkg/registry/client.go | 83 +++++++++++++++++++++++++++--- pkg/registry/reference.go | 22 ++++---- pkg/registry/reference_test.go | 28 +++++----- 4 files changed, 101 insertions(+), 100 deletions(-) diff --git a/pkg/downloader/chart_downloader.go b/pkg/downloader/chart_downloader.go index 2d2e22f68..4dc8328c0 100644 --- a/pkg/downloader/chart_downloader.go +++ b/pkg/downloader/chart_downloader.go @@ -23,7 +23,6 @@ import ( "path/filepath" "strings" - "github.com/Masterminds/semver/v3" "github.com/pkg/errors" "helm.sh/helm/v3/internal/fileutil" @@ -141,71 +140,6 @@ func (c *ChartDownloader) DownloadTo(ref, version, dest string) (string, *proven return destfile, ver, nil } -func (c *ChartDownloader) getOciURI(ref, version string, u *url.URL) (*url.URL, error) { - var tag string - - registryReference, err := registry.NewReference(u.Path) - if err != nil { - return nil, err - } - - if version == "" { - // Use OCI URI tag as default - version = registryReference.Tag - } else { - if registryReference.Tag != "" && registryReference.Tag != version { - return nil, errors.Errorf("chart reference and version mismatch: %s is not %s", version, registryReference.Tag) - } - } - - if registryReference.Digest != "" { - if registryReference.Tag == "" { - // Install by digest only - return u, nil - } - - // Validate the tag if it was specified - path := registryReference.Registry + "/" + registryReference.Repository + ":" + registryReference.Tag - desc, err := c.RegistryClient.Resolve(path) - if err != nil { - // The resource does not have to be tagged when digest is specified - return u, nil - } - if desc != nil && desc.Digest.String() != registryReference.Digest { - return nil, errors.Errorf("chart reference digest mismatch: %s is not %s", desc.Digest.String(), registryReference.Digest) - } - return u, nil - } - - // Evaluate whether an explicit version has been provided. Otherwise, determine version to use - _, errSemVer := semver.NewVersion(version) - if errSemVer == nil { - tag = version - } else { - // Retrieve list of repository tags - tags, err := c.RegistryClient.Tags(strings.TrimPrefix(ref, fmt.Sprintf("%s://", registry.OCIScheme))) - if err != nil { - return nil, err - } - if len(tags) == 0 { - return nil, errors.Errorf("Unable to locate any tags in provided repository: %s", ref) - } - - // Determine if version provided - // If empty, try to get the highest available tag - // If exact version, try to find it - // If semver constraint string, try to find a match - tag, err = registry.GetTagMatchingVersionOrConstraint(tags, version) - if err != nil { - return nil, err - } - } - - u.Path = fmt.Sprintf("%s/%s:%s", registryReference.Registry, registryReference.Repository, tag) - - return u, err -} - // ResolveChartVersion resolves a chart reference to a URL. // // It returns the URL and sets the ChartDownloader's Options that can fetch @@ -228,7 +162,7 @@ func (c *ChartDownloader) ResolveChartVersion(ref, version string) (*url.URL, er } if registry.IsOCI(u.String()) { - return c.getOciURI(ref, version, u) + return c.RegistryClient.ValidateReference(ref, version, u) } rf, err := loadRepoConfig(c.RepositoryConfig) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 4291fe568..744f528ef 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -22,6 +22,7 @@ import ( "fmt" "io" "net/http" + "net/url" "sort" "strings" @@ -319,7 +320,7 @@ type ( // Pull downloads a chart from a registry func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { - parsedRef, err := NewReference(ref) + parsedRef, err := newReference(ref) if err != nil { return nil, err } @@ -351,7 +352,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { } var descriptors, layers []ocispec.Descriptor - remotesResolver, err := c.resolver(parsedRef.OrasReference) + remotesResolver, err := c.resolver(parsedRef.orasReference) if err != nil { return nil, err } @@ -535,7 +536,7 @@ type ( // Push uploads a chart to a registry. func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResult, error) { - parsedRef, err := NewReference(ref) + parsedRef, err := newReference(ref) if err != nil { return nil, err } @@ -594,12 +595,12 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu return nil, err } - remotesResolver, err := c.resolver(parsedRef.OrasReference) + remotesResolver, err := c.resolver(parsedRef.orasReference) if err != nil { return nil, err } registryStore := content.Registry{Resolver: remotesResolver} - _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.OrasReference.String(), registryStore, "", + _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.orasReference.String(), registryStore, "", oras.WithNameValidation(nil)) if err != nil { return nil, err @@ -630,7 +631,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu } fmt.Fprintf(c.out, "Pushed: %s\n", result.Ref) fmt.Fprintf(c.out, "Digest: %s\n", result.Manifest.Digest) - if strings.Contains(parsedRef.OrasReference.Reference, "_") { + if strings.Contains(parsedRef.orasReference.Reference, "_") { fmt.Fprintf(c.out, "%s contains an underscore.\n", result.Ref) fmt.Fprint(c.out, registryUnderscoreMessage+"\n") } @@ -705,7 +706,7 @@ func (c *Client) Tags(ref string) ([]string, error) { // Resolve a reference to a descriptor. func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { ctx := context.Background() - parsedRef, err := NewReference(ref) + parsedRef, err := newReference(ref) if err != nil { return nil, err } @@ -713,7 +714,7 @@ func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { return nil, nil } - remotesResolver, err := c.resolver(parsedRef.OrasReference) + remotesResolver, err := c.resolver(parsedRef.orasReference) if err != nil { return nil, err } @@ -721,3 +722,69 @@ func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { _, desc, err := remotesResolver.Resolve(ctx, ref) return &desc, err } + +// ValidateReference for path and version +func (c *Client) ValidateReference(ref, version string, u *url.URL) (*url.URL, error) { + var tag string + + registryReference, err := newReference(u.Path) + if err != nil { + return nil, err + } + + if version == "" { + // Use OCI URI tag as default + version = registryReference.Tag + } else { + if registryReference.Tag != "" && registryReference.Tag != version { + return nil, errors.Errorf("chart reference and version mismatch: %s is not %s", version, registryReference.Tag) + } + } + + if registryReference.Digest != "" { + if registryReference.Tag == "" { + // Install by digest only + return u, nil + } + + // Validate the tag if it was specified + path := registryReference.Registry + "/" + registryReference.Repository + ":" + registryReference.Tag + desc, err := c.Resolve(path) + if err != nil { + // The resource does not have to be tagged when digest is specified + return u, nil + } + if desc != nil && desc.Digest.String() != registryReference.Digest { + return nil, errors.Errorf("chart reference digest mismatch: %s is not %s", desc.Digest.String(), registryReference.Digest) + } + return u, nil + } + + // Evaluate whether an explicit version has been provided. Otherwise, determine version to use + _, errSemVer := semver.NewVersion(version) + if errSemVer == nil { + tag = version + } else { + // Retrieve list of repository tags + tags, err := c.Tags(strings.TrimPrefix(ref, fmt.Sprintf("%s://", OCIScheme))) + if err != nil { + return nil, err + } + if len(tags) == 0 { + return nil, errors.Errorf("Unable to locate any tags in provided repository: %s", ref) + } + + // Determine if version provided + // If empty, try to get the highest available tag + // If exact version, try to find it + // If semver constraint string, try to find a match + tag, err = GetTagMatchingVersionOrConstraint(tags, version) + if err != nil { + return nil, err + } + } + + u.Path = fmt.Sprintf("%s/%s:%s", registryReference.Registry, registryReference.Repository, tag) + + return u, err +} diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go index 2ba0266a9..9b99d73bf 100644 --- a/pkg/registry/reference.go +++ b/pkg/registry/reference.go @@ -22,19 +22,19 @@ import ( orasregistry "oras.land/oras-go/pkg/registry" ) -type Reference struct { - OrasReference orasregistry.Reference +type reference struct { + orasReference orasregistry.Reference Registry string Repository string Tag string Digest string } -// NewReference will parse and validate the reference, and clean tags when +// newReference will parse and validate the reference, and clean tags when // applicable tags are only cleaned when plus (+) signs are present, and are // converted to underscores (_) before pushing // See https://github.com/helm/helm/issues/10166 -func NewReference(raw string) (result Reference, err error) { +func newReference(raw string) (result reference, err error) { // Remove oci:// prefix if it is there raw = strings.TrimPrefix(raw, OCIScheme+"://") @@ -60,19 +60,19 @@ func NewReference(raw string) (result Reference, err error) { } } - result.OrasReference, err = orasregistry.ParseReference(raw) + result.orasReference, err = orasregistry.ParseReference(raw) if err != nil { return result, err } - result.Registry = result.OrasReference.Registry - result.Repository = result.OrasReference.Repository - result.Tag = result.OrasReference.Reference + result.Registry = result.orasReference.Registry + result.Repository = result.orasReference.Repository + result.Tag = result.orasReference.Reference return result, nil } -func (r *Reference) String() string { +func (r *reference) String() string { if r.Tag == "" { - return r.OrasReference.String() + "@" + r.Digest + return r.orasReference.String() + "@" + r.Digest } - return r.OrasReference.String() + return r.orasReference.String() } diff --git a/pkg/registry/reference_test.go b/pkg/registry/reference_test.go index d62a62eb4..31317d18f 100644 --- a/pkg/registry/reference_test.go +++ b/pkg/registry/reference_test.go @@ -18,15 +18,15 @@ package registry import "testing" -func verify(t *testing.T, actual Reference, registry, repository, tag, digest string) { - if registry != actual.OrasReference.Registry { - t.Errorf("Oras Reference registry expected %v actual %v", registry, actual.Registry) +func verify(t *testing.T, actual reference, registry, repository, tag, digest string) { + if registry != actual.orasReference.Registry { + t.Errorf("Oras reference registry expected %v actual %v", registry, actual.Registry) } - if repository != actual.OrasReference.Repository { - t.Errorf("Oras Reference repository expected %v actual %v", repository, actual.Repository) + if repository != actual.orasReference.Repository { + t.Errorf("Oras reference repository expected %v actual %v", repository, actual.Repository) } - if tag != actual.OrasReference.Reference { - t.Errorf("Oras Reference reference expected %v actual %v", tag, actual.Tag) + if tag != actual.orasReference.Reference { + t.Errorf("Oras reference reference expected %v actual %v", tag, actual.Tag) } if registry != actual.Registry { t.Errorf("Registry expected %v actual %v", registry, actual.Registry) @@ -55,43 +55,43 @@ func verify(t *testing.T, actual Reference, registry, repository, tag, digest st } func TestNewReference(t *testing.T) { - actual, err := NewReference("registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + actual, err := newReference("registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "registry.example.com", "repository", "1.0", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") - actual, err = NewReference("oci://registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + actual, err = newReference("oci://registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "registry.example.com", "repository", "1.0", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") - actual, err = NewReference("a/b:1@c") + actual, err = newReference("a/b:1@c") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "a", "b", "1", "c") - actual, err = NewReference("a/b:@") + actual, err = newReference("a/b:@") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "a", "b", "", "") - actual, err = NewReference("registry.example.com/repository:1.0+001") + actual, err = newReference("registry.example.com/repository:1.0+001") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "registry.example.com", "repository", "1.0_001", "") - actual, err = NewReference("thing:1.0") + actual, err = newReference("thing:1.0") if err == nil { t.Errorf("Expect error error %v", err) } verify(t, actual, "", "", "", "") - actual, err = NewReference("registry.example.com/the/repository@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + actual, err = newReference("registry.example.com/the/repository@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") if err != nil { t.Errorf("Unexpected error %v", err) } From fc17fc75e27f992fcccda9fdf60dbb922d01b816 Mon Sep 17 00:00:00 2001 From: mathieu cesbron Date: Thu, 7 Nov 2024 18:30:34 +0700 Subject: [PATCH 019/206] Fix typo "re-use" to "reuse" Signed-off-by: mathieu cesbron --- cmd/helm/install.go | 2 +- cmd/helm/install_test.go | 2 +- pkg/action/action.go | 4 ++-- pkg/action/install.go | 6 +++--- pkg/action/upgrade.go | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 23ff29d95..1e451486b 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -184,7 +184,7 @@ func addInstallFlags(cmd *cobra.Command, f *pflag.FlagSet, client *action.Instal f.Lookup("dry-run").NoOptDefVal = "client" f.BoolVar(&client.Force, "force", false, "force resource updates through a replacement strategy") f.BoolVar(&client.DisableHooks, "no-hooks", false, "prevent hooks from running during install") - f.BoolVar(&client.Replace, "replace", false, "re-use the given name, only if that name is a deleted release which remains in the history. This is unsafe in production") + f.BoolVar(&client.Replace, "replace", false, "reuse the given name, only if that name is a deleted release which remains in the history. This is unsafe in production") f.DurationVar(&client.Timeout, "timeout", 300*time.Second, "time to wait for any individual Kubernetes operation (like Jobs for hooks)") f.BoolVar(&client.Wait, "wait", false, "if set, will wait until all Pods, PVCs, Services, and minimum number of Pods of a Deployment, StatefulSet, or ReplicaSet are in a ready state before marking the release as successful. It will wait for as long as --timeout") f.BoolVar(&client.WaitForJobs, "wait-for-jobs", false, "if set and --wait enabled, will wait until all Jobs have been completed before marking the release as successful. It will wait for as long as --timeout") diff --git a/cmd/helm/install_test.go b/cmd/helm/install_test.go index 3709c393e..682b25164 100644 --- a/cmd/helm/install_test.go +++ b/cmd/helm/install_test.go @@ -96,7 +96,7 @@ func TestInstall(t *testing.T) { golden: "output/install-no-args.txt", wantError: true, }, - // Install, re-use name + // Install, reuse name { name: "install and replace release", cmd: "install aeneas testdata/testcharts/empty --replace", diff --git a/pkg/action/action.go b/pkg/action/action.go index fe91de048..45f1a14e2 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -394,8 +394,8 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp if cfg.Releases != nil { if mem, ok := cfg.Releases.Driver.(*driver.Memory); ok { // This function can be called more than once (e.g., helm list --all-namespaces). - // If a memory driver was already initialized, re-use it but set the possibly new namespace. - // We re-use it in case some releases where already created in the existing memory driver. + // If a memory driver was already initialized, reuse it but set the possibly new namespace. + // We reuse it in case some releases where already created in the existing memory driver. d = mem } } diff --git a/pkg/action/install.go b/pkg/action/install.go index 7ca40c88a..6869b268b 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -450,7 +450,7 @@ func (i *Install) performInstall(rel *release.Release, toBeAdopted kube.Resource } // At this point, we can do the install. Note that before we were detecting whether to - // do an update, but it's not clear whether we WANT to do an update if the re-use is set + // do an update, but it's not clear whether we WANT to do an update if the reuse is set // to true, since that is basically an upgrade operation. if len(toBeAdopted) == 0 && len(resources) > 0 { _, err = i.cfg.KubeClient.Create(resources) @@ -544,7 +544,7 @@ func (i *Install) availableName() error { if st := rel.Info.Status; i.Replace && (st == release.StatusUninstalled || st == release.StatusFailed) { return nil } - return errors.New("cannot re-use a name that is still in use") + return errors.New("cannot reuse a name that is still in use") } // createRelease creates a new release object @@ -574,7 +574,7 @@ func (i *Install) recordRelease(r *release.Release) error { // replaceRelease replaces an older release with this one // -// This allows us to re-use names by superseding an existing release with a new one +// This allows us to reuse names by superseding an existing release with a new one func (i *Install) replaceRelease(rel *release.Release) error { hist, err := i.cfg.Releases.History(rel.Name) if err != nil || len(hist) == 0 { diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index a08d68495..5002406ca 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -83,7 +83,7 @@ type Upgrade struct { Force bool // ResetValues will reset the values to the chart's built-ins rather than merging with existing. ResetValues bool - // ReuseValues will re-use the user's last supplied values. + // ReuseValues will reuse the user's last supplied values. ReuseValues bool // ResetThenReuseValues will reset the values to the chart's built-ins then merge with user's last supplied values. ResetThenReuseValues bool From c3a5f27c7742991a81c6bbc7bb8e15478f68a20d Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Tue, 12 Nov 2024 16:58:47 +0530 Subject: [PATCH 020/206] Add --take-ownership flag for install and upgrade commands The `TakeOwnership` setting was added to the install and upgrade actions in https://github.com/helm/helm/pull/12876 This PR allows setting this option on install and upgrade via the CLI using a --take-ownership flag Signed-off-by: Mayank Shah --- cmd/helm/install.go | 1 + cmd/helm/install_test.go | 6 ++++++ cmd/helm/testdata/output/install-and-take-ownership.txt | 6 ++++++ cmd/helm/testdata/output/upgrade-and-take-ownership.txt | 7 +++++++ cmd/helm/upgrade.go | 1 + cmd/helm/upgrade_test.go | 6 ++++++ 6 files changed, 27 insertions(+) create mode 100644 cmd/helm/testdata/output/install-and-take-ownership.txt create mode 100644 cmd/helm/testdata/output/upgrade-and-take-ownership.txt diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 23ff29d95..80163137e 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -201,6 +201,7 @@ func addInstallFlags(cmd *cobra.Command, f *pflag.FlagSet, client *action.Instal f.StringToStringVarP(&client.Labels, "labels", "l", nil, "Labels that would be added to release metadata. Should be divided by comma.") f.BoolVar(&client.EnableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") f.BoolVar(&client.HideNotes, "hide-notes", false, "if set, do not show notes in install output. Does not affect presence in chart metadata") + f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, install will ignore the check for helm annotations and take ownership of the existing resources.") addValueOptionsFlags(f, valueOpts) addChartPathOptionsFlags(f, &client.ChartPathOptions) diff --git a/cmd/helm/install_test.go b/cmd/helm/install_test.go index 3709c393e..f81778eab 100644 --- a/cmd/helm/install_test.go +++ b/cmd/helm/install_test.go @@ -102,6 +102,12 @@ func TestInstall(t *testing.T) { cmd: "install aeneas testdata/testcharts/empty --replace", golden: "output/install-and-replace.txt", }, + // Install, take ownership + { + name: "install and replace release", + cmd: "install aeneas-take-ownership testdata/testcharts/empty --take-ownership", + golden: "output/install-and-take-ownership.txt", + }, // Install, with timeout { name: "install with a timeout", diff --git a/cmd/helm/testdata/output/install-and-take-ownership.txt b/cmd/helm/testdata/output/install-and-take-ownership.txt new file mode 100644 index 000000000..51e626446 --- /dev/null +++ b/cmd/helm/testdata/output/install-and-take-ownership.txt @@ -0,0 +1,6 @@ +NAME: aeneas-take-ownership +LAST DEPLOYED: Fri Sep 2 22:04:05 1977 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-and-take-ownership.txt b/cmd/helm/testdata/output/upgrade-and-take-ownership.txt new file mode 100644 index 000000000..bea42db54 --- /dev/null +++ b/cmd/helm/testdata/output/upgrade-and-take-ownership.txt @@ -0,0 +1,7 @@ +Release "funny-bunny" has been upgraded. Happy Helming! +NAME: funny-bunny +LAST DEPLOYED: Fri Sep 2 22:04:05 1977 +NAMESPACE: default +STATUS: deployed +REVISION: 3 +TEST SUITE: None diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 108550cbf..a0bec29ad 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -280,6 +280,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { f.StringVar(&client.Description, "description", "", "add a custom description") f.BoolVar(&client.DependencyUpdate, "dependency-update", false, "update dependencies if they are missing before installing the chart") f.BoolVar(&client.EnableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") + f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, upgrade will ignore the check for helm annotations and take ownership of the existing resources.") addChartPathOptionsFlags(f, &client.ChartPathOptions) addValueOptionsFlags(f, valueOpts) bindOutputFlag(cmd, &outfmt) diff --git a/cmd/helm/upgrade_test.go b/cmd/helm/upgrade_test.go index 497c78d71..6065647b9 100644 --- a/cmd/helm/upgrade_test.go +++ b/cmd/helm/upgrade_test.go @@ -114,6 +114,12 @@ func TestUpgradeCmd(t *testing.T) { golden: "output/upgrade-with-reset-values2.txt", rels: []*release.Release{relMock("funny-bunny", 5, ch2)}, }, + { + name: "upgrade a release with --take-ownership", + cmd: fmt.Sprintf("upgrade funny-bunny '%s' --take-ownership", chartPath), + golden: "output/upgrade-and-take-ownership.txt", + rels: []*release.Release{relMock("funny-bunny", 2, ch)}, + }, { name: "install a release with 'upgrade --install'", cmd: fmt.Sprintf("upgrade zany-bunny -i '%s'", chartPath), From 8bc122e497182851e2d64e5986a349d26fcac255 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Wed, 13 Nov 2024 16:49:19 -0500 Subject: [PATCH 021/206] Updating docs around v3 and v4 The README and contributing document now directly address Helm v4 and v3 to direct contributors. Signed-off-by: Matt Farina --- CONTRIBUTING.md | 4 ++++ README.md | 2 ++ 2 files changed, 6 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0c9e5affe..0c2f88453 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,6 +11,10 @@ vulnerability_, please email a report to [cncf-helm-security@lists.cncf.io](mailto:cncf-helm-security@lists.cncf.io). This will give us a chance to try to fix the issue before it is exploited in the wild. +## Helm v3 and v4 + +Helm v4 is currently under development on the `main` branch. During the development of Helm v4 and for some time after its released, Helm v3 will continue to be supported and developed on the `dev-v3` branch. Helm v3 will continue to get bug fixes and updates for new Kubernetes releases. Helm v4 is where new features and major changes will happen. For features to be backported to Helm v3, an exception will be needed. Bugs should first be fixed on Helm v4 and then backported to Helm v3. + ## Sign Your Work The sign-off is a simple line at the end of the explanation for a commit. All commits need to be diff --git a/README.md b/README.md index 294a03d46..2488147c7 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,8 @@ Get started with the [Quick Start guide](https://helm.sh/docs/intro/quickstart/) The [Helm roadmap uses GitHub milestones](https://github.com/helm/helm/milestones) to track the progress of the project. +The development of Helm v4 is currently happening on the `main` branch while the development of Helm v3, the stable branch, is happening on the `dev-v3` branch. Changes should be made to the `main` branch prior to being added to the `dev-v3` branch so that all changes are carried along to Helm v4. + ## Community, discussion, contribution, and support You can reach the Helm community and developers via the following channels: From 483697584f93d5fdc6ab31f65370614efe888a5a Mon Sep 17 00:00:00 2001 From: Justen Stall <39888103+justenstall@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:24:28 -0700 Subject: [PATCH 022/206] fix(status): remove --show-desc and --show-resources flags Signed-off-by: Justen Stall <39888103+justenstall@users.noreply.github.com> --- cmd/helm/status.go | 28 ++++++++++++---------------- pkg/action/status.go | 13 ------------- 2 files changed, 12 insertions(+), 29 deletions(-) diff --git a/cmd/helm/status.go b/cmd/helm/status.go index 725b3f367..272f4a2a3 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -65,7 +65,6 @@ func newStatusCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { return compListReleases(toComplete, args, cfg) }, RunE: func(_ *cobra.Command, args []string) error { - // When the output format is a table the resources should be fetched // and displayed as a table. When YAML or JSON the resources will be // returned. This mirrors the handling in kubectl. @@ -80,7 +79,12 @@ func newStatusCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { // strip chart metadata from the output rel.Chart = nil - return outfmt.Write(out, &statusPrinter{rel, false, client.ShowDescription, client.ShowResources, false, false}) + return outfmt.Write(out, &statusPrinter{ + release: rel, + debug: false, + showMetadata: false, + hideNotes: false, + }) }, } @@ -94,26 +98,20 @@ func newStatusCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } return nil, cobra.ShellCompDirectiveNoFileComp }) - if err != nil { log.Fatal(err) } bindOutputFlag(cmd, &outfmt) - f.BoolVar(&client.ShowDescription, "show-desc", false, "if set, display the description message of the named release") - - f.BoolVar(&client.ShowResources, "show-resources", false, "if set, display the resources of the named release") return cmd } type statusPrinter struct { - release *release.Release - debug bool - showDescription bool - showResources bool - showMetadata bool - hideNotes bool + release *release.Release + debug bool + showMetadata bool + hideNotes bool } func (s statusPrinter) WriteJSON(out io.Writer) error { @@ -140,11 +138,9 @@ func (s statusPrinter) WriteTable(out io.Writer) error { _, _ = fmt.Fprintf(out, "VERSION: %s\n", s.release.Chart.Metadata.Version) _, _ = fmt.Fprintf(out, "APP_VERSION: %s\n", s.release.Chart.Metadata.AppVersion) } - if s.showDescription { - _, _ = fmt.Fprintf(out, "DESCRIPTION: %s\n", s.release.Info.Description) - } + _, _ = fmt.Fprintf(out, "DESCRIPTION: %s\n", s.release.Info.Description) - if s.showResources && s.release.Info.Resources != nil && len(s.release.Info.Resources) > 0 { + if s.release.Info.Resources != nil && len(s.release.Info.Resources) > 0 { buf := new(bytes.Buffer) printFlags := get.NewHumanPrintFlags() typePrinter, _ := printFlags.ToPrinter("") diff --git a/pkg/action/status.go b/pkg/action/status.go index ee1c9d613..101f7d348 100644 --- a/pkg/action/status.go +++ b/pkg/action/status.go @@ -32,15 +32,6 @@ type Status struct { Version int - // If true, display description to output format, - // only affect print type table. - // TODO Helm 4: Remove this flag and output the description by default. - ShowDescription bool - - // ShowResources sets if the resources should be retrieved with the status. - // TODO Helm 4: Remove this flag and output the resources by default. - ShowResources bool - // ShowResourcesTable is used with ShowResources. When true this will cause // the resulting objects to be retrieved as a kind=table. ShowResourcesTable bool @@ -59,10 +50,6 @@ func (s *Status) Run(name string) (*release.Release, error) { return nil, err } - if !s.ShowResources { - return s.cfg.releaseContent(name, s.Version) - } - rel, err := s.cfg.releaseContent(name, s.Version) if err != nil { return nil, err From 0a64f74a25c8ebe5842e3b95186980b8284496c1 Mon Sep 17 00:00:00 2001 From: Justen Stall <39888103+justenstall@users.noreply.github.com> Date: Fri, 15 Nov 2024 11:27:28 -0700 Subject: [PATCH 023/206] update references to statusPrinter Signed-off-by: Justen Stall <39888103+justenstall@users.noreply.github.com> --- cmd/helm/get_all.go | 8 ++++++-- cmd/helm/install.go | 8 ++++++-- cmd/helm/release_testing.go | 9 +++++++-- cmd/helm/upgrade.go | 16 ++++++++++++---- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/cmd/helm/get_all.go b/cmd/helm/get_all.go index f7af68213..12f1c2540 100644 --- a/cmd/helm/get_all.go +++ b/cmd/helm/get_all.go @@ -58,7 +58,12 @@ func newGetAllCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } return tpl(template, data, out) } - return output.Table.Write(out, &statusPrinter{res, true, false, false, true, false}) + return output.Table.Write(out, &statusPrinter{ + release: res, + debug: true, + showMetadata: true, + hideNotes: false, + }) }, } @@ -70,7 +75,6 @@ func newGetAllCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } return nil, cobra.ShellCompDirectiveNoFileComp }) - if err != nil { log.Fatal(err) } diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 23ff29d95..f74d74a3a 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -158,7 +158,12 @@ func newInstallCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { return errors.Wrap(err, "INSTALLATION FAILED") } - return outfmt.Write(out, &statusPrinter{rel, settings.Debug, false, false, false, client.HideNotes}) + return outfmt.Write(out, &statusPrinter{ + release: rel, + debug: settings.Debug, + showMetadata: false, + hideNotes: client.HideNotes, + }) }, } @@ -214,7 +219,6 @@ func addInstallFlags(cmd *cobra.Command, f *pflag.FlagSet, client *action.Instal } return compVersionFlag(args[requiredArgs-1], toComplete) }) - if err != nil { log.Fatal(err) } diff --git a/cmd/helm/release_testing.go b/cmd/helm/release_testing.go index 136d785d1..efd507cf4 100644 --- a/cmd/helm/release_testing.go +++ b/cmd/helm/release_testing.go @@ -39,7 +39,7 @@ The tests to be run are defined in the chart that was installed. func newReleaseTestCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { client := action.NewReleaseTesting(cfg) - var outfmt = output.Table + outfmt := output.Table var outputLogs bool var filter []string @@ -72,7 +72,12 @@ func newReleaseTestCmd(cfg *action.Configuration, out io.Writer) *cobra.Command return runErr } - if err := outfmt.Write(out, &statusPrinter{rel, settings.Debug, false, false, false, client.HideNotes}); err != nil { + if err := outfmt.Write(out, &statusPrinter{ + release: rel, + debug: settings.Debug, + showMetadata: false, + hideNotes: client.HideNotes, + }); err != nil { return err } diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 108550cbf..cd1bdbb06 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -160,7 +160,12 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { if err != nil { return err } - return outfmt.Write(out, &statusPrinter{rel, settings.Debug, false, false, false, instClient.HideNotes}) + return outfmt.Write(out, &statusPrinter{ + release: rel, + debug: settings.Debug, + showMetadata: false, + hideNotes: instClient.HideNotes, + }) } else if err != nil { return err } @@ -238,7 +243,6 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { }() rel, err := client.RunWithContext(ctx, args[0], ch, vals) - if err != nil { return errors.Wrap(err, "UPGRADE FAILED") } @@ -247,7 +251,12 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { fmt.Fprintf(out, "Release %q has been upgraded. Happy Helming!\n", args[0]) } - return outfmt.Write(out, &statusPrinter{rel, settings.Debug, false, false, false, client.HideNotes}) + return outfmt.Write(out, &statusPrinter{ + release: rel, + debug: settings.Debug, + showMetadata: false, + hideNotes: client.HideNotes, + }) }, } @@ -291,7 +300,6 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } return compVersionFlag(args[1], toComplete) }) - if err != nil { log.Fatal(err) } From 33f78efe1d7ff9beeeae28134561309d56985c73 Mon Sep 17 00:00:00 2001 From: Justen Stall <39888103+justenstall@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:06:18 -0500 Subject: [PATCH 024/206] fix unit tests Signed-off-by: Justen Stall <39888103+justenstall@users.noreply.github.com> --- cmd/helm/status_test.go | 6 +++--- cmd/helm/testdata/output/chart-with-subchart-update.txt | 1 + cmd/helm/testdata/output/deprecated-chart.txt | 1 + cmd/helm/testdata/output/get-release.txt | 1 + cmd/helm/testdata/output/install-and-replace.txt | 1 + .../testdata/output/install-dry-run-with-secret-hidden.txt | 1 + cmd/helm/testdata/output/install-dry-run-with-secret.txt | 1 + cmd/helm/testdata/output/install-name-template.txt | 1 + cmd/helm/testdata/output/install-no-hooks.txt | 1 + .../testdata/output/install-with-multiple-values-files.txt | 1 + cmd/helm/testdata/output/install-with-multiple-values.txt | 1 + cmd/helm/testdata/output/install-with-timeout.txt | 1 + cmd/helm/testdata/output/install-with-values-file.txt | 1 + cmd/helm/testdata/output/install-with-values.txt | 1 + cmd/helm/testdata/output/install-with-wait-for-jobs.txt | 1 + cmd/helm/testdata/output/install-with-wait.txt | 1 + cmd/helm/testdata/output/install.txt | 1 + cmd/helm/testdata/output/schema.txt | 1 + cmd/helm/testdata/output/status-with-notes.txt | 1 + cmd/helm/testdata/output/status-with-resources.txt | 1 + cmd/helm/testdata/output/status-with-test-suite.txt | 1 + cmd/helm/testdata/output/status.txt | 1 + cmd/helm/testdata/output/subchart-schema-cli.txt | 1 + .../output/upgrade-uninstalled-with-keep-history.txt | 1 + cmd/helm/testdata/output/upgrade-with-dependency-update.txt | 1 + cmd/helm/testdata/output/upgrade-with-install-timeout.txt | 1 + cmd/helm/testdata/output/upgrade-with-install.txt | 1 + cmd/helm/testdata/output/upgrade-with-reset-values.txt | 1 + cmd/helm/testdata/output/upgrade-with-reset-values2.txt | 1 + cmd/helm/testdata/output/upgrade-with-timeout.txt | 1 + cmd/helm/testdata/output/upgrade-with-wait-for-jobs.txt | 1 + cmd/helm/testdata/output/upgrade-with-wait.txt | 1 + cmd/helm/testdata/output/upgrade.txt | 1 + 33 files changed, 35 insertions(+), 3 deletions(-) diff --git a/cmd/helm/status_test.go b/cmd/helm/status_test.go index 6722bf949..155e27481 100644 --- a/cmd/helm/status_test.go +++ b/cmd/helm/status_test.go @@ -46,7 +46,7 @@ func TestStatusCmd(t *testing.T) { }), }, { name: "get status of a deployed release, with desc", - cmd: "status --show-desc flummoxed-chickadee", + cmd: "status flummoxed-chickadee", golden: "output/status-with-desc.txt", rels: releasesMockWithStatus(&release.Info{ Status: release.StatusDeployed, @@ -70,7 +70,7 @@ func TestStatusCmd(t *testing.T) { }), }, { name: "get status of a deployed release with resources", - cmd: "status --show-resources flummoxed-chickadee", + cmd: "status flummoxed-chickadee", golden: "output/status-with-resources.txt", rels: releasesMockWithStatus( &release.Info{ @@ -79,7 +79,7 @@ func TestStatusCmd(t *testing.T) { ), }, { name: "get status of a deployed release with resources in json", - cmd: "status --show-resources flummoxed-chickadee -o json", + cmd: "status flummoxed-chickadee -o json", golden: "output/status-with-resources.json", rels: releasesMockWithStatus( &release.Info{ diff --git a/cmd/helm/testdata/output/chart-with-subchart-update.txt b/cmd/helm/testdata/output/chart-with-subchart-update.txt index a4135c782..5b2083e1d 100644 --- a/cmd/helm/testdata/output/chart-with-subchart-update.txt +++ b/cmd/helm/testdata/output/chart-with-subchart-update.txt @@ -3,6 +3,7 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None NOTES: PARENT NOTES diff --git a/cmd/helm/testdata/output/deprecated-chart.txt b/cmd/helm/testdata/output/deprecated-chart.txt index 039d6aef6..fcf5cc0ef 100644 --- a/cmd/helm/testdata/output/deprecated-chart.txt +++ b/cmd/helm/testdata/output/deprecated-chart.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/get-release.txt b/cmd/helm/testdata/output/get-release.txt index 12b4a407a..dbca662c5 100644 --- a/cmd/helm/testdata/output/get-release.txt +++ b/cmd/helm/testdata/output/get-release.txt @@ -6,6 +6,7 @@ REVISION: 1 CHART: foo VERSION: 0.1.0-beta.1 APP_VERSION: 1.0 +DESCRIPTION: Release mock TEST SUITE: None USER-SUPPLIED VALUES: name: value diff --git a/cmd/helm/testdata/output/install-and-replace.txt b/cmd/helm/testdata/output/install-and-replace.txt index 039d6aef6..fcf5cc0ef 100644 --- a/cmd/helm/testdata/output/install-and-replace.txt +++ b/cmd/helm/testdata/output/install-and-replace.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-dry-run-with-secret-hidden.txt b/cmd/helm/testdata/output/install-dry-run-with-secret-hidden.txt index 2f928c3dc..eb770967f 100644 --- a/cmd/helm/testdata/output/install-dry-run-with-secret-hidden.txt +++ b/cmd/helm/testdata/output/install-dry-run-with-secret-hidden.txt @@ -3,6 +3,7 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: pending-install REVISION: 1 +DESCRIPTION: Dry run complete TEST SUITE: None HOOKS: MANIFEST: diff --git a/cmd/helm/testdata/output/install-dry-run-with-secret.txt b/cmd/helm/testdata/output/install-dry-run-with-secret.txt index 6c094ef6a..d22c1437f 100644 --- a/cmd/helm/testdata/output/install-dry-run-with-secret.txt +++ b/cmd/helm/testdata/output/install-dry-run-with-secret.txt @@ -3,6 +3,7 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: pending-install REVISION: 1 +DESCRIPTION: Dry run complete TEST SUITE: None HOOKS: MANIFEST: diff --git a/cmd/helm/testdata/output/install-name-template.txt b/cmd/helm/testdata/output/install-name-template.txt index 19952e3c2..bcc5f87ba 100644 --- a/cmd/helm/testdata/output/install-name-template.txt +++ b/cmd/helm/testdata/output/install-name-template.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-no-hooks.txt b/cmd/helm/testdata/output/install-no-hooks.txt index 039d6aef6..fcf5cc0ef 100644 --- a/cmd/helm/testdata/output/install-no-hooks.txt +++ b/cmd/helm/testdata/output/install-no-hooks.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-with-multiple-values-files.txt b/cmd/helm/testdata/output/install-with-multiple-values-files.txt index 406e522a9..1116cb907 100644 --- a/cmd/helm/testdata/output/install-with-multiple-values-files.txt +++ b/cmd/helm/testdata/output/install-with-multiple-values-files.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-with-multiple-values.txt b/cmd/helm/testdata/output/install-with-multiple-values.txt index 406e522a9..1116cb907 100644 --- a/cmd/helm/testdata/output/install-with-multiple-values.txt +++ b/cmd/helm/testdata/output/install-with-multiple-values.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-with-timeout.txt b/cmd/helm/testdata/output/install-with-timeout.txt index 19952e3c2..bcc5f87ba 100644 --- a/cmd/helm/testdata/output/install-with-timeout.txt +++ b/cmd/helm/testdata/output/install-with-timeout.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-with-values-file.txt b/cmd/helm/testdata/output/install-with-values-file.txt index 406e522a9..1116cb907 100644 --- a/cmd/helm/testdata/output/install-with-values-file.txt +++ b/cmd/helm/testdata/output/install-with-values-file.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-with-values.txt b/cmd/helm/testdata/output/install-with-values.txt index 406e522a9..1116cb907 100644 --- a/cmd/helm/testdata/output/install-with-values.txt +++ b/cmd/helm/testdata/output/install-with-values.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-with-wait-for-jobs.txt b/cmd/helm/testdata/output/install-with-wait-for-jobs.txt index 7ce22d4ec..c5676c610 100644 --- a/cmd/helm/testdata/output/install-with-wait-for-jobs.txt +++ b/cmd/helm/testdata/output/install-with-wait-for-jobs.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install-with-wait.txt b/cmd/helm/testdata/output/install-with-wait.txt index 7ce22d4ec..c5676c610 100644 --- a/cmd/helm/testdata/output/install-with-wait.txt +++ b/cmd/helm/testdata/output/install-with-wait.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/install.txt b/cmd/helm/testdata/output/install.txt index 039d6aef6..fcf5cc0ef 100644 --- a/cmd/helm/testdata/output/install.txt +++ b/cmd/helm/testdata/output/install.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/schema.txt b/cmd/helm/testdata/output/schema.txt index 22a94b3f4..f5fe63768 100644 --- a/cmd/helm/testdata/output/schema.txt +++ b/cmd/helm/testdata/output/schema.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/status-with-notes.txt b/cmd/helm/testdata/output/status-with-notes.txt index e992ce91e..f05be6c18 100644 --- a/cmd/helm/testdata/output/status-with-notes.txt +++ b/cmd/helm/testdata/output/status-with-notes.txt @@ -3,6 +3,7 @@ LAST DEPLOYED: Sat Jan 16 00:00:00 2016 NAMESPACE: default STATUS: deployed REVISION: 0 +DESCRIPTION: TEST SUITE: None NOTES: release notes diff --git a/cmd/helm/testdata/output/status-with-resources.txt b/cmd/helm/testdata/output/status-with-resources.txt index a326c3db0..20763acda 100644 --- a/cmd/helm/testdata/output/status-with-resources.txt +++ b/cmd/helm/testdata/output/status-with-resources.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Sat Jan 16 00:00:00 2016 NAMESPACE: default STATUS: deployed REVISION: 0 +DESCRIPTION: TEST SUITE: None diff --git a/cmd/helm/testdata/output/status-with-test-suite.txt b/cmd/helm/testdata/output/status-with-test-suite.txt index 58c67e103..7c1ade450 100644 --- a/cmd/helm/testdata/output/status-with-test-suite.txt +++ b/cmd/helm/testdata/output/status-with-test-suite.txt @@ -3,6 +3,7 @@ LAST DEPLOYED: Sat Jan 16 00:00:00 2016 NAMESPACE: default STATUS: deployed REVISION: 0 +DESCRIPTION: TEST SUITE: passing-test Last Started: Mon Jan 2 15:04:05 2006 Last Completed: Mon Jan 2 15:04:07 2006 diff --git a/cmd/helm/testdata/output/status.txt b/cmd/helm/testdata/output/status.txt index a326c3db0..20763acda 100644 --- a/cmd/helm/testdata/output/status.txt +++ b/cmd/helm/testdata/output/status.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Sat Jan 16 00:00:00 2016 NAMESPACE: default STATUS: deployed REVISION: 0 +DESCRIPTION: TEST SUITE: None diff --git a/cmd/helm/testdata/output/subchart-schema-cli.txt b/cmd/helm/testdata/output/subchart-schema-cli.txt index 22a94b3f4..f5fe63768 100644 --- a/cmd/helm/testdata/output/subchart-schema-cli.txt +++ b/cmd/helm/testdata/output/subchart-schema-cli.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-uninstalled-with-keep-history.txt b/cmd/helm/testdata/output/upgrade-uninstalled-with-keep-history.txt index f53b8715a..d5c42d15c 100644 --- a/cmd/helm/testdata/output/upgrade-uninstalled-with-keep-history.txt +++ b/cmd/helm/testdata/output/upgrade-uninstalled-with-keep-history.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 3 +DESCRIPTION: Install complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-with-dependency-update.txt b/cmd/helm/testdata/output/upgrade-with-dependency-update.txt index 0e7e5842e..d1517a686 100644 --- a/cmd/helm/testdata/output/upgrade-with-dependency-update.txt +++ b/cmd/helm/testdata/output/upgrade-with-dependency-update.txt @@ -4,6 +4,7 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 3 +DESCRIPTION: Upgrade complete TEST SUITE: None NOTES: PARENT NOTES diff --git a/cmd/helm/testdata/output/upgrade-with-install-timeout.txt b/cmd/helm/testdata/output/upgrade-with-install-timeout.txt index 5d8d3a4ea..b159dc3bc 100644 --- a/cmd/helm/testdata/output/upgrade-with-install-timeout.txt +++ b/cmd/helm/testdata/output/upgrade-with-install-timeout.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 2 +DESCRIPTION: Upgrade complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-with-install.txt b/cmd/helm/testdata/output/upgrade-with-install.txt index af61212bd..7dc2fce69 100644 --- a/cmd/helm/testdata/output/upgrade-with-install.txt +++ b/cmd/helm/testdata/output/upgrade-with-install.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 2 +DESCRIPTION: Upgrade complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-with-reset-values.txt b/cmd/helm/testdata/output/upgrade-with-reset-values.txt index 01f1c0ac8..d02993a5c 100644 --- a/cmd/helm/testdata/output/upgrade-with-reset-values.txt +++ b/cmd/helm/testdata/output/upgrade-with-reset-values.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 5 +DESCRIPTION: Upgrade complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-with-reset-values2.txt b/cmd/helm/testdata/output/upgrade-with-reset-values2.txt index fdd1d2db7..7780c4fdc 100644 --- a/cmd/helm/testdata/output/upgrade-with-reset-values2.txt +++ b/cmd/helm/testdata/output/upgrade-with-reset-values2.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 6 +DESCRIPTION: Upgrade complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-with-timeout.txt b/cmd/helm/testdata/output/upgrade-with-timeout.txt index be3a42368..b1edac3af 100644 --- a/cmd/helm/testdata/output/upgrade-with-timeout.txt +++ b/cmd/helm/testdata/output/upgrade-with-timeout.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 4 +DESCRIPTION: Upgrade complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-with-wait-for-jobs.txt b/cmd/helm/testdata/output/upgrade-with-wait-for-jobs.txt index 500d07a11..21784413c 100644 --- a/cmd/helm/testdata/output/upgrade-with-wait-for-jobs.txt +++ b/cmd/helm/testdata/output/upgrade-with-wait-for-jobs.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 3 +DESCRIPTION: Upgrade complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-with-wait.txt b/cmd/helm/testdata/output/upgrade-with-wait.txt index 500d07a11..21784413c 100644 --- a/cmd/helm/testdata/output/upgrade-with-wait.txt +++ b/cmd/helm/testdata/output/upgrade-with-wait.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 3 +DESCRIPTION: Upgrade complete TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade.txt b/cmd/helm/testdata/output/upgrade.txt index bea42db54..59267651f 100644 --- a/cmd/helm/testdata/output/upgrade.txt +++ b/cmd/helm/testdata/output/upgrade.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 3 +DESCRIPTION: Upgrade complete TEST SUITE: None From 28be06e1d0c8af036cd6e636464bc757eec1cd5b Mon Sep 17 00:00:00 2001 From: Justen Stall <39888103+justenstall@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:19:43 -0500 Subject: [PATCH 025/206] remove references to the removed flags in help text Signed-off-by: Justen Stall <39888103+justenstall@users.noreply.github.com> --- cmd/helm/status.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/helm/status.go b/cmd/helm/status.go index 272f4a2a3..2bee5db44 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -43,8 +43,8 @@ The status consists of: - k8s namespace in which the release lives - state of the release (can be: unknown, deployed, uninstalled, superseded, failed, uninstalling, pending-install, pending-upgrade or pending-rollback) - revision of the release -- description of the release (can be completion message or error message, need to enable --show-desc) -- list of resources that this release consists of (need to enable --show-resources) +- description of the release (can be completion message or error message) +- list of resources that this release consists of - details on last test suite run, if applicable - additional notes provided by the chart ` From 7efa2862ad48be335b5e2346f53db36bfe7bbcb2 Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Tue, 19 Nov 2024 10:03:03 +0530 Subject: [PATCH 026/206] Update cmd/helm/install.go Co-authored-by: George Jenkins Signed-off-by: Mayank Shah --- cmd/helm/install.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 80163137e..bf9519f5d 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -201,7 +201,7 @@ func addInstallFlags(cmd *cobra.Command, f *pflag.FlagSet, client *action.Instal f.StringToStringVarP(&client.Labels, "labels", "l", nil, "Labels that would be added to release metadata. Should be divided by comma.") f.BoolVar(&client.EnableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") f.BoolVar(&client.HideNotes, "hide-notes", false, "if set, do not show notes in install output. Does not affect presence in chart metadata") - f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, install will ignore the check for helm annotations and take ownership of the existing resources.") + f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, install will ignore the check for helm annotations and take ownership of the existing resources") addValueOptionsFlags(f, valueOpts) addChartPathOptionsFlags(f, &client.ChartPathOptions) From 885e938793203383abb9331b4a0662df85d2cbeb Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Tue, 19 Nov 2024 10:03:09 +0530 Subject: [PATCH 027/206] Update cmd/helm/upgrade.go Co-authored-by: George Jenkins Signed-off-by: Mayank Shah --- cmd/helm/upgrade.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index a0bec29ad..1fe793a92 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -280,7 +280,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { f.StringVar(&client.Description, "description", "", "add a custom description") f.BoolVar(&client.DependencyUpdate, "dependency-update", false, "update dependencies if they are missing before installing the chart") f.BoolVar(&client.EnableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") - f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, upgrade will ignore the check for helm annotations and take ownership of the existing resources.") + f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, upgrade will ignore the check for helm annotations and take ownership of the existing resources") addChartPathOptionsFlags(f, &client.ChartPathOptions) addValueOptionsFlags(f, valueOpts) bindOutputFlag(cmd, &outfmt) From 1baef77c44d021cbad43998afccc9766ccf4e341 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Mon, 18 Nov 2024 21:05:01 -0800 Subject: [PATCH 028/206] Update .github/workflows/scorecards.yml Co-authored-by: Terry Howe Signed-off-by: George Jenkins --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index a56e6f06a..9ef4208da 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -55,7 +55,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@c24449f33cd45d4826c6702db7e49f7cdb9b551d # v3.pre.node20 + uses: actions/upload-artifact@c24449f33cd45d4826c6702db7e49f7cdb9b551d # v3.2.1-node20 with: name: SARIF file path: results.sarif From 3fa3daa5e607e3fb464ac3a1b25fe6ee37b9e8fc Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Tue, 19 Nov 2024 17:31:34 +0000 Subject: [PATCH 029/206] Add precommit config to .gitignore Signed-off-by: Evans Mungai --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index cdb68ceb5..75698e993 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ bin/ vendor/ # Ignores charts pulled for dependency build tests cmd/helm/testdata/testcharts/issue-7233/charts/* +.pre-commit-config.yaml From 7a22dd28d13b02c6cd15bea19c35825f4f420caf Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Tue, 19 Nov 2024 21:18:27 +0000 Subject: [PATCH 030/206] Rename CAFile to CaFile for consistency Signed-off-by: Evans Mungai --- cmd/helm/dependency.go | 2 +- cmd/helm/dependency_build.go | 2 +- cmd/helm/dependency_update.go | 2 +- cmd/helm/package.go | 4 ++-- pkg/action/dependency.go | 2 +- pkg/action/package.go | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/helm/dependency.go b/cmd/helm/dependency.go index d3bb094e2..19b648604 100644 --- a/cmd/helm/dependency.go +++ b/cmd/helm/dependency.go @@ -132,5 +132,5 @@ func addDependencySubcommandFlags(f *pflag.FlagSet, client *action.Dependency) { f.StringVar(&client.KeyFile, "key-file", "", "identify HTTPS client using this SSL key file") f.BoolVar(&client.InsecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart download") f.BoolVar(&client.PlainHTTP, "plain-http", false, "use insecure HTTP connections for the chart download") - f.StringVar(&client.CAFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") + f.StringVar(&client.CaFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") } diff --git a/cmd/helm/dependency_build.go b/cmd/helm/dependency_build.go index 8998711ad..5b5598498 100644 --- a/cmd/helm/dependency_build.go +++ b/cmd/helm/dependency_build.go @@ -54,7 +54,7 @@ func newDependencyBuildCmd(out io.Writer) *cobra.Command { if len(args) > 0 { chartpath = filepath.Clean(args[0]) } - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/dependency_update.go b/cmd/helm/dependency_update.go index a5fb5796d..3ac39adff 100644 --- a/cmd/helm/dependency_update.go +++ b/cmd/helm/dependency_update.go @@ -58,7 +58,7 @@ func newDependencyUpdateCmd(_ *action.Configuration, out io.Writer) *cobra.Comma if len(args) > 0 { chartpath = filepath.Clean(args[0]) } - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) diff --git a/cmd/helm/package.go b/cmd/helm/package.go index f601ce3b9..19ab3dc7f 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -75,7 +75,7 @@ func newPackageCmd(out io.Writer) *cobra.Command { return err } - registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CAFile, + registryClient, err := newRegistryClient(client.CertFile, client.KeyFile, client.CaFile, client.InsecureSkipTLSverify, client.PlainHTTP, client.Username, client.Password) if err != nil { return fmt.Errorf("missing registry client: %w", err) @@ -131,7 +131,7 @@ func newPackageCmd(out io.Writer) *cobra.Command { f.StringVar(&client.KeyFile, "key-file", "", "identify HTTPS client using this SSL key file") f.BoolVar(&client.InsecureSkipTLSverify, "insecure-skip-tls-verify", false, "skip tls certificate checks for the chart download") f.BoolVar(&client.PlainHTTP, "plain-http", false, "use insecure HTTP connections for the chart download") - f.StringVar(&client.CAFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") + f.StringVar(&client.CaFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") return cmd } diff --git a/pkg/action/dependency.go b/pkg/action/dependency.go index b5305168e..19305fee8 100644 --- a/pkg/action/dependency.go +++ b/pkg/action/dependency.go @@ -42,7 +42,7 @@ type Dependency struct { Password string CertFile string KeyFile string - CAFile string + CaFile string InsecureSkipTLSverify bool PlainHTTP bool } diff --git a/pkg/action/package.go b/pkg/action/package.go index a425dc433..2357e3882 100644 --- a/pkg/action/package.go +++ b/pkg/action/package.go @@ -51,7 +51,7 @@ type Package struct { Password string CertFile string KeyFile string - CAFile string + CaFile string InsecureSkipTLSverify bool } From bb9f0f7816a0deff7ba3464c754a958d6837b780 Mon Sep 17 00:00:00 2001 From: Steve Hipwell Date: Thu, 18 Apr 2024 18:17:39 +0100 Subject: [PATCH 031/206] feat: Added multi-platform plugin hook support Signed-off-by: Steve Hipwell --- cmd/helm/plugin.go | 22 +- pkg/plugin/hooks.go | 3 + pkg/plugin/plugin.go | 181 ++++++--- pkg/plugin/plugin_test.go | 369 ++++++++++++------ .../testdata/plugdir/good/hello/hello.ps1 | 3 + .../testdata/plugdir/good/hello/plugin.yaml | 22 +- 6 files changed, 427 insertions(+), 173 deletions(-) create mode 100644 pkg/plugin/testdata/plugdir/good/hello/hello.ps1 diff --git a/cmd/helm/plugin.go b/cmd/helm/plugin.go index 8e1044f54..27ed70727 100644 --- a/cmd/helm/plugin.go +++ b/cmd/helm/plugin.go @@ -47,19 +47,27 @@ func newPluginCmd(out io.Writer) *cobra.Command { // runHook will execute a plugin hook. func runHook(p *plugin.Plugin, event string) error { - hook := p.Metadata.Hooks[event] - if hook == "" { + plugin.SetupPluginEnv(settings, p.Metadata.Name, p.Dir) + + cmds := p.Metadata.PlatformHooks[event] + expandArgs := true + if len(cmds) == 0 && len(p.Metadata.Hooks) > 0 { + cmd := p.Metadata.Hooks[event] + if len(cmd) > 0 { + cmds = []plugin.PlatformCommand{{Command: "sh", Args: []string{"-c", cmd}}} + expandArgs = false + } + } + + main, argv, err := plugin.PrepareCommands(cmds, expandArgs, []string{}) + if err != nil { return nil } - prog := exec.Command("sh", "-c", hook) - // TODO make this work on windows - // I think its ... ¯\_(ツ)_/¯ - // prog := exec.Command("cmd", "/C", p.Metadata.Hooks.Install()) + prog := exec.Command(main, argv...) debug("running %s hook: %s", event, prog) - plugin.SetupPluginEnv(settings, p.Metadata.Name, p.Dir) prog.Stdout, prog.Stderr = os.Stdout, os.Stderr if err := prog.Run(); err != nil { if eerr, ok := err.(*exec.ExitError); ok { diff --git a/pkg/plugin/hooks.go b/pkg/plugin/hooks.go index e3481515f..34d3163a4 100644 --- a/pkg/plugin/hooks.go +++ b/pkg/plugin/hooks.go @@ -25,5 +25,8 @@ const ( Update = "update" ) +// PlatformHooks is a map of events to a command for a particular operating system and architecture. +type PlatformHooks map[string][]PlatformCommand + // Hooks is a map of events to commands. type Hooks map[string]string diff --git a/pkg/plugin/plugin.go b/pkg/plugin/plugin.go index 5bb743481..8eac1f74d 100644 --- a/pkg/plugin/plugin.go +++ b/pkg/plugin/plugin.go @@ -44,9 +44,10 @@ type Downloaders struct { // PlatformCommand represents a command for a particular operating system and architecture type PlatformCommand struct { - OperatingSystem string `json:"os"` - Architecture string `json:"arch"` - Command string `json:"command"` + OperatingSystem string `json:"os"` + Architecture string `json:"arch"` + Command string `json:"command"` + Args []string `json:"args"` } // Metadata describes a plugin. @@ -65,23 +66,35 @@ type Metadata struct { // Description is a long description shown in places like `helm help` Description string `json:"description"` - // Command is the command, as a single string. + // PlatformCommand is the plugin command, with a platform selector and support for args. // - // The command will be passed through environment expansion, so env vars can + // The command and args will be passed through environment expansion, so env vars can // be present in this command. Unless IgnoreFlags is set, this will // also merge the flags passed from Helm. // - // Note that command is not executed in a shell. To do so, we suggest + // Note that the command is not executed in a shell. To do so, we suggest // pointing the command to a shell script. // - // The following rules will apply to processing commands: - // - If platformCommand is present, it will be searched first + // The following rules will apply to processing platform commands: + // - If PlatformCommand is present, it will be used // - If both OS and Arch match the current platform, search will stop and the command will be executed - // - If OS matches and there is no more specific match, the command will be executed + // - If OS matches and Arch is empty, the command will be executed // - If no OS/Arch match is found, the default command will be executed - // - If no command is present and no matches are found in platformCommand, Helm will exit with an error + // - If no matches are found in platformCommand, Helm will exit with an error PlatformCommand []PlatformCommand `json:"platformCommand"` - Command string `json:"command"` + + // Command is the plugin command, as a single string. + // Providing a command will result in an error if PlatformCommand is also set. + // + // The command will be passed through environment expansion, so env vars can + // be present in this command. Unless IgnoreFlags is set, this will + // also merge the flags passed from Helm. + // + // Note that command is not executed in a shell. To do so, we suggest + // pointing the command to a shell script. + // + // DEPRECATED: Use PlatformCommand instead. Remove in Helm 4. + Command string `json:"command"` // IgnoreFlags ignores any flags passed in from Helm // @@ -90,7 +103,31 @@ type Metadata struct { // the `--debug` flag will be discarded. IgnoreFlags bool `json:"ignoreFlags"` - // Hooks are commands that will run on events. + // PlatformHooks are commands that will run on plugin events, with a platform selector and support for args. + // + // The command and args will be passed through environment expansion, so env vars can + // be present in the command. + // + // Note that the command is not executed in a shell. To do so, we suggest + // pointing the command to a shell script. + // + // The following rules will apply to processing platform hooks: + // - If PlatformHooks is present, it will be used + // - If both OS and Arch match the current platform, search will stop and the command will be executed + // - If OS matches and Arch is empty, the command will be executed + // - If no OS/Arch match is found, the default command will be executed + // - If no matches are found in platformHooks, Helm will skip the event + PlatformHooks PlatformHooks `json:"platformHooks"` + + // Hooks are commands that will run on plugin events, as a single string. + // Providing a hooks will result in an error if PlatformHooks is also set. + // + // The command will be passed through environment expansion, so env vars can + // be present in this command. + // + // Note that the command is executed in the sh shell. + // + // DEPRECATED: Use PlatformHooks instead. Remove in Helm 4. Hooks Hooks // Downloaders field is used if the plugin supply downloader mechanism @@ -112,62 +149,106 @@ type Plugin struct { Dir string } -// The following rules will apply to processing the Plugin.PlatformCommand.Command: -// - If both OS and Arch match the current platform, search will stop and the command will be prepared for execution -// - If OS matches and there is no more specific match, the command will be prepared for execution -// - If no OS/Arch match is found, return nil -func getPlatformCommand(cmds []PlatformCommand) []string { - var command []string +// Returns command and args strings based on the following rules in priority order: +// - From the PlatformCommand where OS and Arch match the current platform +// - From the PlatformCommand where OS matches the current platform and Arch is empty/unspecified +// - From the PlatformCommand where OS is empty/unspecified and Arch matches the current platform +// - From the PlatformCommand where OS and Arch are both empty/unspecified +// - Return nil, nil +func getPlatformCommand(cmds []PlatformCommand) ([]string, []string) { + var command, args []string + found := false + foundOs := false + eq := strings.EqualFold for _, c := range cmds { - if eq(c.OperatingSystem, runtime.GOOS) { - command = strings.Split(c.Command, " ") - } if eq(c.OperatingSystem, runtime.GOOS) && eq(c.Architecture, runtime.GOARCH) { - return strings.Split(c.Command, " ") + // Return early for an exact match + return strings.Split(c.Command, " "), c.Args + } + + if (len(c.OperatingSystem) > 0 && !eq(c.OperatingSystem, runtime.GOOS)) || len(c.Architecture) > 0 { + // Skip if OS is not empty and doesn't match or if arch is set as a set arch requires an OS match + continue + } + + if !foundOs && len(c.OperatingSystem) > 0 && eq(c.OperatingSystem, runtime.GOOS) { + // First OS match with empty arch, can only be overridden by a direct match + command = strings.Split(c.Command, " ") + args = c.Args + found = true + foundOs = true + } else if !found { + // First empty match, can be overridden by a direct match or an OS match + command = strings.Split(c.Command, " ") + args = c.Args + found = true } } - return command + + return command, args } -// PrepareCommand takes a Plugin.PlatformCommand.Command, a Plugin.Command and will applying the following processing: -// - If platformCommand is present, it will be searched first -// - If both OS and Arch match the current platform, search will stop and the command will be prepared for execution -// - If OS matches and there is no more specific match, the command will be prepared for execution -// - If no OS/Arch match is found, the default command will be prepared for execution -// - If no command is present and no matches are found in platformCommand, will exit with an error +// PrepareCommands takes a []Plugin.PlatformCommand +// and prepares the command and arguments for execution. // // It merges extraArgs into any arguments supplied in the plugin. It -// returns the name of the command and an args array. +// returns the main command and an args array. // // The result is suitable to pass to exec.Command. -func (p *Plugin) PrepareCommand(extraArgs []string) (string, []string, error) { - var parts []string - platCmdLen := len(p.Metadata.PlatformCommand) - if platCmdLen > 0 { - parts = getPlatformCommand(p.Metadata.PlatformCommand) - } - if platCmdLen == 0 || parts == nil { - parts = strings.Split(p.Metadata.Command, " ") - } - if len(parts) == 0 || parts[0] == "" { +func PrepareCommands(cmds []PlatformCommand, expandArgs bool, extraArgs []string) (string, []string, error) { + cmdParts, args := getPlatformCommand(cmds) + if len(cmdParts) == 0 || cmdParts[0] == "" { return "", nil, fmt.Errorf("no plugin command is applicable") } - main := os.ExpandEnv(parts[0]) + main := os.ExpandEnv(cmdParts[0]) baseArgs := []string{} - if len(parts) > 1 { - for _, cmdpart := range parts[1:] { - cmdexp := os.ExpandEnv(cmdpart) - baseArgs = append(baseArgs, cmdexp) + if len(cmdParts) > 1 { + for _, cmdPart := range cmdParts[1:] { + if expandArgs { + baseArgs = append(baseArgs, os.ExpandEnv(cmdPart)) + } else { + baseArgs = append(baseArgs, cmdPart) + } } } - if !p.Metadata.IgnoreFlags { + + for _, arg := range args { + if expandArgs { + baseArgs = append(baseArgs, os.ExpandEnv(arg)) + } else { + baseArgs = append(baseArgs, arg) + } + } + + if len(extraArgs) > 0 { baseArgs = append(baseArgs, extraArgs...) } + return main, baseArgs, nil } +// PrepareCommand gets the correct command and arguments for a plugin. +// +// It merges extraArgs into any arguments supplied in the plugin. It returns the name of the command and an args array. +// +// The result is suitable to pass to exec.Command. +func (p *Plugin) PrepareCommand(extraArgs []string) (string, []string, error) { + var extraArgsIn []string + + if !p.Metadata.IgnoreFlags { + extraArgsIn = extraArgs + } + + cmds := p.Metadata.PlatformCommand + if len(cmds) == 0 && len(p.Metadata.Command) > 0 { + cmds = []PlatformCommand{{Command: p.Metadata.Command}} + } + + return PrepareCommands(cmds, true, extraArgsIn) +} + // validPluginName is a regular expression that validates plugin names. // // Plugin names can only contain the ASCII characters a-z, A-Z, 0-9, ​_​ and ​-. @@ -184,6 +265,14 @@ func validatePluginData(plug *Plugin, filepath string) error { } plug.Metadata.Usage = sanitizeString(plug.Metadata.Usage) + if len(plug.Metadata.PlatformCommand) > 0 && len(plug.Metadata.Command) > 0 { + return fmt.Errorf("both platformCommand and command are set in %q", filepath) + } + + if len(plug.Metadata.PlatformHooks) > 0 && len(plug.Metadata.Hooks) > 0 { + return fmt.Errorf("both platformHooks and hooks are set in %q", filepath) + } + // We could also validate SemVer, executable, and other fields should we so choose. return nil } diff --git a/pkg/plugin/plugin_test.go b/pkg/plugin/plugin_test.go index b81797390..770d701fa 100644 --- a/pkg/plugin/plugin_test.go +++ b/pkg/plugin/plugin_test.go @@ -26,163 +26,256 @@ import ( "helm.sh/helm/v3/pkg/cli" ) -func checkCommand(p *Plugin, extraArgs []string, osStrCmp string, t *testing.T) { - cmd, args, err := p.PrepareCommand(extraArgs) - if err != nil { - t.Fatal(err) - } - if cmd != "echo" { - t.Fatalf("Expected echo, got %q", cmd) - } - - if l := len(args); l != 5 { - t.Fatalf("expected 5 args, got %d", l) - } +func TestPrepareCommand(t *testing.T) { + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"test\""} - expect := []string{"-n", osStrCmp, "--debug", "--foo", "bar"} - for i := 0; i < len(args); i++ { - if expect[i] != args[i] { - t.Errorf("Expected arg=%q, got %q", expect[i], args[i]) - } + p := &Plugin{ + Dir: "/tmp", // Unused + Metadata: &Metadata{ + Name: "test", + Command: "echo \"error\"", + PlatformCommand: []PlatformCommand{ + {OperatingSystem: "no-os", Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: runtime.GOARCH, Command: cmdMain, Args: cmdArgs}, + }, + }, } - // Test with IgnoreFlags. This should omit --debug, --foo, bar - p.Metadata.IgnoreFlags = true - cmd, args, err = p.PrepareCommand(extraArgs) + cmd, args, err := p.PrepareCommand([]string{}) if err != nil { t.Fatal(err) } - if cmd != "echo" { - t.Fatalf("Expected echo, got %q", cmd) + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) } - if l := len(args); l != 2 { - t.Fatalf("expected 2 args, got %d", l) - } - expect = []string{"-n", osStrCmp} - for i := 0; i < len(args); i++ { - if expect[i] != args[i] { - t.Errorf("Expected arg=%q, got %q", expect[i], args[i]) - } + if !reflect.DeepEqual(args, cmdArgs) { + t.Fatalf("Expected %v, got %v", cmdArgs, args) } } -func TestPrepareCommand(t *testing.T) { +func TestPrepareCommandExtraArgs(t *testing.T) { + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"test\""} + extraArgs := []string{"--debug", "--foo", "bar"} + p := &Plugin{ Dir: "/tmp", // Unused Metadata: &Metadata{ Name: "test", - Command: "echo -n foo", + Command: "echo \"error\"", + PlatformCommand: []PlatformCommand{ + {OperatingSystem: "no-os", Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: runtime.GOARCH, Command: cmdMain, Args: cmdArgs}, + {OperatingSystem: runtime.GOOS, Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + }, }, } - argv := []string{"--debug", "--foo", "bar"} - checkCommand(p, argv, "foo", t) + expectedArgs := append(cmdArgs, extraArgs...) + + cmd, args, err := p.PrepareCommand(extraArgs) + if err != nil { + t.Fatal(err) + } + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) + } + if !reflect.DeepEqual(args, expectedArgs) { + t.Fatalf("Expected %v, got %v", expectedArgs, args) + } } -func TestPlatformPrepareCommand(t *testing.T) { +func TestPrepareCommandExtraArgsIgnored(t *testing.T) { + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"test\""} + extraArgs := []string{"--debug", "--foo", "bar"} + p := &Plugin{ Dir: "/tmp", // Unused Metadata: &Metadata{ Name: "test", - Command: "echo -n os-arch", + Command: "echo \"error\"", PlatformCommand: []PlatformCommand{ - {OperatingSystem: "linux", Architecture: "386", Command: "echo -n linux-386"}, - {OperatingSystem: "linux", Architecture: "amd64", Command: "echo -n linux-amd64"}, - {OperatingSystem: "linux", Architecture: "arm64", Command: "echo -n linux-arm64"}, - {OperatingSystem: "linux", Architecture: "ppc64le", Command: "echo -n linux-ppc64le"}, - {OperatingSystem: "linux", Architecture: "s390x", Command: "echo -n linux-s390x"}, - {OperatingSystem: "linux", Architecture: "riscv64", Command: "echo -n linux-riscv64"}, - {OperatingSystem: "linux", Architecture: "loong64", Command: "echo -n linux-loong64"}, - {OperatingSystem: "windows", Architecture: "amd64", Command: "echo -n win-64"}, + {OperatingSystem: "no-os", Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: runtime.GOARCH, Command: cmdMain, Args: cmdArgs}, + {OperatingSystem: runtime.GOOS, Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, }, + IgnoreFlags: true, }, } - var osStrCmp string - os := runtime.GOOS - arch := runtime.GOARCH - if os == "linux" && arch == "386" { - osStrCmp = "linux-386" - } else if os == "linux" && arch == "amd64" { - osStrCmp = "linux-amd64" - } else if os == "linux" && arch == "arm64" { - osStrCmp = "linux-arm64" - } else if os == "linux" && arch == "ppc64le" { - osStrCmp = "linux-ppc64le" - } else if os == "linux" && arch == "s390x" { - osStrCmp = "linux-s390x" - } else if os == "linux" && arch == "riscv64" { - osStrCmp = "linux-riscv64" - } else if os == "linux" && arch == "loong64" { - osStrCmp = "linux-loong64" - } else if os == "windows" && arch == "amd64" { - osStrCmp = "win-64" - } else { - osStrCmp = "os-arch" - } - - argv := []string{"--debug", "--foo", "bar"} - checkCommand(p, argv, osStrCmp, t) + + cmd, args, err := p.PrepareCommand(extraArgs) + if err != nil { + t.Fatal(err) + } + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) + } + if !reflect.DeepEqual(args, cmdArgs) { + t.Fatalf("Expected %v, got %v", cmdArgs, args) + } } -func TestPartialPlatformPrepareCommand(t *testing.T) { - p := &Plugin{ - Dir: "/tmp", // Unused - Metadata: &Metadata{ - Name: "test", - Command: "echo -n os-arch", - PlatformCommand: []PlatformCommand{ - {OperatingSystem: "linux", Architecture: "386", Command: "echo -n linux-386"}, - {OperatingSystem: "windows", Architecture: "amd64", Command: "echo -n win-64"}, - }, - }, +func TestPrepareCommands(t *testing.T) { + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"test\""} + + cmds := []PlatformCommand{ + {OperatingSystem: "no-os", Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: runtime.GOARCH, Command: cmdMain, Args: cmdArgs}, + {OperatingSystem: runtime.GOOS, Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + } + + cmd, args, err := PrepareCommands(cmds, true, []string{}) + if err != nil { + t.Fatal(err) + } + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) } - var osStrCmp string - os := runtime.GOOS - arch := runtime.GOARCH - if os == "linux" { - osStrCmp = "linux-386" - } else if os == "windows" && arch == "amd64" { - osStrCmp = "win-64" - } else { - osStrCmp = "os-arch" + if !reflect.DeepEqual(args, cmdArgs) { + t.Fatalf("Expected %v, got %v", cmdArgs, args) + } +} + +func TestPrepareCommandsExtraArgs(t *testing.T) { + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"test\""} + extraArgs := []string{"--debug", "--foo", "bar"} + + cmds := []PlatformCommand{ + {OperatingSystem: "no-os", Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: runtime.GOARCH, Command: "sh", Args: []string{"-c", "echo \"test\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, } - argv := []string{"--debug", "--foo", "bar"} - checkCommand(p, argv, osStrCmp, t) + expectedArgs := append(cmdArgs, extraArgs...) + + cmd, args, err := PrepareCommands(cmds, true, extraArgs) + if err != nil { + t.Fatal(err) + } + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) + } + if !reflect.DeepEqual(args, expectedArgs) { + t.Fatalf("Expected %v, got %v", expectedArgs, args) + } } -func TestNoPrepareCommand(t *testing.T) { - p := &Plugin{ - Dir: "/tmp", // Unused - Metadata: &Metadata{ - Name: "test", - }, +func TestPrepareCommandsNoArch(t *testing.T) { + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"test\""} + + cmds := []PlatformCommand{ + {OperatingSystem: "no-os", Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "", Command: "sh", Args: []string{"-c", "echo \"test\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, } - argv := []string{"--debug", "--foo", "bar"} - _, _, err := p.PrepareCommand(argv) - if err == nil { - t.Fatalf("Expected error to be returned") + cmd, args, err := PrepareCommands(cmds, true, []string{}) + if err != nil { + t.Fatal(err) + } + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) + } + if !reflect.DeepEqual(args, cmdArgs) { + t.Fatalf("Expected %v, got %v", cmdArgs, args) } } -func TestNoMatchPrepareCommand(t *testing.T) { - p := &Plugin{ - Dir: "/tmp", // Unused - Metadata: &Metadata{ - Name: "test", - PlatformCommand: []PlatformCommand{ - {OperatingSystem: "no-os", Architecture: "amd64", Command: "echo -n linux-386"}, - }, - }, +func TestPrepareCommandsNoOsNoArch(t *testing.T) { + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"test\""} + + cmds := []PlatformCommand{ + {OperatingSystem: "no-os", Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, + {OperatingSystem: "", Architecture: "", Command: "sh", Args: []string{"-c", "echo \"test\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "no-arch", Command: "pwsh", Args: []string{"-c", "echo \"error\""}}, } - argv := []string{"--debug", "--foo", "bar"} - if _, _, err := p.PrepareCommand(argv); err == nil { + cmd, args, err := PrepareCommands(cmds, true, []string{}) + if err != nil { + t.Fatal(err) + } + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) + } + if !reflect.DeepEqual(args, cmdArgs) { + t.Fatalf("Expected %v, got %v", cmdArgs, args) + } +} + +func TestPrepareCommandsNoMatch(t *testing.T) { + cmds := []PlatformCommand{ + {OperatingSystem: "no-os", Architecture: "no-arch", Command: "sh", Args: []string{"-c", "echo \"test\""}}, + {OperatingSystem: runtime.GOOS, Architecture: "no-arch", Command: "sh", Args: []string{"-c", "echo \"test\""}}, + {OperatingSystem: "no-os", Architecture: runtime.GOARCH, Command: "sh", Args: []string{"-c", "echo \"test\""}}, + } + + if _, _, err := PrepareCommands(cmds, true, []string{}); err == nil { t.Fatalf("Expected error to be returned") } } +func TestPrepareCommandsNoCommands(t *testing.T) { + cmds := []PlatformCommand{} + + if _, _, err := PrepareCommands(cmds, true, []string{}); err == nil { + t.Fatalf("Expected error to be returned") + } +} + +func TestPrepareCommandsExpand(t *testing.T) { + t.Setenv("TEST", "test") + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"${TEST}\""} + cmds := []PlatformCommand{ + {OperatingSystem: "", Architecture: "", Command: cmdMain, Args: cmdArgs}, + } + + expectedArgs := []string{"-c", "echo \"test\""} + + cmd, args, err := PrepareCommands(cmds, true, []string{}) + if err != nil { + t.Fatal(err) + } + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) + } + if !reflect.DeepEqual(args, expectedArgs) { + t.Fatalf("Expected %v, got %v", expectedArgs, args) + } +} + +func TestPrepareCommandsNoExpand(t *testing.T) { + t.Setenv("TEST", "test") + cmdMain := "sh" + cmdArgs := []string{"-c", "echo \"${TEST}\""} + cmds := []PlatformCommand{ + {OperatingSystem: "", Architecture: "", Command: cmdMain, Args: cmdArgs}, + } + + cmd, args, err := PrepareCommands(cmds, false, []string{}) + if err != nil { + t.Fatal(err) + } + if cmd != cmdMain { + t.Fatalf("Expected %q, got %q", cmdMain, cmd) + } + if !reflect.DeepEqual(args, cmdArgs) { + t.Fatalf("Expected %v, got %v", cmdArgs, args) + } +} + func TestLoadDir(t *testing.T) { dirname := "testdata/plugdir/good/hello" plug, err := LoadDir(dirname) @@ -199,10 +292,16 @@ func TestLoadDir(t *testing.T) { Version: "0.1.0", Usage: "usage", Description: "description", - Command: "$HELM_PLUGIN_DIR/hello.sh", + PlatformCommand: []PlatformCommand{ + {OperatingSystem: "linux", Architecture: "", Command: "sh", Args: []string{"-c", "${HELM_PLUGIN_DIR}/hello.sh"}}, + {OperatingSystem: "windows", Architecture: "", Command: "pwsh", Args: []string{"-c", "${HELM_PLUGIN_DIR}/hello.ps1"}}, + }, IgnoreFlags: true, - Hooks: map[string]string{ - Install: "echo installing...", + PlatformHooks: map[string][]PlatformCommand{ + Install: { + {OperatingSystem: "linux", Architecture: "", Command: "sh", Args: []string{"-c", "echo \"installing...\""}}, + {OperatingSystem: "windows", Architecture: "", Command: "pwsh", Args: []string{"-c", "echo \"installing...\""}}, + }, }, } @@ -249,7 +348,6 @@ func TestDownloader(t *testing.T) { } func TestLoadAll(t *testing.T) { - // Verify that empty dir loads: if plugs, err := LoadAll("testdata"); err != nil { t.Fatalf("error loading dir with no plugins: %s", err) @@ -361,6 +459,30 @@ func TestValidatePluginData(t *testing.T) { Dir: "no-such-dir", } + // A mock plugin with no commands + mockNoCommand := mockPlugin("foo") + mockNoCommand.Metadata.PlatformCommand = []PlatformCommand{} + mockNoCommand.Metadata.PlatformHooks = map[string][]PlatformCommand{} + + // A mock plugin with legacy commands + mockLegacyCommand := mockPlugin("foo") + mockLegacyCommand.Metadata.PlatformCommand = []PlatformCommand{} + mockLegacyCommand.Metadata.Command = "echo \"mock plugin\"" + mockLegacyCommand.Metadata.PlatformHooks = map[string][]PlatformCommand{} + mockLegacyCommand.Metadata.Hooks = map[string]string{ + Install: "echo installing...", + } + + // A mock plugin with a command also set + mockWithCommand := mockPlugin("foo") + mockWithCommand.Metadata.Command = "echo \"mock plugin\"" + + // A mock plugin with a hooks also set + mockWithHooks := mockPlugin("foo") + mockWithHooks.Metadata.Hooks = map[string]string{ + Install: "echo installing...", + } + for i, item := range []struct { pass bool plug *Plugin @@ -372,6 +494,10 @@ func TestValidatePluginData(t *testing.T) { {false, mockPlugin("foo -bar ")}, // Test trailing chars {false, mockPlugin("foo\nbar")}, // Test newline {false, mockMissingMeta}, // Test if the metadata section missing + {true, mockNoCommand}, // Test no command metadata works + {true, mockLegacyCommand}, // Test legacy command metadata works + {false, mockWithCommand}, // Test platformCommand and command both set fails + {false, mockWithHooks}, // Test platformHooks and hooks both set fails } { err := validatePluginData(item.plug, fmt.Sprintf("test-%d", i)) if item.pass && err != nil { @@ -403,7 +529,16 @@ func mockPlugin(name string) *Plugin { Version: "v0.1.2", Usage: "Mock plugin", Description: "Mock plugin for testing", - Command: "echo mock plugin", + PlatformCommand: []PlatformCommand{ + {OperatingSystem: "linux", Architecture: "", Command: "sh", Args: []string{"-c", "echo \"mock plugin\""}}, + {OperatingSystem: "windows", Architecture: "", Command: "pwsh", Args: []string{"-c", "echo \"mock plugin\""}}, + }, + PlatformHooks: map[string][]PlatformCommand{ + Install: { + {OperatingSystem: "linux", Architecture: "", Command: "sh", Args: []string{"-c", "echo \"installing...\""}}, + {OperatingSystem: "windows", Architecture: "", Command: "pwsh", Args: []string{"-c", "echo \"installing...\""}}, + }, + }, }, Dir: "no-such-dir", } diff --git a/pkg/plugin/testdata/plugdir/good/hello/hello.ps1 b/pkg/plugin/testdata/plugdir/good/hello/hello.ps1 new file mode 100644 index 000000000..bee61f27d --- /dev/null +++ b/pkg/plugin/testdata/plugdir/good/hello/hello.ps1 @@ -0,0 +1,3 @@ +#!/usr/bin/env pwsh + +Write-Host "Hello, world!" diff --git a/pkg/plugin/testdata/plugdir/good/hello/plugin.yaml b/pkg/plugin/testdata/plugdir/good/hello/plugin.yaml index b857b55ee..71dc88259 100644 --- a/pkg/plugin/testdata/plugdir/good/hello/plugin.yaml +++ b/pkg/plugin/testdata/plugdir/good/hello/plugin.yaml @@ -3,7 +3,23 @@ version: "0.1.0" usage: "usage" description: |- description -command: "$HELM_PLUGIN_DIR/hello.sh" +platformCommand: + - os: linux + arch: + command: "sh" + args: ["-c", "${HELM_PLUGIN_DIR}/hello.sh"] + - os: windows + arch: + command: "pwsh" + args: ["-c", "${HELM_PLUGIN_DIR}/hello.ps1"] ignoreFlags: true -hooks: - install: "echo installing..." +platformHooks: + install: + - os: linux + arch: "" + command: "sh" + args: ["-c", 'echo "installing..."'] + - os: windows + arch: "" + command: "pwsh" + args: ["-c", 'echo "installing..."'] From 1ab264cb7d12b2dabd5bd5e2a6a6aa66944c7d02 Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Tue, 21 Nov 2023 12:53:31 -0800 Subject: [PATCH 032/206] Make the authorizer and registry authorizer configurable Fixes: #12584 This change makes the authorizer and registryAuthorizer of the registry client configurable via options. This allows Go SDK users to override the authentication behavior of the client. This PR makes both the authorizer and registryAuthorizer configurable because depending on the exact scenario that may be needed. The default registryAuthorizer only supports a specific implementation of the authorizer. Signed-off-by: Ryan Nowak --- pkg/registry/client.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 7538cf69b..aba4eeee2 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -175,6 +175,26 @@ func ClientOptWriter(out io.Writer) ClientOption { } } +// ClientOptAuthorizer returns a function that sets the authorizer setting on a client options set. This +// can be used to override the default authorization mechanism. +// +// Depending on the use-case you may need to set both ClientOptAuthorizer and ClientOptRegistryAuthorizer. +func ClientOptAuthorizer(authorizer auth.Client) ClientOption { + return func(client *Client) { + client.authorizer = authorizer + } +} + +// ClientOptRegistryAuthorizer returns a function that sets the registry authorizer setting on a client options set. This +// can be used to override the default authorization mechanism. +// +// Depending on the use-case you may need to set both ClientOptAuthorizer and ClientOptRegistryAuthorizer. +func ClientOptRegistryAuthorizer(registryAuthorizer *registryauth.Client) ClientOption { + return func(client *Client) { + client.registryAuthorizer = registryAuthorizer + } +} + // ClientOptCredentialsFile returns a function that sets the credentialsFile setting on a client options set func ClientOptCredentialsFile(credentialsFile string) ClientOption { return func(client *Client) { From 321b5d493fac877d9f893474bac8a61a9fb802fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Nov 2024 21:59:28 +0000 Subject: [PATCH 033/206] Bump github.com/containerd/containerd from 1.7.23 to 1.7.24 Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.23 to 1.7.24. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.7.23...v1.7.24) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f77a5ec23..23626338c 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/Masterminds/squirrel v1.5.4 github.com/Masterminds/vcs v1.13.3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 - github.com/containerd/containerd v1.7.23 + github.com/containerd/containerd v1.7.24 github.com/cyphar/filepath-securejoin v0.3.4 github.com/distribution/distribution/v3 v3.0.0-rc.1 github.com/evanphx/json-patch v5.9.0+incompatible diff --git a/go.sum b/go.sum index fe4db3afe..e617d5402 100644 --- a/go.sum +++ b/go.sum @@ -61,8 +61,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= -github.com/containerd/containerd v1.7.23 h1:H2CClyUkmpKAGlhQp95g2WXHfLYc7whAuvZGBNYOOwQ= -github.com/containerd/containerd v1.7.23/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= +github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= +github.com/containerd/containerd v1.7.24/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= From baf8bffc124c49bab69ad6f6462a66e951210fdf Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Mon, 25 Nov 2024 11:20:22 +0000 Subject: [PATCH 034/206] feat: Add flags to enable CPU and memory profiling Add capability to profile cli command using https://go.dev/blog/pprof Signed-off-by: Evans Mungai --- CONTRIBUTING.md | 14 +++++++- cmd/helm/profiling.go | 76 +++++++++++++++++++++++++++++++++++++++++++ cmd/helm/root.go | 23 +++++++++++++ 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 cmd/helm/profiling.go diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0c2f88453..aa67b5aef 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -276,12 +276,24 @@ Like any good open source project, we use Pull Requests (PRs) to track code chan or explicitly request another OWNER do that for them. - If the owner of a PR is _not_ listed in `OWNERS`, any core maintainer may merge the PR. -#### Documentation PRs +### Documentation PRs Documentation PRs should be made on the docs repo: . Keeping Helm's documentation up to date is highly desirable, and is recommended for all user facing changes. Accurate and helpful documentation is critical for effectively communicating Helm's behavior to a wide audience. Small, ad-hoc changes/PRs to Helm which introduce user facing changes, which would benefit from documentation changes, should apply the `docs needed` label. Larger changes associated with a HIP should track docs via that HIP. The `docs needed` label doesn't block PRs, and maintainers/PR reviewers should apply discretion judging in whether the `docs needed` label should be applied. +### Testing PRs + +During development, you need to add automated tests where possible. There are a few `make test*` targets that you can use to execute your unit or integration tests. If your contribution requires profiling to check memory and/or CPU usage, you can use `--cpuprofile` and/or `--memprofile` global cli flags to run collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the profiling data. + +Example invocation that collects profiling data +``` +helm show all bitnami/nginx --memprofile mem.prof --cpuprofile cpu.prof + +# Visualize graphs. You need to have installed graphviz in you system +go tool pprof -http=":8000" cpu.prof +``` + ## The Triager Each week, one of the core maintainers will serve as the designated "triager" starting after the diff --git a/cmd/helm/profiling.go b/cmd/helm/profiling.go new file mode 100644 index 000000000..090532416 --- /dev/null +++ b/cmd/helm/profiling.go @@ -0,0 +1,76 @@ +// Profile CPU and memory usage of Helm commands + +package main + +import ( + "fmt" + "os" + "runtime" + "runtime/pprof" + "strings" + + "github.com/spf13/cobra" +) + +var ( + cpuProfileFile *os.File +) + +// startProfiling starts profiling CPU usage +func startProfiling(cpuprofile string) error { + if cpuprofile != "" { + var err error + cpuProfileFile, err = os.Create(cpuprofile) + if err != nil { + return fmt.Errorf("could not create CPU profile: %w", err) + } + if err := pprof.StartCPUProfile(cpuProfileFile); err != nil { + cpuProfileFile.Close() + cpuProfileFile = nil + return fmt.Errorf("could not start CPU profile: %w", err) + } + } + return nil +} + +// stopProfiling stops profiling CPU and memory usage and writes the results to +// the files specified by --cpuprofile and --memprofile flags respectively. +func stopProfiling(memprofile string) error { + errs := []string{} + + // Stop CPU profiling if it was started + if cpuProfileFile != nil { + pprof.StopCPUProfile() + err := cpuProfileFile.Close() + if err != nil { + errs = append(errs, err.Error()) + } + cpuProfileFile = nil + } + + if memprofile != "" { + f, err := os.Create(memprofile) + if err != nil { + errs = append(errs, err.Error()) + } + defer f.Close() + + runtime.GC() // get up-to-date statistics + if err := pprof.WriteHeapProfile(f); err != nil { + errs = append(errs, err.Error()) + } + } + + if len(errs) > 0 { + return fmt.Errorf("errors while stopping profiling: [%s]", strings.Join(errs, ", ")) + } + + return nil +} + +// addProfilingFlags adds the --cpuprofile and --memprofile flags to the given command. +func addProfilingFlags(cmd *cobra.Command) { + // Persistent flags to make available to subcommands + cmd.PersistentFlags().String("cpuprofile", "", "File path to write cpu profiling data") + cmd.PersistentFlags().String("memprofile", "", "File path to write memory profiling data") +} diff --git a/cmd/helm/root.go b/cmd/helm/root.go index 2ba8a882e..fa1e6c6d0 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -95,6 +95,26 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string Short: "The Helm package manager for Kubernetes.", Long: globalUsage, SilenceUsage: true, + PersistentPreRun: func(cmd *cobra.Command, args []string) { + cpuprof, err := cmd.Flags().GetString("cpuprofile") + if err != nil { + log.Printf("Warning: Failed to get cpuprofile flag: %v", err) + } + + if err := startProfiling(cpuprof); err != nil { + log.Printf("Warning: Failed to start profiling: %v", err) + } + }, + PersistentPostRun: func(cmd *cobra.Command, args []string) { + memprof, err := cmd.Flags().GetString("memprofile") + if err != nil { + log.Printf("Warning: Failed to get memprofile flag: %v", err) + } + + if err := stopProfiling(memprof); err != nil { + log.Printf("Warning: Failed to stop profiling: %v", err) + } + }, } flags := cmd.PersistentFlags() @@ -206,6 +226,9 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string // Check for expired repositories checkForExpiredRepos(settings.RepositoryConfig) + // CPU and memory profiling flags that are available to all commands + addProfilingFlags(cmd) + return cmd, nil } From af622e8887fc104e020df6ed8deb6464653b34b6 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Mon, 25 Nov 2024 12:01:18 +0000 Subject: [PATCH 035/206] Additional review fixes from PR Signed-off-by: Evans Mungai --- CONTRIBUTING.md | 6 +++--- cmd/helm/profiling.go | 16 +++++++++++++++- cmd/helm/root.go | 4 ++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index aa67b5aef..796c661bc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -284,13 +284,13 @@ Small, ad-hoc changes/PRs to Helm which introduce user facing changes, which wou ### Testing PRs -During development, you need to add automated tests where possible. There are a few `make test*` targets that you can use to execute your unit or integration tests. If your contribution requires profiling to check memory and/or CPU usage, you can use `--cpuprofile` and/or `--memprofile` global cli flags to run collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the profiling data. +During development, you need to add automated tests where possible. There are a few `make test*` targets that you can use to execute your unit or integration tests. If your contribution requires profiling to check memory and/or CPU usage, you can use `--cpuprofile` and/or `--memprofile` global cli flags to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. -Example invocation that collects profiling data +Example analysing collected profiling data ``` helm show all bitnami/nginx --memprofile mem.prof --cpuprofile cpu.prof -# Visualize graphs. You need to have installed graphviz in you system +# Visualize graphs. You need to have installed graphviz package in your system go tool pprof -http=":8000" cpu.prof ``` diff --git a/cmd/helm/profiling.go b/cmd/helm/profiling.go index 090532416..e1ca62853 100644 --- a/cmd/helm/profiling.go +++ b/cmd/helm/profiling.go @@ -1,4 +1,18 @@ -// Profile CPU and memory usage of Helm commands +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ package main diff --git a/cmd/helm/root.go b/cmd/helm/root.go index fa1e6c6d0..50cb87e37 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -95,7 +95,7 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string Short: "The Helm package manager for Kubernetes.", Long: globalUsage, SilenceUsage: true, - PersistentPreRun: func(cmd *cobra.Command, args []string) { + PersistentPreRun: func(cmd *cobra.Command, _ []string) { cpuprof, err := cmd.Flags().GetString("cpuprofile") if err != nil { log.Printf("Warning: Failed to get cpuprofile flag: %v", err) @@ -105,7 +105,7 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string log.Printf("Warning: Failed to start profiling: %v", err) } }, - PersistentPostRun: func(cmd *cobra.Command, args []string) { + PersistentPostRun: func(cmd *cobra.Command, _ []string) { memprof, err := cmd.Flags().GetString("memprofile") if err != nil { log.Printf("Warning: Failed to get memprofile flag: %v", err) From 8c544cf9bfc8053d8efe62118b61937297da277c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Nov 2024 21:10:49 +0000 Subject: [PATCH 036/206] Bump github.com/stretchr/testify from 1.9.0 to 1.10.0 Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.9.0 to 1.10.0. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.9.0...v1.10.0) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 23626338c..7fad1c54f 100644 --- a/go.mod +++ b/go.mod @@ -32,7 +32,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/crypto v0.29.0 golang.org/x/term v0.26.0 diff --git a/go.sum b/go.sum index e617d5402..9b20aa5c3 100644 --- a/go.sum +++ b/go.sum @@ -379,8 +379,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= From caa8d322ee653e2ec147bef6ca2e26ce9bf26e4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 21:38:33 +0000 Subject: [PATCH 037/206] Bump actions/upload-artifact from 3.2.1.pre.node20 to 4.4.3 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.2.1.pre.node20 to 4.4.3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/c24449f33cd45d4826c6702db7e49f7cdb9b551d...b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 72df668f3..c18cc8a75 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -55,7 +55,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@c24449f33cd45d4826c6702db7e49f7cdb9b551d # v3.2.1-node20 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v3.2.1-node20 with: name: SARIF file path: results.sarif From 5202e67d2667cbf34e9ca3c54c6c66f2399fcefd Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Sat, 30 Nov 2024 21:57:47 -0800 Subject: [PATCH 038/206] Update .github/workflows/scorecards.yml Signed-off-by: George Jenkins --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index c18cc8a75..61ae29d54 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -55,7 +55,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v3.2.1-node20 + uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 with: name: SARIF file path: results.sarif From 6202d96f38ff16af144cfef21e1a0ce890241eaf Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Sat, 30 Nov 2024 22:39:49 -0800 Subject: [PATCH 039/206] Remove deprecated `repo add --no-update` flag Signed-off-by: George Jenkins --- cmd/helm/repo_add.go | 4 ---- cmd/helm/repo_add_test.go | 27 ++++++++++++--------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/cmd/helm/repo_add.go b/cmd/helm/repo_add.go index 6a8a70a0f..d0b20c8b6 100644 --- a/cmd/helm/repo_add.go +++ b/cmd/helm/repo_add.go @@ -59,9 +59,6 @@ type repoAddOptions struct { repoFile string repoCache string - - // Deprecated, but cannot be removed until Helm 4 - deprecatedNoUpdate bool } func newRepoAddCmd(out io.Writer) *cobra.Command { @@ -92,7 +89,6 @@ func newRepoAddCmd(out io.Writer) *cobra.Command { f.StringVar(&o.password, "password", "", "chart repository password") f.BoolVarP(&o.passwordFromStdinOpt, "password-stdin", "", false, "read chart repository password from stdin") f.BoolVar(&o.forceUpdate, "force-update", false, "replace (overwrite) the repo if it already exists") - f.BoolVar(&o.deprecatedNoUpdate, "no-update", false, "Ignored. Formerly, it would disabled forced updates. It is deprecated by force-update.") f.StringVar(&o.certFile, "cert-file", "", "identify HTTPS client using this SSL certificate file") f.StringVar(&o.keyFile, "key-file", "", "identify HTTPS client using this SSL key file") f.StringVar(&o.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") diff --git a/cmd/helm/repo_add_test.go b/cmd/helm/repo_add_test.go index 2386bb01f..fc0bccb39 100644 --- a/cmd/helm/repo_add_test.go +++ b/cmd/helm/repo_add_test.go @@ -93,11 +93,10 @@ func TestRepoAdd(t *testing.T) { const testRepoName = "test-name" o := &repoAddOptions{ - name: testRepoName, - url: ts.URL(), - forceUpdate: false, - deprecatedNoUpdate: true, - repoFile: repoFile, + name: testRepoName, + url: ts.URL(), + forceUpdate: false, + repoFile: repoFile, } os.Setenv(xdg.CacheHomeEnvVar, rootDir) @@ -148,11 +147,10 @@ func TestRepoAddCheckLegalName(t *testing.T) { repoFile := filepath.Join(t.TempDir(), "repositories.yaml") o := &repoAddOptions{ - name: testRepoName, - url: ts.URL(), - forceUpdate: false, - deprecatedNoUpdate: true, - repoFile: repoFile, + name: testRepoName, + url: ts.URL(), + forceUpdate: false, + repoFile: repoFile, } os.Setenv(xdg.CacheHomeEnvVar, rootDir) @@ -204,11 +202,10 @@ func repoAddConcurrent(t *testing.T, testName, repoFile string) { go func(name string) { defer wg.Done() o := &repoAddOptions{ - name: name, - url: ts.URL(), - deprecatedNoUpdate: true, - forceUpdate: false, - repoFile: repoFile, + name: name, + url: ts.URL(), + forceUpdate: false, + repoFile: repoFile, } if err := o.run(io.Discard); err != nil { t.Error(err) From 6dfaf955eef93830ab66dfcd48695783f789a9c9 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Mon, 2 Dec 2024 17:11:42 -0500 Subject: [PATCH 040/206] Shadow ORAS remote.Client interface Signed-off-by: George Jenkins --- pkg/registry/client.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 0c60a47b8..04c5b9b80 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -51,6 +51,13 @@ an underscore (_) in chart version tags when pushing to a registry and back to a plus (+) when pulling from a registry.` type ( + // RegistryClient shadows the ORAS remote.Client interface + // (hiding the ORAS type from Helm client visibility) + // https://pkg.go.dev/oras.land/oras-go/pkg/registry/remote#Client + RegistryClient interface { + Do(req *http.Request) (*http.Response, error) + } + // Client works with OCI-compliant registries Client struct { debug bool @@ -61,7 +68,7 @@ type ( password string out io.Writer authorizer auth.Client - registryAuthorizer *registryauth.Client + registryAuthorizer RegistryClient resolver func(ref registry.Reference) (remotes.Resolver, error) httpClient *http.Client plainHTTP bool @@ -220,7 +227,7 @@ func ClientOptAuthorizer(authorizer auth.Client) ClientOption { // can be used to override the default authorization mechanism. // // Depending on the use-case you may need to set both ClientOptAuthorizer and ClientOptRegistryAuthorizer. -func ClientOptRegistryAuthorizer(registryAuthorizer *registryauth.Client) ClientOption { +func ClientOptRegistryAuthorizer(registryAuthorizer RegistryClient) ClientOption { return func(client *Client) { client.registryAuthorizer = registryAuthorizer } From 76ba8a4b9f9596b3b1ac1d21feecbdd515ec660b Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Mon, 2 Dec 2024 17:16:42 -0500 Subject: [PATCH 041/206] naming is hard Signed-off-by: George Jenkins --- pkg/registry/client.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 04c5b9b80..6a943d27d 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -51,10 +51,10 @@ an underscore (_) in chart version tags when pushing to a registry and back to a plus (+) when pulling from a registry.` type ( - // RegistryClient shadows the ORAS remote.Client interface + // RemoteClient shadows the ORAS remote.Client interface // (hiding the ORAS type from Helm client visibility) // https://pkg.go.dev/oras.land/oras-go/pkg/registry/remote#Client - RegistryClient interface { + RemoteClient interface { Do(req *http.Request) (*http.Response, error) } @@ -68,7 +68,7 @@ type ( password string out io.Writer authorizer auth.Client - registryAuthorizer RegistryClient + registryAuthorizer RemoteClient resolver func(ref registry.Reference) (remotes.Resolver, error) httpClient *http.Client plainHTTP bool @@ -227,7 +227,7 @@ func ClientOptAuthorizer(authorizer auth.Client) ClientOption { // can be used to override the default authorization mechanism. // // Depending on the use-case you may need to set both ClientOptAuthorizer and ClientOptRegistryAuthorizer. -func ClientOptRegistryAuthorizer(registryAuthorizer RegistryClient) ClientOption { +func ClientOptRegistryAuthorizer(registryAuthorizer RemoteClient) ClientOption { return func(client *Client) { client.registryAuthorizer = registryAuthorizer } From 4872c724c5393c8ce9e5ee45c8f7afde5637826c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 21:36:18 +0000 Subject: [PATCH 042/206] Bump the k8s-io group with 7 updates Bumps the k8s-io group with 7 updates: | Package | From | To | | --- | --- | --- | | [k8s.io/api](https://github.com/kubernetes/api) | `0.31.2` | `0.31.3` | | [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.31.2` | `0.31.3` | | [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.31.2` | `0.31.3` | | [k8s.io/apiserver](https://github.com/kubernetes/apiserver) | `0.31.2` | `0.31.3` | | [k8s.io/cli-runtime](https://github.com/kubernetes/cli-runtime) | `0.31.2` | `0.31.3` | | [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.31.2` | `0.31.3` | | [k8s.io/kubectl](https://github.com/kubernetes/kubectl) | `0.31.2` | `0.31.3` | Updates `k8s.io/api` from 0.31.2 to 0.31.3 - [Commits](https://github.com/kubernetes/api/compare/v0.31.2...v0.31.3) Updates `k8s.io/apiextensions-apiserver` from 0.31.2 to 0.31.3 - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.31.2...v0.31.3) Updates `k8s.io/apimachinery` from 0.31.2 to 0.31.3 - [Commits](https://github.com/kubernetes/apimachinery/compare/v0.31.2...v0.31.3) Updates `k8s.io/apiserver` from 0.31.2 to 0.31.3 - [Commits](https://github.com/kubernetes/apiserver/compare/v0.31.2...v0.31.3) Updates `k8s.io/cli-runtime` from 0.31.2 to 0.31.3 - [Commits](https://github.com/kubernetes/cli-runtime/compare/v0.31.2...v0.31.3) Updates `k8s.io/client-go` from 0.31.2 to 0.31.3 - [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md) - [Commits](https://github.com/kubernetes/client-go/compare/v0.31.2...v0.31.3) Updates `k8s.io/kubectl` from 0.31.2 to 0.31.3 - [Commits](https://github.com/kubernetes/kubectl/compare/v0.31.2...v0.31.3) --- updated-dependencies: - dependency-name: k8s.io/api dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apiextensions-apiserver dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apimachinery dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apiserver dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/cli-runtime dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/client-go dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/kubectl dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io ... Signed-off-by: dependabot[bot] --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 7fad1c54f..92cfd2a94 100644 --- a/go.mod +++ b/go.mod @@ -37,14 +37,14 @@ require ( golang.org/x/crypto v0.29.0 golang.org/x/term v0.26.0 golang.org/x/text v0.20.0 - k8s.io/api v0.31.2 - k8s.io/apiextensions-apiserver v0.31.2 - k8s.io/apimachinery v0.31.2 - k8s.io/apiserver v0.31.2 - k8s.io/cli-runtime v0.31.2 - k8s.io/client-go v0.31.2 + k8s.io/api v0.31.3 + k8s.io/apiextensions-apiserver v0.31.3 + k8s.io/apimachinery v0.31.3 + k8s.io/apiserver v0.31.3 + k8s.io/cli-runtime v0.31.3 + k8s.io/client-go v0.31.3 k8s.io/klog/v2 v2.130.1 - k8s.io/kubectl v0.31.2 + k8s.io/kubectl v0.31.3 oras.land/oras-go v1.2.5 sigs.k8s.io/yaml v1.4.0 ) @@ -180,7 +180,7 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/component-base v0.31.2 // indirect + k8s.io/component-base v0.31.3 // indirect k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect diff --git a/go.sum b/go.sum index 9b20aa5c3..aafa1470d 100644 --- a/go.sum +++ b/go.sum @@ -606,26 +606,26 @@ gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.31.2 h1:3wLBbL5Uom/8Zy98GRPXpJ254nEFpl+hwndmk9RwmL0= -k8s.io/api v0.31.2/go.mod h1:bWmGvrGPssSK1ljmLzd3pwCQ9MgoTsRCuK35u6SygUk= -k8s.io/apiextensions-apiserver v0.31.2 h1:W8EwUb8+WXBLu56ser5IudT2cOho0gAKeTOnywBLxd0= -k8s.io/apiextensions-apiserver v0.31.2/go.mod h1:i+Geh+nGCJEGiCGR3MlBDkS7koHIIKWVfWeRFiOsUcM= -k8s.io/apimachinery v0.31.2 h1:i4vUt2hPK56W6mlT7Ry+AO8eEsyxMD1U44NR22CLTYw= -k8s.io/apimachinery v0.31.2/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= -k8s.io/apiserver v0.31.2 h1:VUzOEUGRCDi6kX1OyQ801m4A7AUPglpsmGvdsekmcI4= -k8s.io/apiserver v0.31.2/go.mod h1:o3nKZR7lPlJqkU5I3Ove+Zx3JuoFjQobGX1Gctw6XuE= -k8s.io/cli-runtime v0.31.2 h1:7FQt4C4Xnqx8V1GJqymInK0FFsoC+fAZtbLqgXYVOLQ= -k8s.io/cli-runtime v0.31.2/go.mod h1:XROyicf+G7rQ6FQJMbeDV9jqxzkWXTYD6Uxd15noe0Q= -k8s.io/client-go v0.31.2 h1:Y2F4dxU5d3AQj+ybwSMqQnpZH9F30//1ObxOKlTI9yc= -k8s.io/client-go v0.31.2/go.mod h1:NPa74jSVR/+eez2dFsEIHNa+3o09vtNaWwWwb1qSxSs= -k8s.io/component-base v0.31.2 h1:Z1J1LIaC0AV+nzcPRFqfK09af6bZ4D1nAOpWsy9owlA= -k8s.io/component-base v0.31.2/go.mod h1:9PeyyFN/drHjtJZMCTkSpQJS3U9OXORnHQqMLDz0sUQ= +k8s.io/api v0.31.3 h1:umzm5o8lFbdN/hIXbrK9oRpOproJO62CV1zqxXrLgk8= +k8s.io/api v0.31.3/go.mod h1:UJrkIp9pnMOI9K2nlL6vwpxRzzEX5sWgn8kGQe92kCE= +k8s.io/apiextensions-apiserver v0.31.3 h1:+GFGj2qFiU7rGCsA5o+p/rul1OQIq6oYpQw4+u+nciE= +k8s.io/apiextensions-apiserver v0.31.3/go.mod h1:2DSpFhUZZJmn/cr/RweH1cEVVbzFw9YBu4T+U3mf1e4= +k8s.io/apimachinery v0.31.3 h1:6l0WhcYgasZ/wk9ktLq5vLaoXJJr5ts6lkaQzgeYPq4= +k8s.io/apimachinery v0.31.3/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= +k8s.io/apiserver v0.31.3 h1:+1oHTtCB+OheqFEz375D0IlzHZ5VeQKX1KGXnx+TTuY= +k8s.io/apiserver v0.31.3/go.mod h1:PrxVbebxrxQPFhJk4powDISIROkNMKHibTg9lTRQ0Qg= +k8s.io/cli-runtime v0.31.3 h1:fEQD9Xokir78y7pVK/fCJN090/iYNrLHpFbGU4ul9TI= +k8s.io/cli-runtime v0.31.3/go.mod h1:Q2jkyTpl+f6AtodQvgDI8io3jrfr+Z0LyQBPJJ2Btq8= +k8s.io/client-go v0.31.3 h1:CAlZuM+PH2cm+86LOBemaJI/lQ5linJ6UFxKX/SoG+4= +k8s.io/client-go v0.31.3/go.mod h1:2CgjPUTpv3fE5dNygAr2NcM8nhHzXvxB8KL5gYc3kJs= +k8s.io/component-base v0.31.3 h1:DMCXXVx546Rfvhj+3cOm2EUxhS+EyztH423j+8sOwhQ= +k8s.io/component-base v0.31.3/go.mod h1:xME6BHfUOafRgT0rGVBGl7TuSg8Z9/deT7qq6w7qjIU= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/kubectl v0.31.2 h1:gTxbvRkMBwvTSAlobiTVqsH6S8Aa1aGyBcu5xYLsn8M= -k8s.io/kubectl v0.31.2/go.mod h1:EyASYVU6PY+032RrTh5ahtSOMgoDRIux9V1JLKtG5xM= +k8s.io/kubectl v0.31.3 h1:3r111pCjPsvnR98oLLxDMwAeM6OPGmPty6gSKaLTQes= +k8s.io/kubectl v0.31.3/go.mod h1:lhMECDCbJN8He12qcKqs2QfmVo9Pue30geovBVpH5fs= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= From 54a75093c1295d4c668311214b0a00362dff63b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 20:01:20 +0000 Subject: [PATCH 043/206] Bump golang.org/x/crypto from 0.29.0 to 0.30.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.29.0 to 0.30.0. - [Commits](https://github.com/golang/crypto/compare/v0.29.0...v0.30.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 92cfd2a94..726da1957 100644 --- a/go.mod +++ b/go.mod @@ -34,9 +34,9 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/crypto v0.29.0 - golang.org/x/term v0.26.0 - golang.org/x/text v0.20.0 + golang.org/x/crypto v0.30.0 + golang.org/x/term v0.27.0 + golang.org/x/text v0.21.0 k8s.io/api v0.31.3 k8s.io/apiextensions-apiserver v0.31.3 k8s.io/apimachinery v0.31.3 @@ -168,8 +168,8 @@ require ( golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.29.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.9.0 // indirect - golang.org/x/sys v0.27.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.28.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect diff --git a/go.sum b/go.sum index aafa1470d..c6a620c64 100644 --- a/go.sum +++ b/go.sum @@ -451,8 +451,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= +golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -498,8 +498,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -522,8 +522,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -532,8 +532,8 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= -golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU= -golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= @@ -541,8 +541,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From 2cdc77a2efdf06f26efee4cbfae707469a1ea8fe Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 6 Dec 2024 09:33:41 -0500 Subject: [PATCH 044/206] Dependabot update `dev-v3` branch go modules Signed-off-by: George Jenkins --- .github/dependabot.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c9702f2cd..0bd0731c3 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,7 +1,24 @@ version: 2 updates: + - # Keep dev-v3 branch dependencies up to date, while Helm v3 is within support + package-ecosystem: "gomod" + target_branch: "dev-v3" + directory: "/" + schedule: + interval: "daily" + groups: + k8s.io: + patterns: + - "k8s.io/api" + - "k8s.io/apiextensions-apiserver" + - "k8s.io/apimachinery" + - "k8s.io/apiserver" + - "k8s.io/cli-runtime" + - "k8s.io/client-go" + - "k8s.io/kubectl" - package-ecosystem: "gomod" + target_branch: "main" directory: "/" schedule: interval: "daily" @@ -16,6 +33,7 @@ updates: - "k8s.io/client-go" - "k8s.io/kubectl" - package-ecosystem: "github-actions" + target_branch: "main" directory: "/" schedule: interval: "daily" From 4e5b7f89bcd8e3350d5c84b99e57a502be32f610 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 21:56:23 +0000 Subject: [PATCH 045/206] Bump github.com/cyphar/filepath-securejoin from 0.3.4 to 0.3.5 Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.3.4 to 0.3.5. - [Release notes](https://github.com/cyphar/filepath-securejoin/releases) - [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md) - [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.3.4...v0.3.5) --- updated-dependencies: - dependency-name: github.com/cyphar/filepath-securejoin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 726da1957..940192c28 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/Masterminds/vcs v1.13.3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.24 - github.com/cyphar/filepath-securejoin v0.3.4 + github.com/cyphar/filepath-securejoin v0.3.5 github.com/distribution/distribution/v3 v3.0.0-rc.1 github.com/evanphx/json-patch v5.9.0+incompatible github.com/foxcpp/go-mockdns v1.1.0 diff --git a/go.sum b/go.sum index c6a620c64..de9fff090 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.3.4 h1:VBWugsJh2ZxJmLFSM06/0qzQyiQX2Qs0ViKrUAcqdZ8= -github.com/cyphar/filepath-securejoin v0.3.4/go.mod h1:8s/MCNJREmFK0H02MF6Ihv1nakJe4L/w3WZLHNkvlYM= +github.com/cyphar/filepath-securejoin v0.3.5 h1:L81NHjquoQmcPgXcttUS9qTSR/+bXry6pbSINQGpjj4= +github.com/cyphar/filepath-securejoin v0.3.5/go.mod h1:edhVd3c6OXKjUmSrVa/tGJRS9joFTxlslFCAyaxigkE= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= From 569f62e58b2d97ac0a295e5a399a170af3c31eec Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Tue, 10 Dec 2024 10:40:37 -0700 Subject: [PATCH 046/206] chore: fix problems with latest lint Signed-off-by: Terry Howe --- cmd/helm/history.go | 15 ++++----------- cmd/helm/plugin_uninstall.go | 2 +- cmd/helm/plugin_update.go | 2 +- cmd/helm/repo_index_test.go | 6 +++--- cmd/helm/status.go | 2 +- cmd/helm/template.go | 8 ++++---- internal/sympath/walk_test.go | 11 +++++------ pkg/action/hooks.go | 2 +- pkg/action/install.go | 10 +++++----- pkg/engine/engine.go | 4 ++-- pkg/kube/client.go | 2 +- pkg/kube/wait.go | 2 +- pkg/lint/rules/deprecations.go | 6 +++--- pkg/registry/util.go | 2 +- pkg/storage/storage.go | 10 +++++----- pkg/time/time.go | 6 +++--- 16 files changed, 41 insertions(+), 49 deletions(-) diff --git a/cmd/helm/history.go b/cmd/helm/history.go index 56383bfca..029e258e9 100644 --- a/cmd/helm/history.go +++ b/cmd/helm/history.go @@ -177,22 +177,15 @@ func formatAppVersion(c *chart.Chart) string { return c.AppVersion() } -func min(x, y int) int { - if x < y { - return x - } - return y -} - func compListRevisions(_ string, cfg *action.Configuration, releaseName string) ([]string, cobra.ShellCompDirective) { client := action.NewHistory(cfg) var revisions []string if hist, err := client.Run(releaseName); err == nil { - for _, release := range hist { - appVersion := fmt.Sprintf("App: %s", release.Chart.Metadata.AppVersion) - chartDesc := fmt.Sprintf("Chart: %s-%s", release.Chart.Metadata.Name, release.Chart.Metadata.Version) - revisions = append(revisions, fmt.Sprintf("%s\t%s, %s", strconv.Itoa(release.Version), appVersion, chartDesc)) + for _, version := range hist { + appVersion := fmt.Sprintf("App: %s", version.Chart.Metadata.AppVersion) + chartDesc := fmt.Sprintf("Chart: %s-%s", version.Chart.Metadata.Name, version.Chart.Metadata.Version) + revisions = append(revisions, fmt.Sprintf("%s\t%s, %s", strconv.Itoa(version.Version), appVersion, chartDesc)) } return revisions, cobra.ShellCompDirectiveNoFileComp } diff --git a/cmd/helm/plugin_uninstall.go b/cmd/helm/plugin_uninstall.go index 607baab2e..458a92cc8 100644 --- a/cmd/helm/plugin_uninstall.go +++ b/cmd/helm/plugin_uninstall.go @@ -78,7 +78,7 @@ func (o *pluginUninstallOptions) run(out io.Writer) error { } } if len(errorPlugins) > 0 { - return errors.Errorf(strings.Join(errorPlugins, "\n")) + return errors.New(strings.Join(errorPlugins, "\n")) } return nil } diff --git a/cmd/helm/plugin_update.go b/cmd/helm/plugin_update.go index 3f6d963fb..eb7505696 100644 --- a/cmd/helm/plugin_update.go +++ b/cmd/helm/plugin_update.go @@ -81,7 +81,7 @@ func (o *pluginUpdateOptions) run(out io.Writer) error { } } if len(errorPlugins) > 0 { - return errors.Errorf(strings.Join(errorPlugins, "\n")) + return errors.New(strings.Join(errorPlugins, "\n")) } return nil } diff --git a/cmd/helm/repo_index_test.go b/cmd/helm/repo_index_test.go index 554a3dadf..82e5d1cfe 100644 --- a/cmd/helm/repo_index_test.go +++ b/cmd/helm/repo_index_test.go @@ -162,9 +162,9 @@ func TestRepoIndexCmd(t *testing.T) { } } -func linkOrCopy(old, new string) error { - if err := os.Link(old, new); err != nil { - return copyFile(old, new) +func linkOrCopy(source, target string) error { + if err := os.Link(source, target); err != nil { + return copyFile(source, target) } return nil diff --git a/cmd/helm/status.go b/cmd/helm/status.go index 2bee5db44..747b2556b 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -140,7 +140,7 @@ func (s statusPrinter) WriteTable(out io.Writer) error { } _, _ = fmt.Fprintf(out, "DESCRIPTION: %s\n", s.release.Info.Description) - if s.release.Info.Resources != nil && len(s.release.Info.Resources) > 0 { + if len(s.release.Info.Resources) > 0 { buf := new(bytes.Buffer) printFlags := get.NewHumanPrintFlags() typePrinter, _ := printFlags.ToPrinter("") diff --git a/cmd/helm/template.go b/cmd/helm/template.go index ff6621a49..ccf537a0b 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -219,7 +219,7 @@ func isTestHook(h *release.Hook) bool { // bug introduced by #8156. As part of the todo to refactor renderResources // this duplicate code should be removed. It is added here so that the API // surface area is as minimally impacted as possible in fixing the issue. -func writeToFile(outputDir string, name string, data string, append bool) error { +func writeToFile(outputDir string, name string, data string, appendData bool) error { outfileName := strings.Join([]string{outputDir, name}, string(filepath.Separator)) err := ensureDirectoryForFile(outfileName) @@ -227,7 +227,7 @@ func writeToFile(outputDir string, name string, data string, append bool) error return err } - f, err := createOrOpenFile(outfileName, append) + f, err := createOrOpenFile(outfileName, appendData) if err != nil { return err } @@ -244,8 +244,8 @@ func writeToFile(outputDir string, name string, data string, append bool) error return nil } -func createOrOpenFile(filename string, append bool) (*os.File, error) { - if append { +func createOrOpenFile(filename string, appendData bool) (*os.File, error) { + if appendData { return os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600) } return os.Create(filename) diff --git a/internal/sympath/walk_test.go b/internal/sympath/walk_test.go index 04e0738b9..d4e2ceeaa 100644 --- a/internal/sympath/walk_test.go +++ b/internal/sympath/walk_test.go @@ -108,12 +108,12 @@ func checkMarks(t *testing.T, report bool) { } // Assumes that each node name is unique. Good enough for a test. -// If clear is true, any incoming error is cleared before return. The errors -// are always accumulated, though. -func mark(info os.FileInfo, err error, errors *[]error, clear bool) error { +// If clearIncomingError is true, any incoming error is cleared before +// return. The errors are always accumulated, though. +func mark(info os.FileInfo, err error, errors *[]error, clearIncomingError bool) error { if err != nil { *errors = append(*errors, err) - if clear { + if clearIncomingError { return nil } return err @@ -130,9 +130,8 @@ func mark(info os.FileInfo, err error, errors *[]error, clear bool) error { func TestWalk(t *testing.T) { makeTree(t) errors := make([]error, 0, 10) - clear := true markFn := func(_ string, info os.FileInfo, err error) error { - return mark(info, err, &errors, clear) + return mark(info, err, &errors, true) } // Expect no errors. err := Walk(tree.name, markFn) diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 4bffb6ae0..e1cbab5e1 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -44,7 +44,7 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, for _, h := range executingHooks { // Set default delete policy to before-hook-creation - if h.DeletePolicies == nil || len(h.DeletePolicies) == 0 { + if len(h.DeletePolicies) == 0 { // TODO(jlegrone): Only apply before-hook-creation delete policy to run to completion // resources. For all other resource types update in place if a // resource with the same name already exists and is owned by the diff --git a/pkg/action/install.go b/pkg/action/install.go index 6cf5c8839..4d425d563 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -598,8 +598,8 @@ func (i *Install) replaceRelease(rel *release.Release) error { return i.recordRelease(last) } -// write the to /. controls if the file is created or content will be appended -func writeToFile(outputDir string, name string, data string, append bool) error { +// write the to /. controls if the file is created or content will be appended +func writeToFile(outputDir string, name string, data string, appendData bool) error { outfileName := strings.Join([]string{outputDir, name}, string(filepath.Separator)) err := ensureDirectoryForFile(outfileName) @@ -607,7 +607,7 @@ func writeToFile(outputDir string, name string, data string, append bool) error return err } - f, err := createOrOpenFile(outfileName, append) + f, err := createOrOpenFile(outfileName, appendData) if err != nil { return err } @@ -624,8 +624,8 @@ func writeToFile(outputDir string, name string, data string, append bool) error return nil } -func createOrOpenFile(filename string, append bool) (*os.File, error) { - if append { +func createOrOpenFile(filename string, appendData bool) (*os.File, error) { + if appendData { return os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600) } return os.Create(filename) diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index df3a600a3..d8ee313e1 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -206,7 +206,7 @@ func (e Engine) initFunMap(t *template.Template) { log.Printf("[INFO] Missing required value: %s", warn) return "", nil } - return val, errors.Errorf(warnWrap(warn)) + return val, errors.New(warnWrap(warn)) } else if _, ok := val.(string); ok { if val == "" { if e.LintMode { @@ -214,7 +214,7 @@ func (e Engine) initFunMap(t *template.Template) { log.Printf("[INFO] Missing required value: %s", warn) return "", nil } - return val, errors.Errorf(warnWrap(warn)) + return val, errors.New(warnWrap(warn)) } } return val, nil diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 4d93c91b9..5f16f2bfb 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -435,7 +435,7 @@ func (c *Client) Update(original, target ResourceList, force bool) (*Result, err case err != nil: return res, err case len(updateErrors) != 0: - return res, errors.Errorf(strings.Join(updateErrors, " && ")) + return res, errors.New(strings.Join(updateErrors, " && ")) } for _, info := range original.Difference(target) { diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 36110d0de..bdafc8255 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -153,7 +153,7 @@ func SelectorsForObject(object runtime.Object) (selector labels.Selector, err er case *batchv1.Job: selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector) case *corev1.Service: - if t.Spec.Selector == nil || len(t.Spec.Selector) == 0 { + if len(t.Spec.Selector) == 0 { return nil, fmt.Errorf("invalid service '%s': Service is defined without a selector", t.Name) } selector = labels.SelectorFromSet(t.Spec.Selector) diff --git a/pkg/lint/rules/deprecations.go b/pkg/lint/rules/deprecations.go index 90e7748a4..0f82a8827 100644 --- a/pkg/lint/rules/deprecations.go +++ b/pkg/lint/rules/deprecations.go @@ -73,16 +73,16 @@ func validateNoDeprecations(resource *K8sYamlStruct, kubeVersion *chartutil.Kube return err } - maj, err := strconv.Atoi(majorVersion) + major, err := strconv.Atoi(majorVersion) if err != nil { return err } - min, err := strconv.Atoi(minorVersion) + minor, err := strconv.Atoi(minorVersion) if err != nil { return err } - if !deprecation.IsDeprecated(runtimeObject, maj, min) { + if !deprecation.IsDeprecated(runtimeObject, major, minor) { return nil } gvk := fmt.Sprintf("%s %s", resource.APIVersion, resource.Kind) diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 727cdae03..4454105c9 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -208,7 +208,7 @@ func generateChartOCIAnnotations(meta *chart.Metadata, creationTime string) map[ chartOCIAnnotations = addToMap(chartOCIAnnotations, ocispec.AnnotationSource, meta.Sources[0]) } - if meta.Maintainers != nil && len(meta.Maintainers) > 0 { + if len(meta.Maintainers) > 0 { var maintainerSb strings.Builder for maintainerIdx, maintainer := range meta.Maintainers { diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index 0da0688fd..c57fce26c 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -161,15 +161,15 @@ func (s *Storage) History(name string) ([]*rspb.Release, error) { // // We allow max to be set explicitly so that calling functions can "make space" // for the new records they are going to write. -func (s *Storage) removeLeastRecent(name string, max int) error { - if max < 0 { +func (s *Storage) removeLeastRecent(name string, maximum int) error { + if maximum < 0 { return nil } h, err := s.History(name) if err != nil { return err } - if len(h) <= max { + if len(h) <= maximum { return nil } @@ -183,8 +183,8 @@ func (s *Storage) removeLeastRecent(name string, max int) error { var toDelete []*rspb.Release for _, rel := range h { - // once we have enough releases to delete to reach the max, stop - if len(h)-len(toDelete) == max { + // once we have enough releases to delete to reach the maximum, stop + if len(h)-len(toDelete) == maximum { break } if lastDeployed != nil { diff --git a/pkg/time/time.go b/pkg/time/time.go index 1abe8ae3d..13b1211e6 100644 --- a/pkg/time/time.go +++ b/pkg/time/time.go @@ -30,7 +30,7 @@ import ( var emptyString = `""` // Time is a convenience wrapper around stdlib time, but with different -// marshalling and unmarshaling for zero values +// marshalling and unmarshalling for zero values type Time struct { time.Time } @@ -70,8 +70,8 @@ func ParseInLocation(layout, value string, loc *time.Location) (Time, error) { return Time{Time: t}, err } -func Date(year int, month time.Month, day, hour, min, sec, nsec int, loc *time.Location) Time { - return Time{Time: time.Date(year, month, day, hour, min, sec, nsec, loc)} +func Date(year int, month time.Month, day, hour, minute, second, nanoSecond int, loc *time.Location) Time { + return Time{Time: time.Date(year, month, day, hour, minute, second, nanoSecond, loc)} } func Unix(sec int64, nsec int64) Time { return Time{Time: time.Unix(sec, nsec)} } From e6f829e6b61a2052adf35b35acef2543674f9a44 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Wed, 11 Dec 2024 14:15:58 +0000 Subject: [PATCH 047/206] Update CONTRIBUTING.md Co-authored-by: Terry Howe Signed-off-by: Evans Mungai --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 796c661bc..fb875c2ea 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -282,7 +282,7 @@ Documentation PRs should be made on the docs repo: Date: Wed, 11 Dec 2024 14:20:54 +0000 Subject: [PATCH 048/206] Update CONTRIBUTING.md Signed-off-by: Evans Mungai --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fb875c2ea..7b4254592 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -284,7 +284,7 @@ Small, ad-hoc changes/PRs to Helm which introduce user facing changes, which wou ### Profiling PRs -During development, you need to add automated tests where possible. There are a few `make test*` targets that you can use to execute your unit or integration tests. If your contribution requires profiling to check memory and/or CPU usage, you can use `--cpuprofile` and/or `--memprofile` global cli flags to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. +If your contribution requires profiling to check memory and/or CPU usage, you can use `--cpuprofile` and/or `--memprofile` global cli flags to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. Example analysing collected profiling data ``` From d4175cfcff087420675451b177ef610a760802e4 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Wed, 11 Dec 2024 15:17:30 +0000 Subject: [PATCH 049/206] Move pprof paths to HELM_PPROF env variable Signed-off-by: Evans Mungai --- CONTRIBUTING.md | 4 +- cmd/helm/profiling.go | 44 ++++++++++++++++++--- cmd/helm/profiling_test.go | 79 ++++++++++++++++++++++++++++++++++++++ cmd/helm/root.go | 14 +------ 4 files changed, 122 insertions(+), 19 deletions(-) create mode 100644 cmd/helm/profiling_test.go diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7b4254592..0a90054d9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -284,11 +284,11 @@ Small, ad-hoc changes/PRs to Helm which introduce user facing changes, which wou ### Profiling PRs -If your contribution requires profiling to check memory and/or CPU usage, you can use `--cpuprofile` and/or `--memprofile` global cli flags to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. +If your contribution requires profiling to check memory and/or CPU usage, you can set `HELM_PPROF=cpu=/path/to/cpu.prof,mem=/path/to/mem.prof` environment variable to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. Example analysing collected profiling data ``` -helm show all bitnami/nginx --memprofile mem.prof --cpuprofile cpu.prof +HELM_PPROF=cpu=/path/to/cpu.prof,mem=/path/to/mem.prof helm show all bitnami/nginx # Visualize graphs. You need to have installed graphviz package in your system go tool pprof -http=":8000" cpu.prof diff --git a/cmd/helm/profiling.go b/cmd/helm/profiling.go index e1ca62853..e231a3e0a 100644 --- a/cmd/helm/profiling.go +++ b/cmd/helm/profiling.go @@ -19,6 +19,8 @@ package main import ( "fmt" "os" + "path" + "path/filepath" "runtime" "runtime/pprof" "strings" @@ -28,11 +30,17 @@ import ( var ( cpuProfileFile *os.File + pprofPaths map[string]string ) +func init() { + pprofPaths = parsePProfPaths(os.Getenv("HELM_PPROF")) +} + // startProfiling starts profiling CPU usage -func startProfiling(cpuprofile string) error { - if cpuprofile != "" { +func startProfiling() error { + cpuprofile, ok := pprofPaths["cpu"] + if ok && cpuprofile != "" { var err error cpuProfileFile, err = os.Create(cpuprofile) if err != nil { @@ -48,8 +56,8 @@ func startProfiling(cpuprofile string) error { } // stopProfiling stops profiling CPU and memory usage and writes the results to -// the files specified by --cpuprofile and --memprofile flags respectively. -func stopProfiling(memprofile string) error { +// the files specified by HELM_PPROF=cpu=/path/to/cpu.prof,mem=/path/to/mem.prof +func stopProfiling() error { errs := []string{} // Stop CPU profiling if it was started @@ -62,7 +70,8 @@ func stopProfiling(memprofile string) error { cpuProfileFile = nil } - if memprofile != "" { + memprofile, ok := pprofPaths["mem"] + if ok && memprofile != "" { f, err := os.Create(memprofile) if err != nil { errs = append(errs, err.Error()) @@ -88,3 +97,28 @@ func addProfilingFlags(cmd *cobra.Command) { cmd.PersistentFlags().String("cpuprofile", "", "File path to write cpu profiling data") cmd.PersistentFlags().String("memprofile", "", "File path to write memory profiling data") } + +func parsePProfPaths(env string) map[string]string { + // Initial empty paths + m := map[string]string{} + for _, pprofs := range strings.Split(env, ",") { + // Is of the format mem=/path/to/memprof + tuple := strings.Split(pprofs, "=") + if len(tuple) != 2 { + continue + } + if tuple[0] != "cpu" && tuple[0] != "mem" { + continue + } + + s, err := filepath.Abs(path.Clean(tuple[1])) + if err != nil { + continue + } + if !strings.HasSuffix(s, string(filepath.Separator)) { + // Ensure its not a directory + m[tuple[0]] = s + } + } + return m +} diff --git a/cmd/helm/profiling_test.go b/cmd/helm/profiling_test.go new file mode 100644 index 000000000..65928edbb --- /dev/null +++ b/cmd/helm/profiling_test.go @@ -0,0 +1,79 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "os" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func Test_parsePProfPaths(t *testing.T) { + cwd, err := os.Getwd() + require.NoError(t, err) + + tests := []struct { + name string + env string + want map[string]string + }{ + { + name: "no env", + env: "", + want: map[string]string{}, + }, + { + name: "single path", + env: "cpu=cpu.pprof", + want: map[string]string{ + "cpu": cwd + "/cpu.pprof", + }, + }, + { + name: "mem and cpu paths", + env: "cpu=cpu.pprof,mem=mem.pprof", + want: map[string]string{ + "cpu": cwd + "/cpu.pprof", + "mem": cwd + "/mem.pprof", + }, + }, + { + name: "extra commas", + env: "cpu=cpu.pprof,mem=mem.pprof,", + want: map[string]string{ + "cpu": cwd + "/cpu.pprof", + "mem": cwd + "/mem.pprof", + }, + }, + { + name: "unknown keys", + env: "cpu=cpu.pprof,mem=mem.pprof,foo=bar", + want: map[string]string{ + "cpu": cwd + "/cpu.pprof", + "mem": cwd + "/mem.pprof", + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got := parsePProfPaths(tt.env) + assert.Equalf(t, tt.want, got, "parsePProfPaths() = %v, want %v", got, tt.want) + }) + } +} diff --git a/cmd/helm/root.go b/cmd/helm/root.go index 50cb87e37..5f739d248 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -96,22 +96,12 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string Long: globalUsage, SilenceUsage: true, PersistentPreRun: func(cmd *cobra.Command, _ []string) { - cpuprof, err := cmd.Flags().GetString("cpuprofile") - if err != nil { - log.Printf("Warning: Failed to get cpuprofile flag: %v", err) - } - - if err := startProfiling(cpuprof); err != nil { + if err := startProfiling(); err != nil { log.Printf("Warning: Failed to start profiling: %v", err) } }, PersistentPostRun: func(cmd *cobra.Command, _ []string) { - memprof, err := cmd.Flags().GetString("memprofile") - if err != nil { - log.Printf("Warning: Failed to get memprofile flag: %v", err) - } - - if err := stopProfiling(memprof); err != nil { + if err := stopProfiling(); err != nil { log.Printf("Warning: Failed to stop profiling: %v", err) } }, From 5b1eb784cb2a1a90ecf4710b3088d2312c3875d4 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Wed, 11 Dec 2024 15:20:45 +0000 Subject: [PATCH 050/206] Fix linter warning Signed-off-by: Evans Mungai --- cmd/helm/root.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/helm/root.go b/cmd/helm/root.go index 5f739d248..edc6376ae 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -95,12 +95,12 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string Short: "The Helm package manager for Kubernetes.", Long: globalUsage, SilenceUsage: true, - PersistentPreRun: func(cmd *cobra.Command, _ []string) { + PersistentPreRun: func(_ *cobra.Command, _ []string) { if err := startProfiling(); err != nil { log.Printf("Warning: Failed to start profiling: %v", err) } }, - PersistentPostRun: func(cmd *cobra.Command, _ []string) { + PersistentPostRun: func(_ *cobra.Command, _ []string) { if err := stopProfiling(); err != nil { log.Printf("Warning: Failed to stop profiling: %v", err) } From 2541e465c402002a973682918ac8ee14bc8d7784 Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Wed, 11 Dec 2024 20:56:52 +0530 Subject: [PATCH 051/206] fix upgrade Signed-off-by: Mayank Shah --- cmd/helm/upgrade.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 1fe793a92..75788459b 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -151,6 +151,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { instClient.Labels = client.Labels instClient.EnableDNS = client.EnableDNS instClient.HideSecret = client.HideSecret + instClient.TakeOwnership = client.TakeOwnership if isReleaseUninstalled(versions) { instClient.Replace = true From 08487907d93814ad9e9bbcd651a40f88c394a1b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 21:20:11 +0000 Subject: [PATCH 052/206] Bump actions/setup-go from 5.1.0 to 5.2.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.1.0 to 5.2.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed...3041bf56c941b39c61721a86cd11f3bb1338122a) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build-test.yml | 2 +- .github/workflows/golangci-lint.yml | 2 +- .github/workflows/govulncheck.yml | 2 +- .github/workflows/release.yml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 19ada6df6..e6e347ecd 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -19,7 +19,7 @@ jobs: - name: Checkout source code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2 - name: Setup Go - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # pin@5.1.0 + uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: go-version: '1.22' check-latest: true diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 746f7c306..14fe0d414 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2 - name: Setup Go - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # pin@5.1.0 + uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: go-version: '1.22' check-latest: true diff --git a/.github/workflows/govulncheck.yml b/.github/workflows/govulncheck.yml index ea9d09526..73efbb3f9 100644 --- a/.github/workflows/govulncheck.yml +++ b/.github/workflows/govulncheck.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup Go - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # pin@5.1.0 + uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: go-version: '1.22' check-latest: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9d51acef7..b9fe27aa3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: fetch-depth: 0 - name: Setup Go - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # pin@5.1.0 + uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: go-version: '1.22.7' @@ -81,7 +81,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2 - name: Setup Go - uses: actions/setup-go@41dfa10bad2bb2ae585af6ee5bb4d7d973ad74ed # pin@5.1.0 + uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: go-version: '1.22' check-latest: true From 194d989b235cf6f5821f068ce5ba81c55eb6be2f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 21:41:40 +0000 Subject: [PATCH 053/206] Bump golang.org/x/crypto from 0.30.0 to 0.31.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.30.0 to 0.31.0. - [Commits](https://github.com/golang/crypto/compare/v0.30.0...v0.31.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 940192c28..53b586982 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/crypto v0.30.0 + golang.org/x/crypto v0.31.0 golang.org/x/term v0.27.0 golang.org/x/text v0.21.0 k8s.io/api v0.31.3 diff --git a/go.sum b/go.sum index de9fff090..5b881028f 100644 --- a/go.sum +++ b/go.sum @@ -451,8 +451,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY= -golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= From b9d58a19f1fdb58da7cb84370e60bcd29cc534f6 Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Thu, 12 Dec 2024 21:45:07 +0530 Subject: [PATCH 054/206] fix test Signed-off-by: Mayank Shah --- cmd/helm/testdata/output/upgrade-and-take-ownership.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/helm/testdata/output/upgrade-and-take-ownership.txt b/cmd/helm/testdata/output/upgrade-and-take-ownership.txt index bea42db54..59267651f 100644 --- a/cmd/helm/testdata/output/upgrade-and-take-ownership.txt +++ b/cmd/helm/testdata/output/upgrade-and-take-ownership.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 3 +DESCRIPTION: Upgrade complete TEST SUITE: None From 6b8f541c0afdd9185849e74f74de7d0348240bb4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 21:38:46 +0000 Subject: [PATCH 055/206] Bump github.com/rubenv/sql-migrate from 1.7.0 to 1.7.1 Bumps [github.com/rubenv/sql-migrate](https://github.com/rubenv/sql-migrate) from 1.7.0 to 1.7.1. - [Commits](https://github.com/rubenv/sql-migrate/compare/v1.7.0...v1.7.1) --- updated-dependencies: - dependency-name: github.com/rubenv/sql-migrate dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 53b586982..9d27e2b1f 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/opencontainers/image-spec v1.1.0 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 - github.com/rubenv/sql-migrate v1.7.0 + github.com/rubenv/sql-migrate v1.7.1 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.5 diff --git a/go.sum b/go.sum index 5b881028f..654fc5178 100644 --- a/go.sum +++ b/go.sum @@ -350,8 +350,8 @@ github.com/redis/go-redis/v9 v9.1.0 h1:137FnGdk+EQdCbye1FW+qOEcY5S+SpY9T0Niuqvtf github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -github.com/rubenv/sql-migrate v1.7.0 h1:HtQq1xyTN2ISmQDggnh0c9U3JlP8apWh8YO2jzlXpTI= -github.com/rubenv/sql-migrate v1.7.0/go.mod h1:S4wtDEG1CKn+0ShpTtzWhFpHHI5PvCUtiGI+C+Z2THE= +github.com/rubenv/sql-migrate v1.7.1 h1:f/o0WgfO/GqNuVg+6801K/KW3WdDSupzSjDYODmiUq4= +github.com/rubenv/sql-migrate v1.7.1/go.mod h1:Ob2Psprc0/3ggbM6wCzyYVFFuc6FyZrb2AS+ezLDFb4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= From 22765a71d6591bcdb7bde178dd9c7d5ee819ac01 Mon Sep 17 00:00:00 2001 From: Payal Godhani Date: Thu, 12 Dec 2024 14:29:54 -0800 Subject: [PATCH 056/206] Adding Oracle to the adopters list -e Signed-off-by: Payal Godhani --- ADOPTERS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ADOPTERS.md b/ADOPTERS.md index f12dbb5cf..e5ee1e7a2 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -18,5 +18,6 @@ - [Syself](https://syself.com) - [Ville de Montreal](https://montreal.ca) - [Intercept](https://Intercept.cloud) +- [Oracle](www.oracle.com) _This file is part of the CNCF official documentation for projects._ From edf7b66ae92b16f84d86fb98bc1508d66be7bcfb Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Fri, 13 Dec 2024 10:25:04 +0530 Subject: [PATCH 057/206] fix test output Signed-off-by: Mayank Shah --- cmd/helm/testdata/output/install-and-take-ownership.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/helm/testdata/output/install-and-take-ownership.txt b/cmd/helm/testdata/output/install-and-take-ownership.txt index 51e626446..413329ae1 100644 --- a/cmd/helm/testdata/output/install-and-take-ownership.txt +++ b/cmd/helm/testdata/output/install-and-take-ownership.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None From e3e84343d256ef29b7aff5f6b6e6b4f41d101a64 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Sat, 14 Dec 2024 21:24:30 -0800 Subject: [PATCH 058/206] refactor: tlsutil use options pattern Signed-off-by: George Jenkins --- cmd/helm/root.go | 7 +- internal/tlsutil/cfg.go | 58 --------------- internal/tlsutil/tls.go | 118 +++++++++++++++++++++---------- internal/tlsutil/tls_test.go | 105 +++++++++++++++++++++++++++ internal/tlsutil/tlsutil_test.go | 114 ----------------------------- pkg/getter/httpgetter.go | 6 +- pkg/getter/httpgetter_test.go | 6 +- pkg/getter/ocigetter.go | 6 +- pkg/pusher/ocipusher.go | 6 +- pkg/registry/util.go | 6 +- pkg/registry/utils_test.go | 9 ++- pkg/repo/repotest/server.go | 6 +- 12 files changed, 229 insertions(+), 218 deletions(-) delete mode 100644 internal/tlsutil/cfg.go create mode 100644 internal/tlsutil/tls_test.go delete mode 100644 internal/tlsutil/tlsutil_test.go diff --git a/cmd/helm/root.go b/cmd/helm/root.go index 2ba8a882e..02d9b5404 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -297,7 +297,12 @@ func newDefaultRegistryClient(plainHTTP bool, username, password string) (*regis func newRegistryClientWithTLS( certFile, keyFile, caFile string, insecureSkipTLSverify bool, username, password string, ) (*registry.Client, error) { - tlsConf, err := tlsutil.NewClientTLS(certFile, keyFile, caFile, insecureSkipTLSverify) + tlsConf, err := tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(insecureSkipTLSverify), + tlsutil.WithCertKeyPairFiles(certFile, keyFile), + tlsutil.WithCAFile(caFile), + ) + if err != nil { return nil, fmt.Errorf("can't create TLS config for client: %w", err) } diff --git a/internal/tlsutil/cfg.go b/internal/tlsutil/cfg.go deleted file mode 100644 index 8b9d4329f..000000000 --- a/internal/tlsutil/cfg.go +++ /dev/null @@ -1,58 +0,0 @@ -/* -Copyright The Helm Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package tlsutil - -import ( - "crypto/tls" - "crypto/x509" - "os" - - "github.com/pkg/errors" -) - -// Options represents configurable options used to create client and server TLS configurations. -type Options struct { - CaCertFile string - // If either the KeyFile or CertFile is empty, ClientConfig() will not load them. - KeyFile string - CertFile string - // Client-only options - InsecureSkipVerify bool -} - -// ClientConfig returns a TLS configuration for use by a Helm client. -func ClientConfig(opts Options) (cfg *tls.Config, err error) { - var cert *tls.Certificate - var pool *x509.CertPool - - if opts.CertFile != "" || opts.KeyFile != "" { - if cert, err = CertFromFilePair(opts.CertFile, opts.KeyFile); err != nil { - if os.IsNotExist(err) { - return nil, errors.Wrapf(err, "could not load x509 key pair (cert: %q, key: %q)", opts.CertFile, opts.KeyFile) - } - return nil, errors.Wrapf(err, "could not read x509 key pair (cert: %q, key: %q)", opts.CertFile, opts.KeyFile) - } - } - if !opts.InsecureSkipVerify && opts.CaCertFile != "" { - if pool, err = CertPoolFromFile(opts.CaCertFile); err != nil { - return nil, err - } - } - - cfg = &tls.Config{InsecureSkipVerify: opts.InsecureSkipVerify, Certificates: []tls.Certificate{*cert}, RootCAs: pool} - return cfg, nil -} diff --git a/internal/tlsutil/tls.go b/internal/tlsutil/tls.go index 7cd1dace9..645834c29 100644 --- a/internal/tlsutil/tls.go +++ b/internal/tlsutil/tls.go @@ -19,60 +19,104 @@ package tlsutil import ( "crypto/tls" "crypto/x509" + "fmt" "os" - "github.com/pkg/errors" + "errors" ) -// NewClientTLS returns tls.Config appropriate for client auth. -func NewClientTLS(certFile, keyFile, caFile string, insecureSkipTLSverify bool) (*tls.Config, error) { - config := tls.Config{ - InsecureSkipVerify: insecureSkipTLSverify, +type TLSConfigOptions struct { + insecureSkipTLSverify bool + certPEMBlock, keyPEMBlock []byte + caPEMBlock []byte +} + +type TLSConfigOption func(options *TLSConfigOptions) error + +func WithInsecureSkipVerify(insecureSkipTLSverify bool) TLSConfigOption { + return func(options *TLSConfigOptions) error { + options.insecureSkipTLSverify = insecureSkipTLSverify + + return nil } +} + +func WithCertKeyPairFiles(certFile, keyFile string) TLSConfigOption { + return func(options *TLSConfigOptions) error { + if certFile == "" && keyFile == "" { + return nil + } - if certFile != "" && keyFile != "" { - cert, err := CertFromFilePair(certFile, keyFile) + certPEMBlock, err := os.ReadFile(certFile) if err != nil { - return nil, err + return fmt.Errorf("unable to read cert file: %q: %w", certFile, err) } - config.Certificates = []tls.Certificate{*cert} - } - if caFile != "" { - cp, err := CertPoolFromFile(caFile) + keyPEMBlock, err := os.ReadFile(keyFile) if err != nil { - return nil, err + return fmt.Errorf("unable to read key file: %q: %w", keyFile, err) } - config.RootCAs = cp + + options.certPEMBlock = certPEMBlock + options.keyPEMBlock = keyPEMBlock + + return nil } +} - return &config, nil +func WithCAFile(caFile string) TLSConfigOption { + return func(options *TLSConfigOptions) error { + if caFile == "" { + return nil + } + + caPEMBlock, err := os.ReadFile(caFile) + if err != nil { + return fmt.Errorf("can't read CA file: %q: %w", caFile, err) + } + + options.caPEMBlock = caPEMBlock + + return nil + } } -// CertPoolFromFile returns an x509.CertPool containing the certificates -// in the given PEM-encoded file. -// Returns an error if the file could not be read, a certificate could not -// be parsed, or if the file does not contain any certificates -func CertPoolFromFile(filename string) (*x509.CertPool, error) { - b, err := os.ReadFile(filename) - if err != nil { - return nil, errors.Errorf("can't read CA file: %v", filename) +func NewTLSConfig(options ...TLSConfigOption) (*tls.Config, error) { + to := TLSConfigOptions{} + + errs := []error{} + for _, option := range options { + err := option(&to) + if err != nil { + errs = append(errs, err) + } } - cp := x509.NewCertPool() - if !cp.AppendCertsFromPEM(b) { - return nil, errors.Errorf("failed to append certificates from file: %s", filename) + + if len(errs) > 0 { + return nil, errors.Join(errs...) } - return cp, nil -} -// CertFromFilePair returns a tls.Certificate containing the -// certificates public/private key pair from a pair of given PEM-encoded files. -// Returns an error if the file could not be read, a certificate could not -// be parsed, or if the file does not contain any certificates -func CertFromFilePair(certFile, keyFile string) (*tls.Certificate, error) { - cert, err := tls.LoadX509KeyPair(certFile, keyFile) - if err != nil { - return nil, errors.Wrapf(err, "can't load key pair from cert %s and key %s", certFile, keyFile) + config := tls.Config{ + InsecureSkipVerify: to.insecureSkipTLSverify, } - return &cert, err + + if len(to.certPEMBlock) > 0 && len(to.keyPEMBlock) > 0 { + cert, err := tls.X509KeyPair(to.certPEMBlock, to.keyPEMBlock) + if err != nil { + return nil, fmt.Errorf("unable to load cert from key pair: %w", err) + } + + config.Certificates = []tls.Certificate{cert} + } + + if len(to.caPEMBlock) > 0 { + cp := x509.NewCertPool() + if !cp.AppendCertsFromPEM(to.caPEMBlock) { + return nil, fmt.Errorf("failed to append certificates from pem block") + } + + config.RootCAs = cp + } + + return &config, nil } diff --git a/internal/tlsutil/tls_test.go b/internal/tlsutil/tls_test.go new file mode 100644 index 000000000..eb1cc183e --- /dev/null +++ b/internal/tlsutil/tls_test.go @@ -0,0 +1,105 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package tlsutil + +import ( + "path/filepath" + "testing" +) + +const tlsTestDir = "../../testdata" + +const ( + testCaCertFile = "rootca.crt" + testCertFile = "crt.pem" + testKeyFile = "key.pem" +) + +func testfile(t *testing.T, file string) (path string) { + var err error + if path, err = filepath.Abs(filepath.Join(tlsTestDir, file)); err != nil { + t.Fatalf("error getting absolute path to test file %q: %v", file, err) + } + return path +} + +func TestNewTLSConfig(t *testing.T) { + certFile := testfile(t, testCertFile) + keyFile := testfile(t, testKeyFile) + caCertFile := testfile(t, testCaCertFile) + insecureSkipTLSverify := false + + { + cfg, err := NewTLSConfig( + WithInsecureSkipVerify(insecureSkipTLSverify), + WithCertKeyPairFiles(certFile, keyFile), + WithCAFile(caCertFile), + ) + if err != nil { + t.Error(err) + } + + if got := len(cfg.Certificates); got != 1 { + t.Fatalf("expecting 1 client certificates, got %d", got) + } + if cfg.InsecureSkipVerify { + t.Fatalf("insecure skip verify mismatch, expecting false") + } + if cfg.RootCAs == nil { + t.Fatalf("mismatch tls RootCAs, expecting non-nil") + } + } + { + cfg, err := NewTLSConfig( + WithInsecureSkipVerify(insecureSkipTLSverify), + WithCAFile(caCertFile), + ) + if err != nil { + t.Error(err) + } + + if got := len(cfg.Certificates); got != 0 { + t.Fatalf("expecting 0 client certificates, got %d", got) + } + if cfg.InsecureSkipVerify { + t.Fatalf("insecure skip verify mismatch, expecting false") + } + if cfg.RootCAs == nil { + t.Fatalf("mismatch tls RootCAs, expecting non-nil") + } + } + + { + cfg, err := NewTLSConfig( + WithInsecureSkipVerify(insecureSkipTLSverify), + WithCertKeyPairFiles(certFile, keyFile), + ) + if err != nil { + t.Error(err) + } + + if got := len(cfg.Certificates); got != 1 { + t.Fatalf("expecting 1 client certificates, got %d", got) + } + if cfg.InsecureSkipVerify { + t.Fatalf("insecure skip verify mismatch, expecting false") + } + if cfg.RootCAs != nil { + t.Fatalf("mismatch tls RootCAs, expecting nil") + } + } +} diff --git a/internal/tlsutil/tlsutil_test.go b/internal/tlsutil/tlsutil_test.go deleted file mode 100644 index e31a873d3..000000000 --- a/internal/tlsutil/tlsutil_test.go +++ /dev/null @@ -1,114 +0,0 @@ -/* -Copyright The Helm Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package tlsutil - -import ( - "path/filepath" - "testing" -) - -const tlsTestDir = "../../testdata" - -const ( - testCaCertFile = "rootca.crt" - testCertFile = "crt.pem" - testKeyFile = "key.pem" -) - -func TestClientConfig(t *testing.T) { - opts := Options{ - CaCertFile: testfile(t, testCaCertFile), - CertFile: testfile(t, testCertFile), - KeyFile: testfile(t, testKeyFile), - InsecureSkipVerify: false, - } - - cfg, err := ClientConfig(opts) - if err != nil { - t.Fatalf("error building tls client config: %v", err) - } - - if got := len(cfg.Certificates); got != 1 { - t.Fatalf("expecting 1 client certificates, got %d", got) - } - if cfg.InsecureSkipVerify { - t.Fatalf("insecure skip verify mismatch, expecting false") - } - if cfg.RootCAs == nil { - t.Fatalf("mismatch tls RootCAs, expecting non-nil") - } -} - -func testfile(t *testing.T, file string) (path string) { - var err error - if path, err = filepath.Abs(filepath.Join(tlsTestDir, file)); err != nil { - t.Fatalf("error getting absolute path to test file %q: %v", file, err) - } - return path -} - -func TestNewClientTLS(t *testing.T) { - certFile := testfile(t, testCertFile) - keyFile := testfile(t, testKeyFile) - caCertFile := testfile(t, testCaCertFile) - insecureSkipTLSverify := false - - cfg, err := NewClientTLS(certFile, keyFile, caCertFile, insecureSkipTLSverify) - if err != nil { - t.Error(err) - } - - if got := len(cfg.Certificates); got != 1 { - t.Fatalf("expecting 1 client certificates, got %d", got) - } - if cfg.InsecureSkipVerify { - t.Fatalf("insecure skip verify mismatch, expecting false") - } - if cfg.RootCAs == nil { - t.Fatalf("mismatch tls RootCAs, expecting non-nil") - } - - cfg, err = NewClientTLS("", "", caCertFile, insecureSkipTLSverify) - if err != nil { - t.Error(err) - } - - if got := len(cfg.Certificates); got != 0 { - t.Fatalf("expecting 0 client certificates, got %d", got) - } - if cfg.InsecureSkipVerify { - t.Fatalf("insecure skip verify mismatch, expecting false") - } - if cfg.RootCAs == nil { - t.Fatalf("mismatch tls RootCAs, expecting non-nil") - } - - cfg, err = NewClientTLS(certFile, keyFile, "", insecureSkipTLSverify) - if err != nil { - t.Error(err) - } - - if got := len(cfg.Certificates); got != 1 { - t.Fatalf("expecting 1 client certificates, got %d", got) - } - if cfg.InsecureSkipVerify { - t.Fatalf("insecure skip verify mismatch, expecting false") - } - if cfg.RootCAs != nil { - t.Fatalf("mismatch tls RootCAs, expecting nil") - } -} diff --git a/pkg/getter/httpgetter.go b/pkg/getter/httpgetter.go index df3dcd910..6931e2031 100644 --- a/pkg/getter/httpgetter.go +++ b/pkg/getter/httpgetter.go @@ -128,7 +128,11 @@ func (g *HTTPGetter) httpClient() (*http.Client, error) { }) if (g.opts.certFile != "" && g.opts.keyFile != "") || g.opts.caFile != "" || g.opts.insecureSkipVerifyTLS { - tlsConf, err := tlsutil.NewClientTLS(g.opts.certFile, g.opts.keyFile, g.opts.caFile, g.opts.insecureSkipVerifyTLS) + tlsConf, err := tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(g.opts.insecureSkipVerifyTLS), + tlsutil.WithCertKeyPairFiles(g.opts.certFile, g.opts.keyFile), + tlsutil.WithCAFile(g.opts.caFile), + ) if err != nil { return nil, errors.Wrap(err, "can't create TLS config for client") } diff --git a/pkg/getter/httpgetter_test.go b/pkg/getter/httpgetter_test.go index 2c38c6154..c38966bff 100644 --- a/pkg/getter/httpgetter_test.go +++ b/pkg/getter/httpgetter_test.go @@ -311,7 +311,11 @@ func TestDownloadTLS(t *testing.T) { insecureSkipTLSverify := false tlsSrv := httptest.NewUnstartedServer(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) {})) - tlsConf, err := tlsutil.NewClientTLS(pub, priv, ca, insecureSkipTLSverify) + tlsConf, err := tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(insecureSkipTLSverify), + tlsutil.WithCertKeyPairFiles(pub, priv), + tlsutil.WithCAFile(ca), + ) if err != nil { t.Fatal(errors.Wrap(err, "can't create TLS config for client")) } diff --git a/pkg/getter/ocigetter.go b/pkg/getter/ocigetter.go index 0547cdcbb..c6e80dc65 100644 --- a/pkg/getter/ocigetter.go +++ b/pkg/getter/ocigetter.go @@ -124,7 +124,11 @@ func (g *OCIGetter) newRegistryClient() (*registry.Client, error) { }) if (g.opts.certFile != "" && g.opts.keyFile != "") || g.opts.caFile != "" || g.opts.insecureSkipVerifyTLS { - tlsConf, err := tlsutil.NewClientTLS(g.opts.certFile, g.opts.keyFile, g.opts.caFile, g.opts.insecureSkipVerifyTLS) + tlsConf, err := tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(g.opts.insecureSkipVerifyTLS), + tlsutil.WithCertKeyPairFiles(g.opts.certFile, g.opts.keyFile), + tlsutil.WithCAFile(g.opts.caFile), + ) if err != nil { return nil, fmt.Errorf("can't create TLS config for client: %w", err) } diff --git a/pkg/pusher/ocipusher.go b/pkg/pusher/ocipusher.go index 33296aadd..dad498432 100644 --- a/pkg/pusher/ocipusher.go +++ b/pkg/pusher/ocipusher.go @@ -111,7 +111,11 @@ func NewOCIPusher(ops ...Option) (Pusher, error) { func (pusher *OCIPusher) newRegistryClient() (*registry.Client, error) { if (pusher.opts.certFile != "" && pusher.opts.keyFile != "") || pusher.opts.caFile != "" || pusher.opts.insecureSkipTLSverify { - tlsConf, err := tlsutil.NewClientTLS(pusher.opts.certFile, pusher.opts.keyFile, pusher.opts.caFile, pusher.opts.insecureSkipTLSverify) + tlsConf, err := tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(pusher.opts.insecureSkipTLSverify), + tlsutil.WithCertKeyPairFiles(pusher.opts.certFile, pusher.opts.keyFile), + tlsutil.WithCAFile(pusher.opts.caFile), + ) if err != nil { return nil, errors.Wrap(err, "can't create TLS config for client") } diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 727cdae03..c1a0b4194 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -142,7 +142,11 @@ func parseReference(raw string) (registry.Reference, error) { // NewRegistryClientWithTLS is a helper function to create a new registry client with TLS enabled. func NewRegistryClientWithTLS(out io.Writer, certFile, keyFile, caFile string, insecureSkipTLSverify bool, registryConfig string, debug bool) (*Client, error) { - tlsConf, err := tlsutil.NewClientTLS(certFile, keyFile, caFile, insecureSkipTLSverify) + tlsConf, err := tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(insecureSkipTLSverify), + tlsutil.WithCertKeyPairFiles(certFile, keyFile), + tlsutil.WithCAFile(caFile), + ) if err != nil { return nil, fmt.Errorf("can't create TLS config for client: %s", err) } diff --git a/pkg/registry/utils_test.go b/pkg/registry/utils_test.go index ee78ea76f..e10e5b500 100644 --- a/pkg/registry/utils_test.go +++ b/pkg/registry/utils_test.go @@ -95,9 +95,14 @@ func setup(suite *TestSuite, tlsEnabled, insecure bool) *registry.Registry { if tlsEnabled { var tlsConf *tls.Config if insecure { - tlsConf, err = tlsutil.NewClientTLS("", "", "", true) + tlsConf, err = tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(true), + ) } else { - tlsConf, err = tlsutil.NewClientTLS(tlsCert, tlsKey, tlsCA, false) + tlsConf, err = tlsutil.NewTLSConfig( + tlsutil.WithCertKeyPairFiles(tlsCert, tlsKey), + tlsutil.WithCAFile(tlsCA), + ) } httpClient := &http.Client{ Transport: &http.Transport{ diff --git a/pkg/repo/repotest/server.go b/pkg/repo/repotest/server.go index 4a86707cf..cc7494d54 100644 --- a/pkg/repo/repotest/server.go +++ b/pkg/repo/repotest/server.go @@ -367,7 +367,11 @@ func (s *Server) StartTLS() { } http.FileServer(http.Dir(s.Root())).ServeHTTP(w, r) })) - tlsConf, err := tlsutil.NewClientTLS(pub, priv, ca, insecure) + tlsConf, err := tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(insecure), + tlsutil.WithCertKeyPairFiles(pub, priv), + tlsutil.WithCAFile(ca), + ) if err != nil { panic(err) } From 34cd8341c37600906a2de26e2f507d3444c7c637 Mon Sep 17 00:00:00 2001 From: Payal Godhani Date: Mon, 16 Dec 2024 21:07:56 -0800 Subject: [PATCH 059/206] Add Contextual Error Messages to RunWithContext -e Signed-off-by: Payal Godhani --- pkg/action/install.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/action/install.go b/pkg/action/install.go index 6cf5c8839..a735da804 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -233,21 +233,25 @@ func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals ma // Check reachability of cluster unless in client-only mode (e.g. `helm template` without `--validate`) if !i.ClientOnly { if err := i.cfg.KubeClient.IsReachable(); err != nil { - return nil, err + i.cfg.Log(fmt.Sprintf("ERROR: Cluster reachability check failed: %v", err)) + return nil, errors.Wrap(err, "cluster reachability check failed") } } // HideSecret must be used with dry run. Otherwise, return an error. if !i.isDryRun() && i.HideSecret { - return nil, errors.New("Hiding Kubernetes secrets requires a dry-run mode") + i.cfg.Log("ERROR: Hiding Kubernetes secrets requires a dry-run mode") + return nil, errors.New("hiding Kubernetes secrets requires a dry-run mode") } if err := i.availableName(); err != nil { - return nil, err + i.cfg.Log(fmt.Sprintf("ERROR: Release name check failed: %v", err)) + return nil, errors.Wrap(err, "release name check failed") } if err := chartutil.ProcessDependenciesWithMerge(chrt, vals); err != nil { - return nil, err + i.cfg.Log(fmt.Sprintf("ERROR: Processing chart dependencies failed: %v", err)) + return nil, errors.Wrap(err, "chart dependencies processing failed") } var interactWithRemote bool From 5b18f525edfaeed7c08553999cdd1ff58c11b809 Mon Sep 17 00:00:00 2001 From: Payal Godhani Date: Mon, 16 Dec 2024 21:27:20 -0800 Subject: [PATCH 060/206] Fixing a typo -e Signed-off-by: Payal Godhani --- pkg/action/install.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/action/install.go b/pkg/action/install.go index a735da804..0f92c6bd8 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -241,7 +241,7 @@ func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals ma // HideSecret must be used with dry run. Otherwise, return an error. if !i.isDryRun() && i.HideSecret { i.cfg.Log("ERROR: Hiding Kubernetes secrets requires a dry-run mode") - return nil, errors.New("hiding Kubernetes secrets requires a dry-run mode") + return nil, errors.New("Hiding Kubernetes secrets requires a dry-run mode") } if err := i.availableName(); err != nil { From 079405583737fb59df90c1701b6e485658a90421 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 21:32:05 +0000 Subject: [PATCH 061/206] Bump github.com/cyphar/filepath-securejoin from 0.3.5 to 0.3.6 Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.3.5 to 0.3.6. - [Release notes](https://github.com/cyphar/filepath-securejoin/releases) - [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md) - [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.3.5...v0.3.6) --- updated-dependencies: - dependency-name: github.com/cyphar/filepath-securejoin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9d27e2b1f..fbb67f5c2 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/Masterminds/vcs v1.13.3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.24 - github.com/cyphar/filepath-securejoin v0.3.5 + github.com/cyphar/filepath-securejoin v0.3.6 github.com/distribution/distribution/v3 v3.0.0-rc.1 github.com/evanphx/json-patch v5.9.0+incompatible github.com/foxcpp/go-mockdns v1.1.0 diff --git a/go.sum b/go.sum index 654fc5178..3b54ddd44 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.3.5 h1:L81NHjquoQmcPgXcttUS9qTSR/+bXry6pbSINQGpjj4= -github.com/cyphar/filepath-securejoin v0.3.5/go.mod h1:edhVd3c6OXKjUmSrVa/tGJRS9joFTxlslFCAyaxigkE= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= From 5727f56a967418f9254f3604789547b5d7509260 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Thu, 19 Dec 2024 10:27:38 -0500 Subject: [PATCH 062/206] Update to Go 1.23 Multiple changes were made to pass linting. Some Go built-in names are being used for variables (e.g., min). This happens in the Go source itself including the Go standard library and is not always a bad practice. To handle allowing some built-in names to be used the linter config is updated to allow (via opt-in) some names to pass. This allows us to still check for re-use of Go built-in names and opt-in to any new uses. There were also several cases where a value was checked for nil before checking its length when this is already handled by len() or the types default value. These were cleaned up. The license validation was updated because it was checking everything in the .git directory including all remote content that was local. The previous vendor directory was from a time prior to Go modules when Helm handled dependencies differently. It was no longer needed. Signed-off-by: Matt Farina --- .github/workflows/build-test.yml | 2 +- .github/workflows/golangci-lint.yml | 2 +- .github/workflows/govulncheck.yml | 2 +- .github/workflows/release.yml | 4 ++-- .golangci.yml | 20 ++++++++++++++++++++ cmd/helm/plugin_uninstall.go | 2 +- cmd/helm/plugin_update.go | 2 +- cmd/helm/status.go | 2 +- go.mod | 2 +- pkg/action/hooks.go | 2 +- pkg/engine/engine.go | 4 ++-- pkg/kube/client.go | 2 +- pkg/kube/wait.go | 2 +- pkg/registry/util.go | 2 +- scripts/validate-license.sh | 2 +- 15 files changed, 36 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index e6e347ecd..30ed80a34 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -21,7 +21,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22' + go-version: '1.23' check-latest: true - name: Test source headers are present run: make test-source-headers diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 14fe0d414..c0792ba0a 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22' + go-version: '1.23' check-latest: true - name: golangci-lint uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 #pin@6.1.1 diff --git a/.github/workflows/govulncheck.yml b/.github/workflows/govulncheck.yml index 73efbb3f9..a2f3bfd4b 100644 --- a/.github/workflows/govulncheck.yml +++ b/.github/workflows/govulncheck.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22' + go-version: '1.23' check-latest: true - name: govulncheck uses: golang/govulncheck-action@b625fbe08f3bccbe446d94fbf87fcc875a4f50ee # pin@1.0.4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b9fe27aa3..146baddd9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22.7' + go-version: '1.23' - name: Run unit tests run: make test-coverage @@ -83,7 +83,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22' + go-version: '1.23' check-latest: true - name: Run unit tests diff --git a/.golangci.yml b/.golangci.yml index 3cf50a0d4..90b84d77d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -23,3 +23,23 @@ linters-settings: local-prefixes: helm.sh/helm/v3 dupl: threshold: 400 +issues: + exclude-rules: + # Helm, and the Go source code itself, sometimes uses these names outside their built-in + # functions. As the Go source code has re-used these names it's ok for Helm to do the same. + # Linting will look for redefinition of built-in id's but we opt-in to the ones we choose to use. + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function append" + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function clear" + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function max" + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function min" + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function new" \ No newline at end of file diff --git a/cmd/helm/plugin_uninstall.go b/cmd/helm/plugin_uninstall.go index 607baab2e..458a92cc8 100644 --- a/cmd/helm/plugin_uninstall.go +++ b/cmd/helm/plugin_uninstall.go @@ -78,7 +78,7 @@ func (o *pluginUninstallOptions) run(out io.Writer) error { } } if len(errorPlugins) > 0 { - return errors.Errorf(strings.Join(errorPlugins, "\n")) + return errors.New(strings.Join(errorPlugins, "\n")) } return nil } diff --git a/cmd/helm/plugin_update.go b/cmd/helm/plugin_update.go index 3f6d963fb..eb7505696 100644 --- a/cmd/helm/plugin_update.go +++ b/cmd/helm/plugin_update.go @@ -81,7 +81,7 @@ func (o *pluginUpdateOptions) run(out io.Writer) error { } } if len(errorPlugins) > 0 { - return errors.Errorf(strings.Join(errorPlugins, "\n")) + return errors.New(strings.Join(errorPlugins, "\n")) } return nil } diff --git a/cmd/helm/status.go b/cmd/helm/status.go index 2bee5db44..747b2556b 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -140,7 +140,7 @@ func (s statusPrinter) WriteTable(out io.Writer) error { } _, _ = fmt.Fprintf(out, "DESCRIPTION: %s\n", s.release.Info.Description) - if s.release.Info.Resources != nil && len(s.release.Info.Resources) > 0 { + if len(s.release.Info.Resources) > 0 { buf := new(bytes.Buffer) printFlags := get.NewHumanPrintFlags() typePrinter, _ := printFlags.ToPrinter("") diff --git a/go.mod b/go.mod index fbb67f5c2..997385df2 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module helm.sh/helm/v3 -go 1.22.0 +go 1.23.0 require ( github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 4bffb6ae0..e1cbab5e1 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -44,7 +44,7 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, for _, h := range executingHooks { // Set default delete policy to before-hook-creation - if h.DeletePolicies == nil || len(h.DeletePolicies) == 0 { + if len(h.DeletePolicies) == 0 { // TODO(jlegrone): Only apply before-hook-creation delete policy to run to completion // resources. For all other resource types update in place if a // resource with the same name already exists and is owned by the diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index df3a600a3..d8ee313e1 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -206,7 +206,7 @@ func (e Engine) initFunMap(t *template.Template) { log.Printf("[INFO] Missing required value: %s", warn) return "", nil } - return val, errors.Errorf(warnWrap(warn)) + return val, errors.New(warnWrap(warn)) } else if _, ok := val.(string); ok { if val == "" { if e.LintMode { @@ -214,7 +214,7 @@ func (e Engine) initFunMap(t *template.Template) { log.Printf("[INFO] Missing required value: %s", warn) return "", nil } - return val, errors.Errorf(warnWrap(warn)) + return val, errors.New(warnWrap(warn)) } } return val, nil diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 4d93c91b9..5f16f2bfb 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -435,7 +435,7 @@ func (c *Client) Update(original, target ResourceList, force bool) (*Result, err case err != nil: return res, err case len(updateErrors) != 0: - return res, errors.Errorf(strings.Join(updateErrors, " && ")) + return res, errors.New(strings.Join(updateErrors, " && ")) } for _, info := range original.Difference(target) { diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 36110d0de..bdafc8255 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -153,7 +153,7 @@ func SelectorsForObject(object runtime.Object) (selector labels.Selector, err er case *batchv1.Job: selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector) case *corev1.Service: - if t.Spec.Selector == nil || len(t.Spec.Selector) == 0 { + if len(t.Spec.Selector) == 0 { return nil, fmt.Errorf("invalid service '%s': Service is defined without a selector", t.Name) } selector = labels.SelectorFromSet(t.Spec.Selector) diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 727cdae03..4454105c9 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -208,7 +208,7 @@ func generateChartOCIAnnotations(meta *chart.Metadata, creationTime string) map[ chartOCIAnnotations = addToMap(chartOCIAnnotations, ocispec.AnnotationSource, meta.Sources[0]) } - if meta.Maintainers != nil && len(meta.Maintainers) > 0 { + if len(meta.Maintainers) > 0 { var maintainerSb strings.Builder for maintainerIdx, maintainer := range meta.Maintainers { diff --git a/scripts/validate-license.sh b/scripts/validate-license.sh index dc247436f..f67812ca5 100755 --- a/scripts/validate-license.sh +++ b/scripts/validate-license.sh @@ -19,7 +19,7 @@ IFS=$'\n\t' find_files() { find . -not \( \ \( \ - -wholename './vendor' \ + -wholename './.git' \ -o -wholename '*testdata*' \ -o -wholename '*third_party*' \ \) -prune \ From 66f84e510e12edbc02ad0e102ca17ad3edfd53e3 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Thu, 19 Dec 2024 13:45:12 -0500 Subject: [PATCH 063/206] Update golangci-lint version Signed-off-by: Matt Farina --- .github/workflows/golangci-lint.yml | 2 +- .golangci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index c0792ba0a..2a54d0337 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -23,4 +23,4 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 #pin@6.1.1 with: - version: v1.58 + version: v1.62 diff --git a/.golangci.yml b/.golangci.yml index 90b84d77d..a3e5119d4 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -42,4 +42,4 @@ issues: text: "redefines-builtin-id: redefinition of the built-in function min" - linters: - revive - text: "redefines-builtin-id: redefinition of the built-in function new" \ No newline at end of file + text: "redefines-builtin-id: redefinition of the built-in function new" From 80cbd61008398e16aa902bd0636a1a00b8ec0a5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 19:17:40 +0000 Subject: [PATCH 064/206] Bump github.com/distribution/distribution/v3 Bumps [github.com/distribution/distribution/v3](https://github.com/distribution/distribution) from 3.0.0-rc.1 to 3.0.0-rc.2. - [Release notes](https://github.com/distribution/distribution/releases) - [Commits](https://github.com/distribution/distribution/compare/v3.0.0-rc.1...v3.0.0-rc.2) --- updated-dependencies: - dependency-name: github.com/distribution/distribution/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 61 ++++++++++++++-------------- go.sum | 126 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 95 insertions(+), 92 deletions(-) diff --git a/go.mod b/go.mod index 997385df2..2df3c5b31 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.24 github.com/cyphar/filepath-securejoin v0.3.6 - github.com/distribution/distribution/v3 v3.0.0-rc.1 + github.com/distribution/distribution/v3 v3.0.0-rc.2 github.com/evanphx/json-patch v5.9.0+incompatible github.com/foxcpp/go-mockdns v1.1.0 github.com/gobwas/glob v0.2.3 @@ -99,7 +99,7 @@ require ( github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect @@ -108,7 +108,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -129,9 +129,9 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5 // indirect github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 // indirect @@ -143,39 +143,40 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xlab/treeprint v1.2.0 // indirect - go.opentelemetry.io/contrib/bridges/prometheus v0.54.0 // indirect - go.opentelemetry.io/contrib/exporters/autoexport v0.54.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect - go.opentelemetry.io/otel v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.51.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0 // indirect - go.opentelemetry.io/otel/log v0.5.0 // indirect - go.opentelemetry.io/otel/metric v1.29.0 // indirect - go.opentelemetry.io/otel/sdk v1.29.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.5.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect - go.opentelemetry.io/otel/trace v1.29.0 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.57.0 // indirect + go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 // indirect + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.54.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 // indirect + go.opentelemetry.io/otel/log v0.8.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/sdk v1.32.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.8.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.2 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/grpc v1.68.0 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 3b54ddd44..f08a70dbf 100644 --- a/go.sum +++ b/go.sum @@ -86,8 +86,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/distribution/distribution/v3 v3.0.0-rc.1 h1:6M4ewmPBUhF7wtQ8URLOQ1W/PQuVKiD1u8ymwLDUGqQ= -github.com/distribution/distribution/v3 v3.0.0-rc.1/go.mod h1:tFjaPDeHCrLg28e4feBIy27cP+qmrc/mvkl6MFIfVi4= +github.com/distribution/distribution/v3 v3.0.0-rc.2 h1:tTrzntanYMbd20SyvdeR83Ya1l/aBwDcA3NCIpmwemc= +github.com/distribution/distribution/v3 v3.0.0-rc.2/go.mod h1:H2zIRRXS20ylnv2HTuKILAWuANjuA60GB7MLOsQag7Y= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbTO1lpcGSkU= @@ -203,8 +203,8 @@ github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -232,8 +232,8 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -325,8 +325,8 @@ github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjz github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= -github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -334,8 +334,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= +github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= @@ -348,8 +348,8 @@ github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnA github.com/redis/go-redis/v9 v9.0.5/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk= github.com/redis/go-redis/v9 v9.1.0 h1:137FnGdk+EQdCbye1FW+qOEcY5S+SpY9T0NiuqvtfMY= github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rubenv/sql-migrate v1.7.1 h1:f/o0WgfO/GqNuVg+6801K/KW3WdDSupzSjDYODmiUq4= github.com/rubenv/sql-migrate v1.7.1/go.mod h1:Ob2Psprc0/3ggbM6wCzyYVFFuc6FyZrb2AS+ezLDFb4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -397,46 +397,48 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/bridges/prometheus v0.54.0 h1:WWL67oxtknNVMb70lJXxXruf8UyK/a9hmIE1XO3Uedg= -go.opentelemetry.io/contrib/bridges/prometheus v0.54.0/go.mod h1:LqNcnXmyULp8ertk4hUTVtSUvKXj4h1Mx7gUCSSr/q0= -go.opentelemetry.io/contrib/exporters/autoexport v0.54.0 h1:dTmcmVm4J54IRPGm5oVjLci1uYat4UDea84E2tyBaAk= -go.opentelemetry.io/contrib/exporters/autoexport v0.54.0/go.mod h1:zPp5Fwpq2Hc7xMtVttg6GhZMcfTESjVbY9ONw2o/Dc4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= -go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= -go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0 h1:4d++HQ+Ihdl+53zSjtsCUFDmNMju2FC9qFkUlTxPLqo= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0/go.mod h1:mQX5dTO3Mh5ZF7bPKDkt5c/7C41u/SiDr9XgTpzXXn8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0 h1:k6fQVDQexDE+3jG2SfCQjnHS7OamcP73YMoxEVq5B6k= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0/go.mod h1:t4BrYLHU450Zo9fnydWlIuswB1bm7rM8havDpWOJeDo= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0 h1:xvhQxJ/C9+RTnAj5DpTg7LSM1vbbMTiXt7e9hsfqHNw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0/go.mod h1:Fcvs2Bz1jkDM+Wf5/ozBGmi3tQ/c9zPKLnsipnfhGAo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 h1:dIIDULZJpgdiHz5tXrTgKIMLkus6jEFa7x5SOKcyR7E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0/go.mod h1:jlRVBe7+Z1wyxFSUs48L6OBQZ5JwH2Hg/Vbl+t9rAgI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0 h1:nSiV3s7wiCam610XcLbYOmMfJxB9gO4uK3Xgv5gmTgg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0/go.mod h1:hKn/e/Nmd19/x1gvIHwtOwVWM+VhuITSWip3JUDghj0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 h1:JAv0Jwtl01UFiyWZEMiJZBiTlv5A50zNs8lsthXqIio= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0/go.mod h1:QNKLmUEAq2QUbPQUfvw4fmv0bgbK7UlOSFCnXyfvSNc= -go.opentelemetry.io/otel/exporters/prometheus v0.51.0 h1:G7uexXb/K3T+T9fNLCCKncweEtNEBMTO+46hKX5EdKw= -go.opentelemetry.io/otel/exporters/prometheus v0.51.0/go.mod h1:v0mFe5Kk7woIh938mrZBJBmENYquyA0IICrlYm4Y0t4= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0 h1:ThVXnEsdwNcxdBO+r96ci1xbF+PgNjwlk457VNuJODo= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0/go.mod h1:rHWcSmC4q2h3gje/yOq6sAOaq8+UHxN/Ru3BbmDXOfY= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0 h1:X3ZjNp36/WlkSYx0ul2jw4PtbNEDDeLskw3VPsrpYM0= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0/go.mod h1:2uL/xnOXh0CHOBFCWXz5u1A4GXLiW+0IQIzVbeOEQ0U= -go.opentelemetry.io/otel/log v0.5.0 h1:x1Pr6Y3gnXgl1iFBwtGy1W/mnzENoK0w0ZoaeOI3i30= -go.opentelemetry.io/otel/log v0.5.0/go.mod h1:NU/ozXeGuOR5/mjCRXYbTC00NFJ3NYuraV/7O78F0rE= -go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= -go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= -go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= -go.opentelemetry.io/otel/sdk/log v0.5.0 h1:A+9lSjlZGxkQOr7QSBJcuyyYBw79CufQ69saiJLey7o= -go.opentelemetry.io/otel/sdk/log v0.5.0/go.mod h1:zjxIW7sw1IHolZL2KlSAtrUi8JHttoeiQy43Yl3WuVQ= -go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= -go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= -go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= -go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0 h1:UW0+QyeyBVhn+COBec3nGhfnFe5lwB0ic1JBVjzhk0w= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0/go.mod h1:ppciCHRLsyCio54qbzQv0E4Jyth/fLWDTJYfvWpcSVk= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 h1:DheMAlT6POBP+gh8RUH19EOTnQIor5QE0uSRPtzCpSw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0/go.mod h1:wZcGmeVO9nzP67aYSLDqXNWK87EZWhi7JWj1v7ZXf94= +go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= +go.opentelemetry.io/otel/exporters/prometheus v0.54.0 h1:rFwzp68QMgtzu9PgP3jm9XaMICI6TsofWWPcBDKwlsU= +go.opentelemetry.io/otel/exporters/prometheus v0.54.0/go.mod h1:QyjcV9qDP6VeK5qPyKETvNjmaaEc7+gqjh4SS0ZYzDU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0 h1:CHXNXwfKWfzS65yrlB2PVds1IBZcdsX8Vepy9of0iRU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0/go.mod h1:zKU4zUgKiaRxrdovSS2amdM5gOc59slmo/zJwGX+YBg= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 h1:SZmDnHcgp3zwlPBS2JX2urGYe/jBKEIT6ZedHRUyCz8= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0/go.mod h1:fdWW0HtZJ7+jNpTKUR0GpMEDP69nR8YBJQxNiVCE3jk= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 h1:cC2yDI3IQd0Udsux7Qmq8ToKAx1XCilTQECZ0KDZyTw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0/go.mod h1:2PD5Ex6z8CFzDbTdOlwyNIUywRr1DN0ospafJM1wJ+s= +go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= +go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= +go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= +go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= @@ -482,8 +484,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -568,15 +570,15 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= +google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -585,8 +587,8 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From eee046f70415e1bfd10dc87a2f4335969852bf37 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 20 Dec 2024 11:45:12 -0800 Subject: [PATCH 065/206] Fix `dependabot.yml` Signed-off-by: George Jenkins --- .github/dependabot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0bd0731c3..0133fd8f4 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,7 +3,7 @@ version: 2 updates: - # Keep dev-v3 branch dependencies up to date, while Helm v3 is within support package-ecosystem: "gomod" - target_branch: "dev-v3" + target-branch: "dev-v3" directory: "/" schedule: interval: "daily" @@ -18,7 +18,7 @@ updates: - "k8s.io/client-go" - "k8s.io/kubectl" - package-ecosystem: "gomod" - target_branch: "main" + target-branch: "main" directory: "/" schedule: interval: "daily" @@ -33,7 +33,7 @@ updates: - "k8s.io/client-go" - "k8s.io/kubectl" - package-ecosystem: "github-actions" - target_branch: "main" + target-branch: "main" directory: "/" schedule: interval: "daily" From 9ff8e6fecef809d3bbe411cae974efe035e17d7c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:29:27 +0000 Subject: [PATCH 066/206] Bump github.com/distribution/distribution/v3 Bumps [github.com/distribution/distribution/v3](https://github.com/distribution/distribution) from 3.0.0-rc.1 to 3.0.0-rc.2. - [Release notes](https://github.com/distribution/distribution/releases) - [Commits](https://github.com/distribution/distribution/compare/v3.0.0-rc.1...v3.0.0-rc.2) --- updated-dependencies: - dependency-name: github.com/distribution/distribution/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 61 ++++++++++++++-------------- go.sum | 126 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 95 insertions(+), 92 deletions(-) diff --git a/go.mod b/go.mod index 997385df2..2df3c5b31 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.24 github.com/cyphar/filepath-securejoin v0.3.6 - github.com/distribution/distribution/v3 v3.0.0-rc.1 + github.com/distribution/distribution/v3 v3.0.0-rc.2 github.com/evanphx/json-patch v5.9.0+incompatible github.com/foxcpp/go-mockdns v1.1.0 github.com/gobwas/glob v0.2.3 @@ -99,7 +99,7 @@ require ( github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect @@ -108,7 +108,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -129,9 +129,9 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5 // indirect github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 // indirect @@ -143,39 +143,40 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xlab/treeprint v1.2.0 // indirect - go.opentelemetry.io/contrib/bridges/prometheus v0.54.0 // indirect - go.opentelemetry.io/contrib/exporters/autoexport v0.54.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect - go.opentelemetry.io/otel v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.51.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0 // indirect - go.opentelemetry.io/otel/log v0.5.0 // indirect - go.opentelemetry.io/otel/metric v1.29.0 // indirect - go.opentelemetry.io/otel/sdk v1.29.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.5.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect - go.opentelemetry.io/otel/trace v1.29.0 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.57.0 // indirect + go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 // indirect + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.54.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 // indirect + go.opentelemetry.io/otel/log v0.8.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/sdk v1.32.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.8.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.2 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/grpc v1.68.0 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 3b54ddd44..f08a70dbf 100644 --- a/go.sum +++ b/go.sum @@ -86,8 +86,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/distribution/distribution/v3 v3.0.0-rc.1 h1:6M4ewmPBUhF7wtQ8URLOQ1W/PQuVKiD1u8ymwLDUGqQ= -github.com/distribution/distribution/v3 v3.0.0-rc.1/go.mod h1:tFjaPDeHCrLg28e4feBIy27cP+qmrc/mvkl6MFIfVi4= +github.com/distribution/distribution/v3 v3.0.0-rc.2 h1:tTrzntanYMbd20SyvdeR83Ya1l/aBwDcA3NCIpmwemc= +github.com/distribution/distribution/v3 v3.0.0-rc.2/go.mod h1:H2zIRRXS20ylnv2HTuKILAWuANjuA60GB7MLOsQag7Y= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbTO1lpcGSkU= @@ -203,8 +203,8 @@ github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -232,8 +232,8 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -325,8 +325,8 @@ github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjz github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= -github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -334,8 +334,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= +github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= @@ -348,8 +348,8 @@ github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnA github.com/redis/go-redis/v9 v9.0.5/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk= github.com/redis/go-redis/v9 v9.1.0 h1:137FnGdk+EQdCbye1FW+qOEcY5S+SpY9T0NiuqvtfMY= github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rubenv/sql-migrate v1.7.1 h1:f/o0WgfO/GqNuVg+6801K/KW3WdDSupzSjDYODmiUq4= github.com/rubenv/sql-migrate v1.7.1/go.mod h1:Ob2Psprc0/3ggbM6wCzyYVFFuc6FyZrb2AS+ezLDFb4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -397,46 +397,48 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/bridges/prometheus v0.54.0 h1:WWL67oxtknNVMb70lJXxXruf8UyK/a9hmIE1XO3Uedg= -go.opentelemetry.io/contrib/bridges/prometheus v0.54.0/go.mod h1:LqNcnXmyULp8ertk4hUTVtSUvKXj4h1Mx7gUCSSr/q0= -go.opentelemetry.io/contrib/exporters/autoexport v0.54.0 h1:dTmcmVm4J54IRPGm5oVjLci1uYat4UDea84E2tyBaAk= -go.opentelemetry.io/contrib/exporters/autoexport v0.54.0/go.mod h1:zPp5Fwpq2Hc7xMtVttg6GhZMcfTESjVbY9ONw2o/Dc4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= -go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= -go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0 h1:4d++HQ+Ihdl+53zSjtsCUFDmNMju2FC9qFkUlTxPLqo= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0/go.mod h1:mQX5dTO3Mh5ZF7bPKDkt5c/7C41u/SiDr9XgTpzXXn8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0 h1:k6fQVDQexDE+3jG2SfCQjnHS7OamcP73YMoxEVq5B6k= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0/go.mod h1:t4BrYLHU450Zo9fnydWlIuswB1bm7rM8havDpWOJeDo= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0 h1:xvhQxJ/C9+RTnAj5DpTg7LSM1vbbMTiXt7e9hsfqHNw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0/go.mod h1:Fcvs2Bz1jkDM+Wf5/ozBGmi3tQ/c9zPKLnsipnfhGAo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 h1:dIIDULZJpgdiHz5tXrTgKIMLkus6jEFa7x5SOKcyR7E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0/go.mod h1:jlRVBe7+Z1wyxFSUs48L6OBQZ5JwH2Hg/Vbl+t9rAgI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0 h1:nSiV3s7wiCam610XcLbYOmMfJxB9gO4uK3Xgv5gmTgg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0/go.mod h1:hKn/e/Nmd19/x1gvIHwtOwVWM+VhuITSWip3JUDghj0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 h1:JAv0Jwtl01UFiyWZEMiJZBiTlv5A50zNs8lsthXqIio= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0/go.mod h1:QNKLmUEAq2QUbPQUfvw4fmv0bgbK7UlOSFCnXyfvSNc= -go.opentelemetry.io/otel/exporters/prometheus v0.51.0 h1:G7uexXb/K3T+T9fNLCCKncweEtNEBMTO+46hKX5EdKw= -go.opentelemetry.io/otel/exporters/prometheus v0.51.0/go.mod h1:v0mFe5Kk7woIh938mrZBJBmENYquyA0IICrlYm4Y0t4= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0 h1:ThVXnEsdwNcxdBO+r96ci1xbF+PgNjwlk457VNuJODo= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0/go.mod h1:rHWcSmC4q2h3gje/yOq6sAOaq8+UHxN/Ru3BbmDXOfY= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0 h1:X3ZjNp36/WlkSYx0ul2jw4PtbNEDDeLskw3VPsrpYM0= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0/go.mod h1:2uL/xnOXh0CHOBFCWXz5u1A4GXLiW+0IQIzVbeOEQ0U= -go.opentelemetry.io/otel/log v0.5.0 h1:x1Pr6Y3gnXgl1iFBwtGy1W/mnzENoK0w0ZoaeOI3i30= -go.opentelemetry.io/otel/log v0.5.0/go.mod h1:NU/ozXeGuOR5/mjCRXYbTC00NFJ3NYuraV/7O78F0rE= -go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= -go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= -go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= -go.opentelemetry.io/otel/sdk/log v0.5.0 h1:A+9lSjlZGxkQOr7QSBJcuyyYBw79CufQ69saiJLey7o= -go.opentelemetry.io/otel/sdk/log v0.5.0/go.mod h1:zjxIW7sw1IHolZL2KlSAtrUi8JHttoeiQy43Yl3WuVQ= -go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= -go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= -go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= -go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0 h1:UW0+QyeyBVhn+COBec3nGhfnFe5lwB0ic1JBVjzhk0w= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0/go.mod h1:ppciCHRLsyCio54qbzQv0E4Jyth/fLWDTJYfvWpcSVk= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 h1:DheMAlT6POBP+gh8RUH19EOTnQIor5QE0uSRPtzCpSw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0/go.mod h1:wZcGmeVO9nzP67aYSLDqXNWK87EZWhi7JWj1v7ZXf94= +go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= +go.opentelemetry.io/otel/exporters/prometheus v0.54.0 h1:rFwzp68QMgtzu9PgP3jm9XaMICI6TsofWWPcBDKwlsU= +go.opentelemetry.io/otel/exporters/prometheus v0.54.0/go.mod h1:QyjcV9qDP6VeK5qPyKETvNjmaaEc7+gqjh4SS0ZYzDU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0 h1:CHXNXwfKWfzS65yrlB2PVds1IBZcdsX8Vepy9of0iRU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0/go.mod h1:zKU4zUgKiaRxrdovSS2amdM5gOc59slmo/zJwGX+YBg= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 h1:SZmDnHcgp3zwlPBS2JX2urGYe/jBKEIT6ZedHRUyCz8= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0/go.mod h1:fdWW0HtZJ7+jNpTKUR0GpMEDP69nR8YBJQxNiVCE3jk= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 h1:cC2yDI3IQd0Udsux7Qmq8ToKAx1XCilTQECZ0KDZyTw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0/go.mod h1:2PD5Ex6z8CFzDbTdOlwyNIUywRr1DN0ospafJM1wJ+s= +go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= +go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= +go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= +go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= @@ -482,8 +484,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -568,15 +570,15 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= +google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -585,8 +587,8 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From bfada38aa9e1cf85e3a8241a3060a0dd8423d24f Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 20 Dec 2024 12:54:39 -0800 Subject: [PATCH 067/206] Run `build-test` action on `dev-v3` branch Signed-off-by: George Jenkins --- .github/workflows/build-test.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 30ed80a34..cd43f3ff3 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -7,9 +7,10 @@ on: - "release-**" pull_request: branches: - - main + - "main" + - "dev-v3" -permissions: +permissions: contents: read jobs: From 223629411903c26e12a53b72ce4e58b3364bdabd Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Thu, 26 Dec 2024 16:33:51 -0500 Subject: [PATCH 068/206] Updating to helm.sh/helm/v4 Since Helm is going through breaking changes with Helm v4, the version path to Helm needs to be updated. Signed-off-by: Matt Farina --- .golangci.yml | 2 +- Makefile | 16 +++++------ README.md | 7 ++++- cmd/helm/completion.go | 2 +- cmd/helm/completion_test.go | 4 +-- cmd/helm/create.go | 8 +++--- cmd/helm/create_test.go | 10 +++---- cmd/helm/dependency.go | 4 +-- cmd/helm/dependency_build.go | 8 +++--- cmd/helm/dependency_build_test.go | 8 +++--- cmd/helm/dependency_update.go | 8 +++--- cmd/helm/dependency_update_test.go | 14 +++++----- cmd/helm/docs.go | 2 +- cmd/helm/env.go | 2 +- cmd/helm/flags.go | 12 ++++----- cmd/helm/flags_test.go | 6 ++--- cmd/helm/get.go | 4 +-- cmd/helm/get_all.go | 6 ++--- cmd/helm/get_all_test.go | 2 +- cmd/helm/get_hooks.go | 4 +-- cmd/helm/get_hooks_test.go | 2 +- cmd/helm/get_manifest.go | 4 +-- cmd/helm/get_manifest_test.go | 2 +- cmd/helm/get_metadata.go | 6 ++--- cmd/helm/get_metadata_test.go | 2 +- cmd/helm/get_notes.go | 4 +-- cmd/helm/get_notes_test.go | 2 +- cmd/helm/get_values.go | 6 ++--- cmd/helm/get_values_test.go | 2 +- cmd/helm/helm.go | 14 +++++----- cmd/helm/helm_test.go | 18 ++++++------- cmd/helm/history.go | 14 +++++----- cmd/helm/history_test.go | 2 +- cmd/helm/install.go | 18 ++++++------- cmd/helm/install_test.go | 2 +- cmd/helm/lint.go | 10 +++---- cmd/helm/list.go | 8 +++--- cmd/helm/list_test.go | 6 ++--- cmd/helm/load_plugins.go | 2 +- cmd/helm/package.go | 8 +++--- cmd/helm/package_test.go | 4 +-- cmd/helm/plugin.go | 2 +- cmd/helm/plugin_install.go | 6 ++--- cmd/helm/plugin_list.go | 2 +- cmd/helm/plugin_test.go | 2 +- cmd/helm/plugin_uninstall.go | 2 +- cmd/helm/plugin_update.go | 4 +-- cmd/helm/pull.go | 4 +-- cmd/helm/pull_test.go | 2 +- cmd/helm/push.go | 6 ++--- cmd/helm/registry.go | 2 +- cmd/helm/registry_login.go | 4 +-- cmd/helm/registry_logout.go | 4 +-- cmd/helm/release_testing.go | 6 ++--- cmd/helm/repo.go | 2 +- cmd/helm/repo_add.go | 6 ++--- cmd/helm/repo_add_test.go | 8 +++--- cmd/helm/repo_index.go | 4 +-- cmd/helm/repo_index_test.go | 2 +- cmd/helm/repo_list.go | 6 ++--- cmd/helm/repo_remove.go | 6 ++--- cmd/helm/repo_remove_test.go | 6 ++--- cmd/helm/repo_update.go | 6 ++--- cmd/helm/repo_update_test.go | 8 +++--- cmd/helm/rollback.go | 4 +-- cmd/helm/rollback_test.go | 4 +-- cmd/helm/root.go | 10 +++---- cmd/helm/root_test.go | 6 ++--- cmd/helm/search/search.go | 2 +- cmd/helm/search/search_test.go | 4 +-- cmd/helm/search_hub.go | 4 +-- cmd/helm/search_repo.go | 8 +++--- cmd/helm/show.go | 4 +-- cmd/helm/show_test.go | 2 +- cmd/helm/status.go | 10 +++---- cmd/helm/status_test.go | 6 ++--- cmd/helm/template.go | 12 ++++----- cmd/helm/uninstall.go | 4 +-- cmd/helm/uninstall_test.go | 2 +- cmd/helm/upgrade.go | 18 ++++++------- cmd/helm/upgrade_test.go | 8 +++--- cmd/helm/verify.go | 4 +-- cmd/helm/version.go | 4 +-- go.mod | 2 +- internal/fileutil/fileutil.go | 2 +- internal/monocular/search.go | 4 +-- internal/resolver/resolver.go | 12 ++++----- internal/resolver/resolver_test.go | 4 +-- internal/test/ensure/ensure.go | 4 +-- internal/version/version.go | 2 +- pkg/action/action.go | 22 +++++++-------- pkg/action/action_test.go | 16 +++++------ pkg/action/dependency.go | 4 +-- pkg/action/dependency_test.go | 6 ++--- pkg/action/get.go | 2 +- pkg/action/get_metadata.go | 2 +- pkg/action/get_values.go | 2 +- pkg/action/history.go | 4 +-- pkg/action/hooks.go | 6 ++--- pkg/action/install.go | 28 ++++++++++---------- pkg/action/install_test.go | 14 +++++----- pkg/action/lint.go | 6 ++--- pkg/action/list.go | 4 +-- pkg/action/list_test.go | 4 +-- pkg/action/package.go | 6 ++--- pkg/action/package_test.go | 2 +- pkg/action/pull.go | 12 ++++----- pkg/action/push.go | 8 +++--- pkg/action/registry_login.go | 2 +- pkg/action/release_testing.go | 4 +-- pkg/action/resource_policy.go | 4 +-- pkg/action/rollback.go | 6 ++--- pkg/action/show.go | 8 +++--- pkg/action/show_test.go | 2 +- pkg/action/status.go | 4 +-- pkg/action/uninstall.go | 10 +++---- pkg/action/uninstall_test.go | 4 +-- pkg/action/upgrade.go | 16 +++++------ pkg/action/upgrade_test.go | 10 +++---- pkg/action/validate.go | 2 +- pkg/action/validate_test.go | 2 +- pkg/action/verify.go | 2 +- pkg/chart/loader/archive.go | 2 +- pkg/chart/loader/directory.go | 6 ++--- pkg/chart/loader/load.go | 2 +- pkg/chart/loader/load_test.go | 2 +- pkg/chartutil/capabilities.go | 2 +- pkg/chartutil/chartfile.go | 2 +- pkg/chartutil/chartfile_test.go | 2 +- pkg/chartutil/coalesce.go | 2 +- pkg/chartutil/coalesce_test.go | 2 +- pkg/chartutil/create.go | 4 +-- pkg/chartutil/create_test.go | 4 +-- pkg/chartutil/dependencies.go | 2 +- pkg/chartutil/dependencies_test.go | 4 +-- pkg/chartutil/doc.go | 2 +- pkg/chartutil/expand.go | 4 +-- pkg/chartutil/jsonschema.go | 2 +- pkg/chartutil/jsonschema_test.go | 2 +- pkg/chartutil/save.go | 2 +- pkg/chartutil/save_test.go | 4 +-- pkg/chartutil/values.go | 2 +- pkg/chartutil/values_test.go | 2 +- pkg/cli/environment.go | 6 ++--- pkg/cli/environment_test.go | 2 +- pkg/cli/values/options.go | 4 +-- pkg/cli/values/options_test.go | 2 +- pkg/downloader/chart_downloader.go | 14 +++++----- pkg/downloader/chart_downloader_test.go | 10 +++---- pkg/downloader/manager.go | 20 +++++++------- pkg/downloader/manager_test.go | 10 +++---- pkg/engine/doc.go | 2 +- pkg/engine/engine.go | 4 +-- pkg/engine/engine_test.go | 4 +-- pkg/engine/files.go | 2 +- pkg/getter/getter.go | 4 +-- pkg/getter/getter_test.go | 2 +- pkg/getter/httpgetter.go | 6 ++--- pkg/getter/httpgetter_test.go | 6 ++--- pkg/getter/ocigetter.go | 6 ++--- pkg/getter/ocigetter_test.go | 2 +- pkg/getter/plugingetter.go | 4 +-- pkg/getter/plugingetter_test.go | 2 +- pkg/helmpath/home_unix_test.go | 2 +- pkg/helmpath/home_windows_test.go | 2 +- pkg/helmpath/lazypath.go | 2 +- pkg/helmpath/lazypath_darwin_test.go | 2 +- pkg/helmpath/lazypath_unix_test.go | 2 +- pkg/helmpath/lazypath_windows_test.go | 2 +- pkg/ignore/doc.go | 2 +- pkg/kube/client.go | 2 +- pkg/kube/config.go | 2 +- pkg/kube/converter.go | 2 +- pkg/kube/factory.go | 2 +- pkg/kube/fake/fake.go | 2 +- pkg/kube/fake/printer.go | 2 +- pkg/kube/ready.go | 4 +-- pkg/kube/ready_test.go | 2 +- pkg/kube/resource.go | 2 +- pkg/kube/resource_policy.go | 2 +- pkg/kube/resource_test.go | 2 +- pkg/kube/wait.go | 2 +- pkg/lint/lint.go | 8 +++--- pkg/lint/lint_test.go | 8 +++--- pkg/lint/rules/chartfile.go | 8 +++--- pkg/lint/rules/chartfile_test.go | 6 ++--- pkg/lint/rules/dependencies.go | 8 +++--- pkg/lint/rules/dependencies_test.go | 6 ++--- pkg/lint/rules/deprecations.go | 4 +-- pkg/lint/rules/deprecations_test.go | 2 +- pkg/lint/rules/template.go | 8 +++--- pkg/lint/rules/template_test.go | 6 ++--- pkg/lint/rules/values.go | 4 +-- pkg/lint/rules/values_test.go | 2 +- pkg/lint/support/doc.go | 2 +- pkg/plugin/cache/cache.go | 2 +- pkg/plugin/hooks.go | 2 +- pkg/plugin/installer/base.go | 4 +-- pkg/plugin/installer/base_test.go | 2 +- pkg/plugin/installer/doc.go | 2 +- pkg/plugin/installer/http_installer.go | 12 ++++----- pkg/plugin/installer/http_installer_test.go | 8 +++--- pkg/plugin/installer/installer.go | 2 +- pkg/plugin/installer/local_installer.go | 2 +- pkg/plugin/installer/local_installer_test.go | 4 +-- pkg/plugin/installer/vcs_installer.go | 8 +++--- pkg/plugin/installer/vcs_installer_test.go | 6 ++--- pkg/plugin/plugin.go | 4 +-- pkg/plugin/plugin_test.go | 4 +-- pkg/provenance/doc.go | 2 +- pkg/provenance/sign.go | 4 +-- pkg/pusher/ocipusher.go | 8 +++--- pkg/pusher/ocipusher_test.go | 2 +- pkg/pusher/pusher.go | 4 +-- pkg/pusher/pusher_test.go | 4 +-- pkg/registry/client.go | 8 +++--- pkg/registry/constants.go | 2 +- pkg/registry/util.go | 10 +++---- pkg/registry/util_test.go | 6 ++--- pkg/registry/utils_test.go | 2 +- pkg/release/hook.go | 2 +- pkg/release/info.go | 2 +- pkg/release/mock.go | 4 +-- pkg/release/release.go | 2 +- pkg/releaseutil/filter.go | 4 +-- pkg/releaseutil/filter_test.go | 4 +-- pkg/releaseutil/kind_sorter.go | 2 +- pkg/releaseutil/kind_sorter_test.go | 2 +- pkg/releaseutil/manifest_sorter.go | 4 +-- pkg/releaseutil/manifest_sorter_test.go | 2 +- pkg/releaseutil/manifest_test.go | 2 +- pkg/releaseutil/sorter.go | 4 +-- pkg/releaseutil/sorter_test.go | 6 ++--- pkg/repo/chartrepo.go | 10 +++---- pkg/repo/chartrepo_test.go | 6 ++--- pkg/repo/index.go | 10 +++---- pkg/repo/index_test.go | 8 +++--- pkg/repo/repo.go | 2 +- pkg/repo/repotest/server.go | 12 ++++----- pkg/repo/repotest/server_test.go | 4 +-- pkg/storage/driver/cfgmaps.go | 4 +-- pkg/storage/driver/cfgmaps_test.go | 2 +- pkg/storage/driver/driver.go | 4 +-- pkg/storage/driver/labels_test.go | 2 +- pkg/storage/driver/memory.go | 2 +- pkg/storage/driver/memory_test.go | 2 +- pkg/storage/driver/mock_test.go | 4 +-- pkg/storage/driver/records.go | 4 +-- pkg/storage/driver/records_test.go | 4 +-- pkg/storage/driver/secrets.go | 4 +-- pkg/storage/driver/secrets_test.go | 2 +- pkg/storage/driver/sql.go | 4 +-- pkg/storage/driver/sql_test.go | 2 +- pkg/storage/driver/util.go | 4 +-- pkg/storage/storage.go | 8 +++--- pkg/storage/storage_test.go | 6 ++--- pkg/uploader/chart_uploader.go | 4 +-- 257 files changed, 644 insertions(+), 639 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a3e5119d4..ff0dad5f6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -20,7 +20,7 @@ linters-settings: gofmt: simplify: true goimports: - local-prefixes: helm.sh/helm/v3 + local-prefixes: helm.sh/helm/v4 dupl: threshold: 400 issues: diff --git a/Makefile b/Makefile index 2a264916a..f1fcbfb08 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ BINARY_VERSION ?= ${GIT_TAG} # Only set Version if building a tag or VERSION is set ifneq ($(BINARY_VERSION),) - LDFLAGS += -X helm.sh/helm/v3/internal/version.version=${BINARY_VERSION} + LDFLAGS += -X helm.sh/helm/v4/internal/version.version=${BINARY_VERSION} endif VERSION_METADATA = unreleased @@ -53,9 +53,9 @@ ifneq ($(GIT_TAG),) VERSION_METADATA = endif -LDFLAGS += -X helm.sh/helm/v3/internal/version.metadata=${VERSION_METADATA} -LDFLAGS += -X helm.sh/helm/v3/internal/version.gitCommit=${GIT_COMMIT} -LDFLAGS += -X helm.sh/helm/v3/internal/version.gitTreeState=${GIT_DIRTY} +LDFLAGS += -X helm.sh/helm/v4/internal/version.metadata=${VERSION_METADATA} +LDFLAGS += -X helm.sh/helm/v4/internal/version.gitCommit=${GIT_COMMIT} +LDFLAGS += -X helm.sh/helm/v4/internal/version.gitTreeState=${GIT_DIRTY} LDFLAGS += $(EXT_LDFLAGS) # Define constants based on the client-go version @@ -63,10 +63,10 @@ K8S_MODULES_VER=$(subst ., ,$(subst v,,$(shell go list -f '{{.Version}}' -m k8s. K8S_MODULES_MAJOR_VER=$(shell echo $$(($(firstword $(K8S_MODULES_VER)) + 1))) K8S_MODULES_MINOR_VER=$(word 2,$(K8S_MODULES_VER)) -LDFLAGS += -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) -LDFLAGS += -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) -LDFLAGS += -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) -LDFLAGS += -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/chartutil.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/chartutil.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) .PHONY: all all: build diff --git a/README.md b/README.md index 2488147c7..33bcb3f05 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://github.com/helm/helm/workflows/release/badge.svg)](https://github.com/helm/helm/actions?workflow=release) [![Go Report Card](https://goreportcard.com/badge/github.com/helm/helm)](https://goreportcard.com/report/github.com/helm/helm) -[![GoDoc](https://img.shields.io/static/v1?label=godoc&message=reference&color=blue)](https://pkg.go.dev/helm.sh/helm/v3) +[![GoDoc](https://img.shields.io/static/v1?label=godoc&message=reference&color=blue)](https://pkg.go.dev/helm.sh/helm/v4) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/3131/badge)](https://bestpractices.coreinfrastructure.org/projects/3131) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/helm/helm/badge)](https://scorecard.dev/viewer/?uri=github.com/helm/helm) @@ -29,6 +29,11 @@ Think of it like apt/yum/homebrew for Kubernetes. - Charts can be stored on disk, or fetched from remote chart repositories (like Debian or RedHat packages) +## Helm Development and Stable Versions + +Helm v4 is currently under development on the `main` branch. This is unstable and the APIs within the Go SDK and at the command line are changing. +Helm v3 (current stable) is maintained on the `dev-v3` branch. APIs there follow semantic versioning. + ## Install Binary downloads of the Helm client can be found on [the Releases page](https://github.com/helm/helm/releases/latest). diff --git a/cmd/helm/completion.go b/cmd/helm/completion.go index 3dc4bb916..5d2186939 100644 --- a/cmd/helm/completion.go +++ b/cmd/helm/completion.go @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" + "helm.sh/helm/v4/cmd/helm/require" ) const completionDesc = ` diff --git a/cmd/helm/completion_test.go b/cmd/helm/completion_test.go index 1143d6445..4dd427232 100644 --- a/cmd/helm/completion_test.go +++ b/cmd/helm/completion_test.go @@ -21,8 +21,8 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" ) // Check if file completion should be performed according to parameter 'shouldBePerformed' diff --git a/cmd/helm/create.go b/cmd/helm/create.go index 576d8a70f..29beca303 100644 --- a/cmd/helm/create.go +++ b/cmd/helm/create.go @@ -23,10 +23,10 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/helmpath" ) const createDesc = ` diff --git a/cmd/helm/create_test.go b/cmd/helm/create_test.go index 1a22d058f..88d9c315a 100644 --- a/cmd/helm/create_test.go +++ b/cmd/helm/create_test.go @@ -22,11 +22,11 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/helmpath" ) func TestCreateCmd(t *testing.T) { diff --git a/cmd/helm/dependency.go b/cmd/helm/dependency.go index 19b648604..5e108b6fd 100644 --- a/cmd/helm/dependency.go +++ b/cmd/helm/dependency.go @@ -22,8 +22,8 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const dependencyDesc = ` diff --git a/cmd/helm/dependency_build.go b/cmd/helm/dependency_build.go index 5b5598498..719c720a7 100644 --- a/cmd/helm/dependency_build.go +++ b/cmd/helm/dependency_build.go @@ -24,10 +24,10 @@ import ( "github.com/spf13/cobra" "k8s.io/client-go/util/homedir" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" ) const dependencyBuildDesc = ` diff --git a/cmd/helm/dependency_build_test.go b/cmd/helm/dependency_build_test.go index 37e3242c4..e443e64cb 100644 --- a/cmd/helm/dependency_build_test.go +++ b/cmd/helm/dependency_build_test.go @@ -22,10 +22,10 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/provenance" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/provenance" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestDependencyBuildCmd(t *testing.T) { diff --git a/cmd/helm/dependency_update.go b/cmd/helm/dependency_update.go index 3ac39adff..563d7eba5 100644 --- a/cmd/helm/dependency_update.go +++ b/cmd/helm/dependency_update.go @@ -22,10 +22,10 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" ) const dependencyUpDesc = ` diff --git a/cmd/helm/dependency_update_test.go b/cmd/helm/dependency_update_test.go index 1a1e0468f..b82ce870d 100644 --- a/cmd/helm/dependency_update_test.go +++ b/cmd/helm/dependency_update_test.go @@ -22,13 +22,13 @@ import ( "strings" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/provenance" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/provenance" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestDependencyUpdateCmd(t *testing.T) { diff --git a/cmd/helm/docs.go b/cmd/helm/docs.go index dd0cf60c7..571840b5f 100644 --- a/cmd/helm/docs.go +++ b/cmd/helm/docs.go @@ -28,7 +28,7 @@ import ( "golang.org/x/text/cases" "golang.org/x/text/language" - "helm.sh/helm/v3/cmd/helm/require" + "helm.sh/helm/v4/cmd/helm/require" ) const docsDesc = ` diff --git a/cmd/helm/env.go b/cmd/helm/env.go index d9c7f4565..c7305434b 100644 --- a/cmd/helm/env.go +++ b/cmd/helm/env.go @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" + "helm.sh/helm/v4/cmd/helm/require" ) var envHelp = ` diff --git a/cmd/helm/flags.go b/cmd/helm/flags.go index 62e9f90fa..3d159babd 100644 --- a/cmd/helm/flags.go +++ b/cmd/helm/flags.go @@ -28,12 +28,12 @@ import ( "github.com/spf13/pflag" "k8s.io/klog/v2" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/postrender" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/postrender" + "helm.sh/helm/v4/pkg/repo" ) const ( diff --git a/cmd/helm/flags_test.go b/cmd/helm/flags_test.go index 07d28c460..295f55022 100644 --- a/cmd/helm/flags_test.go +++ b/cmd/helm/flags_test.go @@ -20,9 +20,9 @@ import ( "fmt" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) func outputFlagCompletionTest(t *testing.T, cmdName string) { diff --git a/cmd/helm/get.go b/cmd/helm/get.go index 727cdaf88..27d536f8b 100644 --- a/cmd/helm/get.go +++ b/cmd/helm/get.go @@ -21,8 +21,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) var getHelp = ` diff --git a/cmd/helm/get_all.go b/cmd/helm/get_all.go index 12f1c2540..522327b67 100644 --- a/cmd/helm/get_all.go +++ b/cmd/helm/get_all.go @@ -22,9 +22,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" ) var getAllHelp = ` diff --git a/cmd/helm/get_all_test.go b/cmd/helm/get_all_test.go index 948f0aa71..60ea1161d 100644 --- a/cmd/helm/get_all_test.go +++ b/cmd/helm/get_all_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetCmd(t *testing.T) { diff --git a/cmd/helm/get_hooks.go b/cmd/helm/get_hooks.go index 1fe7f0a25..25c6eb4e3 100644 --- a/cmd/helm/get_hooks.go +++ b/cmd/helm/get_hooks.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const getHooksHelp = ` diff --git a/cmd/helm/get_hooks_test.go b/cmd/helm/get_hooks_test.go index 251d5c731..75cf448cc 100644 --- a/cmd/helm/get_hooks_test.go +++ b/cmd/helm/get_hooks_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetHooks(t *testing.T) { diff --git a/cmd/helm/get_manifest.go b/cmd/helm/get_manifest.go index 6431b4252..d2a4bbe96 100644 --- a/cmd/helm/get_manifest.go +++ b/cmd/helm/get_manifest.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) var getManifestHelp = ` diff --git a/cmd/helm/get_manifest_test.go b/cmd/helm/get_manifest_test.go index 2f27476b6..b266620e7 100644 --- a/cmd/helm/get_manifest_test.go +++ b/cmd/helm/get_manifest_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetManifest(t *testing.T) { diff --git a/cmd/helm/get_metadata.go b/cmd/helm/get_metadata.go index e8ad832bd..4ab0c8cab 100644 --- a/cmd/helm/get_metadata.go +++ b/cmd/helm/get_metadata.go @@ -24,9 +24,9 @@ import ( "github.com/spf13/cobra" k8sLabels "k8s.io/apimachinery/pkg/labels" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" ) type metadataWriter struct { diff --git a/cmd/helm/get_metadata_test.go b/cmd/helm/get_metadata_test.go index b6f0ab9f2..28c3c3649 100644 --- a/cmd/helm/get_metadata_test.go +++ b/cmd/helm/get_metadata_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetMetadataCmd(t *testing.T) { diff --git a/cmd/helm/get_notes.go b/cmd/helm/get_notes.go index b4c7ceddf..8a8e67079 100644 --- a/cmd/helm/get_notes.go +++ b/cmd/helm/get_notes.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) var getNotesHelp = ` diff --git a/cmd/helm/get_notes_test.go b/cmd/helm/get_notes_test.go index 8be9a3f7c..4ddd4c7a8 100644 --- a/cmd/helm/get_notes_test.go +++ b/cmd/helm/get_notes_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetNotesCmd(t *testing.T) { diff --git a/cmd/helm/get_values.go b/cmd/helm/get_values.go index 54a15eda9..8244fbaaa 100644 --- a/cmd/helm/get_values.go +++ b/cmd/helm/get_values.go @@ -23,9 +23,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" ) var getValuesHelp = ` diff --git a/cmd/helm/get_values_test.go b/cmd/helm/get_values_test.go index 423c32859..44610c103 100644 --- a/cmd/helm/get_values_test.go +++ b/cmd/helm/get_values_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetValuesCmd(t *testing.T) { diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index 2fae7cddb..aa981740f 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main // import "helm.sh/helm/v3/cmd/helm" +package main // import "helm.sh/helm/v4/cmd/helm" import ( "fmt" @@ -30,12 +30,12 @@ import ( // Import to initialize client auth plugins. _ "k8s.io/client-go/plugin/pkg/client/auth" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/kube" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/kube" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage/driver" ) var settings = cli.New() diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go index 7d0bf5751..a20928b37 100644 --- a/cmd/helm/helm_test.go +++ b/cmd/helm/helm_test.go @@ -28,15 +28,15 @@ import ( shellwords "github.com/mattn/go-shellwords" "github.com/spf13/cobra" - "helm.sh/helm/v3/internal/test" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/internal/test" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" + "helm.sh/helm/v4/pkg/time" ) func testTimestamper() time.Time { return time.Unix(242085845, 0).UTC() } diff --git a/cmd/helm/history.go b/cmd/helm/history.go index 56383bfca..aa90125a2 100644 --- a/cmd/helm/history.go +++ b/cmd/helm/history.go @@ -25,13 +25,13 @@ import ( "github.com/gosuri/uitable" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + helmtime "helm.sh/helm/v4/pkg/time" ) var historyHelp = ` diff --git a/cmd/helm/history_test.go b/cmd/helm/history_test.go index 07f2d85df..07f5134c6 100644 --- a/cmd/helm/history_test.go +++ b/cmd/helm/history_test.go @@ -20,7 +20,7 @@ import ( "fmt" "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestHistoryCmd(t *testing.T) { diff --git a/cmd/helm/install.go b/cmd/helm/install.go index c10e84c18..ec651140c 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -30,15 +30,15 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/release" ) const installDesc = ` diff --git a/cmd/helm/install_test.go b/cmd/helm/install_test.go index 3e022b111..e7b6e1dff 100644 --- a/cmd/helm/install_test.go +++ b/cmd/helm/install_test.go @@ -23,7 +23,7 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestInstall(t *testing.T) { diff --git a/cmd/helm/lint.go b/cmd/helm/lint.go index 4c5e24149..9a3f7a2fc 100644 --- a/cmd/helm/lint.go +++ b/cmd/helm/lint.go @@ -26,11 +26,11 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/lint/support" ) var longLintHelp = ` diff --git a/cmd/helm/list.go b/cmd/helm/list.go index bbc7e979d..67da22cdf 100644 --- a/cmd/helm/list.go +++ b/cmd/helm/list.go @@ -25,10 +25,10 @@ import ( "github.com/gosuri/uitable" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/release" ) var listHelp = ` diff --git a/cmd/helm/list_test.go b/cmd/helm/list_test.go index 97a1e284f..01b6d7490 100644 --- a/cmd/helm/list_test.go +++ b/cmd/helm/list_test.go @@ -19,9 +19,9 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/time" ) func TestListCmd(t *testing.T) { diff --git a/cmd/helm/load_plugins.go b/cmd/helm/load_plugins.go index 5ae638124..23b1b7ff4 100644 --- a/cmd/helm/load_plugins.go +++ b/cmd/helm/load_plugins.go @@ -31,7 +31,7 @@ import ( "github.com/spf13/cobra" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) const ( diff --git a/cmd/helm/package.go b/cmd/helm/package.go index 19ab3dc7f..185442b20 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -25,10 +25,10 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" ) const packageDesc = ` diff --git a/cmd/helm/package_test.go b/cmd/helm/package_test.go index 9093b510c..107928765 100644 --- a/cmd/helm/package_test.go +++ b/cmd/helm/package_test.go @@ -23,8 +23,8 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) func TestPackage(t *testing.T) { diff --git a/cmd/helm/plugin.go b/cmd/helm/plugin.go index 27ed70727..82fd34b72 100644 --- a/cmd/helm/plugin.go +++ b/cmd/helm/plugin.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) const pluginHelp = ` diff --git a/cmd/helm/plugin_install.go b/cmd/helm/plugin_install.go index 0a96954f9..d8dff6316 100644 --- a/cmd/helm/plugin_install.go +++ b/cmd/helm/plugin_install.go @@ -22,9 +22,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/plugin" - "helm.sh/helm/v3/pkg/plugin/installer" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin/installer" ) type pluginInstallOptions struct { diff --git a/cmd/helm/plugin_list.go b/cmd/helm/plugin_list.go index 8c73be500..27ce3c973 100644 --- a/cmd/helm/plugin_list.go +++ b/cmd/helm/plugin_list.go @@ -22,7 +22,7 @@ import ( "github.com/gosuri/uitable" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) func newPluginListCmd(out io.Writer) *cobra.Command { diff --git a/cmd/helm/plugin_test.go b/cmd/helm/plugin_test.go index e13ad26fb..4d2aa1a59 100644 --- a/cmd/helm/plugin_test.go +++ b/cmd/helm/plugin_test.go @@ -26,7 +26,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestManuallyProcessArgs(t *testing.T) { diff --git a/cmd/helm/plugin_uninstall.go b/cmd/helm/plugin_uninstall.go index 458a92cc8..6ef4e4f59 100644 --- a/cmd/helm/plugin_uninstall.go +++ b/cmd/helm/plugin_uninstall.go @@ -24,7 +24,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) type pluginUninstallOptions struct { diff --git a/cmd/helm/plugin_update.go b/cmd/helm/plugin_update.go index eb7505696..5d0465274 100644 --- a/cmd/helm/plugin_update.go +++ b/cmd/helm/plugin_update.go @@ -24,8 +24,8 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/plugin" - "helm.sh/helm/v3/pkg/plugin/installer" + "helm.sh/helm/v4/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin/installer" ) type pluginUpdateOptions struct { diff --git a/cmd/helm/pull.go b/cmd/helm/pull.go index de4918d72..1b2a9a44d 100644 --- a/cmd/helm/pull.go +++ b/cmd/helm/pull.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const pullDesc = ` diff --git a/cmd/helm/pull_test.go b/cmd/helm/pull_test.go index ae70595f9..d8b1f57a7 100644 --- a/cmd/helm/pull_test.go +++ b/cmd/helm/pull_test.go @@ -24,7 +24,7 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestPullCmd(t *testing.T) { diff --git a/cmd/helm/push.go b/cmd/helm/push.go index 9a67fa086..f5b275b9d 100644 --- a/cmd/helm/push.go +++ b/cmd/helm/push.go @@ -22,9 +22,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/pusher" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/pusher" ) const pushDesc = ` diff --git a/cmd/helm/registry.go b/cmd/helm/registry.go index b2b24cd14..f771dcb9c 100644 --- a/cmd/helm/registry.go +++ b/cmd/helm/registry.go @@ -20,7 +20,7 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/pkg/action" ) const registryHelp = ` diff --git a/cmd/helm/registry_login.go b/cmd/helm/registry_login.go index 96020a530..59b5591ba 100644 --- a/cmd/helm/registry_login.go +++ b/cmd/helm/registry_login.go @@ -27,8 +27,8 @@ import ( "github.com/moby/term" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const registryLoginDesc = ` diff --git a/cmd/helm/registry_logout.go b/cmd/helm/registry_logout.go index 4ca4120c4..13190c8cf 100644 --- a/cmd/helm/registry_logout.go +++ b/cmd/helm/registry_logout.go @@ -21,8 +21,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const registryLogoutDesc = ` diff --git a/cmd/helm/release_testing.go b/cmd/helm/release_testing.go index efd507cf4..a8c57f5d9 100644 --- a/cmd/helm/release_testing.go +++ b/cmd/helm/release_testing.go @@ -25,9 +25,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" ) const releaseTestHelp = ` diff --git a/cmd/helm/repo.go b/cmd/helm/repo.go index ad6ceaa8f..291f0bb10 100644 --- a/cmd/helm/repo.go +++ b/cmd/helm/repo.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" + "helm.sh/helm/v4/cmd/helm/require" ) var repoHelm = ` diff --git a/cmd/helm/repo_add.go b/cmd/helm/repo_add.go index 6a8a70a0f..fe2d33713 100644 --- a/cmd/helm/repo_add.go +++ b/cmd/helm/repo_add.go @@ -31,9 +31,9 @@ import ( "golang.org/x/term" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo" ) // Repositories that have been permanently deleted and no longer work diff --git a/cmd/helm/repo_add_test.go b/cmd/helm/repo_add_test.go index 2386bb01f..d1c5176ee 100644 --- a/cmd/helm/repo_add_test.go +++ b/cmd/helm/repo_add_test.go @@ -27,10 +27,10 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/helmpath/xdg" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestRepoAddCmd(t *testing.T) { diff --git a/cmd/helm/repo_index.go b/cmd/helm/repo_index.go index a61062e0e..c84a3f1ab 100644 --- a/cmd/helm/repo_index.go +++ b/cmd/helm/repo_index.go @@ -24,8 +24,8 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/repo" ) const repoIndexDesc = ` diff --git a/cmd/helm/repo_index_test.go b/cmd/helm/repo_index_test.go index 554a3dadf..f7dbac933 100644 --- a/cmd/helm/repo_index_test.go +++ b/cmd/helm/repo_index_test.go @@ -24,7 +24,7 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/repo" ) func TestRepoIndexCmd(t *testing.T) { diff --git a/cmd/helm/repo_list.go b/cmd/helm/repo_list.go index 6c0b970be..e0ad10147 100644 --- a/cmd/helm/repo_list.go +++ b/cmd/helm/repo_list.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/repo" ) func newRepoListCmd(out io.Writer) *cobra.Command { diff --git a/cmd/helm/repo_remove.go b/cmd/helm/repo_remove.go index 82a235fec..6b72b0710 100644 --- a/cmd/helm/repo_remove.go +++ b/cmd/helm/repo_remove.go @@ -25,9 +25,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/repo" ) type repoRemoveOptions struct { diff --git a/cmd/helm/repo_remove_test.go b/cmd/helm/repo_remove_test.go index e2795e738..dcfbd99f8 100644 --- a/cmd/helm/repo_remove_test.go +++ b/cmd/helm/repo_remove_test.go @@ -24,9 +24,9 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestRepoRemove(t *testing.T) { diff --git a/cmd/helm/repo_update.go b/cmd/helm/repo_update.go index 8d5f532f1..77effe134 100644 --- a/cmd/helm/repo_update.go +++ b/cmd/helm/repo_update.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo" ) const updateDesc = ` diff --git a/cmd/helm/repo_update_test.go b/cmd/helm/repo_update_test.go index 1ddf0f5ed..13369c7cc 100644 --- a/cmd/helm/repo_update_test.go +++ b/cmd/helm/repo_update_test.go @@ -24,10 +24,10 @@ import ( "strings" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestUpdateCmd(t *testing.T) { diff --git a/cmd/helm/rollback.go b/cmd/helm/rollback.go index 3dab4689f..a65f30a1f 100644 --- a/cmd/helm/rollback.go +++ b/cmd/helm/rollback.go @@ -24,8 +24,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const rollbackDesc = ` diff --git a/cmd/helm/rollback_test.go b/cmd/helm/rollback_test.go index b58e4c162..a94327e07 100644 --- a/cmd/helm/rollback_test.go +++ b/cmd/helm/rollback_test.go @@ -21,8 +21,8 @@ import ( "reflect" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" ) func TestRollbackCmd(t *testing.T) { diff --git a/cmd/helm/root.go b/cmd/helm/root.go index 2ba8a882e..e2656ae90 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main // import "helm.sh/helm/v3/cmd/helm" +package main // import "helm.sh/helm/v4/cmd/helm" import ( "context" @@ -30,10 +30,10 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/clientcmd" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) var globalUsage = `The Kubernetes package manager diff --git a/cmd/helm/root_test.go b/cmd/helm/root_test.go index 65e6d66c7..e30850900 100644 --- a/cmd/helm/root_test.go +++ b/cmd/helm/root_test.go @@ -21,9 +21,9 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) func TestRootCmd(t *testing.T) { diff --git a/cmd/helm/search/search.go b/cmd/helm/search/search.go index ac29b27c2..f9e229154 100644 --- a/cmd/helm/search/search.go +++ b/cmd/helm/search/search.go @@ -31,7 +31,7 @@ import ( "github.com/Masterminds/semver/v3" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/repo" ) // Result is a search result. diff --git a/cmd/helm/search/search_test.go b/cmd/helm/search/search_test.go index 415c085b4..175491b36 100644 --- a/cmd/helm/search/search_test.go +++ b/cmd/helm/search/search_test.go @@ -20,8 +20,8 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/repo" ) func TestSortScore(t *testing.T) { diff --git a/cmd/helm/search_hub.go b/cmd/helm/search_hub.go index d9482f67a..5bdb1092d 100644 --- a/cmd/helm/search_hub.go +++ b/cmd/helm/search_hub.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/internal/monocular" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/internal/monocular" + "helm.sh/helm/v4/pkg/cli/output" ) const searchHubDesc = ` diff --git a/cmd/helm/search_repo.go b/cmd/helm/search_repo.go index 3acd9ab4b..36e8a8c58 100644 --- a/cmd/helm/search_repo.go +++ b/cmd/helm/search_repo.go @@ -30,10 +30,10 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/search" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/search" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/repo" ) const searchRepoDesc = ` diff --git a/cmd/helm/show.go b/cmd/helm/show.go index b850af099..aed520d38 100644 --- a/cmd/helm/show.go +++ b/cmd/helm/show.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const showDesc = ` diff --git a/cmd/helm/show_test.go b/cmd/helm/show_test.go index 93ec08d0f..098335f09 100644 --- a/cmd/helm/show_test.go +++ b/cmd/helm/show_test.go @@ -22,7 +22,7 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestShowPreReleaseChart(t *testing.T) { diff --git a/cmd/helm/status.go b/cmd/helm/status.go index 747b2556b..c56ff1f29 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -28,11 +28,11 @@ import ( "k8s.io/kubectl/pkg/cmd/get" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/release" ) // NOTE: Keep the list of statuses up-to-date with pkg/release/status.go. diff --git a/cmd/helm/status_test.go b/cmd/helm/status_test.go index 155e27481..1973fe068 100644 --- a/cmd/helm/status_test.go +++ b/cmd/helm/status_test.go @@ -20,9 +20,9 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) func TestStatusCmd(t *testing.T) { diff --git a/cmd/helm/template.go b/cmd/helm/template.go index ff6621a49..1951d7377 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -27,15 +27,15 @@ import ( "sort" "strings" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/releaseutil" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/releaseutil" ) const templateDesc = ` diff --git a/cmd/helm/uninstall.go b/cmd/helm/uninstall.go index 3c4517b50..9c5e25c87 100644 --- a/cmd/helm/uninstall.go +++ b/cmd/helm/uninstall.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const uninstallDesc = ` diff --git a/cmd/helm/uninstall_test.go b/cmd/helm/uninstall_test.go index 23b61058e..f9bc71ec2 100644 --- a/cmd/helm/uninstall_test.go +++ b/cmd/helm/uninstall_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestUninstall(t *testing.T) { diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 95d00e39c..7b4267894 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -29,15 +29,15 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage/driver" ) const upgradeDesc = ` diff --git a/cmd/helm/upgrade_test.go b/cmd/helm/upgrade_test.go index 6065647b9..e3d41d7fa 100644 --- a/cmd/helm/upgrade_test.go +++ b/cmd/helm/upgrade_test.go @@ -24,10 +24,10 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" ) func TestUpgradeCmd(t *testing.T) { diff --git a/cmd/helm/verify.go b/cmd/helm/verify.go index 42d8bf8dc..197a164b6 100644 --- a/cmd/helm/verify.go +++ b/cmd/helm/verify.go @@ -21,8 +21,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const verifyDesc = ` diff --git a/cmd/helm/version.go b/cmd/helm/version.go index 12d0777f5..030ce2dcd 100644 --- a/cmd/helm/version.go +++ b/cmd/helm/version.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/internal/version" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/internal/version" ) const versionDesc = ` diff --git a/go.mod b/go.mod index 997385df2..a80b99931 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module helm.sh/helm/v3 +module helm.sh/helm/v4 go 1.23.0 diff --git a/internal/fileutil/fileutil.go b/internal/fileutil/fileutil.go index 4ea09cca4..39e0e330f 100644 --- a/internal/fileutil/fileutil.go +++ b/internal/fileutil/fileutil.go @@ -21,7 +21,7 @@ import ( "os" "path/filepath" - "helm.sh/helm/v3/internal/third_party/dep/fs" + "helm.sh/helm/v4/internal/third_party/dep/fs" ) // AtomicWriteFile atomically (as atomic as os.Rename allows) writes a file to a diff --git a/internal/monocular/search.go b/internal/monocular/search.go index 4e7e8c002..d6d454653 100644 --- a/internal/monocular/search.go +++ b/internal/monocular/search.go @@ -24,8 +24,8 @@ import ( "path" "time" - "helm.sh/helm/v3/internal/version" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/chart" ) // SearchPath is the url path to the search API in monocular. diff --git a/internal/resolver/resolver.go b/internal/resolver/resolver.go index b6f45da9e..74348176d 100644 --- a/internal/resolver/resolver.go +++ b/internal/resolver/resolver.go @@ -27,12 +27,12 @@ import ( "github.com/Masterminds/semver/v3" "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/provenance" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/provenance" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // Resolver resolves dependencies from semantic version ranges to a particular version. diff --git a/internal/resolver/resolver_test.go b/internal/resolver/resolver_test.go index a79852175..f7ea06fdf 100644 --- a/internal/resolver/resolver_test.go +++ b/internal/resolver/resolver_test.go @@ -19,8 +19,8 @@ import ( "runtime" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/registry" ) func TestResolve(t *testing.T) { diff --git a/internal/test/ensure/ensure.go b/internal/test/ensure/ensure.go index ff2d180fe..0d8dd9abc 100644 --- a/internal/test/ensure/ensure.go +++ b/internal/test/ensure/ensure.go @@ -21,8 +21,8 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) // HelmHome sets up a Helm Home in a temp dir. diff --git a/internal/version/version.go b/internal/version/version.go index 539659f5e..c9f6fad1c 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package version // import "helm.sh/helm/v3/internal/version" +package version // import "helm.sh/helm/v4/internal/version" import ( "flag" diff --git a/pkg/action/action.go b/pkg/action/action.go index 45f1a14e2..8418a4c27 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -32,17 +32,17 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/engine" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/postrender" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/engine" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/postrender" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" + "helm.sh/helm/v4/pkg/time" ) // Timestamper is a function capable of producing a timestamp.Timestamper. diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 149eb85b1..71ea83789 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -24,14 +24,14 @@ import ( "github.com/stretchr/testify/assert" fakeclientset "k8s.io/client-go/kubernetes/fake" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" + "helm.sh/helm/v4/pkg/time" ) var verbose = flag.Bool("test.log", false, "enable test logging") diff --git a/pkg/action/dependency.go b/pkg/action/dependency.go index 19305fee8..e0ff56cce 100644 --- a/pkg/action/dependency.go +++ b/pkg/action/dependency.go @@ -26,8 +26,8 @@ import ( "github.com/Masterminds/semver/v3" "github.com/gosuri/uitable" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) // Dependency is the action for building a given chart's dependency tree. diff --git a/pkg/action/dependency_test.go b/pkg/action/dependency_test.go index c29587aec..aee8c240f 100644 --- a/pkg/action/dependency_test.go +++ b/pkg/action/dependency_test.go @@ -24,9 +24,9 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/internal/test" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/internal/test" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" ) func TestList(t *testing.T) { diff --git a/pkg/action/get.go b/pkg/action/get.go index f44b53307..4c0683f3e 100644 --- a/pkg/action/get.go +++ b/pkg/action/get.go @@ -17,7 +17,7 @@ limitations under the License. package action import ( - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) // Get is the action for checking a given release's information. diff --git a/pkg/action/get_metadata.go b/pkg/action/get_metadata.go index f79788c3b..190e9ccb9 100644 --- a/pkg/action/get_metadata.go +++ b/pkg/action/get_metadata.go @@ -21,7 +21,7 @@ import ( "strings" "time" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // GetMetadata is the action for checking a given release's metadata. diff --git a/pkg/action/get_values.go b/pkg/action/get_values.go index 9c32db213..aa399f76c 100644 --- a/pkg/action/get_values.go +++ b/pkg/action/get_values.go @@ -17,7 +17,7 @@ limitations under the License. package action import ( - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/pkg/chartutil" ) // GetValues is the action for checking a given release's values. diff --git a/pkg/action/history.go b/pkg/action/history.go index 0430aaf7a..5f514a14a 100644 --- a/pkg/action/history.go +++ b/pkg/action/history.go @@ -19,8 +19,8 @@ package action import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" ) // History is the action for checking the release's ledger. diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index e1cbab5e1..ecca1d997 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -22,9 +22,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) // execHook executes all of the hooks for the given hook event. diff --git a/pkg/action/install.go b/pkg/action/install.go index 6cf5c8839..490e18963 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -39,20 +39,20 @@ import ( "k8s.io/cli-runtime/pkg/resource" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/kube" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/postrender" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/kube" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/postrender" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" ) // notesFileSuffix that we want to treat special. It goes through the templating engine diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index d11b04011..9f738f0bc 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -31,13 +31,13 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "helm.sh/helm/v3/internal/test" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage/driver" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/internal/test" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage/driver" + helmtime "helm.sh/helm/v4/pkg/time" ) type nameTemplateTestCase struct { diff --git a/pkg/action/lint.go b/pkg/action/lint.go index 63a1bf354..4ba90b8c3 100644 --- a/pkg/action/lint.go +++ b/pkg/action/lint.go @@ -23,9 +23,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint" + "helm.sh/helm/v4/pkg/lint/support" ) // Lint is the action for checking that the semantics of a chart are well-formed. diff --git a/pkg/action/list.go b/pkg/action/list.go index af0725c4a..f90c31acd 100644 --- a/pkg/action/list.go +++ b/pkg/action/list.go @@ -22,8 +22,8 @@ import ( "k8s.io/apimachinery/pkg/labels" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" ) // ListStates represents zero or more status codes that a list item may have set diff --git a/pkg/action/list_test.go b/pkg/action/list_test.go index 73009d523..a7eb8a920 100644 --- a/pkg/action/list_test.go +++ b/pkg/action/list_test.go @@ -21,8 +21,8 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage" ) func TestListStates(t *testing.T) { diff --git a/pkg/action/package.go b/pkg/action/package.go index 2357e3882..2e792a65c 100644 --- a/pkg/action/package.go +++ b/pkg/action/package.go @@ -26,9 +26,9 @@ import ( "github.com/pkg/errors" "golang.org/x/term" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/provenance" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/provenance" ) // Package is the action for packaging a chart. diff --git a/pkg/action/package_test.go b/pkg/action/package_test.go index d04efdaa6..26eeb1a2b 100644 --- a/pkg/action/package_test.go +++ b/pkg/action/package_test.go @@ -23,7 +23,7 @@ import ( "github.com/Masterminds/semver/v3" - "helm.sh/helm/v3/internal/test/ensure" + "helm.sh/helm/v4/internal/test/ensure" ) func TestPassphraseFileFetcher(t *testing.T) { diff --git a/pkg/action/pull.go b/pkg/action/pull.go index 787553125..868e6da7b 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -24,12 +24,12 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // Pull is the action for checking a given release's information. diff --git a/pkg/action/push.go b/pkg/action/push.go index 70e5c1582..35472415c 100644 --- a/pkg/action/push.go +++ b/pkg/action/push.go @@ -20,10 +20,10 @@ import ( "io" "strings" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/pusher" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/uploader" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/pusher" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/uploader" ) // Push is the action for uploading a chart. diff --git a/pkg/action/registry_login.go b/pkg/action/registry_login.go index cd144e1e7..7a981d547 100644 --- a/pkg/action/registry_login.go +++ b/pkg/action/registry_login.go @@ -19,7 +19,7 @@ package action import ( "io" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/registry" ) // RegistryLogin performs a registry login operation. diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go index aaffe47ca..2539a7f65 100644 --- a/pkg/action/release_testing.go +++ b/pkg/action/release_testing.go @@ -26,8 +26,8 @@ import ( "github.com/pkg/errors" v1 "k8s.io/api/core/v1" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" ) const ( diff --git a/pkg/action/resource_policy.go b/pkg/action/resource_policy.go index 63e83f3d9..f18acb880 100644 --- a/pkg/action/resource_policy.go +++ b/pkg/action/resource_policy.go @@ -19,8 +19,8 @@ package action import ( "strings" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/releaseutil" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/releaseutil" ) func filterManifestsToKeep(manifests []releaseutil.Manifest) (keep, remaining []releaseutil.Manifest) { diff --git a/pkg/action/rollback.go b/pkg/action/rollback.go index b0be17d13..12dee35ce 100644 --- a/pkg/action/rollback.go +++ b/pkg/action/rollback.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) // Rollback is the action for rolling back to a given release. diff --git a/pkg/action/show.go b/pkg/action/show.go index 6ed855b83..d3c9b0b89 100644 --- a/pkg/action/show.go +++ b/pkg/action/show.go @@ -25,10 +25,10 @@ import ( "k8s.io/cli-runtime/pkg/printers" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/registry" ) // ShowOutputFormat is the format of the output of `helm show` diff --git a/pkg/action/show_test.go b/pkg/action/show_test.go index 8b617ea85..65ab76142 100644 --- a/pkg/action/show_test.go +++ b/pkg/action/show_test.go @@ -19,7 +19,7 @@ package action import ( "testing" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func TestShow(t *testing.T) { diff --git a/pkg/action/status.go b/pkg/action/status.go index 101f7d348..db9a3b3f0 100644 --- a/pkg/action/status.go +++ b/pkg/action/status.go @@ -20,8 +20,8 @@ import ( "bytes" "errors" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/release" ) // Status is the action for checking the deployment status of releases. diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index ac0c4fee8..dda7d6978 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -24,11 +24,11 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + helmtime "helm.sh/helm/v4/pkg/time" ) // Uninstall is the action for uninstalling releases. diff --git a/pkg/action/uninstall_test.go b/pkg/action/uninstall_test.go index 869ffb8c7..eca9e6ad8 100644 --- a/pkg/action/uninstall_test.go +++ b/pkg/action/uninstall_test.go @@ -22,8 +22,8 @@ import ( "github.com/stretchr/testify/assert" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" ) func uninstallAction(t *testing.T) *Uninstall { diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index 5002406ca..f93bf29b1 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -28,14 +28,14 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/postrender" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/postrender" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + "helm.sh/helm/v4/pkg/storage/driver" ) // Upgrade is the action for upgrading releases. diff --git a/pkg/action/upgrade_test.go b/pkg/action/upgrade_test.go index db8486340..5437490cb 100644 --- a/pkg/action/upgrade_test.go +++ b/pkg/action/upgrade_test.go @@ -23,15 +23,15 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/storage/driver" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) func upgradeAction(t *testing.T) *Upgrade { diff --git a/pkg/action/validate.go b/pkg/action/validate.go index 127e9bf96..4bc70e90c 100644 --- a/pkg/action/validate.go +++ b/pkg/action/validate.go @@ -25,7 +25,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/pkg/kube" ) var accessor = meta.NewAccessor() diff --git a/pkg/action/validate_test.go b/pkg/action/validate_test.go index e73594e86..3efecd6ff 100644 --- a/pkg/action/validate_test.go +++ b/pkg/action/validate_test.go @@ -22,7 +22,7 @@ import ( "net/http" "testing" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/pkg/kube" "github.com/stretchr/testify/assert" diff --git a/pkg/action/verify.go b/pkg/action/verify.go index f36239496..68a5e2d88 100644 --- a/pkg/action/verify.go +++ b/pkg/action/verify.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "helm.sh/helm/v3/pkg/downloader" + "helm.sh/helm/v4/pkg/downloader" ) // Verify is the action for building a given chart's Verify tree. diff --git a/pkg/chart/loader/archive.go b/pkg/chart/loader/archive.go index 8bb549346..51dd264f7 100644 --- a/pkg/chart/loader/archive.go +++ b/pkg/chart/loader/archive.go @@ -30,7 +30,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) var drivePathPattern = regexp.MustCompile(`^[a-zA-Z]:/`) diff --git a/pkg/chart/loader/directory.go b/pkg/chart/loader/directory.go index 9bcbee60c..1dc30e4dc 100644 --- a/pkg/chart/loader/directory.go +++ b/pkg/chart/loader/directory.go @@ -25,9 +25,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/sympath" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/ignore" + "helm.sh/helm/v4/internal/sympath" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/ignore" ) var utf8bom = []byte{0xEF, 0xBB, 0xBF} diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index a68a05aa9..67f09c2bb 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -26,7 +26,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // ChartLoader loads a chart. diff --git a/pkg/chart/loader/load_test.go b/pkg/chart/loader/load_test.go index 098e6155f..25e000835 100644 --- a/pkg/chart/loader/load_test.go +++ b/pkg/chart/loader/load_test.go @@ -29,7 +29,7 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func TestLoadDir(t *testing.T) { diff --git a/pkg/chartutil/capabilities.go b/pkg/chartutil/capabilities.go index 48fab0ea4..6c1ebf24c 100644 --- a/pkg/chartutil/capabilities.go +++ b/pkg/chartutil/capabilities.go @@ -25,7 +25,7 @@ import ( apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - helmversion "helm.sh/helm/v3/internal/version" + helmversion "helm.sh/helm/v4/internal/version" ) var ( diff --git a/pkg/chartutil/chartfile.go b/pkg/chartutil/chartfile.go index 4f537a6e7..596011ba3 100644 --- a/pkg/chartutil/chartfile.go +++ b/pkg/chartutil/chartfile.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // LoadChartfile loads a Chart.yaml file into a *chart.Metadata. diff --git a/pkg/chartutil/chartfile_test.go b/pkg/chartutil/chartfile_test.go index ef5c5462a..595aee517 100644 --- a/pkg/chartutil/chartfile_test.go +++ b/pkg/chartutil/chartfile_test.go @@ -19,7 +19,7 @@ package chartutil import ( "testing" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) const testfile = "testdata/chartfiletest.yaml" diff --git a/pkg/chartutil/coalesce.go b/pkg/chartutil/coalesce.go index f0272fd6a..df6cae6cb 100644 --- a/pkg/chartutil/coalesce.go +++ b/pkg/chartutil/coalesce.go @@ -23,7 +23,7 @@ import ( "github.com/mitchellh/copystructure" "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func concatPrefix(a, b string) string { diff --git a/pkg/chartutil/coalesce_test.go b/pkg/chartutil/coalesce_test.go index 61b718d97..318e5a49d 100644 --- a/pkg/chartutil/coalesce_test.go +++ b/pkg/chartutil/coalesce_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // ref: http://www.yaml.org/spec/1.2/spec.html#id2803362 diff --git a/pkg/chartutil/create.go b/pkg/chartutil/create.go index 321d3d2c0..4f59b9f83 100644 --- a/pkg/chartutil/create.go +++ b/pkg/chartutil/create.go @@ -27,8 +27,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) // chartName is a regular expression for testing the supplied name of a chart. diff --git a/pkg/chartutil/create_test.go b/pkg/chartutil/create_test.go index 1697c4218..8f8122f6f 100644 --- a/pkg/chartutil/create_test.go +++ b/pkg/chartutil/create_test.go @@ -22,8 +22,8 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) func TestCreate(t *testing.T) { diff --git a/pkg/chartutil/dependencies.go b/pkg/chartutil/dependencies.go index 36a341927..31e0e91cc 100644 --- a/pkg/chartutil/dependencies.go +++ b/pkg/chartutil/dependencies.go @@ -21,7 +21,7 @@ import ( "github.com/mitchellh/copystructure" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // ProcessDependencies checks through this chart's dependencies, processing accordingly. diff --git a/pkg/chartutil/dependencies_test.go b/pkg/chartutil/dependencies_test.go index 7e035be5f..af34a3f6b 100644 --- a/pkg/chartutil/dependencies_test.go +++ b/pkg/chartutil/dependencies_test.go @@ -21,8 +21,8 @@ import ( "strconv" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) func loadChart(t *testing.T, path string) *chart.Chart { diff --git a/pkg/chartutil/doc.go b/pkg/chartutil/doc.go index 49c55ac52..6c0b1582b 100644 --- a/pkg/chartutil/doc.go +++ b/pkg/chartutil/doc.go @@ -42,4 +42,4 @@ into a Chart. When creating charts in memory, use the 'helm.sh/helm/pkg/chart' package directly. */ -package chartutil // import "helm.sh/helm/v3/pkg/chartutil" +package chartutil // import "helm.sh/helm/v4/pkg/chartutil" diff --git a/pkg/chartutil/expand.go b/pkg/chartutil/expand.go index 7ae1ae6fa..ebe27843a 100644 --- a/pkg/chartutil/expand.go +++ b/pkg/chartutil/expand.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) // Expand uncompresses and extracts a chart into the specified directory. diff --git a/pkg/chartutil/jsonschema.go b/pkg/chartutil/jsonschema.go index 7b9768fd3..f1c8dcdf4 100644 --- a/pkg/chartutil/jsonschema.go +++ b/pkg/chartutil/jsonschema.go @@ -25,7 +25,7 @@ import ( "github.com/xeipuuv/gojsonschema" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // ValidateAgainstSchema checks that values does not violate the structure laid out in schema diff --git a/pkg/chartutil/jsonschema_test.go b/pkg/chartutil/jsonschema_test.go index 7610db337..098cf70db 100644 --- a/pkg/chartutil/jsonschema_test.go +++ b/pkg/chartutil/jsonschema_test.go @@ -20,7 +20,7 @@ import ( "os" "testing" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func TestValidateAgainstSingleSchema(t *testing.T) { diff --git a/pkg/chartutil/save.go b/pkg/chartutil/save.go index 4ee90709c..0dddad912 100644 --- a/pkg/chartutil/save.go +++ b/pkg/chartutil/save.go @@ -28,7 +28,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) var headerBytes = []byte("+aHR0cHM6Ly95b3V0dS5iZS96OVV6MWljandyTQo=") diff --git a/pkg/chartutil/save_test.go b/pkg/chartutil/save_test.go index 98b4e641b..3789b6617 100644 --- a/pkg/chartutil/save_test.go +++ b/pkg/chartutil/save_test.go @@ -29,8 +29,8 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) func TestSave(t *testing.T) { diff --git a/pkg/chartutil/values.go b/pkg/chartutil/values.go index 61c633a6d..d41df6e7f 100644 --- a/pkg/chartutil/values.go +++ b/pkg/chartutil/values.go @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // GlobalKey is the name of the Values key that is used for storing global vars. diff --git a/pkg/chartutil/values_test.go b/pkg/chartutil/values_test.go index dc8eae3ab..56167c8a1 100644 --- a/pkg/chartutil/values_test.go +++ b/pkg/chartutil/values_test.go @@ -22,7 +22,7 @@ import ( "testing" "text/template" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func TestReadValues(t *testing.T) { diff --git a/pkg/cli/environment.go b/pkg/cli/environment.go index 635806344..3f2dc00b2 100644 --- a/pkg/cli/environment.go +++ b/pkg/cli/environment.go @@ -34,9 +34,9 @@ import ( "k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/client-go/rest" - "helm.sh/helm/v3/internal/version" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/kube" ) // defaultMaxHistory sets the maximum number of releases to 0: unlimited diff --git a/pkg/cli/environment_test.go b/pkg/cli/environment_test.go index f7709045c..8a3b87936 100644 --- a/pkg/cli/environment_test.go +++ b/pkg/cli/environment_test.go @@ -24,7 +24,7 @@ import ( "github.com/spf13/pflag" - "helm.sh/helm/v3/internal/version" + "helm.sh/helm/v4/internal/version" ) func TestSetNamespace(t *testing.T) { diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index 06631cd33..24c47ecba 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/strvals" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/strvals" ) // Options captures the different ways to specify values diff --git a/pkg/cli/values/options_test.go b/pkg/cli/values/options_test.go index 54124c0fa..9182e3cc8 100644 --- a/pkg/cli/values/options_test.go +++ b/pkg/cli/values/options_test.go @@ -20,7 +20,7 @@ import ( "reflect" "testing" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/pkg/getter" ) func TestMergeValues(t *testing.T) { diff --git a/pkg/downloader/chart_downloader.go b/pkg/downloader/chart_downloader.go index dde6a1057..910942cde 100644 --- a/pkg/downloader/chart_downloader.go +++ b/pkg/downloader/chart_downloader.go @@ -26,13 +26,13 @@ import ( "github.com/Masterminds/semver/v3" "github.com/pkg/errors" - "helm.sh/helm/v3/internal/fileutil" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/provenance" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/fileutil" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/provenance" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // VerificationStrategy describes a strategy for determining whether to verify a chart. diff --git a/pkg/downloader/chart_downloader_test.go b/pkg/downloader/chart_downloader_test.go index 131e21306..a8c359411 100644 --- a/pkg/downloader/chart_downloader_test.go +++ b/pkg/downloader/chart_downloader_test.go @@ -20,11 +20,11 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) const ( diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index ec4056d27..5a509646d 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -33,16 +33,16 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/internal/resolver" - "helm.sh/helm/v3/internal/third_party/dep/fs" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/resolver" + "helm.sh/helm/v4/internal/third_party/dep/fs" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // ErrRepoNotFound indicates that chart repositories can't be found in local repo cache. diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index db2487d16..ae4e693ba 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -22,11 +22,11 @@ import ( "reflect" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestVersionEquals(t *testing.T) { diff --git a/pkg/engine/doc.go b/pkg/engine/doc.go index 6b3443aaf..e764a829a 100644 --- a/pkg/engine/doc.go +++ b/pkg/engine/doc.go @@ -21,4 +21,4 @@ When Helm renders templates it does so with additional functions and different modes (e.g., strict, lint mode). This package handles the helm specific implementation. */ -package engine // import "helm.sh/helm/v3/pkg/engine" +package engine // import "helm.sh/helm/v4/pkg/engine" diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index d8ee313e1..8f69505f6 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -29,8 +29,8 @@ import ( "github.com/pkg/errors" "k8s.io/client-go/rest" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" ) // Engine is an implementation of the Helm rendering implementation for templates. diff --git a/pkg/engine/engine_test.go b/pkg/engine/engine_test.go index de1896a47..f6a96bd6a 100644 --- a/pkg/engine/engine_test.go +++ b/pkg/engine/engine_test.go @@ -30,8 +30,8 @@ import ( "k8s.io/client-go/dynamic" "k8s.io/client-go/dynamic/fake" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" ) func TestSortTemplates(t *testing.T) { diff --git a/pkg/engine/files.go b/pkg/engine/files.go index f2cfdb3f3..dc6a67de8 100644 --- a/pkg/engine/files.go +++ b/pkg/engine/files.go @@ -23,7 +23,7 @@ import ( "github.com/gobwas/glob" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // files is a map of files in a chart that can be accessed from a template. diff --git a/pkg/getter/getter.go b/pkg/getter/getter.go index 1acb2093d..5014784bc 100644 --- a/pkg/getter/getter.go +++ b/pkg/getter/getter.go @@ -23,8 +23,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/registry" ) // options are generic parameters to be provided to the getter during instantiation. diff --git a/pkg/getter/getter_test.go b/pkg/getter/getter_test.go index ab14784ab..a14301900 100644 --- a/pkg/getter/getter_test.go +++ b/pkg/getter/getter_test.go @@ -18,7 +18,7 @@ package getter import ( "testing" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) const pluginDir = "testdata/plugins" diff --git a/pkg/getter/httpgetter.go b/pkg/getter/httpgetter.go index df3dcd910..969247091 100644 --- a/pkg/getter/httpgetter.go +++ b/pkg/getter/httpgetter.go @@ -25,9 +25,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/internal/version" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/internal/version" ) // HTTPGetter is the default HTTP(/S) backend handler diff --git a/pkg/getter/httpgetter_test.go b/pkg/getter/httpgetter_test.go index 2c38c6154..8f1202363 100644 --- a/pkg/getter/httpgetter_test.go +++ b/pkg/getter/httpgetter_test.go @@ -30,9 +30,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/internal/version" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/cli" ) func TestHTTPGetter(t *testing.T) { diff --git a/pkg/getter/ocigetter.go b/pkg/getter/ocigetter.go index 0547cdcbb..5787dc909 100644 --- a/pkg/getter/ocigetter.go +++ b/pkg/getter/ocigetter.go @@ -24,9 +24,9 @@ import ( "sync" "time" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/pkg/registry" ) // OCIGetter is the default HTTP(/S) backend handler diff --git a/pkg/getter/ocigetter_test.go b/pkg/getter/ocigetter_test.go index d0834d9fc..e3d9278a5 100644 --- a/pkg/getter/ocigetter_test.go +++ b/pkg/getter/ocigetter_test.go @@ -21,7 +21,7 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/registry" ) func TestOCIGetter(t *testing.T) { diff --git a/pkg/getter/plugingetter.go b/pkg/getter/plugingetter.go index a371b52eb..2b734fdf0 100644 --- a/pkg/getter/plugingetter.go +++ b/pkg/getter/plugingetter.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/plugin" ) // collectPlugins scans for getter plugins. diff --git a/pkg/getter/plugingetter_test.go b/pkg/getter/plugingetter_test.go index a18fa302b..310ab9e07 100644 --- a/pkg/getter/plugingetter_test.go +++ b/pkg/getter/plugingetter_test.go @@ -20,7 +20,7 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) func TestCollectPlugins(t *testing.T) { diff --git a/pkg/helmpath/home_unix_test.go b/pkg/helmpath/home_unix_test.go index 977002549..6e4189bc9 100644 --- a/pkg/helmpath/home_unix_test.go +++ b/pkg/helmpath/home_unix_test.go @@ -20,7 +20,7 @@ import ( "runtime" "testing" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) func TestHelmHome(t *testing.T) { diff --git a/pkg/helmpath/home_windows_test.go b/pkg/helmpath/home_windows_test.go index 073e6347f..38fe5e4f1 100644 --- a/pkg/helmpath/home_windows_test.go +++ b/pkg/helmpath/home_windows_test.go @@ -19,7 +19,7 @@ import ( "os" "testing" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) func TestHelmHome(t *testing.T) { diff --git a/pkg/helmpath/lazypath.go b/pkg/helmpath/lazypath.go index 6b4f1fc77..c1f868754 100644 --- a/pkg/helmpath/lazypath.go +++ b/pkg/helmpath/lazypath.go @@ -17,7 +17,7 @@ import ( "os" "path/filepath" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) const ( diff --git a/pkg/helmpath/lazypath_darwin_test.go b/pkg/helmpath/lazypath_darwin_test.go index d0503e0e1..e04e20756 100644 --- a/pkg/helmpath/lazypath_darwin_test.go +++ b/pkg/helmpath/lazypath_darwin_test.go @@ -22,7 +22,7 @@ import ( "k8s.io/client-go/util/homedir" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) const ( diff --git a/pkg/helmpath/lazypath_unix_test.go b/pkg/helmpath/lazypath_unix_test.go index 657982b2d..534735d10 100644 --- a/pkg/helmpath/lazypath_unix_test.go +++ b/pkg/helmpath/lazypath_unix_test.go @@ -22,7 +22,7 @@ import ( "k8s.io/client-go/util/homedir" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) const ( diff --git a/pkg/helmpath/lazypath_windows_test.go b/pkg/helmpath/lazypath_windows_test.go index dedfd5720..ebd95e812 100644 --- a/pkg/helmpath/lazypath_windows_test.go +++ b/pkg/helmpath/lazypath_windows_test.go @@ -22,7 +22,7 @@ import ( "k8s.io/client-go/util/homedir" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) const ( diff --git a/pkg/ignore/doc.go b/pkg/ignore/doc.go index 1f5e91847..a66066eb2 100644 --- a/pkg/ignore/doc.go +++ b/pkg/ignore/doc.go @@ -65,4 +65,4 @@ Notable differences from .gitignore: - The evaluation of escape sequences has not been tested for compatibility - There is no support for '\!' as a special leading sequence. */ -package ignore // import "helm.sh/helm/v3/pkg/ignore" +package ignore // import "helm.sh/helm/v4/pkg/ignore" diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 5f16f2bfb..79aa98535 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "bytes" diff --git a/pkg/kube/config.go b/pkg/kube/config.go index e00c9acb1..0ef94453f 100644 --- a/pkg/kube/config.go +++ b/pkg/kube/config.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import "k8s.io/cli-runtime/pkg/genericclioptions" diff --git a/pkg/kube/converter.go b/pkg/kube/converter.go index 3bf0e358c..ac6d95fb4 100644 --- a/pkg/kube/converter.go +++ b/pkg/kube/converter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "sync" diff --git a/pkg/kube/factory.go b/pkg/kube/factory.go index f19d62dc3..9dae398d7 100644 --- a/pkg/kube/factory.go +++ b/pkg/kube/factory.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "k8s.io/cli-runtime/pkg/resource" diff --git a/pkg/kube/fake/fake.go b/pkg/kube/fake/fake.go index 267020d57..a60d9f34e 100644 --- a/pkg/kube/fake/fake.go +++ b/pkg/kube/fake/fake.go @@ -26,7 +26,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/pkg/kube" ) // FailingKubeClient implements KubeClient for testing purposes. It also has diff --git a/pkg/kube/fake/printer.go b/pkg/kube/fake/printer.go index cc2c84b40..b38e8c084 100644 --- a/pkg/kube/fake/printer.go +++ b/pkg/kube/fake/printer.go @@ -26,7 +26,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/pkg/kube" ) // PrintingKubeClient implements KubeClient, but simply prints the reader to diff --git a/pkg/kube/ready.go b/pkg/kube/ready.go index 55c4a39bf..584b8853a 100644 --- a/pkg/kube/ready.go +++ b/pkg/kube/ready.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "context" @@ -35,7 +35,7 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/scheme" - deploymentutil "helm.sh/helm/v3/internal/third_party/k8s.io/kubernetes/deployment/util" + deploymentutil "helm.sh/helm/v4/internal/third_party/k8s.io/kubernetes/deployment/util" ) // ReadyCheckerOption is a function that configures a ReadyChecker. diff --git a/pkg/kube/ready_test.go b/pkg/kube/ready_test.go index 14bf8588b..ced0a51a8 100644 --- a/pkg/kube/ready_test.go +++ b/pkg/kube/ready_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "context" diff --git a/pkg/kube/resource.go b/pkg/kube/resource.go index d441db8a7..763488a08 100644 --- a/pkg/kube/resource.go +++ b/pkg/kube/resource.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import "k8s.io/cli-runtime/pkg/resource" diff --git a/pkg/kube/resource_policy.go b/pkg/kube/resource_policy.go index 46b8680dd..fb1089785 100644 --- a/pkg/kube/resource_policy.go +++ b/pkg/kube/resource_policy.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" // ResourcePolicyAnno is the annotation name for a resource policy const ResourcePolicyAnno = "helm.sh/resource-policy" diff --git a/pkg/kube/resource_test.go b/pkg/kube/resource_test.go index 3c906ceca..c405ca382 100644 --- a/pkg/kube/resource_test.go +++ b/pkg/kube/resource_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "testing" diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index bdafc8255..7eb931496 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "context" diff --git a/pkg/lint/lint.go b/pkg/lint/lint.go index ef23ee7c8..de07115ce 100644 --- a/pkg/lint/lint.go +++ b/pkg/lint/lint.go @@ -14,14 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package lint // import "helm.sh/helm/v3/pkg/lint" +package lint // import "helm.sh/helm/v4/pkg/lint" import ( "path/filepath" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/rules" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/rules" + "helm.sh/helm/v4/pkg/lint/support" ) // All runs all the available linters on the given base directory. diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index 8f03ed1b1..a6d7707d5 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -21,8 +21,8 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) var values map[string]interface{} @@ -147,8 +147,8 @@ func TestHelmCreateChart(t *testing.T) { // // Note: This test requires the following ldflags to be set per the current Kubernetes version to avoid false-positive // results. -// 1. -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMajor= -// 2. -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMinor= +// 1. -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMajor= +// 2. -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMinor= // or directly use '$(LDFLAGS)' in Makefile. // // When run without ldflags, the test passes giving a false-positive result. This is because the variables diff --git a/pkg/lint/rules/chartfile.go b/pkg/lint/rules/chartfile.go index 910602b7d..2e718067b 100644 --- a/pkg/lint/rules/chartfile.go +++ b/pkg/lint/rules/chartfile.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rules // import "helm.sh/helm/v3/pkg/lint/rules" +package rules // import "helm.sh/helm/v4/pkg/lint/rules" import ( "fmt" @@ -26,9 +26,9 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) // Chartfile runs a set of linter rules related to Chart.yaml file diff --git a/pkg/lint/rules/chartfile_test.go b/pkg/lint/rules/chartfile_test.go index f4c836cf7..eb9b19cb7 100644 --- a/pkg/lint/rules/chartfile_test.go +++ b/pkg/lint/rules/chartfile_test.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) const ( diff --git a/pkg/lint/rules/dependencies.go b/pkg/lint/rules/dependencies.go index f1ab1dcad..5f71dd144 100644 --- a/pkg/lint/rules/dependencies.go +++ b/pkg/lint/rules/dependencies.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rules // import "helm.sh/helm/v3/pkg/lint/rules" +package rules // import "helm.sh/helm/v4/pkg/lint/rules" import ( "fmt" @@ -22,9 +22,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/lint/support" ) // Dependencies runs lints against a chart's dependencies diff --git a/pkg/lint/rules/dependencies_test.go b/pkg/lint/rules/dependencies_test.go index c0afff133..e167b4479 100644 --- a/pkg/lint/rules/dependencies_test.go +++ b/pkg/lint/rules/dependencies_test.go @@ -19,9 +19,9 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) func chartWithBadDependencies() chart.Chart { diff --git a/pkg/lint/rules/deprecations.go b/pkg/lint/rules/deprecations.go index 90e7748a4..9d318617c 100644 --- a/pkg/lint/rules/deprecations.go +++ b/pkg/lint/rules/deprecations.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rules // import "helm.sh/helm/v3/pkg/lint/rules" +package rules // import "helm.sh/helm/v4/pkg/lint/rules" import ( "fmt" @@ -25,7 +25,7 @@ import ( "k8s.io/apiserver/pkg/endpoints/deprecation" kscheme "k8s.io/client-go/kubernetes/scheme" - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/pkg/chartutil" ) var ( diff --git a/pkg/lint/rules/deprecations_test.go b/pkg/lint/rules/deprecations_test.go index cf2409007..c0e64d04f 100644 --- a/pkg/lint/rules/deprecations_test.go +++ b/pkg/lint/rules/deprecations_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rules // import "helm.sh/helm/v3/pkg/lint/rules" +package rules // import "helm.sh/helm/v4/pkg/lint/rules" import "testing" diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index 41d1a1bab..d2058d987 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -33,10 +33,10 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/yaml" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/engine" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/engine" + "helm.sh/helm/v4/pkg/lint/support" ) var ( diff --git a/pkg/lint/rules/template_test.go b/pkg/lint/rules/template_test.go index 80f9b28ed..9e6dc4004 100644 --- a/pkg/lint/rules/template_test.go +++ b/pkg/lint/rules/template_test.go @@ -23,9 +23,9 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) const templateTestBasedir = "./testdata/albatross" diff --git a/pkg/lint/rules/values.go b/pkg/lint/rules/values.go index 538d8381b..5b6e39c0c 100644 --- a/pkg/lint/rules/values.go +++ b/pkg/lint/rules/values.go @@ -22,8 +22,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) // Values lints a chart's values.yaml file. diff --git a/pkg/lint/rules/values_test.go b/pkg/lint/rules/values_test.go index faa29d48a..8a2556a60 100644 --- a/pkg/lint/rules/values_test.go +++ b/pkg/lint/rules/values_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/internal/test/ensure" + "helm.sh/helm/v4/internal/test/ensure" ) var nonExistingValuesFilePath = filepath.Join("/fake/dir", "values.yaml") diff --git a/pkg/lint/support/doc.go b/pkg/lint/support/doc.go index bffefe8ff..b007804dc 100644 --- a/pkg/lint/support/doc.go +++ b/pkg/lint/support/doc.go @@ -20,4 +20,4 @@ Package support contains tools for linting charts. Linting is the process of testing charts for errors or warnings regarding formatting, compilation, or standards compliance. */ -package support // import "helm.sh/helm/v3/pkg/lint/support" +package support // import "helm.sh/helm/v4/pkg/lint/support" diff --git a/pkg/plugin/cache/cache.go b/pkg/plugin/cache/cache.go index 5f3345b63..f3e847374 100644 --- a/pkg/plugin/cache/cache.go +++ b/pkg/plugin/cache/cache.go @@ -14,7 +14,7 @@ limitations under the License. */ // Package cache provides a key generator for vcs urls. -package cache // import "helm.sh/helm/v3/pkg/plugin/cache" +package cache // import "helm.sh/helm/v4/pkg/plugin/cache" import ( "net/url" diff --git a/pkg/plugin/hooks.go b/pkg/plugin/hooks.go index 34d3163a4..10dc8580e 100644 --- a/pkg/plugin/hooks.go +++ b/pkg/plugin/hooks.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package plugin // import "helm.sh/helm/v3/pkg/plugin" +package plugin // import "helm.sh/helm/v4/pkg/plugin" // Types of hooks const ( diff --git a/pkg/plugin/installer/base.go b/pkg/plugin/installer/base.go index ba6a55d55..3738246ee 100644 --- a/pkg/plugin/installer/base.go +++ b/pkg/plugin/installer/base.go @@ -13,12 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "path/filepath" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) type base struct { diff --git a/pkg/plugin/installer/base_test.go b/pkg/plugin/installer/base_test.go index 38ef28c3e..f4dd6d6be 100644 --- a/pkg/plugin/installer/base_test.go +++ b/pkg/plugin/installer/base_test.go @@ -11,7 +11,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "os" diff --git a/pkg/plugin/installer/doc.go b/pkg/plugin/installer/doc.go index 3e3b2ebeb..b927dbd37 100644 --- a/pkg/plugin/installer/doc.go +++ b/pkg/plugin/installer/doc.go @@ -14,4 +14,4 @@ limitations under the License. */ // Package installer provides an interface for installing Helm plugins. -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" diff --git a/pkg/plugin/installer/http_installer.go b/pkg/plugin/installer/http_installer.go index 49274f83c..758e6039c 100644 --- a/pkg/plugin/installer/http_installer.go +++ b/pkg/plugin/installer/http_installer.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "archive/tar" @@ -29,11 +29,11 @@ import ( securejoin "github.com/cyphar/filepath-securejoin" "github.com/pkg/errors" - "helm.sh/helm/v3/internal/third_party/dep/fs" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/plugin/cache" + "helm.sh/helm/v4/internal/third_party/dep/fs" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/plugin/cache" ) // HTTPInstaller installs plugins from an archive served by a web server. diff --git a/pkg/plugin/installer/http_installer_test.go b/pkg/plugin/installer/http_installer_test.go index f0fe36ecd..c5af1f2cc 100644 --- a/pkg/plugin/installer/http_installer_test.go +++ b/pkg/plugin/installer/http_installer_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "archive/tar" @@ -31,9 +31,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" ) var _ Installer = new(HTTPInstaller) diff --git a/pkg/plugin/installer/installer.go b/pkg/plugin/installer/installer.go index 6f01494e5..5fad58f99 100644 --- a/pkg/plugin/installer/installer.go +++ b/pkg/plugin/installer/installer.go @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) // ErrMissingMetadata indicates that plugin.yaml is missing. diff --git a/pkg/plugin/installer/local_installer.go b/pkg/plugin/installer/local_installer.go index 759df38be..a79ca7ec7 100644 --- a/pkg/plugin/installer/local_installer.go +++ b/pkg/plugin/installer/local_installer.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "os" diff --git a/pkg/plugin/installer/local_installer_test.go b/pkg/plugin/installer/local_installer_test.go index 51408f128..b28920af4 100644 --- a/pkg/plugin/installer/local_installer_test.go +++ b/pkg/plugin/installer/local_installer_test.go @@ -13,14 +13,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "os" "path/filepath" "testing" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/pkg/helmpath" ) var _ Installer = new(LocalInstaller) diff --git a/pkg/plugin/installer/vcs_installer.go b/pkg/plugin/installer/vcs_installer.go index f7df5b322..8153550b2 100644 --- a/pkg/plugin/installer/vcs_installer.go +++ b/pkg/plugin/installer/vcs_installer.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "os" @@ -23,9 +23,9 @@ import ( "github.com/Masterminds/vcs" "github.com/pkg/errors" - "helm.sh/helm/v3/internal/third_party/dep/fs" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/plugin/cache" + "helm.sh/helm/v4/internal/third_party/dep/fs" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/plugin/cache" ) // VCSInstaller installs plugins from remote a repository. diff --git a/pkg/plugin/installer/vcs_installer_test.go b/pkg/plugin/installer/vcs_installer_test.go index 0bb0b6780..fbb5d354e 100644 --- a/pkg/plugin/installer/vcs_installer_test.go +++ b/pkg/plugin/installer/vcs_installer_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/Masterminds/vcs" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/helmpath" ) var _ Installer = new(VCSInstaller) diff --git a/pkg/plugin/plugin.go b/pkg/plugin/plugin.go index 8eac1f74d..3456664c1 100644 --- a/pkg/plugin/plugin.go +++ b/pkg/plugin/plugin.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package plugin // import "helm.sh/helm/v3/pkg/plugin" +package plugin // import "helm.sh/helm/v4/pkg/plugin" import ( "fmt" @@ -27,7 +27,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) const PluginFileName = "plugin.yaml" diff --git a/pkg/plugin/plugin_test.go b/pkg/plugin/plugin_test.go index 770d701fa..b96428f6b 100644 --- a/pkg/plugin/plugin_test.go +++ b/pkg/plugin/plugin_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package plugin // import "helm.sh/helm/v3/pkg/plugin" +package plugin // import "helm.sh/helm/v4/pkg/plugin" import ( "fmt" @@ -23,7 +23,7 @@ import ( "runtime" "testing" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) func TestPrepareCommand(t *testing.T) { diff --git a/pkg/provenance/doc.go b/pkg/provenance/doc.go index 0c7ae0618..883c0e724 100644 --- a/pkg/provenance/doc.go +++ b/pkg/provenance/doc.go @@ -35,4 +35,4 @@ and using `gpg --verify`, `keybase pgp verify`, or similar: gpg: Signature made Mon Jul 25 17:23:44 2016 MDT using RSA key ID 1FC18762 gpg: Good signature from "Helm Testing (This key should only be used for testing. DO NOT TRUST.) " [ultimate] */ -package provenance // import "helm.sh/helm/v3/pkg/provenance" +package provenance // import "helm.sh/helm/v4/pkg/provenance" diff --git a/pkg/provenance/sign.go b/pkg/provenance/sign.go index 7f89ef3f5..bbb68322f 100644 --- a/pkg/provenance/sign.go +++ b/pkg/provenance/sign.go @@ -30,8 +30,8 @@ import ( "golang.org/x/crypto/openpgp/packet" //nolint "sigs.k8s.io/yaml" - hapi "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + hapi "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) var defaultPGPConfig = packet.Config{ diff --git a/pkg/pusher/ocipusher.go b/pkg/pusher/ocipusher.go index 33296aadd..6efc2c8a6 100644 --- a/pkg/pusher/ocipusher.go +++ b/pkg/pusher/ocipusher.go @@ -26,10 +26,10 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/time/ctime" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/time/ctime" ) // OCIPusher is the default OCI backend handler diff --git a/pkg/pusher/ocipusher_test.go b/pkg/pusher/ocipusher_test.go index 11842b4ae..760da8404 100644 --- a/pkg/pusher/ocipusher_test.go +++ b/pkg/pusher/ocipusher_test.go @@ -19,7 +19,7 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/registry" ) func TestNewOCIPusher(t *testing.T) { diff --git a/pkg/pusher/pusher.go b/pkg/pusher/pusher.go index 5b8a9160f..0e07ad2d7 100644 --- a/pkg/pusher/pusher.go +++ b/pkg/pusher/pusher.go @@ -19,8 +19,8 @@ package pusher import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/registry" ) // options are generic parameters to be provided to the pusher during instantiation. diff --git a/pkg/pusher/pusher_test.go b/pkg/pusher/pusher_test.go index d43e6c9ec..71fab8694 100644 --- a/pkg/pusher/pusher_test.go +++ b/pkg/pusher/pusher_test.go @@ -18,8 +18,8 @@ package pusher import ( "testing" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/registry" ) func TestProvider(t *testing.T) { diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 6a943d27d..f51529965 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package registry // import "helm.sh/helm/v3/pkg/registry" +package registry // import "helm.sh/helm/v4/pkg/registry" import ( "context" @@ -38,9 +38,9 @@ import ( registryremote "oras.land/oras-go/pkg/registry/remote" registryauth "oras.land/oras-go/pkg/registry/remote/auth" - "helm.sh/helm/v3/internal/version" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/helmpath" ) // See https://github.com/helm/helm/issues/10166 diff --git a/pkg/registry/constants.go b/pkg/registry/constants.go index 570b6f0d3..c455cf314 100644 --- a/pkg/registry/constants.go +++ b/pkg/registry/constants.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package registry // import "helm.sh/helm/v3/pkg/registry" +package registry // import "helm.sh/helm/v4/pkg/registry" const ( // OCIScheme is the URL scheme for OCI-based requests diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 4454105c9..5180b3313 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package registry // import "helm.sh/helm/v3/pkg/registry" +package registry // import "helm.sh/helm/v4/pkg/registry" import ( "bytes" @@ -25,7 +25,7 @@ import ( "strings" "time" - helmtime "helm.sh/helm/v3/pkg/time" + helmtime "helm.sh/helm/v4/pkg/time" "github.com/Masterminds/semver/v3" ocispec "github.com/opencontainers/image-spec/specs-go/v1" @@ -34,9 +34,9 @@ import ( orascontext "oras.land/oras-go/pkg/context" "oras.land/oras-go/pkg/registry" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) var immutableOciAnnotations = []string{ diff --git a/pkg/registry/util_test.go b/pkg/registry/util_test.go index 908ea4950..93a11a998 100644 --- a/pkg/registry/util_test.go +++ b/pkg/registry/util_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package registry // import "helm.sh/helm/v3/pkg/registry" +package registry // import "helm.sh/helm/v4/pkg/registry" import ( "reflect" @@ -23,8 +23,8 @@ import ( ocispec "github.com/opencontainers/image-spec/specs-go/v1" - "helm.sh/helm/v3/pkg/chart" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + helmtime "helm.sh/helm/v4/pkg/time" ) func TestGenerateOCIChartAnnotations(t *testing.T) { diff --git a/pkg/registry/utils_test.go b/pkg/registry/utils_test.go index ee78ea76f..d064295cd 100644 --- a/pkg/registry/utils_test.go +++ b/pkg/registry/utils_test.go @@ -40,7 +40,7 @@ import ( "github.com/stretchr/testify/suite" "golang.org/x/crypto/bcrypt" - "helm.sh/helm/v3/internal/tlsutil" + "helm.sh/helm/v4/internal/tlsutil" ) const ( diff --git a/pkg/release/hook.go b/pkg/release/hook.go index cb9955582..e2cdc0eb8 100644 --- a/pkg/release/hook.go +++ b/pkg/release/hook.go @@ -17,7 +17,7 @@ limitations under the License. package release import ( - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/time" ) // HookEvent specifies the hook event diff --git a/pkg/release/info.go b/pkg/release/info.go index b030a8a54..514807a35 100644 --- a/pkg/release/info.go +++ b/pkg/release/info.go @@ -18,7 +18,7 @@ package release import ( "k8s.io/apimachinery/pkg/runtime" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/time" ) // Info describes release information. diff --git a/pkg/release/mock.go b/pkg/release/mock.go index eb0b5157d..ab21d3cf2 100644 --- a/pkg/release/mock.go +++ b/pkg/release/mock.go @@ -20,8 +20,8 @@ import ( "fmt" "math/rand" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/time" ) // MockHookTemplate is the hook template used for all mock release objects. diff --git a/pkg/release/release.go b/pkg/release/release.go index b90612873..2a4963d9b 100644 --- a/pkg/release/release.go +++ b/pkg/release/release.go @@ -15,7 +15,7 @@ limitations under the License. package release -import "helm.sh/helm/v3/pkg/chart" +import "helm.sh/helm/v4/pkg/chart" // Release describes a deployment of a chart, together with the chart // and the variables used to deploy that chart. diff --git a/pkg/releaseutil/filter.go b/pkg/releaseutil/filter.go index dbd0df8e2..d600d43e8 100644 --- a/pkg/releaseutil/filter.go +++ b/pkg/releaseutil/filter.go @@ -14,9 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" -import rspb "helm.sh/helm/v3/pkg/release" +import rspb "helm.sh/helm/v4/pkg/release" // FilterFunc returns true if the release object satisfies // the predicate of the underlying filter func. diff --git a/pkg/releaseutil/filter_test.go b/pkg/releaseutil/filter_test.go index 31ac306f6..9fc5ce9b1 100644 --- a/pkg/releaseutil/filter_test.go +++ b/pkg/releaseutil/filter_test.go @@ -14,12 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" import ( "testing" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestFilterAny(t *testing.T) { diff --git a/pkg/releaseutil/kind_sorter.go b/pkg/releaseutil/kind_sorter.go index bb8e84dda..ec51d50d8 100644 --- a/pkg/releaseutil/kind_sorter.go +++ b/pkg/releaseutil/kind_sorter.go @@ -19,7 +19,7 @@ package releaseutil import ( "sort" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) // KindSortOrder is an ordering of Kinds. diff --git a/pkg/releaseutil/kind_sorter_test.go b/pkg/releaseutil/kind_sorter_test.go index 9e24c4399..f7745d64d 100644 --- a/pkg/releaseutil/kind_sorter_test.go +++ b/pkg/releaseutil/kind_sorter_test.go @@ -20,7 +20,7 @@ import ( "bytes" "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestKindSorter(t *testing.T) { diff --git a/pkg/releaseutil/manifest_sorter.go b/pkg/releaseutil/manifest_sorter.go index 4b6109929..b2db2ff9f 100644 --- a/pkg/releaseutil/manifest_sorter.go +++ b/pkg/releaseutil/manifest_sorter.go @@ -26,8 +26,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" ) // Manifest represents a manifest file, which has a name and some content. diff --git a/pkg/releaseutil/manifest_sorter_test.go b/pkg/releaseutil/manifest_sorter_test.go index 020ff4516..3bd196c12 100644 --- a/pkg/releaseutil/manifest_sorter_test.go +++ b/pkg/releaseutil/manifest_sorter_test.go @@ -22,7 +22,7 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestSortManifests(t *testing.T) { diff --git a/pkg/releaseutil/manifest_test.go b/pkg/releaseutil/manifest_test.go index 8664d20ef..8e05b76dc 100644 --- a/pkg/releaseutil/manifest_test.go +++ b/pkg/releaseutil/manifest_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" import ( "reflect" diff --git a/pkg/releaseutil/sorter.go b/pkg/releaseutil/sorter.go index 1a8aa78a6..a2135d68f 100644 --- a/pkg/releaseutil/sorter.go +++ b/pkg/releaseutil/sorter.go @@ -14,12 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" import ( "sort" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) type list []*rspb.Release diff --git a/pkg/releaseutil/sorter_test.go b/pkg/releaseutil/sorter_test.go index 9544d2018..bef261ee8 100644 --- a/pkg/releaseutil/sorter_test.go +++ b/pkg/releaseutil/sorter_test.go @@ -14,14 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" import ( "testing" "time" - rspb "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + rspb "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) // note: this test data is shared with filter_test.go. diff --git a/pkg/repo/chartrepo.go b/pkg/repo/chartrepo.go index 970e96da2..e20c7e20f 100644 --- a/pkg/repo/chartrepo.go +++ b/pkg/repo/chartrepo.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package repo // import "helm.sh/helm/v3/pkg/repo" +package repo // import "helm.sh/helm/v4/pkg/repo" import ( "crypto/rand" @@ -31,10 +31,10 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/provenance" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/provenance" ) // Entry represents a collection of parameters for chart repository diff --git a/pkg/repo/chartrepo_test.go b/pkg/repo/chartrepo_test.go index 0a658c0c2..341bafadc 100644 --- a/pkg/repo/chartrepo_test.go +++ b/pkg/repo/chartrepo_test.go @@ -30,9 +30,9 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/getter" ) const ( diff --git a/pkg/repo/index.go b/pkg/repo/index.go index e1ce3c62d..2526cba1b 100644 --- a/pkg/repo/index.go +++ b/pkg/repo/index.go @@ -31,11 +31,11 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/internal/fileutil" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/provenance" + "helm.sh/helm/v4/internal/fileutil" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/provenance" ) var indexPath = "index.yaml" diff --git a/pkg/repo/index_test.go b/pkg/repo/index_test.go index a1e3e9438..8c22bdc3e 100644 --- a/pkg/repo/index_test.go +++ b/pkg/repo/index_test.go @@ -28,10 +28,10 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" ) const ( diff --git a/pkg/repo/repo.go b/pkg/repo/repo.go index 834d554bd..203dfb4de 100644 --- a/pkg/repo/repo.go +++ b/pkg/repo/repo.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package repo // import "helm.sh/helm/v3/pkg/repo" +package repo // import "helm.sh/helm/v4/pkg/repo" import ( "os" diff --git a/pkg/repo/repotest/server.go b/pkg/repo/repotest/server.go index 4a86707cf..7a6b1e0f2 100644 --- a/pkg/repo/repotest/server.go +++ b/pkg/repo/repotest/server.go @@ -33,12 +33,12 @@ import ( "golang.org/x/crypto/bcrypt" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - ociRegistry "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + ociRegistry "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // NewTempServerWithCleanup creates a server inside of a temp dir. diff --git a/pkg/repo/repotest/server_test.go b/pkg/repo/repotest/server_test.go index a7d7f5b95..6d15925db 100644 --- a/pkg/repo/repotest/server_test.go +++ b/pkg/repo/repotest/server_test.go @@ -23,8 +23,8 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/repo" ) // Young'n, in these here parts, we test our tests. diff --git a/pkg/storage/driver/cfgmaps.go b/pkg/storage/driver/cfgmaps.go index ce88c662b..48edc3172 100644 --- a/pkg/storage/driver/cfgmaps.go +++ b/pkg/storage/driver/cfgmaps.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "context" @@ -31,7 +31,7 @@ import ( "k8s.io/apimachinery/pkg/util/validation" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var _ Driver = (*ConfigMaps)(nil) diff --git a/pkg/storage/driver/cfgmaps_test.go b/pkg/storage/driver/cfgmaps_test.go index 9a539d6ec..c93ef8ea4 100644 --- a/pkg/storage/driver/cfgmaps_test.go +++ b/pkg/storage/driver/cfgmaps_test.go @@ -21,7 +21,7 @@ import ( v1 "k8s.io/api/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestConfigMapName(t *testing.T) { diff --git a/pkg/storage/driver/driver.go b/pkg/storage/driver/driver.go index 9c01f3766..2987ba38e 100644 --- a/pkg/storage/driver/driver.go +++ b/pkg/storage/driver/driver.go @@ -14,14 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "fmt" "github.com/pkg/errors" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var ( diff --git a/pkg/storage/driver/labels_test.go b/pkg/storage/driver/labels_test.go index bfd80911b..81e561c15 100644 --- a/pkg/storage/driver/labels_test.go +++ b/pkg/storage/driver/labels_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "testing" diff --git a/pkg/storage/driver/memory.go b/pkg/storage/driver/memory.go index 91378f588..430ab215f 100644 --- a/pkg/storage/driver/memory.go +++ b/pkg/storage/driver/memory.go @@ -21,7 +21,7 @@ import ( "strings" "sync" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var _ Driver = (*Memory)(nil) diff --git a/pkg/storage/driver/memory_test.go b/pkg/storage/driver/memory_test.go index 7a2e8578e..999649635 100644 --- a/pkg/storage/driver/memory_test.go +++ b/pkg/storage/driver/memory_test.go @@ -21,7 +21,7 @@ import ( "reflect" "testing" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestMemoryName(t *testing.T) { diff --git a/pkg/storage/driver/mock_test.go b/pkg/storage/driver/mock_test.go index 81bda9324..044332334 100644 --- a/pkg/storage/driver/mock_test.go +++ b/pkg/storage/driver/mock_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "context" @@ -31,7 +31,7 @@ import ( kblabels "k8s.io/apimachinery/pkg/labels" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func releaseStub(name string, vers int, namespace string, status rspb.Status) *rspb.Release { diff --git a/pkg/storage/driver/records.go b/pkg/storage/driver/records.go index 9df173384..3b8f078fd 100644 --- a/pkg/storage/driver/records.go +++ b/pkg/storage/driver/records.go @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "sort" "strconv" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) // records holds a list of in-memory release records diff --git a/pkg/storage/driver/records_test.go b/pkg/storage/driver/records_test.go index 0a27839cc..b1bb051d5 100644 --- a/pkg/storage/driver/records_test.go +++ b/pkg/storage/driver/records_test.go @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "reflect" "testing" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestRecordsAdd(t *testing.T) { diff --git a/pkg/storage/driver/secrets.go b/pkg/storage/driver/secrets.go index 95a7e9032..eb215a755 100644 --- a/pkg/storage/driver/secrets.go +++ b/pkg/storage/driver/secrets.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "context" @@ -31,7 +31,7 @@ import ( "k8s.io/apimachinery/pkg/util/validation" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var _ Driver = (*Secrets)(nil) diff --git a/pkg/storage/driver/secrets_test.go b/pkg/storage/driver/secrets_test.go index b4bf61d5b..37ecc20dd 100644 --- a/pkg/storage/driver/secrets_test.go +++ b/pkg/storage/driver/secrets_test.go @@ -21,7 +21,7 @@ import ( v1 "k8s.io/api/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestSecretName(t *testing.T) { diff --git a/pkg/storage/driver/sql.go b/pkg/storage/driver/sql.go index 33bde9b6a..d5ab6b0a1 100644 --- a/pkg/storage/driver/sql.go +++ b/pkg/storage/driver/sql.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "fmt" @@ -30,7 +30,7 @@ import ( // Import pq for postgres dialect _ "github.com/lib/pq" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var _ Driver = (*SQL)(nil) diff --git a/pkg/storage/driver/sql_test.go b/pkg/storage/driver/sql_test.go index c9989f3ef..8d7b88475 100644 --- a/pkg/storage/driver/sql_test.go +++ b/pkg/storage/driver/sql_test.go @@ -23,7 +23,7 @@ import ( sqlmock "github.com/DATA-DOG/go-sqlmock" migrate "github.com/rubenv/sql-migrate" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestSQLName(t *testing.T) { diff --git a/pkg/storage/driver/util.go b/pkg/storage/driver/util.go index 7bda5ec96..7f1bc716c 100644 --- a/pkg/storage/driver/util.go +++ b/pkg/storage/driver/util.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "bytes" @@ -23,7 +23,7 @@ import ( "encoding/json" "io" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var b64 = base64.StdEncoding diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index 0da0688fd..f5b0167d8 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package storage // import "helm.sh/helm/v3/pkg/storage" +package storage // import "helm.sh/helm/v4/pkg/storage" import ( "fmt" @@ -22,9 +22,9 @@ import ( "github.com/pkg/errors" - rspb "helm.sh/helm/v3/pkg/release" - relutil "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/storage/driver" + rspb "helm.sh/helm/v4/pkg/release" + relutil "helm.sh/helm/v4/pkg/releaseutil" + "helm.sh/helm/v4/pkg/storage/driver" ) // HelmStorageType is the type field of the Kubernetes storage object which stores the Helm release diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go index d50e3fbfe..80011520e 100644 --- a/pkg/storage/storage_test.go +++ b/pkg/storage/storage_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package storage // import "helm.sh/helm/v3/pkg/storage" +package storage // import "helm.sh/helm/v4/pkg/storage" import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/pkg/errors" - rspb "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage/driver" + rspb "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage/driver" ) func TestStorageCreate(t *testing.T) { diff --git a/pkg/uploader/chart_uploader.go b/pkg/uploader/chart_uploader.go index d7e940406..41dfd4455 100644 --- a/pkg/uploader/chart_uploader.go +++ b/pkg/uploader/chart_uploader.go @@ -22,8 +22,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/pusher" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/pusher" + "helm.sh/helm/v4/pkg/registry" ) // ChartUploader handles uploading a chart. From d5365ab27df2a1b5b06d1fe30bd59c5fd12a2ed8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 21:35:07 +0000 Subject: [PATCH 069/206] Bump the k8s-io group with 7 updates Bumps the k8s-io group with 7 updates: | Package | From | To | | --- | --- | --- | | [k8s.io/api](https://github.com/kubernetes/api) | `0.31.3` | `0.32.0` | | [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.31.3` | `0.32.0` | | [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.31.3` | `0.32.0` | | [k8s.io/apiserver](https://github.com/kubernetes/apiserver) | `0.31.3` | `0.32.0` | | [k8s.io/cli-runtime](https://github.com/kubernetes/cli-runtime) | `0.31.3` | `0.32.0` | | [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.31.3` | `0.32.0` | | [k8s.io/kubectl](https://github.com/kubernetes/kubectl) | `0.31.3` | `0.32.0` | Updates `k8s.io/api` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/api/compare/v0.31.3...v0.32.0) Updates `k8s.io/apiextensions-apiserver` from 0.31.3 to 0.32.0 - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.31.3...v0.32.0) Updates `k8s.io/apimachinery` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/apimachinery/compare/v0.31.3...v0.32.0) Updates `k8s.io/apiserver` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/apiserver/compare/v0.31.3...v0.32.0) Updates `k8s.io/cli-runtime` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/cli-runtime/compare/v0.31.3...v0.32.0) Updates `k8s.io/client-go` from 0.31.3 to 0.32.0 - [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md) - [Commits](https://github.com/kubernetes/client-go/compare/v0.31.3...v0.32.0) Updates `k8s.io/kubectl` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/kubectl/compare/v0.31.3...v0.32.0) --- updated-dependencies: - dependency-name: k8s.io/api dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/apiextensions-apiserver dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/apimachinery dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/apiserver dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/cli-runtime dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/client-go dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/kubectl dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io ... Signed-off-by: dependabot[bot] --- go.mod | 48 ++++++++--------- go.sum | 166 ++++++++++++++++++--------------------------------------- 2 files changed, 76 insertions(+), 138 deletions(-) diff --git a/go.mod b/go.mod index ad986c27a..a5a09434f 100644 --- a/go.mod +++ b/go.mod @@ -37,21 +37,21 @@ require ( golang.org/x/crypto v0.31.0 golang.org/x/term v0.27.0 golang.org/x/text v0.21.0 - k8s.io/api v0.31.3 - k8s.io/apiextensions-apiserver v0.31.3 - k8s.io/apimachinery v0.31.3 - k8s.io/apiserver v0.31.3 - k8s.io/cli-runtime v0.31.3 - k8s.io/client-go v0.31.3 + k8s.io/api v0.32.0 + k8s.io/apiextensions-apiserver v0.32.0 + k8s.io/apimachinery v0.32.0 + k8s.io/apiserver v0.32.0 + k8s.io/cli-runtime v0.32.0 + k8s.io/client-go v0.32.0 k8s.io/klog/v2 v2.130.1 - k8s.io/kubectl v0.31.3 + k8s.io/kubectl v0.32.0 oras.land/oras-go v1.2.5 sigs.k8s.io/yaml v1.4.0 ) require ( dario.cat/mergo v1.0.1 // indirect - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -76,7 +76,7 @@ require ( github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect + github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect github.com/fatih/color v1.13.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect @@ -84,9 +84,9 @@ require ( github.com/go-gorp/gorp/v3 v3.1.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.22.4 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.0.1 // indirect @@ -98,13 +98,12 @@ require ( github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect + github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect github.com/huandu/xstrings v1.5.0 // indirect - github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -120,7 +119,7 @@ require ( github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/locker v1.0.1 // indirect - github.com/moby/spdystream v0.4.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect @@ -165,14 +164,13 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect - go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect - golang.org/x/mod v0.17.0 // indirect + golang.org/x/mod v0.21.0 // indirect golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect - golang.org/x/time v0.6.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/grpc v1.68.0 // indirect @@ -181,11 +179,11 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/component-base v0.31.3 // indirect - k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect - k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/api v0.17.2 // indirect - sigs.k8s.io/kustomize/kyaml v0.17.1 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + k8s.io/component-base v0.32.0 // indirect + k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/kustomize/api v0.18.0 // indirect + sigs.k8s.io/kustomize/kyaml v0.18.1 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect ) diff --git a/go.sum b/go.sum index f08a70dbf..23ac677f4 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,11 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= @@ -49,16 +47,11 @@ github.com/bsm/gomega v1.26.0 h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y= github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= @@ -108,12 +101,10 @@ github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arX github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= +github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -136,13 +127,14 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -156,39 +148,26 @@ github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeH github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2Rrd27c3VGxi6a/6HNq8QmHRKM= -github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -201,8 +180,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= +github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -216,8 +195,6 @@ github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvH github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= @@ -280,8 +257,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= -github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= @@ -302,10 +279,10 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= -github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= -github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= -github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -329,7 +306,6 @@ github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+ github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -375,6 +351,7 @@ github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -441,8 +418,6 @@ go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQD go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= -go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= -go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -455,23 +430,15 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -486,10 +453,8 @@ golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -502,7 +467,6 @@ golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -528,7 +492,6 @@ golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= @@ -545,13 +508,9 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -559,34 +518,18 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= +golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -598,7 +541,6 @@ gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWM gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -606,39 +548,37 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.31.3 h1:umzm5o8lFbdN/hIXbrK9oRpOproJO62CV1zqxXrLgk8= -k8s.io/api v0.31.3/go.mod h1:UJrkIp9pnMOI9K2nlL6vwpxRzzEX5sWgn8kGQe92kCE= -k8s.io/apiextensions-apiserver v0.31.3 h1:+GFGj2qFiU7rGCsA5o+p/rul1OQIq6oYpQw4+u+nciE= -k8s.io/apiextensions-apiserver v0.31.3/go.mod h1:2DSpFhUZZJmn/cr/RweH1cEVVbzFw9YBu4T+U3mf1e4= -k8s.io/apimachinery v0.31.3 h1:6l0WhcYgasZ/wk9ktLq5vLaoXJJr5ts6lkaQzgeYPq4= -k8s.io/apimachinery v0.31.3/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= -k8s.io/apiserver v0.31.3 h1:+1oHTtCB+OheqFEz375D0IlzHZ5VeQKX1KGXnx+TTuY= -k8s.io/apiserver v0.31.3/go.mod h1:PrxVbebxrxQPFhJk4powDISIROkNMKHibTg9lTRQ0Qg= -k8s.io/cli-runtime v0.31.3 h1:fEQD9Xokir78y7pVK/fCJN090/iYNrLHpFbGU4ul9TI= -k8s.io/cli-runtime v0.31.3/go.mod h1:Q2jkyTpl+f6AtodQvgDI8io3jrfr+Z0LyQBPJJ2Btq8= -k8s.io/client-go v0.31.3 h1:CAlZuM+PH2cm+86LOBemaJI/lQ5linJ6UFxKX/SoG+4= -k8s.io/client-go v0.31.3/go.mod h1:2CgjPUTpv3fE5dNygAr2NcM8nhHzXvxB8KL5gYc3kJs= -k8s.io/component-base v0.31.3 h1:DMCXXVx546Rfvhj+3cOm2EUxhS+EyztH423j+8sOwhQ= -k8s.io/component-base v0.31.3/go.mod h1:xME6BHfUOafRgT0rGVBGl7TuSg8Z9/deT7qq6w7qjIU= +k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE= +k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0= +k8s.io/apiextensions-apiserver v0.32.0 h1:S0Xlqt51qzzqjKPxfgX1xh4HBZE+p8KKBq+k2SWNOE0= +k8s.io/apiextensions-apiserver v0.32.0/go.mod h1:86hblMvN5yxMvZrZFX2OhIHAuFIMJIZ19bTvzkP+Fmw= +k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg= +k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/apiserver v0.32.0 h1:VJ89ZvQZ8p1sLeiWdRJpRD6oLozNZD2+qVSLi+ft5Qs= +k8s.io/apiserver v0.32.0/go.mod h1:HFh+dM1/BE/Hm4bS4nTXHVfN6Z6tFIZPi649n83b4Ag= +k8s.io/cli-runtime v0.32.0 h1:dP+OZqs7zHPpGQMCGAhectbHU2SNCuZtIimRKTv2T1c= +k8s.io/cli-runtime v0.32.0/go.mod h1:Mai8ht2+esoDRK5hr861KRy6z0zHsSTYttNVJXgP3YQ= +k8s.io/client-go v0.32.0 h1:DimtMcnN/JIKZcrSrstiwvvZvLjG0aSxy8PxN8IChp8= +k8s.io/client-go v0.32.0/go.mod h1:boDWvdM1Drk4NJj/VddSLnx59X3OPgwrOo0vGbtq9+8= +k8s.io/component-base v0.32.0 h1:d6cWHZkCiiep41ObYQS6IcgzOUQUNpywm39KVYaUqzU= +k8s.io/component-base v0.32.0/go.mod h1:JLG2W5TUxUu5uDyKiH2R/7NnxJo1HlPoRIIbVLkK5eM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= -k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/kubectl v0.31.3 h1:3r111pCjPsvnR98oLLxDMwAeM6OPGmPty6gSKaLTQes= -k8s.io/kubectl v0.31.3/go.mod h1:lhMECDCbJN8He12qcKqs2QfmVo9Pue30geovBVpH5fs= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/kubectl v0.32.0 h1:rpxl+ng9qeG79YA4Em9tLSfX0G8W0vfaiPVrc/WR7Xw= +k8s.io/kubectl v0.32.0/go.mod h1:qIjSX+QgPQUgdy8ps6eKsYNF+YmFOAO3WygfucIqFiE= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/api v0.17.2 h1:E7/Fjk7V5fboiuijoZHgs4aHuexi5Y2loXlVOAVAG5g= -sigs.k8s.io/kustomize/api v0.17.2/go.mod h1:UWTz9Ct+MvoeQsHcJ5e+vziRRkwimm3HytpZgIYqye0= -sigs.k8s.io/kustomize/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= -sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/kustomize/api v0.18.0 h1:hTzp67k+3NEVInwz5BHyzc9rGxIauoXferXyjv5lWPo= +sigs.k8s.io/kustomize/api v0.18.0/go.mod h1:f8isXnX+8b+SGLHQ6yO4JG1rdkZlvhaCf/uZbLVMb0U= +sigs.k8s.io/kustomize/kyaml v0.18.1 h1:WvBo56Wzw3fjS+7vBjN6TeivvpbW9GmRaWZ9CIVmt4E= +sigs.k8s.io/kustomize/kyaml v0.18.1/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From 63623665aebda4c3521965ba7ebe97ff1a917f50 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 27 Dec 2024 21:12:48 -0800 Subject: [PATCH 070/206] refactor: Consolidate lint package Run() functions Signed-off-by: George Jenkins --- pkg/action/lint.go | 8 ++++++- pkg/lint/lint.go | 51 ++++++++++++++++++++++++++++--------------- pkg/lint/lint_test.go | 17 +++++++-------- 3 files changed, 49 insertions(+), 27 deletions(-) diff --git a/pkg/action/lint.go b/pkg/action/lint.go index 4ba90b8c3..06fc48612 100644 --- a/pkg/action/lint.go +++ b/pkg/action/lint.go @@ -126,5 +126,11 @@ func lintChart(path string, vals map[string]interface{}, namespace string, kubeV return linter, errors.Wrap(err, "unable to check Chart.yaml file in chart") } - return lint.AllWithKubeVersionAndSchemaValidation(chartPath, vals, namespace, kubeVersion, skipSchemaValidation), nil + return lint.RunAll( + chartPath, + vals, + namespace, + lint.WithKubeVersion(kubeVersion), + lint.WithSkipSchemaValidation(skipSchemaValidation), + ), nil } diff --git a/pkg/lint/lint.go b/pkg/lint/lint.go index de07115ce..70a49ee90 100644 --- a/pkg/lint/lint.go +++ b/pkg/lint/lint.go @@ -24,25 +24,42 @@ import ( "helm.sh/helm/v4/pkg/lint/support" ) -// All runs all the available linters on the given base directory. -func All(basedir string, values map[string]interface{}, namespace string, _ bool) support.Linter { - return AllWithKubeVersion(basedir, values, namespace, nil) +type linterOptions struct { + KubeVersion *chartutil.KubeVersion + SkipSchemaValidation bool } -// AllWithKubeVersion runs all the available linters on the given base directory, allowing to specify the kubernetes version. -func AllWithKubeVersion(basedir string, values map[string]interface{}, namespace string, kubeVersion *chartutil.KubeVersion) support.Linter { - return AllWithKubeVersionAndSchemaValidation(basedir, values, namespace, kubeVersion, false) +type LinterOption func(lo *linterOptions) + +func WithKubeVersion(kubeVersion *chartutil.KubeVersion) LinterOption { + return func(lo *linterOptions) { + lo.KubeVersion = kubeVersion + } +} + +func WithSkipSchemaValidation(skipSchemaValidation bool) LinterOption { + return func(lo *linterOptions) { + lo.SkipSchemaValidation = skipSchemaValidation + } } -// AllWithKubeVersionAndSchemaValidation runs all the available linters on the given base directory, allowing to specify the kubernetes version and if schema validation is enabled or not. -func AllWithKubeVersionAndSchemaValidation(basedir string, values map[string]interface{}, namespace string, kubeVersion *chartutil.KubeVersion, skipSchemaValidation bool) support.Linter { - // Using abs path to get directory context - chartDir, _ := filepath.Abs(basedir) - - linter := support.Linter{ChartDir: chartDir} - rules.Chartfile(&linter) - rules.ValuesWithOverrides(&linter, values) - rules.TemplatesWithSkipSchemaValidation(&linter, values, namespace, kubeVersion, skipSchemaValidation) - rules.Dependencies(&linter) - return linter +func RunAll(baseDir string, values map[string]interface{}, namespace string, options ...LinterOption) support.Linter { + + chartDir, _ := filepath.Abs(baseDir) + + lo := linterOptions{} + for _, option := range options { + option(&lo) + } + + result := support.Linter{ + ChartDir: chartDir, + } + + rules.Chartfile(&result) + rules.ValuesWithOverrides(&result, values) + rules.TemplatesWithSkipSchemaValidation(&result, values, namespace, lo.KubeVersion, lo.SkipSchemaValidation) + rules.Dependencies(&result) + + return result } diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index a6d7707d5..a678940ce 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -28,7 +28,6 @@ import ( var values map[string]interface{} const namespace = "testNamespace" -const strict = false const badChartDir = "rules/testdata/badchartfile" const badValuesFileDir = "rules/testdata/badvaluesfile" @@ -38,7 +37,7 @@ const subChartValuesDir = "rules/testdata/withsubchart" const malformedTemplate = "rules/testdata/malformed-template" func TestBadChart(t *testing.T) { - m := All(badChartDir, values, namespace, strict).Messages + m := RunAll(badChartDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) != 8 { t.Errorf("Number of errors %v", len(m)) t.Errorf("All didn't fail with expected errors, got %#v", m) @@ -82,7 +81,7 @@ func TestBadChart(t *testing.T) { } func TestInvalidYaml(t *testing.T) { - m := All(badYamlFileDir, values, namespace, strict).Messages + m := RunAll(badYamlFileDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) != 1 { t.Fatalf("All didn't fail with expected errors, got %#v", m) } @@ -92,7 +91,7 @@ func TestInvalidYaml(t *testing.T) { } func TestBadValues(t *testing.T) { - m := All(badValuesFileDir, values, namespace, strict).Messages + m := RunAll(badValuesFileDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) < 1 { t.Fatalf("All didn't fail with expected errors, got %#v", m) } @@ -102,7 +101,7 @@ func TestBadValues(t *testing.T) { } func TestGoodChart(t *testing.T) { - m := All(goodChartDir, values, namespace, strict).Messages + m := RunAll(goodChartDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) != 0 { t.Error("All returned linter messages when it shouldn't have") for i, msg := range m { @@ -126,7 +125,7 @@ func TestHelmCreateChart(t *testing.T) { // Note: we test with strict=true here, even though others have // strict = false. - m := All(createdChart, values, namespace, true).Messages + m := RunAll(createdChart, values, namespace, WithSkipSchemaValidation(true)).Messages if ll := len(m); ll != 1 { t.Errorf("All should have had exactly 1 error. Got %d", ll) for i, msg := range m { @@ -173,7 +172,7 @@ func TestHelmCreateChart_CheckDeprecatedWarnings(t *testing.T) { }, } - linterRunDetails := All(createdChart, updatedValues, namespace, true) + linterRunDetails := RunAll(createdChart, updatedValues, namespace, WithSkipSchemaValidation(true)) for _, msg := range linterRunDetails.Messages { if strings.HasPrefix(msg.Error(), "[WARNING]") && strings.Contains(msg.Error(), "deprecated") { @@ -187,7 +186,7 @@ func TestHelmCreateChart_CheckDeprecatedWarnings(t *testing.T) { // lint ignores import-values // See https://github.com/helm/helm/issues/9658 func TestSubChartValuesChart(t *testing.T) { - m := All(subChartValuesDir, values, namespace, strict).Messages + m := RunAll(subChartValuesDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) != 0 { t.Error("All returned linter messages when it shouldn't have") for i, msg := range m { @@ -203,7 +202,7 @@ func TestMalformedTemplate(t *testing.T) { ch := make(chan int, 1) var m []support.Message go func() { - m = All(malformedTemplate, values, namespace, strict).Messages + m = RunAll(malformedTemplate, values, namespace, WithSkipSchemaValidation(false)).Messages ch <- 1 }() select { From edabef668a263dbef46400dd9bcc04f88227a561 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 27 Dec 2024 21:17:35 -0800 Subject: [PATCH 071/206] more tidy Signed-off-by: George Jenkins --- pkg/lint/lint_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index a678940ce..9246b64f2 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -37,7 +37,7 @@ const subChartValuesDir = "rules/testdata/withsubchart" const malformedTemplate = "rules/testdata/malformed-template" func TestBadChart(t *testing.T) { - m := RunAll(badChartDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(badChartDir, values, namespace).Messages if len(m) != 8 { t.Errorf("Number of errors %v", len(m)) t.Errorf("All didn't fail with expected errors, got %#v", m) @@ -81,7 +81,7 @@ func TestBadChart(t *testing.T) { } func TestInvalidYaml(t *testing.T) { - m := RunAll(badYamlFileDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(badYamlFileDir, values, namespace).Messages if len(m) != 1 { t.Fatalf("All didn't fail with expected errors, got %#v", m) } @@ -91,7 +91,7 @@ func TestInvalidYaml(t *testing.T) { } func TestBadValues(t *testing.T) { - m := RunAll(badValuesFileDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(badValuesFileDir, values, namespace).Messages if len(m) < 1 { t.Fatalf("All didn't fail with expected errors, got %#v", m) } @@ -101,7 +101,7 @@ func TestBadValues(t *testing.T) { } func TestGoodChart(t *testing.T) { - m := RunAll(goodChartDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(goodChartDir, values, namespace).Messages if len(m) != 0 { t.Error("All returned linter messages when it shouldn't have") for i, msg := range m { @@ -186,7 +186,7 @@ func TestHelmCreateChart_CheckDeprecatedWarnings(t *testing.T) { // lint ignores import-values // See https://github.com/helm/helm/issues/9658 func TestSubChartValuesChart(t *testing.T) { - m := RunAll(subChartValuesDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(subChartValuesDir, values, namespace).Messages if len(m) != 0 { t.Error("All returned linter messages when it shouldn't have") for i, msg := range m { @@ -202,7 +202,7 @@ func TestMalformedTemplate(t *testing.T) { ch := make(chan int, 1) var m []support.Message go func() { - m = RunAll(malformedTemplate, values, namespace, WithSkipSchemaValidation(false)).Messages + m = RunAll(malformedTemplate, values, namespace).Messages ch <- 1 }() select { From 88da89085e4ae400b40e57eb56cc692e94bb823a Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 27 Dec 2024 21:19:53 -0800 Subject: [PATCH 072/206] refactor: Remove redundant `NewPullWithOpts` Signed-off-by: George Jenkins --- cmd/helm/pull.go | 2 +- pkg/action/pull.go | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/cmd/helm/pull.go b/cmd/helm/pull.go index 1b2a9a44d..231db30bc 100644 --- a/cmd/helm/pull.go +++ b/cmd/helm/pull.go @@ -43,7 +43,7 @@ result in an error, and the chart will not be saved locally. ` func newPullCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { - client := action.NewPullWithOpts(action.WithConfig(cfg)) + client := action.NewPull(action.WithConfig(cfg)) cmd := &cobra.Command{ Use: "pull [chart URL | repo/chartname] [...]", diff --git a/pkg/action/pull.go b/pkg/action/pull.go index 868e6da7b..63bc11d3b 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -56,13 +56,8 @@ func WithConfig(cfg *Configuration) PullOpt { } } -// NewPull creates a new Pull object. -func NewPull() *Pull { - return NewPullWithOpts() -} - -// NewPullWithOpts creates a new pull, with configuration options. -func NewPullWithOpts(opts ...PullOpt) *Pull { +// NewPull creates a new Pull with configuration options. +func NewPull(opts ...PullOpt) *Pull { p := &Pull{} for _, fn := range opts { fn(p) From e1c37d4f48aa4bae0c0f1e072c3be971ed40b637 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 Dec 2024 17:34:05 +0000 Subject: [PATCH 073/206] Bump oras.land/oras-go from 1.2.5 to 1.2.6 Bumps [oras.land/oras-go](https://github.com/oras-project/oras-go) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/oras-project/oras-go/releases) - [Commits](https://github.com/oras-project/oras-go/compare/v1.2.5...v1.2.6) --- updated-dependencies: - dependency-name: oras.land/oras-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index a5a09434f..b0dd158e3 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( k8s.io/client-go v0.32.0 k8s.io/klog/v2 v2.130.1 k8s.io/kubectl v0.32.0 - oras.land/oras-go v1.2.5 + oras.land/oras-go v1.2.6 sigs.k8s.io/yaml v1.4.0 ) @@ -68,9 +68,9 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v25.0.1+incompatible // indirect + github.com/docker/cli v27.1.0+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v25.0.6+incompatible // indirect + github.com/docker/docker v27.1.0+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect diff --git a/go.sum b/go.sum index 23ac677f4..36ccb3a52 100644 --- a/go.sum +++ b/go.sum @@ -83,12 +83,12 @@ github.com/distribution/distribution/v3 v3.0.0-rc.2 h1:tTrzntanYMbd20SyvdeR83Ya1 github.com/distribution/distribution/v3 v3.0.0-rc.2/go.mod h1:H2zIRRXS20ylnv2HTuKILAWuANjuA60GB7MLOsQag7Y= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbTO1lpcGSkU= -github.com/docker/cli v25.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v27.1.0+incompatible h1:P0KSYmPtNbmx59wHZvG6+rjivhKDRA1BvvWM0f5DgHc= +github.com/docker/cli v27.1.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg= -github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.1.0+incompatible h1:rEHVQc4GZ0MIQKifQPHSFGV/dVgaZafgRf8fCPtDYBs= +github.com/docker/docker v27.1.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= @@ -570,8 +570,8 @@ k8s.io/kubectl v0.32.0 h1:rpxl+ng9qeG79YA4Em9tLSfX0G8W0vfaiPVrc/WR7Xw= k8s.io/kubectl v0.32.0/go.mod h1:qIjSX+QgPQUgdy8ps6eKsYNF+YmFOAO3WygfucIqFiE= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= -oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= +oras.land/oras-go v1.2.6 h1:z8cmxQXBU8yZ4mkytWqXfo6tZcamPwjsuxYU81xJ8Lk= +oras.land/oras-go v1.2.6/go.mod h1:OVPc1PegSEe/K8YiLfosrlqlqTN9PUyFvOw5Y9gwrT8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= sigs.k8s.io/kustomize/api v0.18.0 h1:hTzp67k+3NEVInwz5BHyzc9rGxIauoXferXyjv5lWPo= From e00ab86567cd91562b63f396a30818d1020a84c1 Mon Sep 17 00:00:00 2001 From: cx <1249843194@qq.com> Date: Sun, 29 Dec 2024 23:22:34 +0800 Subject: [PATCH 074/206] Upgrade golang.org/x/net to v0.33.0 to address CVE-2024-45338 fixed: #13551 Signed-off-by: cx <1249843194@qq.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a5a09434f..a3cd98ede 100644 --- a/go.mod +++ b/go.mod @@ -165,7 +165,7 @@ require ( go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.30.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect diff --git a/go.sum b/go.sum index 23ac677f4..712ebd0f6 100644 --- a/go.sum +++ b/go.sum @@ -451,8 +451,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From f5d488122b20374161c724ea1b1254ef628d02e3 Mon Sep 17 00:00:00 2001 From: Jiasheng Zhu Date: Tue, 31 Dec 2024 01:00:52 +0000 Subject: [PATCH 075/206] fix: check group for resource info match Closes: #13582 Signed-off-by: Jiasheng Zhu --- pkg/kube/resource.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kube/resource.go b/pkg/kube/resource.go index 763488a08..600f256b3 100644 --- a/pkg/kube/resource.go +++ b/pkg/kube/resource.go @@ -81,5 +81,5 @@ func (r ResourceList) Intersect(rs ResourceList) ResourceList { // isMatchingInfo returns true if infos match on Name and GroupVersionKind. func isMatchingInfo(a, b *resource.Info) bool { - return a.Name == b.Name && a.Namespace == b.Namespace && a.Mapping.GroupVersionKind.Kind == b.Mapping.GroupVersionKind.Kind + return a.Name == b.Name && a.Namespace == b.Namespace && a.Mapping.GroupVersionKind.Kind == b.Mapping.GroupVersionKind.Kind && a.Mapping.GroupVersionKind.Group == b.Mapping.GroupVersionKind.Group } From 2dab7df0a19e057df3bb8d8062ff6908c7f4f0ea Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Jan 2025 04:06:55 +0000 Subject: [PATCH 076/206] Bump github.com/docker/docker Bumps [github.com/docker/docker](https://github.com/docker/docker) from 27.1.0+incompatible to 27.1.1+incompatible. - [Release notes](https://github.com/docker/docker/releases) - [Commits](https://github.com/docker/docker/compare/v27.1.0...v27.1.1) --- updated-dependencies: - dependency-name: github.com/docker/docker dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bf15ddf81..68b07c1a9 100644 --- a/go.mod +++ b/go.mod @@ -70,7 +70,7 @@ require ( github.com/distribution/reference v0.6.0 // indirect github.com/docker/cli v27.1.0+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v27.1.0+incompatible // indirect + github.com/docker/docker v27.1.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect diff --git a/go.sum b/go.sum index b95559e07..84c9ba0ec 100644 --- a/go.sum +++ b/go.sum @@ -87,8 +87,8 @@ github.com/docker/cli v27.1.0+incompatible h1:P0KSYmPtNbmx59wHZvG6+rjivhKDRA1Bvv github.com/docker/cli v27.1.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.1.0+incompatible h1:rEHVQc4GZ0MIQKifQPHSFGV/dVgaZafgRf8fCPtDYBs= -github.com/docker/docker v27.1.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= +github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= From 60fcce18d1646e266dfe8191e25a85dcdb7b0038 Mon Sep 17 00:00:00 2001 From: Scott Rigby Date: Wed, 25 Dec 2024 10:52:16 -0500 Subject: [PATCH 077/206] Tests for bugfix: Override subcharts with null values #12879 - Add consistency for null test in given values, parent chart, subchart, and sub-sub-chart - Remove bar null test to keep consistent with boat=null at top level Signed-off-by: Scott Rigby --- pkg/chartutil/coalesce_test.go | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/pkg/chartutil/coalesce_test.go b/pkg/chartutil/coalesce_test.go index 61b718d97..774536487 100644 --- a/pkg/chartutil/coalesce_test.go +++ b/pkg/chartutil/coalesce_test.go @@ -44,6 +44,7 @@ global: boat: true pequod: + boat: null global: name: Stinky harpooner: Tashtego @@ -55,7 +56,7 @@ pequod: boat: null nested: foo: true - bar: null + boat: null `) func withDeps(c *chart.Chart, deps ...*chart.Chart) *chart.Chart { @@ -82,6 +83,13 @@ func TestCoalesceValues(t *testing.T) { "global": map[string]interface{}{ "nested2": map[string]interface{}{"l0": "moby"}, }, + "pequod": map[string]interface{}{ + "boat": "maybe", + "ahab": map[string]interface{}{ + "boat": "maybe", + "nested": map[string]interface{}{"boat": "maybe"}, + }, + }, }, }, withDeps(&chart.Chart{ @@ -92,6 +100,11 @@ func TestCoalesceValues(t *testing.T) { "global": map[string]interface{}{ "nested2": map[string]interface{}{"l1": "pequod"}, }, + "boat": false, + "ahab": map[string]interface{}{ + "boat": false, + "nested": map[string]interface{}{"boat": false}, + }, }, }, &chart.Chart{ @@ -104,7 +117,7 @@ func TestCoalesceValues(t *testing.T) { "scope": "ahab", "name": "ahab", "boat": true, - "nested": map[string]interface{}{"foo": false, "bar": true}, + "nested": map[string]interface{}{"foo": false, "boat": true}, }, }, ), @@ -200,13 +213,18 @@ func TestCoalesceValues(t *testing.T) { t.Error("Expected nested boat key to be removed, still present") } - subchart := v["pequod"].(map[string]interface{})["ahab"].(map[string]interface{}) + subchart := v["pequod"].(map[string]interface{}) if _, ok := subchart["boat"]; ok { t.Error("Expected subchart boat key to be removed, still present") } - if _, ok := subchart["nested"].(map[string]interface{})["bar"]; ok { - t.Error("Expected subchart nested bar key to be removed, still present") + subsubchart := subchart["ahab"].(map[string]interface{}) + if _, ok := subsubchart["boat"]; ok { + t.Error("Expected sub-subchart ahab boat key to be removed, still present") + } + + if _, ok := subsubchart["nested"].(map[string]interface{})["boat"]; ok { + t.Error("Expected sub-subchart nested boat key to be removed, still present") } // CoalesceValues should not mutate the passed arguments From ef2eb552837446fe8a5a91bc68abf4d9eab685a8 Mon Sep 17 00:00:00 2001 From: Ryan Hockstad Date: Thu, 2 Jan 2025 22:19:19 -0500 Subject: [PATCH 078/206] Add test case for removing an entire object Signed-off-by: Ryan Hockstad --- pkg/chartutil/coalesce_test.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pkg/chartutil/coalesce_test.go b/pkg/chartutil/coalesce_test.go index 774536487..622d99cc9 100644 --- a/pkg/chartutil/coalesce_test.go +++ b/pkg/chartutil/coalesce_test.go @@ -57,6 +57,7 @@ pequod: nested: foo: true boat: null + object: null `) func withDeps(c *chart.Chart, deps ...*chart.Chart) *chart.Chart { @@ -118,6 +119,7 @@ func TestCoalesceValues(t *testing.T) { "name": "ahab", "boat": true, "nested": map[string]interface{}{"foo": false, "boat": true}, + "object": map[string]interface{}{"foo": "bar"}, }, }, ), @@ -227,6 +229,10 @@ func TestCoalesceValues(t *testing.T) { t.Error("Expected sub-subchart nested boat key to be removed, still present") } + if _, ok := subsubchart["object"]; ok { + t.Error("Expected sub-subchart object map to be removed, still present") + } + // CoalesceValues should not mutate the passed arguments is.Equal(valsCopy, vals) } From 0ff51d974fd5180a9c85d64fa0888c209d6fc060 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 21:18:26 +0000 Subject: [PATCH 079/206] Bump github.com/moby/term from 0.5.0 to 0.5.1 Bumps [github.com/moby/term](https://github.com/moby/term) from 0.5.0 to 0.5.1. - [Commits](https://github.com/moby/term/compare/v0.5.0...v0.5.1) --- updated-dependencies: - dependency-name: github.com/moby/term dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 68b07c1a9..fafbda08e 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/lib/pq v1.10.9 github.com/mattn/go-shellwords v1.0.12 github.com/mitchellh/copystructure v1.2.0 - github.com/moby/term v0.5.0 + github.com/moby/term v0.5.1 github.com/opencontainers/image-spec v1.1.0 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 84c9ba0ec..7c903c9f7 100644 --- a/go.sum +++ b/go.sum @@ -263,8 +263,8 @@ github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vyg github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.1 h1:iy+9Sd2jzMs24S0frhx8fMvcw0/5C5LxVU0eEqOWoRs= +github.com/moby/term v0.5.1/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From 3b9cce9669421aac783182516f413b2a8b5ba6d6 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Sun, 5 Jan 2025 10:09:16 -0800 Subject: [PATCH 080/206] cleanup: Remove 'ProcessDependenciesWithMerge' Signed-off-by: George Jenkins --- pkg/action/install.go | 2 +- pkg/action/upgrade.go | 2 +- pkg/chartutil/dependencies.go | 12 ------------ pkg/lint/rules/template.go | 2 +- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/pkg/action/install.go b/pkg/action/install.go index 490e18963..93216130a 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -246,7 +246,7 @@ func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals ma return nil, err } - if err := chartutil.ProcessDependenciesWithMerge(chrt, vals); err != nil { + if err := chartutil.ProcessDependencies(chrt, vals); err != nil { return nil, err } diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index f93bf29b1..5fd2bc1fe 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -243,7 +243,7 @@ func (u *Upgrade) prepareUpgrade(name string, chart *chart.Chart, vals map[strin return nil, nil, err } - if err := chartutil.ProcessDependenciesWithMerge(chart, vals); err != nil { + if err := chartutil.ProcessDependencies(chart, vals); err != nil { return nil, nil, err } diff --git a/pkg/chartutil/dependencies.go b/pkg/chartutil/dependencies.go index 31e0e91cc..f0ba166d9 100644 --- a/pkg/chartutil/dependencies.go +++ b/pkg/chartutil/dependencies.go @@ -25,19 +25,7 @@ import ( ) // ProcessDependencies checks through this chart's dependencies, processing accordingly. -// -// TODO: For Helm v4 this can be combined with or turned into ProcessDependenciesWithMerge func ProcessDependencies(c *chart.Chart, v Values) error { - if err := processDependencyEnabled(c, v, ""); err != nil { - return err - } - return processDependencyImportValues(c, false) -} - -// ProcessDependenciesWithMerge checks through this chart's dependencies, processing accordingly. -// It is similar to ProcessDependencies but it does not remove nil values during -// the import/export handling process. -func ProcessDependenciesWithMerge(c *chart.Chart, v Values) error { if err := processDependencyEnabled(c, v, ""); err != nil { return err } diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index d2058d987..a50485a50 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -87,7 +87,7 @@ func TemplatesWithSkipSchemaValidation(linter *support.Linter, values map[string // lint ignores import-values // See https://github.com/helm/helm/issues/9658 - if err := chartutil.ProcessDependenciesWithMerge(chart, values); err != nil { + if err := chartutil.ProcessDependencies(chart, values); err != nil { return } From 8468de42ed7ef0a97907ad65012a63dd65804eca Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Sun, 5 Jan 2025 10:15:30 -0800 Subject: [PATCH 081/206] cleanup: `NewShowWithConfig` -> `NewShow` Signed-off-by: George Jenkins --- cmd/helm/show.go | 2 +- pkg/action/show.go | 11 +---------- pkg/action/show_test.go | 14 +++++++++----- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/cmd/helm/show.go b/cmd/helm/show.go index aed520d38..492de94f6 100644 --- a/cmd/helm/show.go +++ b/cmd/helm/show.go @@ -57,7 +57,7 @@ of the CustomResourceDefinition files ` func newShowCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { - client := action.NewShowWithConfig(action.ShowAll, cfg) + client := action.NewShow(action.ShowAll, cfg) showCommand := &cobra.Command{ Use: "show", diff --git a/pkg/action/show.go b/pkg/action/show.go index d3c9b0b89..1aa9bf1d0 100644 --- a/pkg/action/show.go +++ b/pkg/action/show.go @@ -65,16 +65,7 @@ type Show struct { } // NewShow creates a new Show object with the given configuration. -// Deprecated: Use NewShowWithConfig -// TODO Helm 4: Fold NewShowWithConfig back into NewShow -func NewShow(output ShowOutputFormat) *Show { - return &Show{ - OutputFormat: output, - } -} - -// NewShowWithConfig creates a new Show object with the given configuration. -func NewShowWithConfig(output ShowOutputFormat, cfg *Configuration) *Show { +func NewShow(output ShowOutputFormat, cfg *Configuration) *Show { sh := &Show{ OutputFormat: output, } diff --git a/pkg/action/show_test.go b/pkg/action/show_test.go index 65ab76142..e8c998198 100644 --- a/pkg/action/show_test.go +++ b/pkg/action/show_test.go @@ -24,7 +24,7 @@ import ( func TestShow(t *testing.T) { config := actionConfigFixture(t) - client := NewShowWithConfig(ShowAll, config) + client := NewShow(ShowAll, config) client.chart = &chart.Chart{ Metadata: &chart.Metadata{Name: "alpine"}, Files: []*chart.File{ @@ -65,7 +65,8 @@ bar } func TestShowNoValues(t *testing.T) { - client := NewShow(ShowAll) + config := actionConfigFixture(t) + client := NewShow(ShowAll, config) client.chart = new(chart.Chart) // Regression tests for missing values. See issue #1024. @@ -81,7 +82,8 @@ func TestShowNoValues(t *testing.T) { } func TestShowValuesByJsonPathFormat(t *testing.T) { - client := NewShow(ShowValues) + config := actionConfigFixture(t) + client := NewShow(ShowValues, config) client.JSONPathTemplate = "{$.nestedKey.simpleKey}" client.chart = buildChart(withSampleValues()) output, err := client.Run("") @@ -95,7 +97,8 @@ func TestShowValuesByJsonPathFormat(t *testing.T) { } func TestShowCRDs(t *testing.T) { - client := NewShow(ShowCRDs) + config := actionConfigFixture(t) + client := NewShow(ShowCRDs, config) client.chart = &chart.Chart{ Metadata: &chart.Metadata{Name: "alpine"}, Files: []*chart.File{ @@ -123,7 +126,8 @@ bar } func TestShowNoReadme(t *testing.T) { - client := NewShow(ShowAll) + config := actionConfigFixture(t) + client := NewShow(ShowAll, config) client.chart = &chart.Chart{ Metadata: &chart.Metadata{Name: "alpine"}, Files: []*chart.File{ From 1c807df5ba63b4aa5c8ff74ec53882c470218f42 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Sun, 5 Jan 2025 14:05:12 -0800 Subject: [PATCH 082/206] cleanup: Remove superceeded 'lint/rules.Values' function Signed-off-by: George Jenkins --- pkg/lint/rules/values.go | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/pkg/lint/rules/values.go b/pkg/lint/rules/values.go index 5b6e39c0c..82278522d 100644 --- a/pkg/lint/rules/values.go +++ b/pkg/lint/rules/values.go @@ -26,20 +26,13 @@ import ( "helm.sh/helm/v4/pkg/lint/support" ) -// Values lints a chart's values.yaml file. -// -// This function is deprecated and will be removed in Helm 4. -func Values(linter *support.Linter) { - ValuesWithOverrides(linter, map[string]interface{}{}) -} - // ValuesWithOverrides tests the values.yaml file. // // If a schema is present in the chart, values are tested against that. Otherwise, // they are only tested for well-formedness. // // If additional values are supplied, they are coalesced into the values in values.yaml. -func ValuesWithOverrides(linter *support.Linter, values map[string]interface{}) { +func ValuesWithOverrides(linter *support.Linter, valueOverrides map[string]interface{}) { file := "values.yaml" vf := filepath.Join(linter.ChartDir, file) fileExists := linter.RunLinterRule(support.InfoSev, file, validateValuesFileExistence(vf)) @@ -48,7 +41,7 @@ func ValuesWithOverrides(linter *support.Linter, values map[string]interface{}) return } - linter.RunLinterRule(support.ErrorSev, file, validateValuesFile(vf, values)) + linter.RunLinterRule(support.ErrorSev, file, validateValuesFile(vf, valueOverrides)) } func validateValuesFileExistence(valuesPath string) error { From e16bf870473d8092a45562a170505874a2a1910b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:21:38 +0000 Subject: [PATCH 083/206] Bump golang.org/x/crypto from 0.31.0 to 0.32.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.31.0 to 0.32.0. - [Commits](https://github.com/golang/crypto/compare/v0.31.0...v0.32.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index fafbda08e..83e01d34a 100644 --- a/go.mod +++ b/go.mod @@ -34,8 +34,8 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/crypto v0.31.0 - golang.org/x/term v0.27.0 + golang.org/x/crypto v0.32.0 + golang.org/x/term v0.28.0 golang.org/x/text v0.21.0 k8s.io/api v0.32.0 k8s.io/apiextensions-apiserver v0.32.0 @@ -168,7 +168,7 @@ require ( golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/go.sum b/go.sum index 7c903c9f7..1a3b37eed 100644 --- a/go.sum +++ b/go.sum @@ -428,8 +428,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -488,8 +488,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -497,8 +497,8 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= -golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= From 1771b88b037077a326ddf15f16665479b7ae2806 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:21:43 +0000 Subject: [PATCH 084/206] Bump github.com/moby/term from 0.5.1 to 0.5.2 Bumps [github.com/moby/term](https://github.com/moby/term) from 0.5.1 to 0.5.2. - [Commits](https://github.com/moby/term/compare/v0.5.1...v0.5.2) --- updated-dependencies: - dependency-name: github.com/moby/term dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index fafbda08e..9904cef61 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/lib/pq v1.10.9 github.com/mattn/go-shellwords v1.0.12 github.com/mitchellh/copystructure v1.2.0 - github.com/moby/term v0.5.1 + github.com/moby/term v0.5.2 github.com/opencontainers/image-spec v1.1.0 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 @@ -51,7 +51,7 @@ require ( require ( dario.cat/mergo v1.0.1 // indirect - github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/go.sum b/go.sum index 7c903c9f7..20f9b4cdc 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= @@ -263,8 +263,8 @@ github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vyg github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/moby/term v0.5.1 h1:iy+9Sd2jzMs24S0frhx8fMvcw0/5C5LxVU0eEqOWoRs= -github.com/moby/term v0.5.1/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From 27bcda42dde6e132f1c1f6a8cd6d47f63d0e1627 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Tue, 7 Jan 2025 11:32:44 -0500 Subject: [PATCH 085/206] Updating the internal version to v4 Signed-off-by: Matt Farina --- cmd/helm/testdata/output/version-client-shorthand.txt | 2 +- cmd/helm/testdata/output/version-client.txt | 2 +- cmd/helm/testdata/output/version-short.txt | 2 +- cmd/helm/testdata/output/version-template.txt | 2 +- cmd/helm/testdata/output/version.txt | 2 +- internal/version/version.go | 2 +- pkg/chartutil/capabilities_test.go | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/helm/testdata/output/version-client-shorthand.txt b/cmd/helm/testdata/output/version-client-shorthand.txt index 1623b57d4..3b138ae77 100644 --- a/cmd/helm/testdata/output/version-client-shorthand.txt +++ b/cmd/helm/testdata/output/version-client-shorthand.txt @@ -1 +1 @@ -version.BuildInfo{Version:"v3.16", GitCommit:"", GitTreeState:"", GoVersion:""} +version.BuildInfo{Version:"v4.0", GitCommit:"", GitTreeState:"", GoVersion:""} diff --git a/cmd/helm/testdata/output/version-client.txt b/cmd/helm/testdata/output/version-client.txt index 1623b57d4..3b138ae77 100644 --- a/cmd/helm/testdata/output/version-client.txt +++ b/cmd/helm/testdata/output/version-client.txt @@ -1 +1 @@ -version.BuildInfo{Version:"v3.16", GitCommit:"", GitTreeState:"", GoVersion:""} +version.BuildInfo{Version:"v4.0", GitCommit:"", GitTreeState:"", GoVersion:""} diff --git a/cmd/helm/testdata/output/version-short.txt b/cmd/helm/testdata/output/version-short.txt index 4951775a9..1961bcc21 100644 --- a/cmd/helm/testdata/output/version-short.txt +++ b/cmd/helm/testdata/output/version-short.txt @@ -1 +1 @@ -v3.16 +v4.0 diff --git a/cmd/helm/testdata/output/version-template.txt b/cmd/helm/testdata/output/version-template.txt index f1daff603..1c3c8f5d7 100644 --- a/cmd/helm/testdata/output/version-template.txt +++ b/cmd/helm/testdata/output/version-template.txt @@ -1 +1 @@ -Version: v3.16 \ No newline at end of file +Version: v4.0 \ No newline at end of file diff --git a/cmd/helm/testdata/output/version.txt b/cmd/helm/testdata/output/version.txt index 1623b57d4..3b138ae77 100644 --- a/cmd/helm/testdata/output/version.txt +++ b/cmd/helm/testdata/output/version.txt @@ -1 +1 @@ -version.BuildInfo{Version:"v3.16", GitCommit:"", GitTreeState:"", GoVersion:""} +version.BuildInfo{Version:"v4.0", GitCommit:"", GitTreeState:"", GoVersion:""} diff --git a/internal/version/version.go b/internal/version/version.go index c9f6fad1c..aa64e618f 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -29,7 +29,7 @@ var ( // // Increment major number for new feature additions and behavioral changes. // Increment minor number for bug fixes and performance enhancements. - version = "v3.16" + version = "v4.0" // metadata is extra build time data metadata = "" diff --git a/pkg/chartutil/capabilities_test.go b/pkg/chartutil/capabilities_test.go index ecdf68289..502b0c7d5 100644 --- a/pkg/chartutil/capabilities_test.go +++ b/pkg/chartutil/capabilities_test.go @@ -62,8 +62,8 @@ func TestDefaultCapabilities(t *testing.T) { func TestDefaultCapabilitiesHelmVersion(t *testing.T) { hv := DefaultCapabilities.HelmVersion - if hv.Version != "v3.16" { - t.Errorf("Expected default HelmVersion to be v3.16, got %q", hv.Version) + if hv.Version != "v4.0" { + t.Errorf("Expected default HelmVersion to be v4.0, got %q", hv.Version) } } From ea67fc93bc96cd9e83f32d1c70d4737ad93a28af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 21:32:05 +0000 Subject: [PATCH 086/206] Bump github.com/cyphar/filepath-securejoin from 0.3.5 to 0.3.6 Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.3.5 to 0.3.6. - [Release notes](https://github.com/cyphar/filepath-securejoin/releases) - [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md) - [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.3.5...v0.3.6) --- updated-dependencies: - dependency-name: github.com/cyphar/filepath-securejoin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9d27e2b1f..fbb67f5c2 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/Masterminds/vcs v1.13.3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.24 - github.com/cyphar/filepath-securejoin v0.3.5 + github.com/cyphar/filepath-securejoin v0.3.6 github.com/distribution/distribution/v3 v3.0.0-rc.1 github.com/evanphx/json-patch v5.9.0+incompatible github.com/foxcpp/go-mockdns v1.1.0 diff --git a/go.sum b/go.sum index 654fc5178..3b54ddd44 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.3.5 h1:L81NHjquoQmcPgXcttUS9qTSR/+bXry6pbSINQGpjj4= -github.com/cyphar/filepath-securejoin v0.3.5/go.mod h1:edhVd3c6OXKjUmSrVa/tGJRS9joFTxlslFCAyaxigkE= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= From 197bfe9f645169bebdbccd421408afe1b7d992ad Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Tue, 12 Nov 2024 16:58:47 +0530 Subject: [PATCH 087/206] Add --take-ownership flag for install and upgrade commands The `TakeOwnership` setting was added to the install and upgrade actions in https://github.com/helm/helm/pull/12876 This PR allows setting this option on install and upgrade via the CLI using a --take-ownership flag Signed-off-by: Mayank Shah --- cmd/helm/install.go | 1 + cmd/helm/install_test.go | 6 ++++++ cmd/helm/testdata/output/install-and-take-ownership.txt | 6 ++++++ cmd/helm/testdata/output/upgrade-and-take-ownership.txt | 7 +++++++ cmd/helm/upgrade.go | 1 + cmd/helm/upgrade_test.go | 6 ++++++ 6 files changed, 27 insertions(+) create mode 100644 cmd/helm/testdata/output/install-and-take-ownership.txt create mode 100644 cmd/helm/testdata/output/upgrade-and-take-ownership.txt diff --git a/cmd/helm/install.go b/cmd/helm/install.go index c5f9e5022..2c0b47273 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -206,6 +206,7 @@ func addInstallFlags(cmd *cobra.Command, f *pflag.FlagSet, client *action.Instal f.StringToStringVarP(&client.Labels, "labels", "l", nil, "Labels that would be added to release metadata. Should be divided by comma.") f.BoolVar(&client.EnableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") f.BoolVar(&client.HideNotes, "hide-notes", false, "if set, do not show notes in install output. Does not affect presence in chart metadata") + f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, install will ignore the check for helm annotations and take ownership of the existing resources.") addValueOptionsFlags(f, valueOpts) addChartPathOptionsFlags(f, &client.ChartPathOptions) diff --git a/cmd/helm/install_test.go b/cmd/helm/install_test.go index 682b25164..3e022b111 100644 --- a/cmd/helm/install_test.go +++ b/cmd/helm/install_test.go @@ -102,6 +102,12 @@ func TestInstall(t *testing.T) { cmd: "install aeneas testdata/testcharts/empty --replace", golden: "output/install-and-replace.txt", }, + // Install, take ownership + { + name: "install and replace release", + cmd: "install aeneas-take-ownership testdata/testcharts/empty --take-ownership", + golden: "output/install-and-take-ownership.txt", + }, // Install, with timeout { name: "install with a timeout", diff --git a/cmd/helm/testdata/output/install-and-take-ownership.txt b/cmd/helm/testdata/output/install-and-take-ownership.txt new file mode 100644 index 000000000..51e626446 --- /dev/null +++ b/cmd/helm/testdata/output/install-and-take-ownership.txt @@ -0,0 +1,6 @@ +NAME: aeneas-take-ownership +LAST DEPLOYED: Fri Sep 2 22:04:05 1977 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None diff --git a/cmd/helm/testdata/output/upgrade-and-take-ownership.txt b/cmd/helm/testdata/output/upgrade-and-take-ownership.txt new file mode 100644 index 000000000..bea42db54 --- /dev/null +++ b/cmd/helm/testdata/output/upgrade-and-take-ownership.txt @@ -0,0 +1,7 @@ +Release "funny-bunny" has been upgraded. Happy Helming! +NAME: funny-bunny +LAST DEPLOYED: Fri Sep 2 22:04:05 1977 +NAMESPACE: default +STATUS: deployed +REVISION: 3 +TEST SUITE: None diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index df529db5b..bc3999436 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -289,6 +289,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { f.StringVar(&client.Description, "description", "", "add a custom description") f.BoolVar(&client.DependencyUpdate, "dependency-update", false, "update dependencies if they are missing before installing the chart") f.BoolVar(&client.EnableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") + f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, upgrade will ignore the check for helm annotations and take ownership of the existing resources.") addChartPathOptionsFlags(f, &client.ChartPathOptions) addValueOptionsFlags(f, valueOpts) bindOutputFlag(cmd, &outfmt) diff --git a/cmd/helm/upgrade_test.go b/cmd/helm/upgrade_test.go index 497c78d71..6065647b9 100644 --- a/cmd/helm/upgrade_test.go +++ b/cmd/helm/upgrade_test.go @@ -114,6 +114,12 @@ func TestUpgradeCmd(t *testing.T) { golden: "output/upgrade-with-reset-values2.txt", rels: []*release.Release{relMock("funny-bunny", 5, ch2)}, }, + { + name: "upgrade a release with --take-ownership", + cmd: fmt.Sprintf("upgrade funny-bunny '%s' --take-ownership", chartPath), + golden: "output/upgrade-and-take-ownership.txt", + rels: []*release.Release{relMock("funny-bunny", 2, ch)}, + }, { name: "install a release with 'upgrade --install'", cmd: fmt.Sprintf("upgrade zany-bunny -i '%s'", chartPath), From 640caedb9012d114e2201c3da2f6370863fbee4a Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Tue, 19 Nov 2024 10:03:03 +0530 Subject: [PATCH 088/206] Update cmd/helm/install.go Co-authored-by: George Jenkins Signed-off-by: Mayank Shah --- cmd/helm/install.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 2c0b47273..c10e84c18 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -206,7 +206,7 @@ func addInstallFlags(cmd *cobra.Command, f *pflag.FlagSet, client *action.Instal f.StringToStringVarP(&client.Labels, "labels", "l", nil, "Labels that would be added to release metadata. Should be divided by comma.") f.BoolVar(&client.EnableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") f.BoolVar(&client.HideNotes, "hide-notes", false, "if set, do not show notes in install output. Does not affect presence in chart metadata") - f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, install will ignore the check for helm annotations and take ownership of the existing resources.") + f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, install will ignore the check for helm annotations and take ownership of the existing resources") addValueOptionsFlags(f, valueOpts) addChartPathOptionsFlags(f, &client.ChartPathOptions) From 00bf34b4139d2721845cfd72a9d92eb3f52045a1 Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Tue, 19 Nov 2024 10:03:09 +0530 Subject: [PATCH 089/206] Update cmd/helm/upgrade.go Co-authored-by: George Jenkins Signed-off-by: Mayank Shah --- cmd/helm/upgrade.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index bc3999436..1432d4d1e 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -289,7 +289,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { f.StringVar(&client.Description, "description", "", "add a custom description") f.BoolVar(&client.DependencyUpdate, "dependency-update", false, "update dependencies if they are missing before installing the chart") f.BoolVar(&client.EnableDNS, "enable-dns", false, "enable DNS lookups when rendering templates") - f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, upgrade will ignore the check for helm annotations and take ownership of the existing resources.") + f.BoolVar(&client.TakeOwnership, "take-ownership", false, "if set, upgrade will ignore the check for helm annotations and take ownership of the existing resources") addChartPathOptionsFlags(f, &client.ChartPathOptions) addValueOptionsFlags(f, valueOpts) bindOutputFlag(cmd, &outfmt) From 90090073be3cd0b65572951ca2d47154cd37adc1 Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Wed, 11 Dec 2024 20:56:52 +0530 Subject: [PATCH 090/206] fix upgrade Signed-off-by: Mayank Shah --- cmd/helm/upgrade.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 1432d4d1e..95d00e39c 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -151,6 +151,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { instClient.Labels = client.Labels instClient.EnableDNS = client.EnableDNS instClient.HideSecret = client.HideSecret + instClient.TakeOwnership = client.TakeOwnership if isReleaseUninstalled(versions) { instClient.Replace = true From 944f81113bd944dbccab84b31d7bcffb137c3624 Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Thu, 12 Dec 2024 21:45:07 +0530 Subject: [PATCH 091/206] fix test Signed-off-by: Mayank Shah --- cmd/helm/testdata/output/upgrade-and-take-ownership.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/helm/testdata/output/upgrade-and-take-ownership.txt b/cmd/helm/testdata/output/upgrade-and-take-ownership.txt index bea42db54..59267651f 100644 --- a/cmd/helm/testdata/output/upgrade-and-take-ownership.txt +++ b/cmd/helm/testdata/output/upgrade-and-take-ownership.txt @@ -4,4 +4,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 3 +DESCRIPTION: Upgrade complete TEST SUITE: None From ccdabad4b90def87b8c08b8dd5836ebf8e7d08cf Mon Sep 17 00:00:00 2001 From: Mayank Shah Date: Fri, 13 Dec 2024 10:25:04 +0530 Subject: [PATCH 092/206] fix test output Signed-off-by: Mayank Shah --- cmd/helm/testdata/output/install-and-take-ownership.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/helm/testdata/output/install-and-take-ownership.txt b/cmd/helm/testdata/output/install-and-take-ownership.txt index 51e626446..413329ae1 100644 --- a/cmd/helm/testdata/output/install-and-take-ownership.txt +++ b/cmd/helm/testdata/output/install-and-take-ownership.txt @@ -3,4 +3,5 @@ LAST DEPLOYED: Fri Sep 2 22:04:05 1977 NAMESPACE: default STATUS: deployed REVISION: 1 +DESCRIPTION: Install complete TEST SUITE: None From dc26e5b3e28c927a15908a9e94536fc8ca9e2884 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Thu, 19 Dec 2024 10:27:38 -0500 Subject: [PATCH 093/206] Update to Go 1.23 Multiple changes were made to pass linting. Some Go built-in names are being used for variables (e.g., min). This happens in the Go source itself including the Go standard library and is not always a bad practice. To handle allowing some built-in names to be used the linter config is updated to allow (via opt-in) some names to pass. This allows us to still check for re-use of Go built-in names and opt-in to any new uses. There were also several cases where a value was checked for nil before checking its length when this is already handled by len() or the types default value. These were cleaned up. The license validation was updated because it was checking everything in the .git directory including all remote content that was local. The previous vendor directory was from a time prior to Go modules when Helm handled dependencies differently. It was no longer needed. Signed-off-by: Matt Farina --- .github/workflows/build-test.yml | 2 +- .github/workflows/golangci-lint.yml | 2 +- .github/workflows/govulncheck.yml | 2 +- .github/workflows/release.yml | 4 ++-- .golangci.yml | 20 ++++++++++++++++++++ cmd/helm/plugin_uninstall.go | 2 +- cmd/helm/plugin_update.go | 2 +- cmd/helm/status.go | 2 +- go.mod | 2 +- pkg/action/hooks.go | 2 +- pkg/engine/engine.go | 4 ++-- pkg/kube/client.go | 2 +- pkg/kube/wait.go | 2 +- pkg/registry/util.go | 2 +- scripts/validate-license.sh | 2 +- 15 files changed, 36 insertions(+), 16 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index e6e347ecd..30ed80a34 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -21,7 +21,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22' + go-version: '1.23' check-latest: true - name: Test source headers are present run: make test-source-headers diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 14fe0d414..c0792ba0a 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22' + go-version: '1.23' check-latest: true - name: golangci-lint uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 #pin@6.1.1 diff --git a/.github/workflows/govulncheck.yml b/.github/workflows/govulncheck.yml index 73efbb3f9..a2f3bfd4b 100644 --- a/.github/workflows/govulncheck.yml +++ b/.github/workflows/govulncheck.yml @@ -16,7 +16,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22' + go-version: '1.23' check-latest: true - name: govulncheck uses: golang/govulncheck-action@b625fbe08f3bccbe446d94fbf87fcc875a4f50ee # pin@1.0.4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b9fe27aa3..146baddd9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,7 +27,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22.7' + go-version: '1.23' - name: Run unit tests run: make test-coverage @@ -83,7 +83,7 @@ jobs: - name: Setup Go uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 with: - go-version: '1.22' + go-version: '1.23' check-latest: true - name: Run unit tests diff --git a/.golangci.yml b/.golangci.yml index 3cf50a0d4..90b84d77d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -23,3 +23,23 @@ linters-settings: local-prefixes: helm.sh/helm/v3 dupl: threshold: 400 +issues: + exclude-rules: + # Helm, and the Go source code itself, sometimes uses these names outside their built-in + # functions. As the Go source code has re-used these names it's ok for Helm to do the same. + # Linting will look for redefinition of built-in id's but we opt-in to the ones we choose to use. + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function append" + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function clear" + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function max" + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function min" + - linters: + - revive + text: "redefines-builtin-id: redefinition of the built-in function new" \ No newline at end of file diff --git a/cmd/helm/plugin_uninstall.go b/cmd/helm/plugin_uninstall.go index 607baab2e..458a92cc8 100644 --- a/cmd/helm/plugin_uninstall.go +++ b/cmd/helm/plugin_uninstall.go @@ -78,7 +78,7 @@ func (o *pluginUninstallOptions) run(out io.Writer) error { } } if len(errorPlugins) > 0 { - return errors.Errorf(strings.Join(errorPlugins, "\n")) + return errors.New(strings.Join(errorPlugins, "\n")) } return nil } diff --git a/cmd/helm/plugin_update.go b/cmd/helm/plugin_update.go index 3f6d963fb..eb7505696 100644 --- a/cmd/helm/plugin_update.go +++ b/cmd/helm/plugin_update.go @@ -81,7 +81,7 @@ func (o *pluginUpdateOptions) run(out io.Writer) error { } } if len(errorPlugins) > 0 { - return errors.Errorf(strings.Join(errorPlugins, "\n")) + return errors.New(strings.Join(errorPlugins, "\n")) } return nil } diff --git a/cmd/helm/status.go b/cmd/helm/status.go index 2bee5db44..747b2556b 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -140,7 +140,7 @@ func (s statusPrinter) WriteTable(out io.Writer) error { } _, _ = fmt.Fprintf(out, "DESCRIPTION: %s\n", s.release.Info.Description) - if s.release.Info.Resources != nil && len(s.release.Info.Resources) > 0 { + if len(s.release.Info.Resources) > 0 { buf := new(bytes.Buffer) printFlags := get.NewHumanPrintFlags() typePrinter, _ := printFlags.ToPrinter("") diff --git a/go.mod b/go.mod index fbb67f5c2..997385df2 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module helm.sh/helm/v3 -go 1.22.0 +go 1.23.0 require ( github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 4bffb6ae0..e1cbab5e1 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -44,7 +44,7 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, for _, h := range executingHooks { // Set default delete policy to before-hook-creation - if h.DeletePolicies == nil || len(h.DeletePolicies) == 0 { + if len(h.DeletePolicies) == 0 { // TODO(jlegrone): Only apply before-hook-creation delete policy to run to completion // resources. For all other resource types update in place if a // resource with the same name already exists and is owned by the diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index df3a600a3..d8ee313e1 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -206,7 +206,7 @@ func (e Engine) initFunMap(t *template.Template) { log.Printf("[INFO] Missing required value: %s", warn) return "", nil } - return val, errors.Errorf(warnWrap(warn)) + return val, errors.New(warnWrap(warn)) } else if _, ok := val.(string); ok { if val == "" { if e.LintMode { @@ -214,7 +214,7 @@ func (e Engine) initFunMap(t *template.Template) { log.Printf("[INFO] Missing required value: %s", warn) return "", nil } - return val, errors.Errorf(warnWrap(warn)) + return val, errors.New(warnWrap(warn)) } } return val, nil diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 4d93c91b9..5f16f2bfb 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -435,7 +435,7 @@ func (c *Client) Update(original, target ResourceList, force bool) (*Result, err case err != nil: return res, err case len(updateErrors) != 0: - return res, errors.Errorf(strings.Join(updateErrors, " && ")) + return res, errors.New(strings.Join(updateErrors, " && ")) } for _, info := range original.Difference(target) { diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 36110d0de..bdafc8255 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -153,7 +153,7 @@ func SelectorsForObject(object runtime.Object) (selector labels.Selector, err er case *batchv1.Job: selector, err = metav1.LabelSelectorAsSelector(t.Spec.Selector) case *corev1.Service: - if t.Spec.Selector == nil || len(t.Spec.Selector) == 0 { + if len(t.Spec.Selector) == 0 { return nil, fmt.Errorf("invalid service '%s': Service is defined without a selector", t.Name) } selector = labels.SelectorFromSet(t.Spec.Selector) diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 727cdae03..4454105c9 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -208,7 +208,7 @@ func generateChartOCIAnnotations(meta *chart.Metadata, creationTime string) map[ chartOCIAnnotations = addToMap(chartOCIAnnotations, ocispec.AnnotationSource, meta.Sources[0]) } - if meta.Maintainers != nil && len(meta.Maintainers) > 0 { + if len(meta.Maintainers) > 0 { var maintainerSb strings.Builder for maintainerIdx, maintainer := range meta.Maintainers { diff --git a/scripts/validate-license.sh b/scripts/validate-license.sh index dc247436f..f67812ca5 100755 --- a/scripts/validate-license.sh +++ b/scripts/validate-license.sh @@ -19,7 +19,7 @@ IFS=$'\n\t' find_files() { find . -not \( \ \( \ - -wholename './vendor' \ + -wholename './.git' \ -o -wholename '*testdata*' \ -o -wholename '*third_party*' \ \) -prune \ From de350b80fd2fcf72f049aedddf607c22d65ec1a8 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Thu, 19 Dec 2024 13:45:12 -0500 Subject: [PATCH 094/206] Update golangci-lint version Signed-off-by: Matt Farina --- .github/workflows/golangci-lint.yml | 2 +- .golangci.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index c0792ba0a..2a54d0337 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -23,4 +23,4 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 #pin@6.1.1 with: - version: v1.58 + version: v1.62 diff --git a/.golangci.yml b/.golangci.yml index 90b84d77d..a3e5119d4 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -42,4 +42,4 @@ issues: text: "redefines-builtin-id: redefinition of the built-in function min" - linters: - revive - text: "redefines-builtin-id: redefinition of the built-in function new" \ No newline at end of file + text: "redefines-builtin-id: redefinition of the built-in function new" From c55b7ca400e1115344d5f0f17f45bb504baaa548 Mon Sep 17 00:00:00 2001 From: dnskr Date: Mon, 5 Aug 2024 23:45:50 +0200 Subject: [PATCH 095/206] ref(create): don't render empty resource fields Signed-off-by: Denis Krivenko Signed-off-by: dnskr --- pkg/chartutil/create.go | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pkg/chartutil/create.go b/pkg/chartutil/create.go index dc70530eb..321d3d2c0 100644 --- a/pkg/chartutil/create.go +++ b/pkg/chartutil/create.go @@ -327,24 +327,34 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} serviceAccountName: {{ include ".serviceAccountName" . }} + {{- with .Values.podSecurityContext }} securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- toYaml . | nindent 8 }} + {{- end }} containers: - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http containerPort: {{ .Values.service.port }} protocol: TCP + {{- with .Values.livenessProbe }} livenessProbe: - {{- toYaml .Values.livenessProbe | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.readinessProbe }} readinessProbe: - {{- toYaml .Values.readinessProbe | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.resources }} resources: - {{- toYaml .Values.resources | nindent 12 }} + {{- toYaml . | nindent 12 }} + {{- end }} {{- with .Values.volumeMounts }} volumeMounts: {{- toYaml . | nindent 12 }} From 5522182098204faec10d9210b562b3a91d09459a Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 20 Dec 2024 11:45:12 -0800 Subject: [PATCH 096/206] Fix `dependabot.yml` Signed-off-by: George Jenkins --- .github/dependabot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 0bd0731c3..0133fd8f4 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,7 +3,7 @@ version: 2 updates: - # Keep dev-v3 branch dependencies up to date, while Helm v3 is within support package-ecosystem: "gomod" - target_branch: "dev-v3" + target-branch: "dev-v3" directory: "/" schedule: interval: "daily" @@ -18,7 +18,7 @@ updates: - "k8s.io/client-go" - "k8s.io/kubectl" - package-ecosystem: "gomod" - target_branch: "main" + target-branch: "main" directory: "/" schedule: interval: "daily" @@ -33,7 +33,7 @@ updates: - "k8s.io/client-go" - "k8s.io/kubectl" - package-ecosystem: "github-actions" - target_branch: "main" + target-branch: "main" directory: "/" schedule: interval: "daily" From b09a4c543cb132666945a65ca1946b31f66132b4 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 20 Dec 2024 12:54:39 -0800 Subject: [PATCH 097/206] Run `build-test` action on `dev-v3` branch Signed-off-by: George Jenkins --- .github/workflows/build-test.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 30ed80a34..cd43f3ff3 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -7,9 +7,10 @@ on: - "release-**" pull_request: branches: - - main + - "main" + - "dev-v3" -permissions: +permissions: contents: read jobs: From 91cd7408c958ade311b9b24b1ba008327e6fe90b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:29:27 +0000 Subject: [PATCH 098/206] Bump github.com/distribution/distribution/v3 Bumps [github.com/distribution/distribution/v3](https://github.com/distribution/distribution) from 3.0.0-rc.1 to 3.0.0-rc.2. - [Release notes](https://github.com/distribution/distribution/releases) - [Commits](https://github.com/distribution/distribution/compare/v3.0.0-rc.1...v3.0.0-rc.2) --- updated-dependencies: - dependency-name: github.com/distribution/distribution/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 61 ++++++++++++++-------------- go.sum | 126 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 95 insertions(+), 92 deletions(-) diff --git a/go.mod b/go.mod index 997385df2..2df3c5b31 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.24 github.com/cyphar/filepath-securejoin v0.3.6 - github.com/distribution/distribution/v3 v3.0.0-rc.1 + github.com/distribution/distribution/v3 v3.0.0-rc.2 github.com/evanphx/json-patch v5.9.0+incompatible github.com/foxcpp/go-mockdns v1.1.0 github.com/gobwas/glob v0.2.3 @@ -99,7 +99,7 @@ require ( github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect @@ -108,7 +108,7 @@ require ( github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect @@ -129,9 +129,9 @@ require ( github.com/opencontainers/go-digest v1.0.0 // indirect github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_golang v1.20.5 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect github.com/redis/go-redis/extra/rediscmd/v9 v9.0.5 // indirect github.com/redis/go-redis/extra/redisotel/v9 v9.0.5 // indirect @@ -143,39 +143,40 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xlab/treeprint v1.2.0 // indirect - go.opentelemetry.io/contrib/bridges/prometheus v0.54.0 // indirect - go.opentelemetry.io/contrib/exporters/autoexport v0.54.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect - go.opentelemetry.io/otel v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/prometheus v0.51.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0 // indirect - go.opentelemetry.io/otel/log v0.5.0 // indirect - go.opentelemetry.io/otel/metric v1.29.0 // indirect - go.opentelemetry.io/otel/sdk v1.29.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.5.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.29.0 // indirect - go.opentelemetry.io/otel/trace v1.29.0 // indirect + go.opentelemetry.io/contrib/bridges/prometheus v0.57.0 // indirect + go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 // indirect + go.opentelemetry.io/otel v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.54.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 // indirect + go.opentelemetry.io/otel/log v0.8.0 // indirect + go.opentelemetry.io/otel/metric v1.32.0 // indirect + go.opentelemetry.io/otel/sdk v1.32.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.8.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect + go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.29.0 // indirect + golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/time v0.6.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.66.2 // indirect - google.golang.org/protobuf v1.34.2 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect + google.golang.org/grpc v1.68.0 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 3b54ddd44..f08a70dbf 100644 --- a/go.sum +++ b/go.sum @@ -86,8 +86,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/distribution/distribution/v3 v3.0.0-rc.1 h1:6M4ewmPBUhF7wtQ8URLOQ1W/PQuVKiD1u8ymwLDUGqQ= -github.com/distribution/distribution/v3 v3.0.0-rc.1/go.mod h1:tFjaPDeHCrLg28e4feBIy27cP+qmrc/mvkl6MFIfVi4= +github.com/distribution/distribution/v3 v3.0.0-rc.2 h1:tTrzntanYMbd20SyvdeR83Ya1l/aBwDcA3NCIpmwemc= +github.com/distribution/distribution/v3 v3.0.0-rc.2/go.mod h1:H2zIRRXS20ylnv2HTuKILAWuANjuA60GB7MLOsQag7Y= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbTO1lpcGSkU= @@ -203,8 +203,8 @@ github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -232,8 +232,8 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= -github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= -github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -325,8 +325,8 @@ github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjz github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= -github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -334,8 +334,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= -github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= +github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= +github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= @@ -348,8 +348,8 @@ github.com/redis/go-redis/extra/redisotel/v9 v9.0.5/go.mod h1:WZjPDy7VNzn77AAfnA github.com/redis/go-redis/v9 v9.0.5/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk= github.com/redis/go-redis/v9 v9.1.0 h1:137FnGdk+EQdCbye1FW+qOEcY5S+SpY9T0NiuqvtfMY= github.com/redis/go-redis/v9 v9.1.0/go.mod h1:urWj3He21Dj5k4TK1y59xH8Uj6ATueP8AH1cY3lZl4c= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/rubenv/sql-migrate v1.7.1 h1:f/o0WgfO/GqNuVg+6801K/KW3WdDSupzSjDYODmiUq4= github.com/rubenv/sql-migrate v1.7.1/go.mod h1:Ob2Psprc0/3ggbM6wCzyYVFFuc6FyZrb2AS+ezLDFb4= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -397,46 +397,48 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/bridges/prometheus v0.54.0 h1:WWL67oxtknNVMb70lJXxXruf8UyK/a9hmIE1XO3Uedg= -go.opentelemetry.io/contrib/bridges/prometheus v0.54.0/go.mod h1:LqNcnXmyULp8ertk4hUTVtSUvKXj4h1Mx7gUCSSr/q0= -go.opentelemetry.io/contrib/exporters/autoexport v0.54.0 h1:dTmcmVm4J54IRPGm5oVjLci1uYat4UDea84E2tyBaAk= -go.opentelemetry.io/contrib/exporters/autoexport v0.54.0/go.mod h1:zPp5Fwpq2Hc7xMtVttg6GhZMcfTESjVbY9ONw2o/Dc4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= -go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= -go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0 h1:4d++HQ+Ihdl+53zSjtsCUFDmNMju2FC9qFkUlTxPLqo= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.5.0/go.mod h1:mQX5dTO3Mh5ZF7bPKDkt5c/7C41u/SiDr9XgTpzXXn8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0 h1:k6fQVDQexDE+3jG2SfCQjnHS7OamcP73YMoxEVq5B6k= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.29.0/go.mod h1:t4BrYLHU450Zo9fnydWlIuswB1bm7rM8havDpWOJeDo= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0 h1:xvhQxJ/C9+RTnAj5DpTg7LSM1vbbMTiXt7e9hsfqHNw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.29.0/go.mod h1:Fcvs2Bz1jkDM+Wf5/ozBGmi3tQ/c9zPKLnsipnfhGAo= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0 h1:dIIDULZJpgdiHz5tXrTgKIMLkus6jEFa7x5SOKcyR7E= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.29.0/go.mod h1:jlRVBe7+Z1wyxFSUs48L6OBQZ5JwH2Hg/Vbl+t9rAgI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0 h1:nSiV3s7wiCam610XcLbYOmMfJxB9gO4uK3Xgv5gmTgg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.29.0/go.mod h1:hKn/e/Nmd19/x1gvIHwtOwVWM+VhuITSWip3JUDghj0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0 h1:JAv0Jwtl01UFiyWZEMiJZBiTlv5A50zNs8lsthXqIio= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.29.0/go.mod h1:QNKLmUEAq2QUbPQUfvw4fmv0bgbK7UlOSFCnXyfvSNc= -go.opentelemetry.io/otel/exporters/prometheus v0.51.0 h1:G7uexXb/K3T+T9fNLCCKncweEtNEBMTO+46hKX5EdKw= -go.opentelemetry.io/otel/exporters/prometheus v0.51.0/go.mod h1:v0mFe5Kk7woIh938mrZBJBmENYquyA0IICrlYm4Y0t4= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0 h1:ThVXnEsdwNcxdBO+r96ci1xbF+PgNjwlk457VNuJODo= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.5.0/go.mod h1:rHWcSmC4q2h3gje/yOq6sAOaq8+UHxN/Ru3BbmDXOfY= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0 h1:X3ZjNp36/WlkSYx0ul2jw4PtbNEDDeLskw3VPsrpYM0= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.29.0/go.mod h1:2uL/xnOXh0CHOBFCWXz5u1A4GXLiW+0IQIzVbeOEQ0U= -go.opentelemetry.io/otel/log v0.5.0 h1:x1Pr6Y3gnXgl1iFBwtGy1W/mnzENoK0w0ZoaeOI3i30= -go.opentelemetry.io/otel/log v0.5.0/go.mod h1:NU/ozXeGuOR5/mjCRXYbTC00NFJ3NYuraV/7O78F0rE= -go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= -go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= -go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= -go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= -go.opentelemetry.io/otel/sdk/log v0.5.0 h1:A+9lSjlZGxkQOr7QSBJcuyyYBw79CufQ69saiJLey7o= -go.opentelemetry.io/otel/sdk/log v0.5.0/go.mod h1:zjxIW7sw1IHolZL2KlSAtrUi8JHttoeiQy43Yl3WuVQ= -go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= -go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= -go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= -go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0 h1:UW0+QyeyBVhn+COBec3nGhfnFe5lwB0ic1JBVjzhk0w= +go.opentelemetry.io/contrib/bridges/prometheus v0.57.0/go.mod h1:ppciCHRLsyCio54qbzQv0E4Jyth/fLWDTJYfvWpcSVk= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= +go.opentelemetry.io/contrib/exporters/autoexport v0.57.0/go.mod h1:EJBheUMttD/lABFyLXhce47Wr6DPWYReCzaZiXadH7g= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 h1:DheMAlT6POBP+gh8RUH19EOTnQIor5QE0uSRPtzCpSw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0/go.mod h1:wZcGmeVO9nzP67aYSLDqXNWK87EZWhi7JWj1v7ZXf94= +go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0 h1:WzNab7hOOLzdDF/EoWCt4glhrbMPVMOO5JYTmpz36Ls= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.8.0/go.mod h1:hKvJwTzJdp90Vh7p6q/9PAOd55dI6WA6sWj62a/JvSs= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0 h1:S+LdBGiQXtJdowoJoQPEtI52syEP/JYBUpjO49EQhV8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.8.0/go.mod h1:5KXybFvPGds3QinJWQT7pmXf+TN5YIa7CNYObWRkj50= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0 h1:j7ZSD+5yn+lo3sGV69nW04rRR0jhYnBwjuX3r0HvnK0= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.32.0/go.mod h1:WXbYJTUaZXAbYd8lbgGuvih0yuCfOFC5RJoYnoLcGz8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0 h1:t/Qur3vKSkUCcDVaSumWF2PKHt85pc7fRvFuoVT8qFU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.32.0/go.mod h1:Rl61tySSdcOJWoEgYZVtmnKdA0GeKrSqkHC1t+91CH8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0 h1:IJFEoHiytixx8cMiVAO+GmHR6Frwu+u5Ur8njpFO6Ac= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.32.0/go.mod h1:3rHrKNtLIoS0oZwkY2vxi+oJcwFRWdtUyRII+so45p8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0 h1:9kV11HXBHZAvuPUZxmMWrH8hZn/6UnHX4K0mu36vNsU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.32.0/go.mod h1:JyA0FHXe22E1NeNiHmVp7kFHglnexDQ7uRWDiiJ1hKQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0 h1:cMyu9O88joYEaI47CnQkxO1XZdpoTF9fEnW2duIddhw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.32.0/go.mod h1:6Am3rn7P9TVVeXYG+wtcGE7IE1tsQ+bP3AuWcKt/gOI= +go.opentelemetry.io/otel/exporters/prometheus v0.54.0 h1:rFwzp68QMgtzu9PgP3jm9XaMICI6TsofWWPcBDKwlsU= +go.opentelemetry.io/otel/exporters/prometheus v0.54.0/go.mod h1:QyjcV9qDP6VeK5qPyKETvNjmaaEc7+gqjh4SS0ZYzDU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0 h1:CHXNXwfKWfzS65yrlB2PVds1IBZcdsX8Vepy9of0iRU= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.8.0/go.mod h1:zKU4zUgKiaRxrdovSS2amdM5gOc59slmo/zJwGX+YBg= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0 h1:SZmDnHcgp3zwlPBS2JX2urGYe/jBKEIT6ZedHRUyCz8= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.32.0/go.mod h1:fdWW0HtZJ7+jNpTKUR0GpMEDP69nR8YBJQxNiVCE3jk= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0 h1:cC2yDI3IQd0Udsux7Qmq8ToKAx1XCilTQECZ0KDZyTw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.32.0/go.mod h1:2PD5Ex6z8CFzDbTdOlwyNIUywRr1DN0ospafJM1wJ+s= +go.opentelemetry.io/otel/log v0.8.0 h1:egZ8vV5atrUWUbnSsHn6vB8R21G2wrKqNiDt3iWertk= +go.opentelemetry.io/otel/log v0.8.0/go.mod h1:M9qvDdUTRCopJcGRKg57+JSQ9LgLBrwwfC32epk5NX8= +go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk/log v0.8.0 h1:zg7GUYXqxk1jnGF/dTdLPrK06xJdrXgqgFLnI4Crxvs= +go.opentelemetry.io/otel/sdk/log v0.8.0/go.mod h1:50iXr0UVwQrYS45KbruFrEt4LvAdCaWWgIrsN3ZQggo= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= @@ -482,8 +484,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= -golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= -golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= +golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -568,15 +570,15 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1 h1:hjSy6tcFQZ171igDaN5QHOw2n6vx40juYbC/x67CEhc= -google.golang.org/genproto/googleapis/api v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:qpvKtACPCQhAdu3PyQgV4l3LMXZEtft7y8QcarRsp9I= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= +google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= -google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= +google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -585,8 +587,8 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From f08e2d14bb4f15e4142f0e8fb1f65bf805bd1741 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Thu, 26 Dec 2024 16:33:51 -0500 Subject: [PATCH 099/206] Updating to helm.sh/helm/v4 Since Helm is going through breaking changes with Helm v4, the version path to Helm needs to be updated. Signed-off-by: Matt Farina --- .golangci.yml | 2 +- Makefile | 16 +++++------ README.md | 7 ++++- cmd/helm/completion.go | 2 +- cmd/helm/completion_test.go | 4 +-- cmd/helm/create.go | 8 +++--- cmd/helm/create_test.go | 10 +++---- cmd/helm/dependency.go | 4 +-- cmd/helm/dependency_build.go | 8 +++--- cmd/helm/dependency_build_test.go | 8 +++--- cmd/helm/dependency_update.go | 8 +++--- cmd/helm/dependency_update_test.go | 14 +++++----- cmd/helm/docs.go | 2 +- cmd/helm/env.go | 2 +- cmd/helm/flags.go | 12 ++++----- cmd/helm/flags_test.go | 6 ++--- cmd/helm/get.go | 4 +-- cmd/helm/get_all.go | 6 ++--- cmd/helm/get_all_test.go | 2 +- cmd/helm/get_hooks.go | 4 +-- cmd/helm/get_hooks_test.go | 2 +- cmd/helm/get_manifest.go | 4 +-- cmd/helm/get_manifest_test.go | 2 +- cmd/helm/get_metadata.go | 6 ++--- cmd/helm/get_metadata_test.go | 2 +- cmd/helm/get_notes.go | 4 +-- cmd/helm/get_notes_test.go | 2 +- cmd/helm/get_values.go | 6 ++--- cmd/helm/get_values_test.go | 2 +- cmd/helm/helm.go | 14 +++++----- cmd/helm/helm_test.go | 18 ++++++------- cmd/helm/history.go | 14 +++++----- cmd/helm/history_test.go | 2 +- cmd/helm/install.go | 18 ++++++------- cmd/helm/install_test.go | 2 +- cmd/helm/lint.go | 10 +++---- cmd/helm/list.go | 8 +++--- cmd/helm/list_test.go | 6 ++--- cmd/helm/load_plugins.go | 2 +- cmd/helm/package.go | 8 +++--- cmd/helm/package_test.go | 4 +-- cmd/helm/plugin.go | 2 +- cmd/helm/plugin_install.go | 6 ++--- cmd/helm/plugin_list.go | 2 +- cmd/helm/plugin_test.go | 2 +- cmd/helm/plugin_uninstall.go | 2 +- cmd/helm/plugin_update.go | 4 +-- cmd/helm/pull.go | 4 +-- cmd/helm/pull_test.go | 2 +- cmd/helm/push.go | 6 ++--- cmd/helm/registry.go | 2 +- cmd/helm/registry_login.go | 4 +-- cmd/helm/registry_logout.go | 4 +-- cmd/helm/release_testing.go | 6 ++--- cmd/helm/repo.go | 2 +- cmd/helm/repo_add.go | 6 ++--- cmd/helm/repo_add_test.go | 8 +++--- cmd/helm/repo_index.go | 4 +-- cmd/helm/repo_index_test.go | 2 +- cmd/helm/repo_list.go | 6 ++--- cmd/helm/repo_remove.go | 6 ++--- cmd/helm/repo_remove_test.go | 6 ++--- cmd/helm/repo_update.go | 6 ++--- cmd/helm/repo_update_test.go | 8 +++--- cmd/helm/rollback.go | 4 +-- cmd/helm/rollback_test.go | 4 +-- cmd/helm/root.go | 10 +++---- cmd/helm/root_test.go | 6 ++--- cmd/helm/search/search.go | 2 +- cmd/helm/search/search_test.go | 4 +-- cmd/helm/search_hub.go | 4 +-- cmd/helm/search_repo.go | 8 +++--- cmd/helm/show.go | 4 +-- cmd/helm/show_test.go | 2 +- cmd/helm/status.go | 10 +++---- cmd/helm/status_test.go | 6 ++--- cmd/helm/template.go | 12 ++++----- cmd/helm/uninstall.go | 4 +-- cmd/helm/uninstall_test.go | 2 +- cmd/helm/upgrade.go | 18 ++++++------- cmd/helm/upgrade_test.go | 8 +++--- cmd/helm/verify.go | 4 +-- cmd/helm/version.go | 4 +-- go.mod | 2 +- internal/fileutil/fileutil.go | 2 +- internal/monocular/search.go | 4 +-- internal/resolver/resolver.go | 12 ++++----- internal/resolver/resolver_test.go | 4 +-- internal/test/ensure/ensure.go | 4 +-- internal/version/version.go | 2 +- pkg/action/action.go | 22 +++++++-------- pkg/action/action_test.go | 16 +++++------ pkg/action/dependency.go | 4 +-- pkg/action/dependency_test.go | 6 ++--- pkg/action/get.go | 2 +- pkg/action/get_metadata.go | 2 +- pkg/action/get_values.go | 2 +- pkg/action/history.go | 4 +-- pkg/action/hooks.go | 6 ++--- pkg/action/install.go | 28 ++++++++++---------- pkg/action/install_test.go | 14 +++++----- pkg/action/lint.go | 6 ++--- pkg/action/list.go | 4 +-- pkg/action/list_test.go | 4 +-- pkg/action/package.go | 6 ++--- pkg/action/package_test.go | 2 +- pkg/action/pull.go | 12 ++++----- pkg/action/push.go | 8 +++--- pkg/action/registry_login.go | 2 +- pkg/action/release_testing.go | 4 +-- pkg/action/resource_policy.go | 4 +-- pkg/action/rollback.go | 6 ++--- pkg/action/show.go | 8 +++--- pkg/action/show_test.go | 2 +- pkg/action/status.go | 4 +-- pkg/action/uninstall.go | 10 +++---- pkg/action/uninstall_test.go | 4 +-- pkg/action/upgrade.go | 16 +++++------ pkg/action/upgrade_test.go | 10 +++---- pkg/action/validate.go | 2 +- pkg/action/validate_test.go | 2 +- pkg/action/verify.go | 2 +- pkg/chart/loader/archive.go | 2 +- pkg/chart/loader/directory.go | 6 ++--- pkg/chart/loader/load.go | 2 +- pkg/chart/loader/load_test.go | 2 +- pkg/chartutil/capabilities.go | 2 +- pkg/chartutil/chartfile.go | 2 +- pkg/chartutil/chartfile_test.go | 2 +- pkg/chartutil/coalesce.go | 2 +- pkg/chartutil/coalesce_test.go | 2 +- pkg/chartutil/create.go | 4 +-- pkg/chartutil/create_test.go | 4 +-- pkg/chartutil/dependencies.go | 2 +- pkg/chartutil/dependencies_test.go | 4 +-- pkg/chartutil/doc.go | 2 +- pkg/chartutil/expand.go | 4 +-- pkg/chartutil/jsonschema.go | 2 +- pkg/chartutil/jsonschema_test.go | 2 +- pkg/chartutil/save.go | 2 +- pkg/chartutil/save_test.go | 4 +-- pkg/chartutil/values.go | 2 +- pkg/chartutil/values_test.go | 2 +- pkg/cli/environment.go | 6 ++--- pkg/cli/environment_test.go | 2 +- pkg/cli/values/options.go | 4 +-- pkg/cli/values/options_test.go | 2 +- pkg/downloader/chart_downloader.go | 14 +++++----- pkg/downloader/chart_downloader_test.go | 10 +++---- pkg/downloader/manager.go | 20 +++++++------- pkg/downloader/manager_test.go | 10 +++---- pkg/engine/doc.go | 2 +- pkg/engine/engine.go | 4 +-- pkg/engine/engine_test.go | 4 +-- pkg/engine/files.go | 2 +- pkg/getter/getter.go | 4 +-- pkg/getter/getter_test.go | 2 +- pkg/getter/httpgetter.go | 6 ++--- pkg/getter/httpgetter_test.go | 6 ++--- pkg/getter/ocigetter.go | 6 ++--- pkg/getter/ocigetter_test.go | 2 +- pkg/getter/plugingetter.go | 4 +-- pkg/getter/plugingetter_test.go | 2 +- pkg/helmpath/home_unix_test.go | 2 +- pkg/helmpath/home_windows_test.go | 2 +- pkg/helmpath/lazypath.go | 2 +- pkg/helmpath/lazypath_darwin_test.go | 2 +- pkg/helmpath/lazypath_unix_test.go | 2 +- pkg/helmpath/lazypath_windows_test.go | 2 +- pkg/ignore/doc.go | 2 +- pkg/kube/client.go | 2 +- pkg/kube/config.go | 2 +- pkg/kube/converter.go | 2 +- pkg/kube/factory.go | 2 +- pkg/kube/fake/fake.go | 2 +- pkg/kube/fake/printer.go | 2 +- pkg/kube/ready.go | 4 +-- pkg/kube/ready_test.go | 2 +- pkg/kube/resource.go | 2 +- pkg/kube/resource_policy.go | 2 +- pkg/kube/resource_test.go | 2 +- pkg/kube/wait.go | 2 +- pkg/lint/lint.go | 8 +++--- pkg/lint/lint_test.go | 8 +++--- pkg/lint/rules/chartfile.go | 8 +++--- pkg/lint/rules/chartfile_test.go | 6 ++--- pkg/lint/rules/dependencies.go | 8 +++--- pkg/lint/rules/dependencies_test.go | 6 ++--- pkg/lint/rules/deprecations.go | 4 +-- pkg/lint/rules/deprecations_test.go | 2 +- pkg/lint/rules/template.go | 8 +++--- pkg/lint/rules/template_test.go | 6 ++--- pkg/lint/rules/values.go | 4 +-- pkg/lint/rules/values_test.go | 2 +- pkg/lint/support/doc.go | 2 +- pkg/plugin/cache/cache.go | 2 +- pkg/plugin/hooks.go | 2 +- pkg/plugin/installer/base.go | 4 +-- pkg/plugin/installer/base_test.go | 2 +- pkg/plugin/installer/doc.go | 2 +- pkg/plugin/installer/http_installer.go | 12 ++++----- pkg/plugin/installer/http_installer_test.go | 8 +++--- pkg/plugin/installer/installer.go | 2 +- pkg/plugin/installer/local_installer.go | 2 +- pkg/plugin/installer/local_installer_test.go | 4 +-- pkg/plugin/installer/vcs_installer.go | 8 +++--- pkg/plugin/installer/vcs_installer_test.go | 6 ++--- pkg/plugin/plugin.go | 4 +-- pkg/plugin/plugin_test.go | 4 +-- pkg/provenance/doc.go | 2 +- pkg/provenance/sign.go | 4 +-- pkg/pusher/ocipusher.go | 8 +++--- pkg/pusher/ocipusher_test.go | 2 +- pkg/pusher/pusher.go | 4 +-- pkg/pusher/pusher_test.go | 4 +-- pkg/registry/client.go | 8 +++--- pkg/registry/constants.go | 2 +- pkg/registry/util.go | 10 +++---- pkg/registry/util_test.go | 6 ++--- pkg/registry/utils_test.go | 2 +- pkg/release/hook.go | 2 +- pkg/release/info.go | 2 +- pkg/release/mock.go | 4 +-- pkg/release/release.go | 2 +- pkg/releaseutil/filter.go | 4 +-- pkg/releaseutil/filter_test.go | 4 +-- pkg/releaseutil/kind_sorter.go | 2 +- pkg/releaseutil/kind_sorter_test.go | 2 +- pkg/releaseutil/manifest_sorter.go | 4 +-- pkg/releaseutil/manifest_sorter_test.go | 2 +- pkg/releaseutil/manifest_test.go | 2 +- pkg/releaseutil/sorter.go | 4 +-- pkg/releaseutil/sorter_test.go | 6 ++--- pkg/repo/chartrepo.go | 10 +++---- pkg/repo/chartrepo_test.go | 6 ++--- pkg/repo/index.go | 10 +++---- pkg/repo/index_test.go | 8 +++--- pkg/repo/repo.go | 2 +- pkg/repo/repotest/server.go | 12 ++++----- pkg/repo/repotest/server_test.go | 4 +-- pkg/storage/driver/cfgmaps.go | 4 +-- pkg/storage/driver/cfgmaps_test.go | 2 +- pkg/storage/driver/driver.go | 4 +-- pkg/storage/driver/labels_test.go | 2 +- pkg/storage/driver/memory.go | 2 +- pkg/storage/driver/memory_test.go | 2 +- pkg/storage/driver/mock_test.go | 4 +-- pkg/storage/driver/records.go | 4 +-- pkg/storage/driver/records_test.go | 4 +-- pkg/storage/driver/secrets.go | 4 +-- pkg/storage/driver/secrets_test.go | 2 +- pkg/storage/driver/sql.go | 4 +-- pkg/storage/driver/sql_test.go | 2 +- pkg/storage/driver/util.go | 4 +-- pkg/storage/storage.go | 8 +++--- pkg/storage/storage_test.go | 6 ++--- pkg/uploader/chart_uploader.go | 4 +-- 257 files changed, 644 insertions(+), 639 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a3e5119d4..ff0dad5f6 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -20,7 +20,7 @@ linters-settings: gofmt: simplify: true goimports: - local-prefixes: helm.sh/helm/v3 + local-prefixes: helm.sh/helm/v4 dupl: threshold: 400 issues: diff --git a/Makefile b/Makefile index 2a264916a..f1fcbfb08 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ BINARY_VERSION ?= ${GIT_TAG} # Only set Version if building a tag or VERSION is set ifneq ($(BINARY_VERSION),) - LDFLAGS += -X helm.sh/helm/v3/internal/version.version=${BINARY_VERSION} + LDFLAGS += -X helm.sh/helm/v4/internal/version.version=${BINARY_VERSION} endif VERSION_METADATA = unreleased @@ -53,9 +53,9 @@ ifneq ($(GIT_TAG),) VERSION_METADATA = endif -LDFLAGS += -X helm.sh/helm/v3/internal/version.metadata=${VERSION_METADATA} -LDFLAGS += -X helm.sh/helm/v3/internal/version.gitCommit=${GIT_COMMIT} -LDFLAGS += -X helm.sh/helm/v3/internal/version.gitTreeState=${GIT_DIRTY} +LDFLAGS += -X helm.sh/helm/v4/internal/version.metadata=${VERSION_METADATA} +LDFLAGS += -X helm.sh/helm/v4/internal/version.gitCommit=${GIT_COMMIT} +LDFLAGS += -X helm.sh/helm/v4/internal/version.gitTreeState=${GIT_DIRTY} LDFLAGS += $(EXT_LDFLAGS) # Define constants based on the client-go version @@ -63,10 +63,10 @@ K8S_MODULES_VER=$(subst ., ,$(subst v,,$(shell go list -f '{{.Version}}' -m k8s. K8S_MODULES_MAJOR_VER=$(shell echo $$(($(firstword $(K8S_MODULES_VER)) + 1))) K8S_MODULES_MINOR_VER=$(word 2,$(K8S_MODULES_VER)) -LDFLAGS += -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) -LDFLAGS += -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) -LDFLAGS += -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) -LDFLAGS += -X helm.sh/helm/v3/pkg/chartutil.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/chartutil.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/chartutil.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) .PHONY: all all: build diff --git a/README.md b/README.md index 2488147c7..33bcb3f05 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Build Status](https://github.com/helm/helm/workflows/release/badge.svg)](https://github.com/helm/helm/actions?workflow=release) [![Go Report Card](https://goreportcard.com/badge/github.com/helm/helm)](https://goreportcard.com/report/github.com/helm/helm) -[![GoDoc](https://img.shields.io/static/v1?label=godoc&message=reference&color=blue)](https://pkg.go.dev/helm.sh/helm/v3) +[![GoDoc](https://img.shields.io/static/v1?label=godoc&message=reference&color=blue)](https://pkg.go.dev/helm.sh/helm/v4) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/3131/badge)](https://bestpractices.coreinfrastructure.org/projects/3131) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/helm/helm/badge)](https://scorecard.dev/viewer/?uri=github.com/helm/helm) @@ -29,6 +29,11 @@ Think of it like apt/yum/homebrew for Kubernetes. - Charts can be stored on disk, or fetched from remote chart repositories (like Debian or RedHat packages) +## Helm Development and Stable Versions + +Helm v4 is currently under development on the `main` branch. This is unstable and the APIs within the Go SDK and at the command line are changing. +Helm v3 (current stable) is maintained on the `dev-v3` branch. APIs there follow semantic versioning. + ## Install Binary downloads of the Helm client can be found on [the Releases page](https://github.com/helm/helm/releases/latest). diff --git a/cmd/helm/completion.go b/cmd/helm/completion.go index 3dc4bb916..5d2186939 100644 --- a/cmd/helm/completion.go +++ b/cmd/helm/completion.go @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" + "helm.sh/helm/v4/cmd/helm/require" ) const completionDesc = ` diff --git a/cmd/helm/completion_test.go b/cmd/helm/completion_test.go index 1143d6445..4dd427232 100644 --- a/cmd/helm/completion_test.go +++ b/cmd/helm/completion_test.go @@ -21,8 +21,8 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" ) // Check if file completion should be performed according to parameter 'shouldBePerformed' diff --git a/cmd/helm/create.go b/cmd/helm/create.go index 576d8a70f..29beca303 100644 --- a/cmd/helm/create.go +++ b/cmd/helm/create.go @@ -23,10 +23,10 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/helmpath" ) const createDesc = ` diff --git a/cmd/helm/create_test.go b/cmd/helm/create_test.go index 1a22d058f..88d9c315a 100644 --- a/cmd/helm/create_test.go +++ b/cmd/helm/create_test.go @@ -22,11 +22,11 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/helmpath" ) func TestCreateCmd(t *testing.T) { diff --git a/cmd/helm/dependency.go b/cmd/helm/dependency.go index 19b648604..5e108b6fd 100644 --- a/cmd/helm/dependency.go +++ b/cmd/helm/dependency.go @@ -22,8 +22,8 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const dependencyDesc = ` diff --git a/cmd/helm/dependency_build.go b/cmd/helm/dependency_build.go index 5b5598498..719c720a7 100644 --- a/cmd/helm/dependency_build.go +++ b/cmd/helm/dependency_build.go @@ -24,10 +24,10 @@ import ( "github.com/spf13/cobra" "k8s.io/client-go/util/homedir" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" ) const dependencyBuildDesc = ` diff --git a/cmd/helm/dependency_build_test.go b/cmd/helm/dependency_build_test.go index 37e3242c4..e443e64cb 100644 --- a/cmd/helm/dependency_build_test.go +++ b/cmd/helm/dependency_build_test.go @@ -22,10 +22,10 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/provenance" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/provenance" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestDependencyBuildCmd(t *testing.T) { diff --git a/cmd/helm/dependency_update.go b/cmd/helm/dependency_update.go index 3ac39adff..563d7eba5 100644 --- a/cmd/helm/dependency_update.go +++ b/cmd/helm/dependency_update.go @@ -22,10 +22,10 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" ) const dependencyUpDesc = ` diff --git a/cmd/helm/dependency_update_test.go b/cmd/helm/dependency_update_test.go index 1a1e0468f..b82ce870d 100644 --- a/cmd/helm/dependency_update_test.go +++ b/cmd/helm/dependency_update_test.go @@ -22,13 +22,13 @@ import ( "strings" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/provenance" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/provenance" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestDependencyUpdateCmd(t *testing.T) { diff --git a/cmd/helm/docs.go b/cmd/helm/docs.go index dd0cf60c7..571840b5f 100644 --- a/cmd/helm/docs.go +++ b/cmd/helm/docs.go @@ -28,7 +28,7 @@ import ( "golang.org/x/text/cases" "golang.org/x/text/language" - "helm.sh/helm/v3/cmd/helm/require" + "helm.sh/helm/v4/cmd/helm/require" ) const docsDesc = ` diff --git a/cmd/helm/env.go b/cmd/helm/env.go index d9c7f4565..c7305434b 100644 --- a/cmd/helm/env.go +++ b/cmd/helm/env.go @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" + "helm.sh/helm/v4/cmd/helm/require" ) var envHelp = ` diff --git a/cmd/helm/flags.go b/cmd/helm/flags.go index 62e9f90fa..3d159babd 100644 --- a/cmd/helm/flags.go +++ b/cmd/helm/flags.go @@ -28,12 +28,12 @@ import ( "github.com/spf13/pflag" "k8s.io/klog/v2" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/postrender" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/postrender" + "helm.sh/helm/v4/pkg/repo" ) const ( diff --git a/cmd/helm/flags_test.go b/cmd/helm/flags_test.go index 07d28c460..295f55022 100644 --- a/cmd/helm/flags_test.go +++ b/cmd/helm/flags_test.go @@ -20,9 +20,9 @@ import ( "fmt" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) func outputFlagCompletionTest(t *testing.T, cmdName string) { diff --git a/cmd/helm/get.go b/cmd/helm/get.go index 727cdaf88..27d536f8b 100644 --- a/cmd/helm/get.go +++ b/cmd/helm/get.go @@ -21,8 +21,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) var getHelp = ` diff --git a/cmd/helm/get_all.go b/cmd/helm/get_all.go index 12f1c2540..522327b67 100644 --- a/cmd/helm/get_all.go +++ b/cmd/helm/get_all.go @@ -22,9 +22,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" ) var getAllHelp = ` diff --git a/cmd/helm/get_all_test.go b/cmd/helm/get_all_test.go index 948f0aa71..60ea1161d 100644 --- a/cmd/helm/get_all_test.go +++ b/cmd/helm/get_all_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetCmd(t *testing.T) { diff --git a/cmd/helm/get_hooks.go b/cmd/helm/get_hooks.go index 1fe7f0a25..25c6eb4e3 100644 --- a/cmd/helm/get_hooks.go +++ b/cmd/helm/get_hooks.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const getHooksHelp = ` diff --git a/cmd/helm/get_hooks_test.go b/cmd/helm/get_hooks_test.go index 251d5c731..75cf448cc 100644 --- a/cmd/helm/get_hooks_test.go +++ b/cmd/helm/get_hooks_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetHooks(t *testing.T) { diff --git a/cmd/helm/get_manifest.go b/cmd/helm/get_manifest.go index 6431b4252..d2a4bbe96 100644 --- a/cmd/helm/get_manifest.go +++ b/cmd/helm/get_manifest.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) var getManifestHelp = ` diff --git a/cmd/helm/get_manifest_test.go b/cmd/helm/get_manifest_test.go index 2f27476b6..b266620e7 100644 --- a/cmd/helm/get_manifest_test.go +++ b/cmd/helm/get_manifest_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetManifest(t *testing.T) { diff --git a/cmd/helm/get_metadata.go b/cmd/helm/get_metadata.go index e8ad832bd..4ab0c8cab 100644 --- a/cmd/helm/get_metadata.go +++ b/cmd/helm/get_metadata.go @@ -24,9 +24,9 @@ import ( "github.com/spf13/cobra" k8sLabels "k8s.io/apimachinery/pkg/labels" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" ) type metadataWriter struct { diff --git a/cmd/helm/get_metadata_test.go b/cmd/helm/get_metadata_test.go index b6f0ab9f2..28c3c3649 100644 --- a/cmd/helm/get_metadata_test.go +++ b/cmd/helm/get_metadata_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetMetadataCmd(t *testing.T) { diff --git a/cmd/helm/get_notes.go b/cmd/helm/get_notes.go index b4c7ceddf..8a8e67079 100644 --- a/cmd/helm/get_notes.go +++ b/cmd/helm/get_notes.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) var getNotesHelp = ` diff --git a/cmd/helm/get_notes_test.go b/cmd/helm/get_notes_test.go index 8be9a3f7c..4ddd4c7a8 100644 --- a/cmd/helm/get_notes_test.go +++ b/cmd/helm/get_notes_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetNotesCmd(t *testing.T) { diff --git a/cmd/helm/get_values.go b/cmd/helm/get_values.go index 54a15eda9..8244fbaaa 100644 --- a/cmd/helm/get_values.go +++ b/cmd/helm/get_values.go @@ -23,9 +23,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" ) var getValuesHelp = ` diff --git a/cmd/helm/get_values_test.go b/cmd/helm/get_values_test.go index 423c32859..44610c103 100644 --- a/cmd/helm/get_values_test.go +++ b/cmd/helm/get_values_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestGetValuesCmd(t *testing.T) { diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index 2fae7cddb..aa981740f 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main // import "helm.sh/helm/v3/cmd/helm" +package main // import "helm.sh/helm/v4/cmd/helm" import ( "fmt" @@ -30,12 +30,12 @@ import ( // Import to initialize client auth plugins. _ "k8s.io/client-go/plugin/pkg/client/auth" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/kube" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/kube" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage/driver" ) var settings = cli.New() diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go index 7d0bf5751..a20928b37 100644 --- a/cmd/helm/helm_test.go +++ b/cmd/helm/helm_test.go @@ -28,15 +28,15 @@ import ( shellwords "github.com/mattn/go-shellwords" "github.com/spf13/cobra" - "helm.sh/helm/v3/internal/test" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/internal/test" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" + "helm.sh/helm/v4/pkg/time" ) func testTimestamper() time.Time { return time.Unix(242085845, 0).UTC() } diff --git a/cmd/helm/history.go b/cmd/helm/history.go index 56383bfca..aa90125a2 100644 --- a/cmd/helm/history.go +++ b/cmd/helm/history.go @@ -25,13 +25,13 @@ import ( "github.com/gosuri/uitable" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + helmtime "helm.sh/helm/v4/pkg/time" ) var historyHelp = ` diff --git a/cmd/helm/history_test.go b/cmd/helm/history_test.go index 07f2d85df..07f5134c6 100644 --- a/cmd/helm/history_test.go +++ b/cmd/helm/history_test.go @@ -20,7 +20,7 @@ import ( "fmt" "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestHistoryCmd(t *testing.T) { diff --git a/cmd/helm/install.go b/cmd/helm/install.go index c10e84c18..ec651140c 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -30,15 +30,15 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/release" ) const installDesc = ` diff --git a/cmd/helm/install_test.go b/cmd/helm/install_test.go index 3e022b111..e7b6e1dff 100644 --- a/cmd/helm/install_test.go +++ b/cmd/helm/install_test.go @@ -23,7 +23,7 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestInstall(t *testing.T) { diff --git a/cmd/helm/lint.go b/cmd/helm/lint.go index 4c5e24149..9a3f7a2fc 100644 --- a/cmd/helm/lint.go +++ b/cmd/helm/lint.go @@ -26,11 +26,11 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/lint/support" ) var longLintHelp = ` diff --git a/cmd/helm/list.go b/cmd/helm/list.go index bbc7e979d..67da22cdf 100644 --- a/cmd/helm/list.go +++ b/cmd/helm/list.go @@ -25,10 +25,10 @@ import ( "github.com/gosuri/uitable" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/release" ) var listHelp = ` diff --git a/cmd/helm/list_test.go b/cmd/helm/list_test.go index 97a1e284f..01b6d7490 100644 --- a/cmd/helm/list_test.go +++ b/cmd/helm/list_test.go @@ -19,9 +19,9 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/time" ) func TestListCmd(t *testing.T) { diff --git a/cmd/helm/load_plugins.go b/cmd/helm/load_plugins.go index 5ae638124..23b1b7ff4 100644 --- a/cmd/helm/load_plugins.go +++ b/cmd/helm/load_plugins.go @@ -31,7 +31,7 @@ import ( "github.com/spf13/cobra" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) const ( diff --git a/cmd/helm/package.go b/cmd/helm/package.go index 19ab3dc7f..185442b20 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -25,10 +25,10 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" ) const packageDesc = ` diff --git a/cmd/helm/package_test.go b/cmd/helm/package_test.go index 9093b510c..107928765 100644 --- a/cmd/helm/package_test.go +++ b/cmd/helm/package_test.go @@ -23,8 +23,8 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) func TestPackage(t *testing.T) { diff --git a/cmd/helm/plugin.go b/cmd/helm/plugin.go index 27ed70727..82fd34b72 100644 --- a/cmd/helm/plugin.go +++ b/cmd/helm/plugin.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) const pluginHelp = ` diff --git a/cmd/helm/plugin_install.go b/cmd/helm/plugin_install.go index 0a96954f9..d8dff6316 100644 --- a/cmd/helm/plugin_install.go +++ b/cmd/helm/plugin_install.go @@ -22,9 +22,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/plugin" - "helm.sh/helm/v3/pkg/plugin/installer" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin/installer" ) type pluginInstallOptions struct { diff --git a/cmd/helm/plugin_list.go b/cmd/helm/plugin_list.go index 8c73be500..27ce3c973 100644 --- a/cmd/helm/plugin_list.go +++ b/cmd/helm/plugin_list.go @@ -22,7 +22,7 @@ import ( "github.com/gosuri/uitable" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) func newPluginListCmd(out io.Writer) *cobra.Command { diff --git a/cmd/helm/plugin_test.go b/cmd/helm/plugin_test.go index e13ad26fb..4d2aa1a59 100644 --- a/cmd/helm/plugin_test.go +++ b/cmd/helm/plugin_test.go @@ -26,7 +26,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestManuallyProcessArgs(t *testing.T) { diff --git a/cmd/helm/plugin_uninstall.go b/cmd/helm/plugin_uninstall.go index 458a92cc8..6ef4e4f59 100644 --- a/cmd/helm/plugin_uninstall.go +++ b/cmd/helm/plugin_uninstall.go @@ -24,7 +24,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) type pluginUninstallOptions struct { diff --git a/cmd/helm/plugin_update.go b/cmd/helm/plugin_update.go index eb7505696..5d0465274 100644 --- a/cmd/helm/plugin_update.go +++ b/cmd/helm/plugin_update.go @@ -24,8 +24,8 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/plugin" - "helm.sh/helm/v3/pkg/plugin/installer" + "helm.sh/helm/v4/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin/installer" ) type pluginUpdateOptions struct { diff --git a/cmd/helm/pull.go b/cmd/helm/pull.go index de4918d72..1b2a9a44d 100644 --- a/cmd/helm/pull.go +++ b/cmd/helm/pull.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const pullDesc = ` diff --git a/cmd/helm/pull_test.go b/cmd/helm/pull_test.go index ae70595f9..d8b1f57a7 100644 --- a/cmd/helm/pull_test.go +++ b/cmd/helm/pull_test.go @@ -24,7 +24,7 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestPullCmd(t *testing.T) { diff --git a/cmd/helm/push.go b/cmd/helm/push.go index 9a67fa086..f5b275b9d 100644 --- a/cmd/helm/push.go +++ b/cmd/helm/push.go @@ -22,9 +22,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/pusher" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/pusher" ) const pushDesc = ` diff --git a/cmd/helm/registry.go b/cmd/helm/registry.go index b2b24cd14..f771dcb9c 100644 --- a/cmd/helm/registry.go +++ b/cmd/helm/registry.go @@ -20,7 +20,7 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/pkg/action" ) const registryHelp = ` diff --git a/cmd/helm/registry_login.go b/cmd/helm/registry_login.go index 96020a530..59b5591ba 100644 --- a/cmd/helm/registry_login.go +++ b/cmd/helm/registry_login.go @@ -27,8 +27,8 @@ import ( "github.com/moby/term" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const registryLoginDesc = ` diff --git a/cmd/helm/registry_logout.go b/cmd/helm/registry_logout.go index 4ca4120c4..13190c8cf 100644 --- a/cmd/helm/registry_logout.go +++ b/cmd/helm/registry_logout.go @@ -21,8 +21,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const registryLogoutDesc = ` diff --git a/cmd/helm/release_testing.go b/cmd/helm/release_testing.go index efd507cf4..a8c57f5d9 100644 --- a/cmd/helm/release_testing.go +++ b/cmd/helm/release_testing.go @@ -25,9 +25,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli/output" ) const releaseTestHelp = ` diff --git a/cmd/helm/repo.go b/cmd/helm/repo.go index ad6ceaa8f..291f0bb10 100644 --- a/cmd/helm/repo.go +++ b/cmd/helm/repo.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" + "helm.sh/helm/v4/cmd/helm/require" ) var repoHelm = ` diff --git a/cmd/helm/repo_add.go b/cmd/helm/repo_add.go index 6a8a70a0f..fe2d33713 100644 --- a/cmd/helm/repo_add.go +++ b/cmd/helm/repo_add.go @@ -31,9 +31,9 @@ import ( "golang.org/x/term" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo" ) // Repositories that have been permanently deleted and no longer work diff --git a/cmd/helm/repo_add_test.go b/cmd/helm/repo_add_test.go index 2386bb01f..d1c5176ee 100644 --- a/cmd/helm/repo_add_test.go +++ b/cmd/helm/repo_add_test.go @@ -27,10 +27,10 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/helmpath/xdg" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestRepoAddCmd(t *testing.T) { diff --git a/cmd/helm/repo_index.go b/cmd/helm/repo_index.go index a61062e0e..c84a3f1ab 100644 --- a/cmd/helm/repo_index.go +++ b/cmd/helm/repo_index.go @@ -24,8 +24,8 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/repo" ) const repoIndexDesc = ` diff --git a/cmd/helm/repo_index_test.go b/cmd/helm/repo_index_test.go index 554a3dadf..f7dbac933 100644 --- a/cmd/helm/repo_index_test.go +++ b/cmd/helm/repo_index_test.go @@ -24,7 +24,7 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/repo" ) func TestRepoIndexCmd(t *testing.T) { diff --git a/cmd/helm/repo_list.go b/cmd/helm/repo_list.go index 6c0b970be..e0ad10147 100644 --- a/cmd/helm/repo_list.go +++ b/cmd/helm/repo_list.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/repo" ) func newRepoListCmd(out io.Writer) *cobra.Command { diff --git a/cmd/helm/repo_remove.go b/cmd/helm/repo_remove.go index 82a235fec..6b72b0710 100644 --- a/cmd/helm/repo_remove.go +++ b/cmd/helm/repo_remove.go @@ -25,9 +25,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/repo" ) type repoRemoveOptions struct { diff --git a/cmd/helm/repo_remove_test.go b/cmd/helm/repo_remove_test.go index e2795e738..dcfbd99f8 100644 --- a/cmd/helm/repo_remove_test.go +++ b/cmd/helm/repo_remove_test.go @@ -24,9 +24,9 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestRepoRemove(t *testing.T) { diff --git a/cmd/helm/repo_update.go b/cmd/helm/repo_update.go index 8d5f532f1..77effe134 100644 --- a/cmd/helm/repo_update.go +++ b/cmd/helm/repo_update.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo" ) const updateDesc = ` diff --git a/cmd/helm/repo_update_test.go b/cmd/helm/repo_update_test.go index 1ddf0f5ed..13369c7cc 100644 --- a/cmd/helm/repo_update_test.go +++ b/cmd/helm/repo_update_test.go @@ -24,10 +24,10 @@ import ( "strings" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestUpdateCmd(t *testing.T) { diff --git a/cmd/helm/rollback.go b/cmd/helm/rollback.go index 3dab4689f..a65f30a1f 100644 --- a/cmd/helm/rollback.go +++ b/cmd/helm/rollback.go @@ -24,8 +24,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const rollbackDesc = ` diff --git a/cmd/helm/rollback_test.go b/cmd/helm/rollback_test.go index b58e4c162..a94327e07 100644 --- a/cmd/helm/rollback_test.go +++ b/cmd/helm/rollback_test.go @@ -21,8 +21,8 @@ import ( "reflect" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" ) func TestRollbackCmd(t *testing.T) { diff --git a/cmd/helm/root.go b/cmd/helm/root.go index 2ba8a882e..e2656ae90 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main // import "helm.sh/helm/v3/cmd/helm" +package main // import "helm.sh/helm/v4/cmd/helm" import ( "context" @@ -30,10 +30,10 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/clientcmd" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) var globalUsage = `The Kubernetes package manager diff --git a/cmd/helm/root_test.go b/cmd/helm/root_test.go index 65e6d66c7..e30850900 100644 --- a/cmd/helm/root_test.go +++ b/cmd/helm/root_test.go @@ -21,9 +21,9 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) func TestRootCmd(t *testing.T) { diff --git a/cmd/helm/search/search.go b/cmd/helm/search/search.go index ac29b27c2..f9e229154 100644 --- a/cmd/helm/search/search.go +++ b/cmd/helm/search/search.go @@ -31,7 +31,7 @@ import ( "github.com/Masterminds/semver/v3" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/repo" ) // Result is a search result. diff --git a/cmd/helm/search/search_test.go b/cmd/helm/search/search_test.go index 415c085b4..175491b36 100644 --- a/cmd/helm/search/search_test.go +++ b/cmd/helm/search/search_test.go @@ -20,8 +20,8 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/repo" ) func TestSortScore(t *testing.T) { diff --git a/cmd/helm/search_hub.go b/cmd/helm/search_hub.go index d9482f67a..5bdb1092d 100644 --- a/cmd/helm/search_hub.go +++ b/cmd/helm/search_hub.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/internal/monocular" - "helm.sh/helm/v3/pkg/cli/output" + "helm.sh/helm/v4/internal/monocular" + "helm.sh/helm/v4/pkg/cli/output" ) const searchHubDesc = ` diff --git a/cmd/helm/search_repo.go b/cmd/helm/search_repo.go index 3acd9ab4b..36e8a8c58 100644 --- a/cmd/helm/search_repo.go +++ b/cmd/helm/search_repo.go @@ -30,10 +30,10 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/search" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/cmd/helm/search" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/repo" ) const searchRepoDesc = ` diff --git a/cmd/helm/show.go b/cmd/helm/show.go index b850af099..aed520d38 100644 --- a/cmd/helm/show.go +++ b/cmd/helm/show.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const showDesc = ` diff --git a/cmd/helm/show_test.go b/cmd/helm/show_test.go index 93ec08d0f..098335f09 100644 --- a/cmd/helm/show_test.go +++ b/cmd/helm/show_test.go @@ -22,7 +22,7 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestShowPreReleaseChart(t *testing.T) { diff --git a/cmd/helm/status.go b/cmd/helm/status.go index 747b2556b..c56ff1f29 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -28,11 +28,11 @@ import ( "k8s.io/kubectl/pkg/cmd/get" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/release" ) // NOTE: Keep the list of statuses up-to-date with pkg/release/status.go. diff --git a/cmd/helm/status_test.go b/cmd/helm/status_test.go index 155e27481..1973fe068 100644 --- a/cmd/helm/status_test.go +++ b/cmd/helm/status_test.go @@ -20,9 +20,9 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) func TestStatusCmd(t *testing.T) { diff --git a/cmd/helm/template.go b/cmd/helm/template.go index ff6621a49..1951d7377 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -27,15 +27,15 @@ import ( "sort" "strings" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/releaseutil" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/releaseutil" ) const templateDesc = ` diff --git a/cmd/helm/uninstall.go b/cmd/helm/uninstall.go index 3c4517b50..9c5e25c87 100644 --- a/cmd/helm/uninstall.go +++ b/cmd/helm/uninstall.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const uninstallDesc = ` diff --git a/cmd/helm/uninstall_test.go b/cmd/helm/uninstall_test.go index 23b61058e..f9bc71ec2 100644 --- a/cmd/helm/uninstall_test.go +++ b/cmd/helm/uninstall_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestUninstall(t *testing.T) { diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 95d00e39c..7b4267894 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -29,15 +29,15 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/cli/output" - "helm.sh/helm/v3/pkg/cli/values" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage/driver" ) const upgradeDesc = ` diff --git a/cmd/helm/upgrade_test.go b/cmd/helm/upgrade_test.go index 6065647b9..e3d41d7fa 100644 --- a/cmd/helm/upgrade_test.go +++ b/cmd/helm/upgrade_test.go @@ -24,10 +24,10 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" ) func TestUpgradeCmd(t *testing.T) { diff --git a/cmd/helm/verify.go b/cmd/helm/verify.go index 42d8bf8dc..197a164b6 100644 --- a/cmd/helm/verify.go +++ b/cmd/helm/verify.go @@ -21,8 +21,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/pkg/action" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/action" ) const verifyDesc = ` diff --git a/cmd/helm/version.go b/cmd/helm/version.go index 12d0777f5..030ce2dcd 100644 --- a/cmd/helm/version.go +++ b/cmd/helm/version.go @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v3/cmd/helm/require" - "helm.sh/helm/v3/internal/version" + "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/internal/version" ) const versionDesc = ` diff --git a/go.mod b/go.mod index 2df3c5b31..ad986c27a 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module helm.sh/helm/v3 +module helm.sh/helm/v4 go 1.23.0 diff --git a/internal/fileutil/fileutil.go b/internal/fileutil/fileutil.go index 4ea09cca4..39e0e330f 100644 --- a/internal/fileutil/fileutil.go +++ b/internal/fileutil/fileutil.go @@ -21,7 +21,7 @@ import ( "os" "path/filepath" - "helm.sh/helm/v3/internal/third_party/dep/fs" + "helm.sh/helm/v4/internal/third_party/dep/fs" ) // AtomicWriteFile atomically (as atomic as os.Rename allows) writes a file to a diff --git a/internal/monocular/search.go b/internal/monocular/search.go index 4e7e8c002..d6d454653 100644 --- a/internal/monocular/search.go +++ b/internal/monocular/search.go @@ -24,8 +24,8 @@ import ( "path" "time" - "helm.sh/helm/v3/internal/version" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/chart" ) // SearchPath is the url path to the search API in monocular. diff --git a/internal/resolver/resolver.go b/internal/resolver/resolver.go index b6f45da9e..74348176d 100644 --- a/internal/resolver/resolver.go +++ b/internal/resolver/resolver.go @@ -27,12 +27,12 @@ import ( "github.com/Masterminds/semver/v3" "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/provenance" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/provenance" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // Resolver resolves dependencies from semantic version ranges to a particular version. diff --git a/internal/resolver/resolver_test.go b/internal/resolver/resolver_test.go index a79852175..f7ea06fdf 100644 --- a/internal/resolver/resolver_test.go +++ b/internal/resolver/resolver_test.go @@ -19,8 +19,8 @@ import ( "runtime" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/registry" ) func TestResolve(t *testing.T) { diff --git a/internal/test/ensure/ensure.go b/internal/test/ensure/ensure.go index ff2d180fe..0d8dd9abc 100644 --- a/internal/test/ensure/ensure.go +++ b/internal/test/ensure/ensure.go @@ -21,8 +21,8 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) // HelmHome sets up a Helm Home in a temp dir. diff --git a/internal/version/version.go b/internal/version/version.go index 539659f5e..c9f6fad1c 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package version // import "helm.sh/helm/v3/internal/version" +package version // import "helm.sh/helm/v4/internal/version" import ( "flag" diff --git a/pkg/action/action.go b/pkg/action/action.go index 45f1a14e2..8418a4c27 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -32,17 +32,17 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/engine" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/postrender" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/engine" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/postrender" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" + "helm.sh/helm/v4/pkg/time" ) // Timestamper is a function capable of producing a timestamp.Timestamper. diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 149eb85b1..71ea83789 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -24,14 +24,14 @@ import ( "github.com/stretchr/testify/assert" fakeclientset "k8s.io/client-go/kubernetes/fake" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" + "helm.sh/helm/v4/pkg/time" ) var verbose = flag.Bool("test.log", false, "enable test logging") diff --git a/pkg/action/dependency.go b/pkg/action/dependency.go index 19305fee8..e0ff56cce 100644 --- a/pkg/action/dependency.go +++ b/pkg/action/dependency.go @@ -26,8 +26,8 @@ import ( "github.com/Masterminds/semver/v3" "github.com/gosuri/uitable" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) // Dependency is the action for building a given chart's dependency tree. diff --git a/pkg/action/dependency_test.go b/pkg/action/dependency_test.go index c29587aec..aee8c240f 100644 --- a/pkg/action/dependency_test.go +++ b/pkg/action/dependency_test.go @@ -24,9 +24,9 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/internal/test" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/internal/test" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" ) func TestList(t *testing.T) { diff --git a/pkg/action/get.go b/pkg/action/get.go index f44b53307..4c0683f3e 100644 --- a/pkg/action/get.go +++ b/pkg/action/get.go @@ -17,7 +17,7 @@ limitations under the License. package action import ( - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) // Get is the action for checking a given release's information. diff --git a/pkg/action/get_metadata.go b/pkg/action/get_metadata.go index f79788c3b..190e9ccb9 100644 --- a/pkg/action/get_metadata.go +++ b/pkg/action/get_metadata.go @@ -21,7 +21,7 @@ import ( "strings" "time" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // GetMetadata is the action for checking a given release's metadata. diff --git a/pkg/action/get_values.go b/pkg/action/get_values.go index 9c32db213..aa399f76c 100644 --- a/pkg/action/get_values.go +++ b/pkg/action/get_values.go @@ -17,7 +17,7 @@ limitations under the License. package action import ( - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/pkg/chartutil" ) // GetValues is the action for checking a given release's values. diff --git a/pkg/action/history.go b/pkg/action/history.go index 0430aaf7a..5f514a14a 100644 --- a/pkg/action/history.go +++ b/pkg/action/history.go @@ -19,8 +19,8 @@ package action import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" ) // History is the action for checking the release's ledger. diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index e1cbab5e1..ecca1d997 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -22,9 +22,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) // execHook executes all of the hooks for the given hook event. diff --git a/pkg/action/install.go b/pkg/action/install.go index 0f92c6bd8..3602d5ada 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -39,20 +39,20 @@ import ( "k8s.io/cli-runtime/pkg/resource" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/kube" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/postrender" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/storage" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/kube" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/postrender" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" ) // notesFileSuffix that we want to treat special. It goes through the templating engine diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index d11b04011..9f738f0bc 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -31,13 +31,13 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "helm.sh/helm/v3/internal/test" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage/driver" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/internal/test" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage/driver" + helmtime "helm.sh/helm/v4/pkg/time" ) type nameTemplateTestCase struct { diff --git a/pkg/action/lint.go b/pkg/action/lint.go index 63a1bf354..4ba90b8c3 100644 --- a/pkg/action/lint.go +++ b/pkg/action/lint.go @@ -23,9 +23,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint" + "helm.sh/helm/v4/pkg/lint/support" ) // Lint is the action for checking that the semantics of a chart are well-formed. diff --git a/pkg/action/list.go b/pkg/action/list.go index af0725c4a..f90c31acd 100644 --- a/pkg/action/list.go +++ b/pkg/action/list.go @@ -22,8 +22,8 @@ import ( "k8s.io/apimachinery/pkg/labels" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" ) // ListStates represents zero or more status codes that a list item may have set diff --git a/pkg/action/list_test.go b/pkg/action/list_test.go index 73009d523..a7eb8a920 100644 --- a/pkg/action/list_test.go +++ b/pkg/action/list_test.go @@ -21,8 +21,8 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage" ) func TestListStates(t *testing.T) { diff --git a/pkg/action/package.go b/pkg/action/package.go index 2357e3882..2e792a65c 100644 --- a/pkg/action/package.go +++ b/pkg/action/package.go @@ -26,9 +26,9 @@ import ( "github.com/pkg/errors" "golang.org/x/term" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/provenance" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/provenance" ) // Package is the action for packaging a chart. diff --git a/pkg/action/package_test.go b/pkg/action/package_test.go index d04efdaa6..26eeb1a2b 100644 --- a/pkg/action/package_test.go +++ b/pkg/action/package_test.go @@ -23,7 +23,7 @@ import ( "github.com/Masterminds/semver/v3" - "helm.sh/helm/v3/internal/test/ensure" + "helm.sh/helm/v4/internal/test/ensure" ) func TestPassphraseFileFetcher(t *testing.T) { diff --git a/pkg/action/pull.go b/pkg/action/pull.go index 787553125..868e6da7b 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -24,12 +24,12 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/downloader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/downloader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // Pull is the action for checking a given release's information. diff --git a/pkg/action/push.go b/pkg/action/push.go index 70e5c1582..35472415c 100644 --- a/pkg/action/push.go +++ b/pkg/action/push.go @@ -20,10 +20,10 @@ import ( "io" "strings" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/pusher" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/uploader" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/pusher" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/uploader" ) // Push is the action for uploading a chart. diff --git a/pkg/action/registry_login.go b/pkg/action/registry_login.go index cd144e1e7..7a981d547 100644 --- a/pkg/action/registry_login.go +++ b/pkg/action/registry_login.go @@ -19,7 +19,7 @@ package action import ( "io" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/registry" ) // RegistryLogin performs a registry login operation. diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go index aaffe47ca..2539a7f65 100644 --- a/pkg/action/release_testing.go +++ b/pkg/action/release_testing.go @@ -26,8 +26,8 @@ import ( "github.com/pkg/errors" v1 "k8s.io/api/core/v1" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" ) const ( diff --git a/pkg/action/resource_policy.go b/pkg/action/resource_policy.go index 63e83f3d9..f18acb880 100644 --- a/pkg/action/resource_policy.go +++ b/pkg/action/resource_policy.go @@ -19,8 +19,8 @@ package action import ( "strings" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/releaseutil" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/releaseutil" ) func filterManifestsToKeep(manifests []releaseutil.Manifest) (keep, remaining []releaseutil.Manifest) { diff --git a/pkg/action/rollback.go b/pkg/action/rollback.go index b0be17d13..12dee35ce 100644 --- a/pkg/action/rollback.go +++ b/pkg/action/rollback.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) // Rollback is the action for rolling back to a given release. diff --git a/pkg/action/show.go b/pkg/action/show.go index 6ed855b83..d3c9b0b89 100644 --- a/pkg/action/show.go +++ b/pkg/action/show.go @@ -25,10 +25,10 @@ import ( "k8s.io/cli-runtime/pkg/printers" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/registry" ) // ShowOutputFormat is the format of the output of `helm show` diff --git a/pkg/action/show_test.go b/pkg/action/show_test.go index 8b617ea85..65ab76142 100644 --- a/pkg/action/show_test.go +++ b/pkg/action/show_test.go @@ -19,7 +19,7 @@ package action import ( "testing" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func TestShow(t *testing.T) { diff --git a/pkg/action/status.go b/pkg/action/status.go index 101f7d348..db9a3b3f0 100644 --- a/pkg/action/status.go +++ b/pkg/action/status.go @@ -20,8 +20,8 @@ import ( "bytes" "errors" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/release" ) // Status is the action for checking the deployment status of releases. diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index ac0c4fee8..dda7d6978 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -24,11 +24,11 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + helmtime "helm.sh/helm/v4/pkg/time" ) // Uninstall is the action for uninstalling releases. diff --git a/pkg/action/uninstall_test.go b/pkg/action/uninstall_test.go index 869ffb8c7..eca9e6ad8 100644 --- a/pkg/action/uninstall_test.go +++ b/pkg/action/uninstall_test.go @@ -22,8 +22,8 @@ import ( "github.com/stretchr/testify/assert" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" ) func uninstallAction(t *testing.T) *Uninstall { diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index 5002406ca..f93bf29b1 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -28,14 +28,14 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/kube" - "helm.sh/helm/v3/pkg/postrender" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/kube" + "helm.sh/helm/v4/pkg/postrender" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/releaseutil" + "helm.sh/helm/v4/pkg/storage/driver" ) // Upgrade is the action for upgrading releases. diff --git a/pkg/action/upgrade_test.go b/pkg/action/upgrade_test.go index db8486340..5437490cb 100644 --- a/pkg/action/upgrade_test.go +++ b/pkg/action/upgrade_test.go @@ -23,15 +23,15 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/storage/driver" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/storage/driver" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) func upgradeAction(t *testing.T) *Upgrade { diff --git a/pkg/action/validate.go b/pkg/action/validate.go index 127e9bf96..4bc70e90c 100644 --- a/pkg/action/validate.go +++ b/pkg/action/validate.go @@ -25,7 +25,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/pkg/kube" ) var accessor = meta.NewAccessor() diff --git a/pkg/action/validate_test.go b/pkg/action/validate_test.go index e73594e86..3efecd6ff 100644 --- a/pkg/action/validate_test.go +++ b/pkg/action/validate_test.go @@ -22,7 +22,7 @@ import ( "net/http" "testing" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/pkg/kube" "github.com/stretchr/testify/assert" diff --git a/pkg/action/verify.go b/pkg/action/verify.go index f36239496..68a5e2d88 100644 --- a/pkg/action/verify.go +++ b/pkg/action/verify.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "helm.sh/helm/v3/pkg/downloader" + "helm.sh/helm/v4/pkg/downloader" ) // Verify is the action for building a given chart's Verify tree. diff --git a/pkg/chart/loader/archive.go b/pkg/chart/loader/archive.go index 8bb549346..51dd264f7 100644 --- a/pkg/chart/loader/archive.go +++ b/pkg/chart/loader/archive.go @@ -30,7 +30,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) var drivePathPattern = regexp.MustCompile(`^[a-zA-Z]:/`) diff --git a/pkg/chart/loader/directory.go b/pkg/chart/loader/directory.go index 9bcbee60c..1dc30e4dc 100644 --- a/pkg/chart/loader/directory.go +++ b/pkg/chart/loader/directory.go @@ -25,9 +25,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/sympath" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/ignore" + "helm.sh/helm/v4/internal/sympath" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/ignore" ) var utf8bom = []byte{0xEF, 0xBB, 0xBF} diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index a68a05aa9..67f09c2bb 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -26,7 +26,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // ChartLoader loads a chart. diff --git a/pkg/chart/loader/load_test.go b/pkg/chart/loader/load_test.go index 098e6155f..25e000835 100644 --- a/pkg/chart/loader/load_test.go +++ b/pkg/chart/loader/load_test.go @@ -29,7 +29,7 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func TestLoadDir(t *testing.T) { diff --git a/pkg/chartutil/capabilities.go b/pkg/chartutil/capabilities.go index 48fab0ea4..6c1ebf24c 100644 --- a/pkg/chartutil/capabilities.go +++ b/pkg/chartutil/capabilities.go @@ -25,7 +25,7 @@ import ( apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" - helmversion "helm.sh/helm/v3/internal/version" + helmversion "helm.sh/helm/v4/internal/version" ) var ( diff --git a/pkg/chartutil/chartfile.go b/pkg/chartutil/chartfile.go index 4f537a6e7..596011ba3 100644 --- a/pkg/chartutil/chartfile.go +++ b/pkg/chartutil/chartfile.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // LoadChartfile loads a Chart.yaml file into a *chart.Metadata. diff --git a/pkg/chartutil/chartfile_test.go b/pkg/chartutil/chartfile_test.go index ef5c5462a..595aee517 100644 --- a/pkg/chartutil/chartfile_test.go +++ b/pkg/chartutil/chartfile_test.go @@ -19,7 +19,7 @@ package chartutil import ( "testing" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) const testfile = "testdata/chartfiletest.yaml" diff --git a/pkg/chartutil/coalesce.go b/pkg/chartutil/coalesce.go index f0272fd6a..df6cae6cb 100644 --- a/pkg/chartutil/coalesce.go +++ b/pkg/chartutil/coalesce.go @@ -23,7 +23,7 @@ import ( "github.com/mitchellh/copystructure" "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func concatPrefix(a, b string) string { diff --git a/pkg/chartutil/coalesce_test.go b/pkg/chartutil/coalesce_test.go index 61b718d97..318e5a49d 100644 --- a/pkg/chartutil/coalesce_test.go +++ b/pkg/chartutil/coalesce_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // ref: http://www.yaml.org/spec/1.2/spec.html#id2803362 diff --git a/pkg/chartutil/create.go b/pkg/chartutil/create.go index 321d3d2c0..4f59b9f83 100644 --- a/pkg/chartutil/create.go +++ b/pkg/chartutil/create.go @@ -27,8 +27,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) // chartName is a regular expression for testing the supplied name of a chart. diff --git a/pkg/chartutil/create_test.go b/pkg/chartutil/create_test.go index 1697c4218..8f8122f6f 100644 --- a/pkg/chartutil/create_test.go +++ b/pkg/chartutil/create_test.go @@ -22,8 +22,8 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) func TestCreate(t *testing.T) { diff --git a/pkg/chartutil/dependencies.go b/pkg/chartutil/dependencies.go index 36a341927..31e0e91cc 100644 --- a/pkg/chartutil/dependencies.go +++ b/pkg/chartutil/dependencies.go @@ -21,7 +21,7 @@ import ( "github.com/mitchellh/copystructure" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // ProcessDependencies checks through this chart's dependencies, processing accordingly. diff --git a/pkg/chartutil/dependencies_test.go b/pkg/chartutil/dependencies_test.go index 7e035be5f..af34a3f6b 100644 --- a/pkg/chartutil/dependencies_test.go +++ b/pkg/chartutil/dependencies_test.go @@ -21,8 +21,8 @@ import ( "strconv" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) func loadChart(t *testing.T, path string) *chart.Chart { diff --git a/pkg/chartutil/doc.go b/pkg/chartutil/doc.go index 49c55ac52..6c0b1582b 100644 --- a/pkg/chartutil/doc.go +++ b/pkg/chartutil/doc.go @@ -42,4 +42,4 @@ into a Chart. When creating charts in memory, use the 'helm.sh/helm/pkg/chart' package directly. */ -package chartutil // import "helm.sh/helm/v3/pkg/chartutil" +package chartutil // import "helm.sh/helm/v4/pkg/chartutil" diff --git a/pkg/chartutil/expand.go b/pkg/chartutil/expand.go index 7ae1ae6fa..ebe27843a 100644 --- a/pkg/chartutil/expand.go +++ b/pkg/chartutil/expand.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) // Expand uncompresses and extracts a chart into the specified directory. diff --git a/pkg/chartutil/jsonschema.go b/pkg/chartutil/jsonschema.go index 7b9768fd3..f1c8dcdf4 100644 --- a/pkg/chartutil/jsonschema.go +++ b/pkg/chartutil/jsonschema.go @@ -25,7 +25,7 @@ import ( "github.com/xeipuuv/gojsonschema" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // ValidateAgainstSchema checks that values does not violate the structure laid out in schema diff --git a/pkg/chartutil/jsonschema_test.go b/pkg/chartutil/jsonschema_test.go index 7610db337..098cf70db 100644 --- a/pkg/chartutil/jsonschema_test.go +++ b/pkg/chartutil/jsonschema_test.go @@ -20,7 +20,7 @@ import ( "os" "testing" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func TestValidateAgainstSingleSchema(t *testing.T) { diff --git a/pkg/chartutil/save.go b/pkg/chartutil/save.go index 4ee90709c..0dddad912 100644 --- a/pkg/chartutil/save.go +++ b/pkg/chartutil/save.go @@ -28,7 +28,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) var headerBytes = []byte("+aHR0cHM6Ly95b3V0dS5iZS96OVV6MWljandyTQo=") diff --git a/pkg/chartutil/save_test.go b/pkg/chartutil/save_test.go index 98b4e641b..3789b6617 100644 --- a/pkg/chartutil/save_test.go +++ b/pkg/chartutil/save_test.go @@ -29,8 +29,8 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) func TestSave(t *testing.T) { diff --git a/pkg/chartutil/values.go b/pkg/chartutil/values.go index 61c633a6d..d41df6e7f 100644 --- a/pkg/chartutil/values.go +++ b/pkg/chartutil/values.go @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // GlobalKey is the name of the Values key that is used for storing global vars. diff --git a/pkg/chartutil/values_test.go b/pkg/chartutil/values_test.go index dc8eae3ab..56167c8a1 100644 --- a/pkg/chartutil/values_test.go +++ b/pkg/chartutil/values_test.go @@ -22,7 +22,7 @@ import ( "testing" "text/template" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) func TestReadValues(t *testing.T) { diff --git a/pkg/cli/environment.go b/pkg/cli/environment.go index 635806344..3f2dc00b2 100644 --- a/pkg/cli/environment.go +++ b/pkg/cli/environment.go @@ -34,9 +34,9 @@ import ( "k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/client-go/rest" - "helm.sh/helm/v3/internal/version" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/kube" ) // defaultMaxHistory sets the maximum number of releases to 0: unlimited diff --git a/pkg/cli/environment_test.go b/pkg/cli/environment_test.go index f7709045c..8a3b87936 100644 --- a/pkg/cli/environment_test.go +++ b/pkg/cli/environment_test.go @@ -24,7 +24,7 @@ import ( "github.com/spf13/pflag" - "helm.sh/helm/v3/internal/version" + "helm.sh/helm/v4/internal/version" ) func TestSetNamespace(t *testing.T) { diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index 06631cd33..24c47ecba 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/strvals" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/strvals" ) // Options captures the different ways to specify values diff --git a/pkg/cli/values/options_test.go b/pkg/cli/values/options_test.go index 54124c0fa..9182e3cc8 100644 --- a/pkg/cli/values/options_test.go +++ b/pkg/cli/values/options_test.go @@ -20,7 +20,7 @@ import ( "reflect" "testing" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/pkg/getter" ) func TestMergeValues(t *testing.T) { diff --git a/pkg/downloader/chart_downloader.go b/pkg/downloader/chart_downloader.go index dde6a1057..910942cde 100644 --- a/pkg/downloader/chart_downloader.go +++ b/pkg/downloader/chart_downloader.go @@ -26,13 +26,13 @@ import ( "github.com/Masterminds/semver/v3" "github.com/pkg/errors" - "helm.sh/helm/v3/internal/fileutil" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/provenance" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/fileutil" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/provenance" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // VerificationStrategy describes a strategy for determining whether to verify a chart. diff --git a/pkg/downloader/chart_downloader_test.go b/pkg/downloader/chart_downloader_test.go index 131e21306..a8c359411 100644 --- a/pkg/downloader/chart_downloader_test.go +++ b/pkg/downloader/chart_downloader_test.go @@ -20,11 +20,11 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo" + "helm.sh/helm/v4/pkg/repo/repotest" ) const ( diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index ec4056d27..5a509646d 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -33,16 +33,16 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/internal/resolver" - "helm.sh/helm/v3/internal/third_party/dep/fs" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/resolver" + "helm.sh/helm/v4/internal/third_party/dep/fs" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // ErrRepoNotFound indicates that chart repositories can't be found in local repo cache. diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index db2487d16..ae4e693ba 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -22,11 +22,11 @@ import ( "reflect" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/repo/repotest" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/repo/repotest" ) func TestVersionEquals(t *testing.T) { diff --git a/pkg/engine/doc.go b/pkg/engine/doc.go index 6b3443aaf..e764a829a 100644 --- a/pkg/engine/doc.go +++ b/pkg/engine/doc.go @@ -21,4 +21,4 @@ When Helm renders templates it does so with additional functions and different modes (e.g., strict, lint mode). This package handles the helm specific implementation. */ -package engine // import "helm.sh/helm/v3/pkg/engine" +package engine // import "helm.sh/helm/v4/pkg/engine" diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index d8ee313e1..8f69505f6 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -29,8 +29,8 @@ import ( "github.com/pkg/errors" "k8s.io/client-go/rest" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" ) // Engine is an implementation of the Helm rendering implementation for templates. diff --git a/pkg/engine/engine_test.go b/pkg/engine/engine_test.go index de1896a47..f6a96bd6a 100644 --- a/pkg/engine/engine_test.go +++ b/pkg/engine/engine_test.go @@ -30,8 +30,8 @@ import ( "k8s.io/client-go/dynamic" "k8s.io/client-go/dynamic/fake" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" ) func TestSortTemplates(t *testing.T) { diff --git a/pkg/engine/files.go b/pkg/engine/files.go index f2cfdb3f3..dc6a67de8 100644 --- a/pkg/engine/files.go +++ b/pkg/engine/files.go @@ -23,7 +23,7 @@ import ( "github.com/gobwas/glob" - "helm.sh/helm/v3/pkg/chart" + "helm.sh/helm/v4/pkg/chart" ) // files is a map of files in a chart that can be accessed from a template. diff --git a/pkg/getter/getter.go b/pkg/getter/getter.go index 1acb2093d..5014784bc 100644 --- a/pkg/getter/getter.go +++ b/pkg/getter/getter.go @@ -23,8 +23,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/registry" ) // options are generic parameters to be provided to the getter during instantiation. diff --git a/pkg/getter/getter_test.go b/pkg/getter/getter_test.go index ab14784ab..a14301900 100644 --- a/pkg/getter/getter_test.go +++ b/pkg/getter/getter_test.go @@ -18,7 +18,7 @@ package getter import ( "testing" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) const pluginDir = "testdata/plugins" diff --git a/pkg/getter/httpgetter.go b/pkg/getter/httpgetter.go index df3dcd910..969247091 100644 --- a/pkg/getter/httpgetter.go +++ b/pkg/getter/httpgetter.go @@ -25,9 +25,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/internal/version" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/internal/version" ) // HTTPGetter is the default HTTP(/S) backend handler diff --git a/pkg/getter/httpgetter_test.go b/pkg/getter/httpgetter_test.go index 2c38c6154..8f1202363 100644 --- a/pkg/getter/httpgetter_test.go +++ b/pkg/getter/httpgetter_test.go @@ -30,9 +30,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/internal/version" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/cli" ) func TestHTTPGetter(t *testing.T) { diff --git a/pkg/getter/ocigetter.go b/pkg/getter/ocigetter.go index 0547cdcbb..5787dc909 100644 --- a/pkg/getter/ocigetter.go +++ b/pkg/getter/ocigetter.go @@ -24,9 +24,9 @@ import ( "sync" "time" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/pkg/registry" ) // OCIGetter is the default HTTP(/S) backend handler diff --git a/pkg/getter/ocigetter_test.go b/pkg/getter/ocigetter_test.go index d0834d9fc..e3d9278a5 100644 --- a/pkg/getter/ocigetter_test.go +++ b/pkg/getter/ocigetter_test.go @@ -21,7 +21,7 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/registry" ) func TestOCIGetter(t *testing.T) { diff --git a/pkg/getter/plugingetter.go b/pkg/getter/plugingetter.go index a371b52eb..2b734fdf0 100644 --- a/pkg/getter/plugingetter.go +++ b/pkg/getter/plugingetter.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/plugin" ) // collectPlugins scans for getter plugins. diff --git a/pkg/getter/plugingetter_test.go b/pkg/getter/plugingetter_test.go index a18fa302b..310ab9e07 100644 --- a/pkg/getter/plugingetter_test.go +++ b/pkg/getter/plugingetter_test.go @@ -20,7 +20,7 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) func TestCollectPlugins(t *testing.T) { diff --git a/pkg/helmpath/home_unix_test.go b/pkg/helmpath/home_unix_test.go index 977002549..6e4189bc9 100644 --- a/pkg/helmpath/home_unix_test.go +++ b/pkg/helmpath/home_unix_test.go @@ -20,7 +20,7 @@ import ( "runtime" "testing" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) func TestHelmHome(t *testing.T) { diff --git a/pkg/helmpath/home_windows_test.go b/pkg/helmpath/home_windows_test.go index 073e6347f..38fe5e4f1 100644 --- a/pkg/helmpath/home_windows_test.go +++ b/pkg/helmpath/home_windows_test.go @@ -19,7 +19,7 @@ import ( "os" "testing" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) func TestHelmHome(t *testing.T) { diff --git a/pkg/helmpath/lazypath.go b/pkg/helmpath/lazypath.go index 6b4f1fc77..c1f868754 100644 --- a/pkg/helmpath/lazypath.go +++ b/pkg/helmpath/lazypath.go @@ -17,7 +17,7 @@ import ( "os" "path/filepath" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) const ( diff --git a/pkg/helmpath/lazypath_darwin_test.go b/pkg/helmpath/lazypath_darwin_test.go index d0503e0e1..e04e20756 100644 --- a/pkg/helmpath/lazypath_darwin_test.go +++ b/pkg/helmpath/lazypath_darwin_test.go @@ -22,7 +22,7 @@ import ( "k8s.io/client-go/util/homedir" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) const ( diff --git a/pkg/helmpath/lazypath_unix_test.go b/pkg/helmpath/lazypath_unix_test.go index 657982b2d..534735d10 100644 --- a/pkg/helmpath/lazypath_unix_test.go +++ b/pkg/helmpath/lazypath_unix_test.go @@ -22,7 +22,7 @@ import ( "k8s.io/client-go/util/homedir" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) const ( diff --git a/pkg/helmpath/lazypath_windows_test.go b/pkg/helmpath/lazypath_windows_test.go index dedfd5720..ebd95e812 100644 --- a/pkg/helmpath/lazypath_windows_test.go +++ b/pkg/helmpath/lazypath_windows_test.go @@ -22,7 +22,7 @@ import ( "k8s.io/client-go/util/homedir" - "helm.sh/helm/v3/pkg/helmpath/xdg" + "helm.sh/helm/v4/pkg/helmpath/xdg" ) const ( diff --git a/pkg/ignore/doc.go b/pkg/ignore/doc.go index 1f5e91847..a66066eb2 100644 --- a/pkg/ignore/doc.go +++ b/pkg/ignore/doc.go @@ -65,4 +65,4 @@ Notable differences from .gitignore: - The evaluation of escape sequences has not been tested for compatibility - There is no support for '\!' as a special leading sequence. */ -package ignore // import "helm.sh/helm/v3/pkg/ignore" +package ignore // import "helm.sh/helm/v4/pkg/ignore" diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 5f16f2bfb..79aa98535 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "bytes" diff --git a/pkg/kube/config.go b/pkg/kube/config.go index e00c9acb1..0ef94453f 100644 --- a/pkg/kube/config.go +++ b/pkg/kube/config.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import "k8s.io/cli-runtime/pkg/genericclioptions" diff --git a/pkg/kube/converter.go b/pkg/kube/converter.go index 3bf0e358c..ac6d95fb4 100644 --- a/pkg/kube/converter.go +++ b/pkg/kube/converter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "sync" diff --git a/pkg/kube/factory.go b/pkg/kube/factory.go index f19d62dc3..9dae398d7 100644 --- a/pkg/kube/factory.go +++ b/pkg/kube/factory.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "k8s.io/cli-runtime/pkg/resource" diff --git a/pkg/kube/fake/fake.go b/pkg/kube/fake/fake.go index 267020d57..a60d9f34e 100644 --- a/pkg/kube/fake/fake.go +++ b/pkg/kube/fake/fake.go @@ -26,7 +26,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/pkg/kube" ) // FailingKubeClient implements KubeClient for testing purposes. It also has diff --git a/pkg/kube/fake/printer.go b/pkg/kube/fake/printer.go index cc2c84b40..b38e8c084 100644 --- a/pkg/kube/fake/printer.go +++ b/pkg/kube/fake/printer.go @@ -26,7 +26,7 @@ import ( "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v3/pkg/kube" + "helm.sh/helm/v4/pkg/kube" ) // PrintingKubeClient implements KubeClient, but simply prints the reader to diff --git a/pkg/kube/ready.go b/pkg/kube/ready.go index 55c4a39bf..584b8853a 100644 --- a/pkg/kube/ready.go +++ b/pkg/kube/ready.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "context" @@ -35,7 +35,7 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/scheme" - deploymentutil "helm.sh/helm/v3/internal/third_party/k8s.io/kubernetes/deployment/util" + deploymentutil "helm.sh/helm/v4/internal/third_party/k8s.io/kubernetes/deployment/util" ) // ReadyCheckerOption is a function that configures a ReadyChecker. diff --git a/pkg/kube/ready_test.go b/pkg/kube/ready_test.go index 14bf8588b..ced0a51a8 100644 --- a/pkg/kube/ready_test.go +++ b/pkg/kube/ready_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "context" diff --git a/pkg/kube/resource.go b/pkg/kube/resource.go index d441db8a7..763488a08 100644 --- a/pkg/kube/resource.go +++ b/pkg/kube/resource.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import "k8s.io/cli-runtime/pkg/resource" diff --git a/pkg/kube/resource_policy.go b/pkg/kube/resource_policy.go index 46b8680dd..fb1089785 100644 --- a/pkg/kube/resource_policy.go +++ b/pkg/kube/resource_policy.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" // ResourcePolicyAnno is the annotation name for a resource policy const ResourcePolicyAnno = "helm.sh/resource-policy" diff --git a/pkg/kube/resource_test.go b/pkg/kube/resource_test.go index 3c906ceca..c405ca382 100644 --- a/pkg/kube/resource_test.go +++ b/pkg/kube/resource_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "testing" diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index bdafc8255..7eb931496 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package kube // import "helm.sh/helm/v3/pkg/kube" +package kube // import "helm.sh/helm/v4/pkg/kube" import ( "context" diff --git a/pkg/lint/lint.go b/pkg/lint/lint.go index ef23ee7c8..de07115ce 100644 --- a/pkg/lint/lint.go +++ b/pkg/lint/lint.go @@ -14,14 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package lint // import "helm.sh/helm/v3/pkg/lint" +package lint // import "helm.sh/helm/v4/pkg/lint" import ( "path/filepath" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/rules" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/rules" + "helm.sh/helm/v4/pkg/lint/support" ) // All runs all the available linters on the given base directory. diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index 8f03ed1b1..a6d7707d5 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -21,8 +21,8 @@ import ( "testing" "time" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) var values map[string]interface{} @@ -147,8 +147,8 @@ func TestHelmCreateChart(t *testing.T) { // // Note: This test requires the following ldflags to be set per the current Kubernetes version to avoid false-positive // results. -// 1. -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMajor= -// 2. -X helm.sh/helm/v3/pkg/lint/rules.k8sVersionMinor= +// 1. -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMajor= +// 2. -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMinor= // or directly use '$(LDFLAGS)' in Makefile. // // When run without ldflags, the test passes giving a false-positive result. This is because the variables diff --git a/pkg/lint/rules/chartfile.go b/pkg/lint/rules/chartfile.go index 910602b7d..2e718067b 100644 --- a/pkg/lint/rules/chartfile.go +++ b/pkg/lint/rules/chartfile.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rules // import "helm.sh/helm/v3/pkg/lint/rules" +package rules // import "helm.sh/helm/v4/pkg/lint/rules" import ( "fmt" @@ -26,9 +26,9 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) // Chartfile runs a set of linter rules related to Chart.yaml file diff --git a/pkg/lint/rules/chartfile_test.go b/pkg/lint/rules/chartfile_test.go index f4c836cf7..eb9b19cb7 100644 --- a/pkg/lint/rules/chartfile_test.go +++ b/pkg/lint/rules/chartfile_test.go @@ -24,9 +24,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) const ( diff --git a/pkg/lint/rules/dependencies.go b/pkg/lint/rules/dependencies.go index f1ab1dcad..5f71dd144 100644 --- a/pkg/lint/rules/dependencies.go +++ b/pkg/lint/rules/dependencies.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rules // import "helm.sh/helm/v3/pkg/lint/rules" +package rules // import "helm.sh/helm/v4/pkg/lint/rules" import ( "fmt" @@ -22,9 +22,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/lint/support" ) // Dependencies runs lints against a chart's dependencies diff --git a/pkg/lint/rules/dependencies_test.go b/pkg/lint/rules/dependencies_test.go index c0afff133..e167b4479 100644 --- a/pkg/lint/rules/dependencies_test.go +++ b/pkg/lint/rules/dependencies_test.go @@ -19,9 +19,9 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) func chartWithBadDependencies() chart.Chart { diff --git a/pkg/lint/rules/deprecations.go b/pkg/lint/rules/deprecations.go index 90e7748a4..9d318617c 100644 --- a/pkg/lint/rules/deprecations.go +++ b/pkg/lint/rules/deprecations.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rules // import "helm.sh/helm/v3/pkg/lint/rules" +package rules // import "helm.sh/helm/v4/pkg/lint/rules" import ( "fmt" @@ -25,7 +25,7 @@ import ( "k8s.io/apiserver/pkg/endpoints/deprecation" kscheme "k8s.io/client-go/kubernetes/scheme" - "helm.sh/helm/v3/pkg/chartutil" + "helm.sh/helm/v4/pkg/chartutil" ) var ( diff --git a/pkg/lint/rules/deprecations_test.go b/pkg/lint/rules/deprecations_test.go index cf2409007..c0e64d04f 100644 --- a/pkg/lint/rules/deprecations_test.go +++ b/pkg/lint/rules/deprecations_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package rules // import "helm.sh/helm/v3/pkg/lint/rules" +package rules // import "helm.sh/helm/v4/pkg/lint/rules" import "testing" diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index 41d1a1bab..d2058d987 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -33,10 +33,10 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/yaml" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/engine" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/engine" + "helm.sh/helm/v4/pkg/lint/support" ) var ( diff --git a/pkg/lint/rules/template_test.go b/pkg/lint/rules/template_test.go index 80f9b28ed..9e6dc4004 100644 --- a/pkg/lint/rules/template_test.go +++ b/pkg/lint/rules/template_test.go @@ -23,9 +23,9 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) const templateTestBasedir = "./testdata/albatross" diff --git a/pkg/lint/rules/values.go b/pkg/lint/rules/values.go index 538d8381b..5b6e39c0c 100644 --- a/pkg/lint/rules/values.go +++ b/pkg/lint/rules/values.go @@ -22,8 +22,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/lint/support" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/lint/support" ) // Values lints a chart's values.yaml file. diff --git a/pkg/lint/rules/values_test.go b/pkg/lint/rules/values_test.go index faa29d48a..8a2556a60 100644 --- a/pkg/lint/rules/values_test.go +++ b/pkg/lint/rules/values_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/internal/test/ensure" + "helm.sh/helm/v4/internal/test/ensure" ) var nonExistingValuesFilePath = filepath.Join("/fake/dir", "values.yaml") diff --git a/pkg/lint/support/doc.go b/pkg/lint/support/doc.go index bffefe8ff..b007804dc 100644 --- a/pkg/lint/support/doc.go +++ b/pkg/lint/support/doc.go @@ -20,4 +20,4 @@ Package support contains tools for linting charts. Linting is the process of testing charts for errors or warnings regarding formatting, compilation, or standards compliance. */ -package support // import "helm.sh/helm/v3/pkg/lint/support" +package support // import "helm.sh/helm/v4/pkg/lint/support" diff --git a/pkg/plugin/cache/cache.go b/pkg/plugin/cache/cache.go index 5f3345b63..f3e847374 100644 --- a/pkg/plugin/cache/cache.go +++ b/pkg/plugin/cache/cache.go @@ -14,7 +14,7 @@ limitations under the License. */ // Package cache provides a key generator for vcs urls. -package cache // import "helm.sh/helm/v3/pkg/plugin/cache" +package cache // import "helm.sh/helm/v4/pkg/plugin/cache" import ( "net/url" diff --git a/pkg/plugin/hooks.go b/pkg/plugin/hooks.go index 34d3163a4..10dc8580e 100644 --- a/pkg/plugin/hooks.go +++ b/pkg/plugin/hooks.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package plugin // import "helm.sh/helm/v3/pkg/plugin" +package plugin // import "helm.sh/helm/v4/pkg/plugin" // Types of hooks const ( diff --git a/pkg/plugin/installer/base.go b/pkg/plugin/installer/base.go index ba6a55d55..3738246ee 100644 --- a/pkg/plugin/installer/base.go +++ b/pkg/plugin/installer/base.go @@ -13,12 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "path/filepath" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) type base struct { diff --git a/pkg/plugin/installer/base_test.go b/pkg/plugin/installer/base_test.go index 38ef28c3e..f4dd6d6be 100644 --- a/pkg/plugin/installer/base_test.go +++ b/pkg/plugin/installer/base_test.go @@ -11,7 +11,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "os" diff --git a/pkg/plugin/installer/doc.go b/pkg/plugin/installer/doc.go index 3e3b2ebeb..b927dbd37 100644 --- a/pkg/plugin/installer/doc.go +++ b/pkg/plugin/installer/doc.go @@ -14,4 +14,4 @@ limitations under the License. */ // Package installer provides an interface for installing Helm plugins. -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" diff --git a/pkg/plugin/installer/http_installer.go b/pkg/plugin/installer/http_installer.go index 49274f83c..758e6039c 100644 --- a/pkg/plugin/installer/http_installer.go +++ b/pkg/plugin/installer/http_installer.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "archive/tar" @@ -29,11 +29,11 @@ import ( securejoin "github.com/cyphar/filepath-securejoin" "github.com/pkg/errors" - "helm.sh/helm/v3/internal/third_party/dep/fs" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/plugin/cache" + "helm.sh/helm/v4/internal/third_party/dep/fs" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/plugin/cache" ) // HTTPInstaller installs plugins from an archive served by a web server. diff --git a/pkg/plugin/installer/http_installer_test.go b/pkg/plugin/installer/http_installer_test.go index f0fe36ecd..c5af1f2cc 100644 --- a/pkg/plugin/installer/http_installer_test.go +++ b/pkg/plugin/installer/http_installer_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "archive/tar" @@ -31,9 +31,9 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" ) var _ Installer = new(HTTPInstaller) diff --git a/pkg/plugin/installer/installer.go b/pkg/plugin/installer/installer.go index 6f01494e5..5fad58f99 100644 --- a/pkg/plugin/installer/installer.go +++ b/pkg/plugin/installer/installer.go @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/plugin" + "helm.sh/helm/v4/pkg/plugin" ) // ErrMissingMetadata indicates that plugin.yaml is missing. diff --git a/pkg/plugin/installer/local_installer.go b/pkg/plugin/installer/local_installer.go index 759df38be..a79ca7ec7 100644 --- a/pkg/plugin/installer/local_installer.go +++ b/pkg/plugin/installer/local_installer.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "os" diff --git a/pkg/plugin/installer/local_installer_test.go b/pkg/plugin/installer/local_installer_test.go index 51408f128..b28920af4 100644 --- a/pkg/plugin/installer/local_installer_test.go +++ b/pkg/plugin/installer/local_installer_test.go @@ -13,14 +13,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "os" "path/filepath" "testing" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/pkg/helmpath" ) var _ Installer = new(LocalInstaller) diff --git a/pkg/plugin/installer/vcs_installer.go b/pkg/plugin/installer/vcs_installer.go index f7df5b322..8153550b2 100644 --- a/pkg/plugin/installer/vcs_installer.go +++ b/pkg/plugin/installer/vcs_installer.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "os" @@ -23,9 +23,9 @@ import ( "github.com/Masterminds/vcs" "github.com/pkg/errors" - "helm.sh/helm/v3/internal/third_party/dep/fs" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/plugin/cache" + "helm.sh/helm/v4/internal/third_party/dep/fs" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/plugin/cache" ) // VCSInstaller installs plugins from remote a repository. diff --git a/pkg/plugin/installer/vcs_installer_test.go b/pkg/plugin/installer/vcs_installer_test.go index 0bb0b6780..fbb5d354e 100644 --- a/pkg/plugin/installer/vcs_installer_test.go +++ b/pkg/plugin/installer/vcs_installer_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package installer // import "helm.sh/helm/v3/pkg/plugin/installer" +package installer // import "helm.sh/helm/v4/pkg/plugin/installer" import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/Masterminds/vcs" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/helmpath" ) var _ Installer = new(VCSInstaller) diff --git a/pkg/plugin/plugin.go b/pkg/plugin/plugin.go index 8eac1f74d..3456664c1 100644 --- a/pkg/plugin/plugin.go +++ b/pkg/plugin/plugin.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package plugin // import "helm.sh/helm/v3/pkg/plugin" +package plugin // import "helm.sh/helm/v4/pkg/plugin" import ( "fmt" @@ -27,7 +27,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) const PluginFileName = "plugin.yaml" diff --git a/pkg/plugin/plugin_test.go b/pkg/plugin/plugin_test.go index 770d701fa..b96428f6b 100644 --- a/pkg/plugin/plugin_test.go +++ b/pkg/plugin/plugin_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package plugin // import "helm.sh/helm/v3/pkg/plugin" +package plugin // import "helm.sh/helm/v4/pkg/plugin" import ( "fmt" @@ -23,7 +23,7 @@ import ( "runtime" "testing" - "helm.sh/helm/v3/pkg/cli" + "helm.sh/helm/v4/pkg/cli" ) func TestPrepareCommand(t *testing.T) { diff --git a/pkg/provenance/doc.go b/pkg/provenance/doc.go index 0c7ae0618..883c0e724 100644 --- a/pkg/provenance/doc.go +++ b/pkg/provenance/doc.go @@ -35,4 +35,4 @@ and using `gpg --verify`, `keybase pgp verify`, or similar: gpg: Signature made Mon Jul 25 17:23:44 2016 MDT using RSA key ID 1FC18762 gpg: Good signature from "Helm Testing (This key should only be used for testing. DO NOT TRUST.) " [ultimate] */ -package provenance // import "helm.sh/helm/v3/pkg/provenance" +package provenance // import "helm.sh/helm/v4/pkg/provenance" diff --git a/pkg/provenance/sign.go b/pkg/provenance/sign.go index 7f89ef3f5..bbb68322f 100644 --- a/pkg/provenance/sign.go +++ b/pkg/provenance/sign.go @@ -30,8 +30,8 @@ import ( "golang.org/x/crypto/openpgp/packet" //nolint "sigs.k8s.io/yaml" - hapi "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + hapi "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) var defaultPGPConfig = packet.Config{ diff --git a/pkg/pusher/ocipusher.go b/pkg/pusher/ocipusher.go index 33296aadd..6efc2c8a6 100644 --- a/pkg/pusher/ocipusher.go +++ b/pkg/pusher/ocipusher.go @@ -26,10 +26,10 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/time/ctime" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/time/ctime" ) // OCIPusher is the default OCI backend handler diff --git a/pkg/pusher/ocipusher_test.go b/pkg/pusher/ocipusher_test.go index 11842b4ae..760da8404 100644 --- a/pkg/pusher/ocipusher_test.go +++ b/pkg/pusher/ocipusher_test.go @@ -19,7 +19,7 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/registry" ) func TestNewOCIPusher(t *testing.T) { diff --git a/pkg/pusher/pusher.go b/pkg/pusher/pusher.go index 5b8a9160f..0e07ad2d7 100644 --- a/pkg/pusher/pusher.go +++ b/pkg/pusher/pusher.go @@ -19,8 +19,8 @@ package pusher import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/registry" ) // options are generic parameters to be provided to the pusher during instantiation. diff --git a/pkg/pusher/pusher_test.go b/pkg/pusher/pusher_test.go index d43e6c9ec..71fab8694 100644 --- a/pkg/pusher/pusher_test.go +++ b/pkg/pusher/pusher_test.go @@ -18,8 +18,8 @@ package pusher import ( "testing" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/registry" ) func TestProvider(t *testing.T) { diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 6a943d27d..f51529965 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package registry // import "helm.sh/helm/v3/pkg/registry" +package registry // import "helm.sh/helm/v4/pkg/registry" import ( "context" @@ -38,9 +38,9 @@ import ( registryremote "oras.land/oras-go/pkg/registry/remote" registryauth "oras.land/oras-go/pkg/registry/remote/auth" - "helm.sh/helm/v3/internal/version" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/helmpath" ) // See https://github.com/helm/helm/issues/10166 diff --git a/pkg/registry/constants.go b/pkg/registry/constants.go index 570b6f0d3..c455cf314 100644 --- a/pkg/registry/constants.go +++ b/pkg/registry/constants.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package registry // import "helm.sh/helm/v3/pkg/registry" +package registry // import "helm.sh/helm/v4/pkg/registry" const ( // OCIScheme is the URL scheme for OCI-based requests diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 4454105c9..5180b3313 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package registry // import "helm.sh/helm/v3/pkg/registry" +package registry // import "helm.sh/helm/v4/pkg/registry" import ( "bytes" @@ -25,7 +25,7 @@ import ( "strings" "time" - helmtime "helm.sh/helm/v3/pkg/time" + helmtime "helm.sh/helm/v4/pkg/time" "github.com/Masterminds/semver/v3" ocispec "github.com/opencontainers/image-spec/specs-go/v1" @@ -34,9 +34,9 @@ import ( orascontext "oras.land/oras-go/pkg/context" "oras.land/oras-go/pkg/registry" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" ) var immutableOciAnnotations = []string{ diff --git a/pkg/registry/util_test.go b/pkg/registry/util_test.go index 908ea4950..93a11a998 100644 --- a/pkg/registry/util_test.go +++ b/pkg/registry/util_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package registry // import "helm.sh/helm/v3/pkg/registry" +package registry // import "helm.sh/helm/v4/pkg/registry" import ( "reflect" @@ -23,8 +23,8 @@ import ( ocispec "github.com/opencontainers/image-spec/specs-go/v1" - "helm.sh/helm/v3/pkg/chart" - helmtime "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + helmtime "helm.sh/helm/v4/pkg/time" ) func TestGenerateOCIChartAnnotations(t *testing.T) { diff --git a/pkg/registry/utils_test.go b/pkg/registry/utils_test.go index ee78ea76f..d064295cd 100644 --- a/pkg/registry/utils_test.go +++ b/pkg/registry/utils_test.go @@ -40,7 +40,7 @@ import ( "github.com/stretchr/testify/suite" "golang.org/x/crypto/bcrypt" - "helm.sh/helm/v3/internal/tlsutil" + "helm.sh/helm/v4/internal/tlsutil" ) const ( diff --git a/pkg/release/hook.go b/pkg/release/hook.go index cb9955582..e2cdc0eb8 100644 --- a/pkg/release/hook.go +++ b/pkg/release/hook.go @@ -17,7 +17,7 @@ limitations under the License. package release import ( - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/time" ) // HookEvent specifies the hook event diff --git a/pkg/release/info.go b/pkg/release/info.go index b030a8a54..514807a35 100644 --- a/pkg/release/info.go +++ b/pkg/release/info.go @@ -18,7 +18,7 @@ package release import ( "k8s.io/apimachinery/pkg/runtime" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/time" ) // Info describes release information. diff --git a/pkg/release/mock.go b/pkg/release/mock.go index eb0b5157d..ab21d3cf2 100644 --- a/pkg/release/mock.go +++ b/pkg/release/mock.go @@ -20,8 +20,8 @@ import ( "fmt" "math/rand" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/time" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/time" ) // MockHookTemplate is the hook template used for all mock release objects. diff --git a/pkg/release/release.go b/pkg/release/release.go index b90612873..2a4963d9b 100644 --- a/pkg/release/release.go +++ b/pkg/release/release.go @@ -15,7 +15,7 @@ limitations under the License. package release -import "helm.sh/helm/v3/pkg/chart" +import "helm.sh/helm/v4/pkg/chart" // Release describes a deployment of a chart, together with the chart // and the variables used to deploy that chart. diff --git a/pkg/releaseutil/filter.go b/pkg/releaseutil/filter.go index dbd0df8e2..d600d43e8 100644 --- a/pkg/releaseutil/filter.go +++ b/pkg/releaseutil/filter.go @@ -14,9 +14,9 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" -import rspb "helm.sh/helm/v3/pkg/release" +import rspb "helm.sh/helm/v4/pkg/release" // FilterFunc returns true if the release object satisfies // the predicate of the underlying filter func. diff --git a/pkg/releaseutil/filter_test.go b/pkg/releaseutil/filter_test.go index 31ac306f6..9fc5ce9b1 100644 --- a/pkg/releaseutil/filter_test.go +++ b/pkg/releaseutil/filter_test.go @@ -14,12 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" import ( "testing" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestFilterAny(t *testing.T) { diff --git a/pkg/releaseutil/kind_sorter.go b/pkg/releaseutil/kind_sorter.go index bb8e84dda..ec51d50d8 100644 --- a/pkg/releaseutil/kind_sorter.go +++ b/pkg/releaseutil/kind_sorter.go @@ -19,7 +19,7 @@ package releaseutil import ( "sort" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) // KindSortOrder is an ordering of Kinds. diff --git a/pkg/releaseutil/kind_sorter_test.go b/pkg/releaseutil/kind_sorter_test.go index 9e24c4399..f7745d64d 100644 --- a/pkg/releaseutil/kind_sorter_test.go +++ b/pkg/releaseutil/kind_sorter_test.go @@ -20,7 +20,7 @@ import ( "bytes" "testing" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestKindSorter(t *testing.T) { diff --git a/pkg/releaseutil/manifest_sorter.go b/pkg/releaseutil/manifest_sorter.go index 4b6109929..b2db2ff9f 100644 --- a/pkg/releaseutil/manifest_sorter.go +++ b/pkg/releaseutil/manifest_sorter.go @@ -26,8 +26,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chartutil" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chartutil" + "helm.sh/helm/v4/pkg/release" ) // Manifest represents a manifest file, which has a name and some content. diff --git a/pkg/releaseutil/manifest_sorter_test.go b/pkg/releaseutil/manifest_sorter_test.go index 020ff4516..3bd196c12 100644 --- a/pkg/releaseutil/manifest_sorter_test.go +++ b/pkg/releaseutil/manifest_sorter_test.go @@ -22,7 +22,7 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/release" ) func TestSortManifests(t *testing.T) { diff --git a/pkg/releaseutil/manifest_test.go b/pkg/releaseutil/manifest_test.go index 8664d20ef..8e05b76dc 100644 --- a/pkg/releaseutil/manifest_test.go +++ b/pkg/releaseutil/manifest_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" import ( "reflect" diff --git a/pkg/releaseutil/sorter.go b/pkg/releaseutil/sorter.go index 1a8aa78a6..a2135d68f 100644 --- a/pkg/releaseutil/sorter.go +++ b/pkg/releaseutil/sorter.go @@ -14,12 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" import ( "sort" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) type list []*rspb.Release diff --git a/pkg/releaseutil/sorter_test.go b/pkg/releaseutil/sorter_test.go index 9544d2018..bef261ee8 100644 --- a/pkg/releaseutil/sorter_test.go +++ b/pkg/releaseutil/sorter_test.go @@ -14,14 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v3/pkg/releaseutil" +package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" import ( "testing" "time" - rspb "helm.sh/helm/v3/pkg/release" - helmtime "helm.sh/helm/v3/pkg/time" + rspb "helm.sh/helm/v4/pkg/release" + helmtime "helm.sh/helm/v4/pkg/time" ) // note: this test data is shared with filter_test.go. diff --git a/pkg/repo/chartrepo.go b/pkg/repo/chartrepo.go index 970e96da2..e20c7e20f 100644 --- a/pkg/repo/chartrepo.go +++ b/pkg/repo/chartrepo.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package repo // import "helm.sh/helm/v3/pkg/repo" +package repo // import "helm.sh/helm/v4/pkg/repo" import ( "crypto/rand" @@ -31,10 +31,10 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" - "helm.sh/helm/v3/pkg/provenance" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" + "helm.sh/helm/v4/pkg/provenance" ) // Entry represents a collection of parameters for chart repository diff --git a/pkg/repo/chartrepo_test.go b/pkg/repo/chartrepo_test.go index 0a658c0c2..341bafadc 100644 --- a/pkg/repo/chartrepo_test.go +++ b/pkg/repo/chartrepo_test.go @@ -30,9 +30,9 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/getter" ) const ( diff --git a/pkg/repo/index.go b/pkg/repo/index.go index e1ce3c62d..2526cba1b 100644 --- a/pkg/repo/index.go +++ b/pkg/repo/index.go @@ -31,11 +31,11 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/internal/fileutil" - "helm.sh/helm/v3/internal/urlutil" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/provenance" + "helm.sh/helm/v4/internal/fileutil" + "helm.sh/helm/v4/internal/urlutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/provenance" ) var indexPath = "index.yaml" diff --git a/pkg/repo/index_test.go b/pkg/repo/index_test.go index a1e3e9438..8c22bdc3e 100644 --- a/pkg/repo/index_test.go +++ b/pkg/repo/index_test.go @@ -28,10 +28,10 @@ import ( "strings" "testing" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/cli" - "helm.sh/helm/v3/pkg/getter" - "helm.sh/helm/v3/pkg/helmpath" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/cli" + "helm.sh/helm/v4/pkg/getter" + "helm.sh/helm/v4/pkg/helmpath" ) const ( diff --git a/pkg/repo/repo.go b/pkg/repo/repo.go index 834d554bd..203dfb4de 100644 --- a/pkg/repo/repo.go +++ b/pkg/repo/repo.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package repo // import "helm.sh/helm/v3/pkg/repo" +package repo // import "helm.sh/helm/v4/pkg/repo" import ( "os" diff --git a/pkg/repo/repotest/server.go b/pkg/repo/repotest/server.go index 4a86707cf..7a6b1e0f2 100644 --- a/pkg/repo/repotest/server.go +++ b/pkg/repo/repotest/server.go @@ -33,12 +33,12 @@ import ( "golang.org/x/crypto/bcrypt" "sigs.k8s.io/yaml" - "helm.sh/helm/v3/internal/tlsutil" - "helm.sh/helm/v3/pkg/chart" - "helm.sh/helm/v3/pkg/chart/loader" - "helm.sh/helm/v3/pkg/chartutil" - ociRegistry "helm.sh/helm/v3/pkg/registry" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chartutil" + ociRegistry "helm.sh/helm/v4/pkg/registry" + "helm.sh/helm/v4/pkg/repo" ) // NewTempServerWithCleanup creates a server inside of a temp dir. diff --git a/pkg/repo/repotest/server_test.go b/pkg/repo/repotest/server_test.go index a7d7f5b95..6d15925db 100644 --- a/pkg/repo/repotest/server_test.go +++ b/pkg/repo/repotest/server_test.go @@ -23,8 +23,8 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v3/internal/test/ensure" - "helm.sh/helm/v3/pkg/repo" + "helm.sh/helm/v4/internal/test/ensure" + "helm.sh/helm/v4/pkg/repo" ) // Young'n, in these here parts, we test our tests. diff --git a/pkg/storage/driver/cfgmaps.go b/pkg/storage/driver/cfgmaps.go index ce88c662b..48edc3172 100644 --- a/pkg/storage/driver/cfgmaps.go +++ b/pkg/storage/driver/cfgmaps.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "context" @@ -31,7 +31,7 @@ import ( "k8s.io/apimachinery/pkg/util/validation" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var _ Driver = (*ConfigMaps)(nil) diff --git a/pkg/storage/driver/cfgmaps_test.go b/pkg/storage/driver/cfgmaps_test.go index 9a539d6ec..c93ef8ea4 100644 --- a/pkg/storage/driver/cfgmaps_test.go +++ b/pkg/storage/driver/cfgmaps_test.go @@ -21,7 +21,7 @@ import ( v1 "k8s.io/api/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestConfigMapName(t *testing.T) { diff --git a/pkg/storage/driver/driver.go b/pkg/storage/driver/driver.go index 9c01f3766..2987ba38e 100644 --- a/pkg/storage/driver/driver.go +++ b/pkg/storage/driver/driver.go @@ -14,14 +14,14 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "fmt" "github.com/pkg/errors" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var ( diff --git a/pkg/storage/driver/labels_test.go b/pkg/storage/driver/labels_test.go index bfd80911b..81e561c15 100644 --- a/pkg/storage/driver/labels_test.go +++ b/pkg/storage/driver/labels_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "testing" diff --git a/pkg/storage/driver/memory.go b/pkg/storage/driver/memory.go index 91378f588..430ab215f 100644 --- a/pkg/storage/driver/memory.go +++ b/pkg/storage/driver/memory.go @@ -21,7 +21,7 @@ import ( "strings" "sync" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var _ Driver = (*Memory)(nil) diff --git a/pkg/storage/driver/memory_test.go b/pkg/storage/driver/memory_test.go index 7a2e8578e..999649635 100644 --- a/pkg/storage/driver/memory_test.go +++ b/pkg/storage/driver/memory_test.go @@ -21,7 +21,7 @@ import ( "reflect" "testing" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestMemoryName(t *testing.T) { diff --git a/pkg/storage/driver/mock_test.go b/pkg/storage/driver/mock_test.go index 81bda9324..044332334 100644 --- a/pkg/storage/driver/mock_test.go +++ b/pkg/storage/driver/mock_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "context" @@ -31,7 +31,7 @@ import ( kblabels "k8s.io/apimachinery/pkg/labels" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func releaseStub(name string, vers int, namespace string, status rspb.Status) *rspb.Release { diff --git a/pkg/storage/driver/records.go b/pkg/storage/driver/records.go index 9df173384..3b8f078fd 100644 --- a/pkg/storage/driver/records.go +++ b/pkg/storage/driver/records.go @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "sort" "strconv" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) // records holds a list of in-memory release records diff --git a/pkg/storage/driver/records_test.go b/pkg/storage/driver/records_test.go index 0a27839cc..b1bb051d5 100644 --- a/pkg/storage/driver/records_test.go +++ b/pkg/storage/driver/records_test.go @@ -14,13 +14,13 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "reflect" "testing" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestRecordsAdd(t *testing.T) { diff --git a/pkg/storage/driver/secrets.go b/pkg/storage/driver/secrets.go index 95a7e9032..eb215a755 100644 --- a/pkg/storage/driver/secrets.go +++ b/pkg/storage/driver/secrets.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "context" @@ -31,7 +31,7 @@ import ( "k8s.io/apimachinery/pkg/util/validation" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var _ Driver = (*Secrets)(nil) diff --git a/pkg/storage/driver/secrets_test.go b/pkg/storage/driver/secrets_test.go index b4bf61d5b..37ecc20dd 100644 --- a/pkg/storage/driver/secrets_test.go +++ b/pkg/storage/driver/secrets_test.go @@ -21,7 +21,7 @@ import ( v1 "k8s.io/api/core/v1" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestSecretName(t *testing.T) { diff --git a/pkg/storage/driver/sql.go b/pkg/storage/driver/sql.go index 33bde9b6a..d5ab6b0a1 100644 --- a/pkg/storage/driver/sql.go +++ b/pkg/storage/driver/sql.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "fmt" @@ -30,7 +30,7 @@ import ( // Import pq for postgres dialect _ "github.com/lib/pq" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var _ Driver = (*SQL)(nil) diff --git a/pkg/storage/driver/sql_test.go b/pkg/storage/driver/sql_test.go index c9989f3ef..8d7b88475 100644 --- a/pkg/storage/driver/sql_test.go +++ b/pkg/storage/driver/sql_test.go @@ -23,7 +23,7 @@ import ( sqlmock "github.com/DATA-DOG/go-sqlmock" migrate "github.com/rubenv/sql-migrate" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) func TestSQLName(t *testing.T) { diff --git a/pkg/storage/driver/util.go b/pkg/storage/driver/util.go index 7bda5ec96..7f1bc716c 100644 --- a/pkg/storage/driver/util.go +++ b/pkg/storage/driver/util.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package driver // import "helm.sh/helm/v3/pkg/storage/driver" +package driver // import "helm.sh/helm/v4/pkg/storage/driver" import ( "bytes" @@ -23,7 +23,7 @@ import ( "encoding/json" "io" - rspb "helm.sh/helm/v3/pkg/release" + rspb "helm.sh/helm/v4/pkg/release" ) var b64 = base64.StdEncoding diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index 0da0688fd..f5b0167d8 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package storage // import "helm.sh/helm/v3/pkg/storage" +package storage // import "helm.sh/helm/v4/pkg/storage" import ( "fmt" @@ -22,9 +22,9 @@ import ( "github.com/pkg/errors" - rspb "helm.sh/helm/v3/pkg/release" - relutil "helm.sh/helm/v3/pkg/releaseutil" - "helm.sh/helm/v3/pkg/storage/driver" + rspb "helm.sh/helm/v4/pkg/release" + relutil "helm.sh/helm/v4/pkg/releaseutil" + "helm.sh/helm/v4/pkg/storage/driver" ) // HelmStorageType is the type field of the Kubernetes storage object which stores the Helm release diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go index d50e3fbfe..80011520e 100644 --- a/pkg/storage/storage_test.go +++ b/pkg/storage/storage_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package storage // import "helm.sh/helm/v3/pkg/storage" +package storage // import "helm.sh/helm/v4/pkg/storage" import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/pkg/errors" - rspb "helm.sh/helm/v3/pkg/release" - "helm.sh/helm/v3/pkg/storage/driver" + rspb "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage/driver" ) func TestStorageCreate(t *testing.T) { diff --git a/pkg/uploader/chart_uploader.go b/pkg/uploader/chart_uploader.go index d7e940406..41dfd4455 100644 --- a/pkg/uploader/chart_uploader.go +++ b/pkg/uploader/chart_uploader.go @@ -22,8 +22,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v3/pkg/pusher" - "helm.sh/helm/v3/pkg/registry" + "helm.sh/helm/v4/pkg/pusher" + "helm.sh/helm/v4/pkg/registry" ) // ChartUploader handles uploading a chart. From d9d84601b8faf1eaf71f1275d3746e05a2740e78 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 21:35:07 +0000 Subject: [PATCH 100/206] Bump the k8s-io group with 7 updates Bumps the k8s-io group with 7 updates: | Package | From | To | | --- | --- | --- | | [k8s.io/api](https://github.com/kubernetes/api) | `0.31.3` | `0.32.0` | | [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.31.3` | `0.32.0` | | [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.31.3` | `0.32.0` | | [k8s.io/apiserver](https://github.com/kubernetes/apiserver) | `0.31.3` | `0.32.0` | | [k8s.io/cli-runtime](https://github.com/kubernetes/cli-runtime) | `0.31.3` | `0.32.0` | | [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.31.3` | `0.32.0` | | [k8s.io/kubectl](https://github.com/kubernetes/kubectl) | `0.31.3` | `0.32.0` | Updates `k8s.io/api` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/api/compare/v0.31.3...v0.32.0) Updates `k8s.io/apiextensions-apiserver` from 0.31.3 to 0.32.0 - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.31.3...v0.32.0) Updates `k8s.io/apimachinery` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/apimachinery/compare/v0.31.3...v0.32.0) Updates `k8s.io/apiserver` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/apiserver/compare/v0.31.3...v0.32.0) Updates `k8s.io/cli-runtime` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/cli-runtime/compare/v0.31.3...v0.32.0) Updates `k8s.io/client-go` from 0.31.3 to 0.32.0 - [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md) - [Commits](https://github.com/kubernetes/client-go/compare/v0.31.3...v0.32.0) Updates `k8s.io/kubectl` from 0.31.3 to 0.32.0 - [Commits](https://github.com/kubernetes/kubectl/compare/v0.31.3...v0.32.0) --- updated-dependencies: - dependency-name: k8s.io/api dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/apiextensions-apiserver dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/apimachinery dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/apiserver dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/cli-runtime dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/client-go dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io - dependency-name: k8s.io/kubectl dependency-type: direct:production update-type: version-update:semver-minor dependency-group: k8s-io ... Signed-off-by: dependabot[bot] --- go.mod | 48 ++++++++--------- go.sum | 166 ++++++++++++++++++--------------------------------------- 2 files changed, 76 insertions(+), 138 deletions(-) diff --git a/go.mod b/go.mod index ad986c27a..a5a09434f 100644 --- a/go.mod +++ b/go.mod @@ -37,21 +37,21 @@ require ( golang.org/x/crypto v0.31.0 golang.org/x/term v0.27.0 golang.org/x/text v0.21.0 - k8s.io/api v0.31.3 - k8s.io/apiextensions-apiserver v0.31.3 - k8s.io/apimachinery v0.31.3 - k8s.io/apiserver v0.31.3 - k8s.io/cli-runtime v0.31.3 - k8s.io/client-go v0.31.3 + k8s.io/api v0.32.0 + k8s.io/apiextensions-apiserver v0.32.0 + k8s.io/apimachinery v0.32.0 + k8s.io/apiserver v0.32.0 + k8s.io/cli-runtime v0.32.0 + k8s.io/client-go v0.32.0 k8s.io/klog/v2 v2.130.1 - k8s.io/kubectl v0.31.3 + k8s.io/kubectl v0.32.0 oras.land/oras-go v1.2.5 sigs.k8s.io/yaml v1.4.0 ) require ( dario.cat/mergo v1.0.1 // indirect - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -76,7 +76,7 @@ require ( github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect - github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect + github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect github.com/fatih/color v1.13.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fxamacker/cbor/v2 v2.7.0 // indirect @@ -84,9 +84,9 @@ require ( github.com/go-gorp/gorp/v3 v3.1.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect + github.com/go-openapi/jsonpointer v0.21.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/swag v0.22.4 // indirect + github.com/go-openapi/swag v0.23.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.0.1 // indirect @@ -98,13 +98,12 @@ require ( github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.0 // indirect - github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect + github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/golang-lru/arc/v2 v2.0.5 // indirect github.com/hashicorp/golang-lru/v2 v2.0.5 // indirect github.com/huandu/xstrings v1.5.0 // indirect - github.com/imdario/mergo v0.3.16 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -120,7 +119,7 @@ require ( github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/locker v1.0.1 // indirect - github.com/moby/spdystream v0.4.0 // indirect + github.com/moby/spdystream v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect @@ -165,14 +164,13 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect - go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect - golang.org/x/mod v0.17.0 // indirect + golang.org/x/mod v0.21.0 // indirect golang.org/x/net v0.30.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect - golang.org/x/time v0.6.0 // indirect - golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect + golang.org/x/time v0.7.0 // indirect + golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/grpc v1.68.0 // indirect @@ -181,11 +179,11 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/component-base v0.31.3 // indirect - k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect - k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect - sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/api v0.17.2 // indirect - sigs.k8s.io/kustomize/kyaml v0.17.1 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect + k8s.io/component-base v0.32.0 // indirect + k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect + k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect + sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect + sigs.k8s.io/kustomize/api v0.18.0 // indirect + sigs.k8s.io/kustomize/kyaml v0.18.1 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect ) diff --git a/go.sum b/go.sum index f08a70dbf..23ac677f4 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,11 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= @@ -49,16 +47,11 @@ github.com/bsm/gomega v1.26.0 h1:LhQm+AFcgV2M0WyKroMASzAzCAJVpAxQXv4SaI9a69Y= github.com/bsm/gomega v1.26.0/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= @@ -108,12 +101,10 @@ github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arX github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= +github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= @@ -136,13 +127,14 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ= +github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY= github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE= +github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -156,39 +148,26 @@ github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeH github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2Rrd27c3VGxi6a/6HNq8QmHRKM= -github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db h1:097atOisP2aRj7vFgYQBbFN4U4JNXUNYpxael3UzMyo= +github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= @@ -201,8 +180,8 @@ github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWm github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY= github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA= +github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0 h1:ad0vkEBuk23VJzZR9nkLVG0YAoN9coASF1GusYX6AlU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.23.0/go.mod h1:igFoXX2ELCW06bol23DWPB5BEWfZISOzSP5K2sbLea0= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -216,8 +195,6 @@ github.com/hashicorp/golang-lru/v2 v2.0.5 h1:wW7h1TG88eUIJ2i69gaE3uNVtEPIagzhGvH github.com/hashicorp/golang-lru/v2 v2.0.5/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= github.com/huandu/xstrings v1.5.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= -github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jmoiron/sqlx v1.4.0 h1:1PLqN7S1UYp5t4SrVVnt4nUVNemrDAtxlulVe+Qgm3o= @@ -280,8 +257,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= -github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= @@ -302,10 +279,10 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= -github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= -github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= -github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= -github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= +github.com/onsi/ginkgo/v2 v2.21.0 h1:7rg/4f3rB88pb5obDgNZrNHrQ4e6WpjonchcpuBRnZM= +github.com/onsi/ginkgo/v2 v2.21.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= +github.com/onsi/gomega v1.35.1 h1:Cwbd75ZBPxFSuZ6T+rN/WCb/gOc6YgFBXLlZLhC7Ds4= +github.com/onsi/gomega v1.35.1/go.mod h1:PvZbdDc8J6XJEpDK4HCuRBm8a6Fzp9/DmhC9C7yFlog= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= @@ -329,7 +306,6 @@ github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+ github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -375,6 +351,7 @@ github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -441,8 +418,6 @@ go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQD go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= -go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= -go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -455,23 +430,15 @@ golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -486,10 +453,8 @@ golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -502,7 +467,6 @@ golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -528,7 +492,6 @@ golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= @@ -545,13 +508,9 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= +golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -559,34 +518,18 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ= +golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 h1:M0KvPgPmDZHPlbRbaNU1APr28TvwvvdUPlSv7PUvy8g= google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:dguCy7UOdZhTvLzDyt15+rOrawrpM4q7DD9dQ1P11P4= google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1:XVhgTWWV3kGQlwJHR3upFWZeTsei6Oks1apkZSeonIE= google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -598,7 +541,6 @@ gopkg.in/evanphx/json-patch.v4 v4.12.0/go.mod h1:p8EYWUEYMpynmqDbY58zCKCFZw8pRWM gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -606,39 +548,37 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.31.3 h1:umzm5o8lFbdN/hIXbrK9oRpOproJO62CV1zqxXrLgk8= -k8s.io/api v0.31.3/go.mod h1:UJrkIp9pnMOI9K2nlL6vwpxRzzEX5sWgn8kGQe92kCE= -k8s.io/apiextensions-apiserver v0.31.3 h1:+GFGj2qFiU7rGCsA5o+p/rul1OQIq6oYpQw4+u+nciE= -k8s.io/apiextensions-apiserver v0.31.3/go.mod h1:2DSpFhUZZJmn/cr/RweH1cEVVbzFw9YBu4T+U3mf1e4= -k8s.io/apimachinery v0.31.3 h1:6l0WhcYgasZ/wk9ktLq5vLaoXJJr5ts6lkaQzgeYPq4= -k8s.io/apimachinery v0.31.3/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= -k8s.io/apiserver v0.31.3 h1:+1oHTtCB+OheqFEz375D0IlzHZ5VeQKX1KGXnx+TTuY= -k8s.io/apiserver v0.31.3/go.mod h1:PrxVbebxrxQPFhJk4powDISIROkNMKHibTg9lTRQ0Qg= -k8s.io/cli-runtime v0.31.3 h1:fEQD9Xokir78y7pVK/fCJN090/iYNrLHpFbGU4ul9TI= -k8s.io/cli-runtime v0.31.3/go.mod h1:Q2jkyTpl+f6AtodQvgDI8io3jrfr+Z0LyQBPJJ2Btq8= -k8s.io/client-go v0.31.3 h1:CAlZuM+PH2cm+86LOBemaJI/lQ5linJ6UFxKX/SoG+4= -k8s.io/client-go v0.31.3/go.mod h1:2CgjPUTpv3fE5dNygAr2NcM8nhHzXvxB8KL5gYc3kJs= -k8s.io/component-base v0.31.3 h1:DMCXXVx546Rfvhj+3cOm2EUxhS+EyztH423j+8sOwhQ= -k8s.io/component-base v0.31.3/go.mod h1:xME6BHfUOafRgT0rGVBGl7TuSg8Z9/deT7qq6w7qjIU= +k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE= +k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0= +k8s.io/apiextensions-apiserver v0.32.0 h1:S0Xlqt51qzzqjKPxfgX1xh4HBZE+p8KKBq+k2SWNOE0= +k8s.io/apiextensions-apiserver v0.32.0/go.mod h1:86hblMvN5yxMvZrZFX2OhIHAuFIMJIZ19bTvzkP+Fmw= +k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg= +k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/apiserver v0.32.0 h1:VJ89ZvQZ8p1sLeiWdRJpRD6oLozNZD2+qVSLi+ft5Qs= +k8s.io/apiserver v0.32.0/go.mod h1:HFh+dM1/BE/Hm4bS4nTXHVfN6Z6tFIZPi649n83b4Ag= +k8s.io/cli-runtime v0.32.0 h1:dP+OZqs7zHPpGQMCGAhectbHU2SNCuZtIimRKTv2T1c= +k8s.io/cli-runtime v0.32.0/go.mod h1:Mai8ht2+esoDRK5hr861KRy6z0zHsSTYttNVJXgP3YQ= +k8s.io/client-go v0.32.0 h1:DimtMcnN/JIKZcrSrstiwvvZvLjG0aSxy8PxN8IChp8= +k8s.io/client-go v0.32.0/go.mod h1:boDWvdM1Drk4NJj/VddSLnx59X3OPgwrOo0vGbtq9+8= +k8s.io/component-base v0.32.0 h1:d6cWHZkCiiep41ObYQS6IcgzOUQUNpywm39KVYaUqzU= +k8s.io/component-base v0.32.0/go.mod h1:JLG2W5TUxUu5uDyKiH2R/7NnxJo1HlPoRIIbVLkK5eM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= -k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= -k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340/go.mod h1:yD4MZYeKMBwQKVht279WycxKyM84kkAx2DPrTXaeb98= -k8s.io/kubectl v0.31.3 h1:3r111pCjPsvnR98oLLxDMwAeM6OPGmPty6gSKaLTQes= -k8s.io/kubectl v0.31.3/go.mod h1:lhMECDCbJN8He12qcKqs2QfmVo9Pue30geovBVpH5fs= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1J8+AsQnQCKsi8A= -k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= +k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= +k8s.io/kubectl v0.32.0 h1:rpxl+ng9qeG79YA4Em9tLSfX0G8W0vfaiPVrc/WR7Xw= +k8s.io/kubectl v0.32.0/go.mod h1:qIjSX+QgPQUgdy8ps6eKsYNF+YmFOAO3WygfucIqFiE= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= +k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= -sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/api v0.17.2 h1:E7/Fjk7V5fboiuijoZHgs4aHuexi5Y2loXlVOAVAG5g= -sigs.k8s.io/kustomize/api v0.17.2/go.mod h1:UWTz9Ct+MvoeQsHcJ5e+vziRRkwimm3HytpZgIYqye0= -sigs.k8s.io/kustomize/kyaml v0.17.1 h1:TnxYQxFXzbmNG6gOINgGWQt09GghzgTP6mIurOgrLCQ= -sigs.k8s.io/kustomize/kyaml v0.17.1/go.mod h1:9V0mCjIEYjlXuCdYsSXvyoy2BTsLESH7TlGV81S282U= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1 h1:150L+0vs/8DA78h1u02ooW1/fFq/Lwr+sGiqlzvrtq4= -sigs.k8s.io/structured-merge-diff/v4 v4.4.1/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= +sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= +sigs.k8s.io/kustomize/api v0.18.0 h1:hTzp67k+3NEVInwz5BHyzc9rGxIauoXferXyjv5lWPo= +sigs.k8s.io/kustomize/api v0.18.0/go.mod h1:f8isXnX+8b+SGLHQ6yO4JG1rdkZlvhaCf/uZbLVMb0U= +sigs.k8s.io/kustomize/kyaml v0.18.1 h1:WvBo56Wzw3fjS+7vBjN6TeivvpbW9GmRaWZ9CIVmt4E= +sigs.k8s.io/kustomize/kyaml v0.18.1/go.mod h1:C3L2BFVU1jgcddNBE1TxuVLgS46TjObMwW5FT9FcjYo= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2 h1:MdmvkGuXi/8io6ixD5wud3vOLwc1rj0aNqRlpuvjmwA= +sigs.k8s.io/structured-merge-diff/v4 v4.4.2/go.mod h1:N8f93tFZh9U6vpxwRArLiikrE5/2tiu1w1AGfACIGE4= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= From ee4b3cc7b6b00431d4ccebce196c95987d796057 Mon Sep 17 00:00:00 2001 From: cx <1249843194@qq.com> Date: Sun, 29 Dec 2024 23:22:34 +0800 Subject: [PATCH 101/206] Upgrade golang.org/x/net to v0.33.0 to address CVE-2024-45338 fixed: #13551 Signed-off-by: cx <1249843194@qq.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a5a09434f..a3cd98ede 100644 --- a/go.mod +++ b/go.mod @@ -165,7 +165,7 @@ require ( go.opentelemetry.io/otel/trace v1.32.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect golang.org/x/mod v0.21.0 // indirect - golang.org/x/net v0.30.0 // indirect + golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect diff --git a/go.sum b/go.sum index 23ac677f4..712ebd0f6 100644 --- a/go.sum +++ b/go.sum @@ -451,8 +451,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= -golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= -golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= +golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= +golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= From 633e71614e505069ccbd1705fec244688fda411c Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Fri, 20 Sep 2024 09:47:39 -0600 Subject: [PATCH 102/206] feat: allow installation by OCI digest Signed-off-by: Terry Howe --- cmd/helm/pull_test.go | 19 ++++-- pkg/downloader/chart_downloader.go | 36 +++++++++- pkg/downloader/chart_downloader_test.go | 6 ++ pkg/getter/ocigetter.go | 4 ++ pkg/registry/client.go | 40 +++++++++--- pkg/registry/reference.go | 71 ++++++++++++++++++++ pkg/registry/reference_test.go | 87 +++++++++++++++++++++++++ pkg/registry/util.go | 26 -------- 8 files changed, 244 insertions(+), 45 deletions(-) create mode 100644 pkg/registry/reference.go create mode 100644 pkg/registry/reference_test.go diff --git a/cmd/helm/pull_test.go b/cmd/helm/pull_test.go index d8b1f57a7..aa75cad49 100644 --- a/cmd/helm/pull_test.go +++ b/cmd/helm/pull_test.go @@ -183,15 +183,20 @@ func TestPullCmd(t *testing.T) { wantError: true, }, { - name: "Fail fetching OCI chart without version specified", - args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.1.0", ociSrv.RegistryURL), - wantErrorMsg: "Error: --version flag is explicitly required for OCI registries", - wantError: true, + name: "Fetching OCI chart without version option specified", + args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.1.0", ociSrv.RegistryURL), + expectFile: "./oci-dependent-chart-0.1.0.tgz", }, { - name: "Fail fetching OCI chart without version specified", - args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.1.0 --version 0.1.0", ociSrv.RegistryURL), - wantError: true, + name: "Fetching OCI chart with version specified", + args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.1.0 --version 0.1.0", ociSrv.RegistryURL), + expectFile: "./oci-dependent-chart-0.1.0.tgz", + }, + { + name: "Fail fetching OCI chart with version mismatch", + args: fmt.Sprintf("oci://%s/u/ocitestuser/oci-dependent-chart:0.2.0 --version 0.1.0", ociSrv.RegistryURL), + wantErrorMsg: "Error: chart reference and version mismatch: 0.2.0 is not 0.1.0", + wantError: true, }, } diff --git a/pkg/downloader/chart_downloader.go b/pkg/downloader/chart_downloader.go index 910942cde..e0c147613 100644 --- a/pkg/downloader/chart_downloader.go +++ b/pkg/downloader/chart_downloader.go @@ -145,7 +145,39 @@ func (c *ChartDownloader) DownloadTo(ref, version, dest string) (string, *proven func (c *ChartDownloader) getOciURI(ref, version string, u *url.URL) (*url.URL, error) { var tag string - var err error + + registryReference, err := registry.NewReference(u.Path) + if err != nil { + return nil, err + } + + if version == "" { + // Use OCI URI tag as default + version = registryReference.Tag + } else { + if registryReference.Tag != "" && registryReference.Tag != version { + return nil, errors.Errorf("chart reference and version mismatch: %s is not %s", version, registryReference.Tag) + } + } + + if registryReference.Digest != "" { + if registryReference.Tag == "" { + // Install by digest only + return u, nil + } + + // Validate the tag if it was specified + path := registryReference.Registry + "/" + registryReference.Repository + ":" + registryReference.Tag + desc, err := c.RegistryClient.Resolve(path) + if err != nil { + // The resource does not have to be tagged when digest is specified + return u, nil + } + if desc != nil && desc.Digest.String() != registryReference.Digest { + return nil, errors.Errorf("chart reference digest mismatch: %s is not %s", desc.Digest.String(), registryReference.Digest) + } + return u, nil + } // Evaluate whether an explicit version has been provided. Otherwise, determine version to use _, errSemVer := semver.NewVersion(version) @@ -171,7 +203,7 @@ func (c *ChartDownloader) getOciURI(ref, version string, u *url.URL) (*url.URL, } } - u.Path = fmt.Sprintf("%s:%s", u.Path, tag) + u.Path = fmt.Sprintf("%s/%s:%s", registryReference.Registry, registryReference.Repository, tag) return u, err } diff --git a/pkg/downloader/chart_downloader_test.go b/pkg/downloader/chart_downloader_test.go index a8c359411..1e989ce6f 100644 --- a/pkg/downloader/chart_downloader_test.go +++ b/pkg/downloader/chart_downloader_test.go @@ -53,6 +53,12 @@ func TestResolveChartRef(t *testing.T) { {name: "full URL, file", ref: "file:///foo-1.2.3.tgz", fail: true}, {name: "invalid", ref: "invalid-1.2.3", fail: true}, {name: "not found", ref: "nosuchthing/invalid-1.2.3", fail: true}, + {name: "ref with tag", ref: "oci://example.com/helm-charts/nginx:15.4.2", expect: "oci://example.com/helm-charts/nginx:15.4.2"}, + {name: "no repository", ref: "oci://", fail: true}, + {name: "oci ref", ref: "oci://example.com/helm-charts/nginx", version: "15.4.2", expect: "oci://example.com/helm-charts/nginx:15.4.2"}, + {name: "oci ref with sha256", ref: "oci://example.com/install/by/sha@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.1", expect: "oci://example.com/install/by/sha@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6"}, + {name: "oci ref with sha256 and version", ref: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.1", expect: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6"}, + {name: "oci ref with sha256 and version mismatch", ref: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.2", fail: true}, } c := ChartDownloader{ diff --git a/pkg/getter/ocigetter.go b/pkg/getter/ocigetter.go index 5787dc909..1e3d9a0b4 100644 --- a/pkg/getter/ocigetter.go +++ b/pkg/getter/ocigetter.go @@ -20,6 +20,7 @@ import ( "fmt" "net" "net/http" + "path" "strings" "sync" "time" @@ -58,6 +59,9 @@ func (g *OCIGetter) get(href string) (*bytes.Buffer, error) { ref := strings.TrimPrefix(href, fmt.Sprintf("%s://", registry.OCIScheme)) + if version := g.opts.version; version != "" && !strings.Contains(path.Base(ref), ":") { + ref = fmt.Sprintf("%s:%s", ref, version) + } var pullOpts []registry.PullOption requestingProv := strings.HasSuffix(ref, ".prov") if requestingProv { diff --git a/pkg/registry/client.go b/pkg/registry/client.go index f51529965..db21e849b 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -377,7 +377,7 @@ type ( // Pull downloads a chart from a registry func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { - parsedRef, err := parseReference(ref) + parsedRef, err := NewReference(ref) if err != nil { return nil, err } @@ -409,13 +409,13 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { } var descriptors, layers []ocispec.Descriptor - remotesResolver, err := c.resolver(parsedRef) + remotesResolver, err := c.resolver(parsedRef.OrasReference) if err != nil { return nil, err } registryStore := content.Registry{Resolver: remotesResolver} - manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.String(), memoryStore, "", + manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.OrasReference.String(), memoryStore, "", oras.WithPullEmptyNameAllowed(), oras.WithAllowedMediaTypes(allowedMediaTypes), oras.WithLayerDescriptors(func(l []ocispec.Descriptor) { @@ -477,7 +477,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { }, Chart: &DescriptorPullSummaryWithMeta{}, Prov: &DescriptorPullSummary{}, - Ref: parsedRef.String(), + Ref: parsedRef.OrasReference.String(), } var getManifestErr error if _, manifestData, ok := memoryStore.Get(manifest); !ok { @@ -593,7 +593,7 @@ type ( // Push uploads a chart to a registry. func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResult, error) { - parsedRef, err := parseReference(ref) + parsedRef, err := NewReference(ref) if err != nil { return nil, err } @@ -648,16 +648,16 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu return nil, err } - if err := memoryStore.StoreManifest(parsedRef.String(), manifest, manifestData); err != nil { + if err := memoryStore.StoreManifest(parsedRef.OrasReference.String(), manifest, manifestData); err != nil { return nil, err } - remotesResolver, err := c.resolver(parsedRef) + remotesResolver, err := c.resolver(parsedRef.OrasReference) if err != nil { return nil, err } registryStore := content.Registry{Resolver: remotesResolver} - _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.String(), registryStore, "", + _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.OrasReference.String(), registryStore, "", oras.WithNameValidation(nil)) if err != nil { return nil, err @@ -678,7 +678,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu }, Chart: chartSummary, Prov: &descriptorPushSummary{}, // prevent nil references - Ref: parsedRef.String(), + Ref: parsedRef.OrasReference.String(), } if operation.provData != nil { result.Prov = &descriptorPushSummary{ @@ -688,7 +688,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu } fmt.Fprintf(c.out, "Pushed: %s\n", result.Ref) fmt.Fprintf(c.out, "Digest: %s\n", result.Manifest.Digest) - if strings.Contains(parsedRef.Reference, "_") { + if strings.Contains(parsedRef.OrasReference.Reference, "_") { fmt.Fprintf(c.out, "%s contains an underscore.\n", result.Ref) fmt.Fprint(c.out, registryUnderscoreMessage+"\n") } @@ -759,3 +759,23 @@ func (c *Client) Tags(ref string) ([]string, error) { return tags, nil } + +// Resolve a reference to a descriptor. +func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { + ctx := context.Background() + parsedRef, err := NewReference(ref) + if err != nil { + return nil, err + } + if parsedRef.Registry == "" { + return nil, nil + } + + remotesResolver, err := c.resolver(parsedRef.OrasReference) + if err != nil { + return nil, err + } + + _, desc, err := remotesResolver.Resolve(ctx, ref) + return &desc, err +} diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go new file mode 100644 index 000000000..09b99588b --- /dev/null +++ b/pkg/registry/reference.go @@ -0,0 +1,71 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package registry + +import ( + "strings" + + orasregistry "oras.land/oras-go/pkg/registry" +) + +type Reference struct { + OrasReference orasregistry.Reference + Registry string + Repository string + Tag string + Digest string +} + +// NewReference will parse and validate the reference, and clean tags when +// applicable tags are only cleaned when plus (+) signs are present, and are +// converted to underscores (_) before pushing +// See https://github.com/helm/helm/issues/10166 +func NewReference(raw string) (result Reference, err error) { + // Remove oci:// prefix if it is there + raw = strings.TrimPrefix(raw, OCIScheme+"://") + + // The sole possible reference modification is replacing plus (+) signs + // present in tags with underscores (_). To do this properly, we first + // need to identify a tag, and then pass it on to the reference parser + // NOTE: Passing immediately to the reference parser will fail since (+) + // signs are an invalid tag character, and simply replacing all plus (+) + // occurrences could invalidate other portions of the URI + lastIndex := strings.LastIndex(raw, "@") + if lastIndex >= 0 { + result.Digest = raw[(lastIndex + 1):] + raw = raw[:lastIndex] + } + parts := strings.Split(raw, ":") + if len(parts) > 1 && !strings.Contains(parts[len(parts)-1], "/") { + tag := parts[len(parts)-1] + + if tag != "" { + // Replace any plus (+) signs with known underscore (_) conversion + newTag := strings.ReplaceAll(tag, "+", "_") + raw = strings.ReplaceAll(raw, tag, newTag) + } + } + + result.OrasReference, err = orasregistry.ParseReference(raw) + if err != nil { + return result, err + } + result.Registry = result.OrasReference.Registry + result.Repository = result.OrasReference.Repository + result.Tag = result.OrasReference.Reference + return result, nil +} diff --git a/pkg/registry/reference_test.go b/pkg/registry/reference_test.go new file mode 100644 index 000000000..986c10edd --- /dev/null +++ b/pkg/registry/reference_test.go @@ -0,0 +1,87 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package registry + +import "testing" + +func verify(t *testing.T, actual Reference, registry, repository, tag, digest string) { + if registry != actual.OrasReference.Registry { + t.Errorf("Oras Reference registry expected %v actual %v", registry, actual.Registry) + } + if repository != actual.OrasReference.Repository { + t.Errorf("Oras Reference repository expected %v actual %v", repository, actual.Repository) + } + if tag != actual.OrasReference.Reference { + t.Errorf("Oras Reference reference expected %v actual %v", tag, actual.Tag) + } + if registry != actual.Registry { + t.Errorf("Registry expected %v actual %v", registry, actual.Registry) + } + if repository != actual.Repository { + t.Errorf("Repository expected %v actual %v", repository, actual.Repository) + } + if tag != actual.Tag { + t.Errorf("Tag expected %v actual %v", tag, actual.Tag) + } + if digest != actual.Digest { + t.Errorf("Digest expected %v actual %v", digest, actual.Digest) + } +} + +func TestNewReference(t *testing.T) { + actual, err := NewReference("registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "registry.example.com", "repository", "1.0", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + + actual, err = NewReference("oci://registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "registry.example.com", "repository", "1.0", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + + actual, err = NewReference("a/b:1@c") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "a", "b", "1", "c") + + actual, err = NewReference("a/b:@") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "a", "b", "", "") + + actual, err = NewReference("registry.example.com/repository:1.0+001") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "registry.example.com", "repository", "1.0_001", "") + + actual, err = NewReference("thing:1.0") + if err == nil { + t.Errorf("Expect error error %v", err) + } + verify(t, actual, "", "", "", "") + + actual, err = NewReference("registry.example.com/the/repository@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + if err != nil { + t.Errorf("Unexpected error %v", err) + } + verify(t, actual, "registry.example.com", "the/repository", "", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") +} diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 5180b3313..78b7d4385 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -32,7 +32,6 @@ import ( "github.com/pkg/errors" "github.com/sirupsen/logrus" orascontext "oras.land/oras-go/pkg/context" - "oras.land/oras-go/pkg/registry" "helm.sh/helm/v4/internal/tlsutil" "helm.sh/helm/v4/pkg/chart" @@ -115,31 +114,6 @@ func ctx(out io.Writer, debug bool) context.Context { return ctx } -// parseReference will parse and validate the reference, and clean tags when -// applicable tags are only cleaned when plus (+) signs are present, and are -// converted to underscores (_) before pushing -// See https://github.com/helm/helm/issues/10166 -func parseReference(raw string) (registry.Reference, error) { - // The sole possible reference modification is replacing plus (+) signs - // present in tags with underscores (_). To do this properly, we first - // need to identify a tag, and then pass it on to the reference parser - // NOTE: Passing immediately to the reference parser will fail since (+) - // signs are an invalid tag character, and simply replacing all plus (+) - // occurrences could invalidate other portions of the URI - parts := strings.Split(raw, ":") - if len(parts) > 1 && !strings.Contains(parts[len(parts)-1], "/") { - tag := parts[len(parts)-1] - - if tag != "" { - // Replace any plus (+) signs with known underscore (_) conversion - newTag := strings.ReplaceAll(tag, "+", "_") - raw = strings.ReplaceAll(raw, tag, newTag) - } - } - - return registry.ParseReference(raw) -} - // NewRegistryClientWithTLS is a helper function to create a new registry client with TLS enabled. func NewRegistryClientWithTLS(out io.Writer, certFile, keyFile, caFile string, insecureSkipTLSverify bool, registryConfig string, debug bool) (*Client, error) { tlsConf, err := tlsutil.NewClientTLS(certFile, keyFile, caFile, insecureSkipTLSverify) From 22f86e5a62acaf9b8f155e91c56f694172162f1e Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Fri, 20 Sep 2024 11:55:34 -0600 Subject: [PATCH 103/206] fix: issue with helm template and oci chart Signed-off-by: Terry Howe --- pkg/registry/client.go | 8 ++++---- pkg/registry/reference.go | 7 +++++++ pkg/registry/reference_test.go | 12 ++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index db21e849b..fb229bffd 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -415,7 +415,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { } registryStore := content.Registry{Resolver: remotesResolver} - manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.OrasReference.String(), memoryStore, "", + manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.String(), memoryStore, "", oras.WithPullEmptyNameAllowed(), oras.WithAllowedMediaTypes(allowedMediaTypes), oras.WithLayerDescriptors(func(l []ocispec.Descriptor) { @@ -477,7 +477,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { }, Chart: &DescriptorPullSummaryWithMeta{}, Prov: &DescriptorPullSummary{}, - Ref: parsedRef.OrasReference.String(), + Ref: parsedRef.String(), } var getManifestErr error if _, manifestData, ok := memoryStore.Get(manifest); !ok { @@ -648,7 +648,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu return nil, err } - if err := memoryStore.StoreManifest(parsedRef.OrasReference.String(), manifest, manifestData); err != nil { + if err := memoryStore.StoreManifest(parsedRef.String(), manifest, manifestData); err != nil { return nil, err } @@ -678,7 +678,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu }, Chart: chartSummary, Prov: &descriptorPushSummary{}, // prevent nil references - Ref: parsedRef.OrasReference.String(), + Ref: parsedRef.String(), } if operation.provData != nil { result.Prov = &descriptorPushSummary{ diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go index 09b99588b..2ba0266a9 100644 --- a/pkg/registry/reference.go +++ b/pkg/registry/reference.go @@ -69,3 +69,10 @@ func NewReference(raw string) (result Reference, err error) { result.Tag = result.OrasReference.Reference return result, nil } + +func (r *Reference) String() string { + if r.Tag == "" { + return r.OrasReference.String() + "@" + r.Digest + } + return r.OrasReference.String() +} diff --git a/pkg/registry/reference_test.go b/pkg/registry/reference_test.go index 986c10edd..d62a62eb4 100644 --- a/pkg/registry/reference_test.go +++ b/pkg/registry/reference_test.go @@ -40,6 +40,18 @@ func verify(t *testing.T, actual Reference, registry, repository, tag, digest st if digest != actual.Digest { t.Errorf("Digest expected %v actual %v", digest, actual.Digest) } + expectedString := registry + if repository != "" { + expectedString = expectedString + "/" + repository + } + if tag != "" { + expectedString = expectedString + ":" + tag + } else { + expectedString = expectedString + "@" + digest + } + if actual.String() != expectedString { + t.Errorf("String expected %s actual %s", expectedString, actual.String()) + } } func TestNewReference(t *testing.T) { From bcbf68f206b45273dbe68b6a1b4c1e20aa277c6b Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Thu, 24 Oct 2024 07:38:41 -0600 Subject: [PATCH 104/206] fix: make ORAS reference private Signed-off-by: Terry Howe --- pkg/downloader/chart_downloader.go | 68 +----------------------- pkg/registry/client.go | 83 +++++++++++++++++++++++++++--- pkg/registry/reference.go | 22 ++++---- pkg/registry/reference_test.go | 28 +++++----- 4 files changed, 101 insertions(+), 100 deletions(-) diff --git a/pkg/downloader/chart_downloader.go b/pkg/downloader/chart_downloader.go index e0c147613..f5d1deac9 100644 --- a/pkg/downloader/chart_downloader.go +++ b/pkg/downloader/chart_downloader.go @@ -23,7 +23,6 @@ import ( "path/filepath" "strings" - "github.com/Masterminds/semver/v3" "github.com/pkg/errors" "helm.sh/helm/v4/internal/fileutil" @@ -143,71 +142,6 @@ func (c *ChartDownloader) DownloadTo(ref, version, dest string) (string, *proven return destfile, ver, nil } -func (c *ChartDownloader) getOciURI(ref, version string, u *url.URL) (*url.URL, error) { - var tag string - - registryReference, err := registry.NewReference(u.Path) - if err != nil { - return nil, err - } - - if version == "" { - // Use OCI URI tag as default - version = registryReference.Tag - } else { - if registryReference.Tag != "" && registryReference.Tag != version { - return nil, errors.Errorf("chart reference and version mismatch: %s is not %s", version, registryReference.Tag) - } - } - - if registryReference.Digest != "" { - if registryReference.Tag == "" { - // Install by digest only - return u, nil - } - - // Validate the tag if it was specified - path := registryReference.Registry + "/" + registryReference.Repository + ":" + registryReference.Tag - desc, err := c.RegistryClient.Resolve(path) - if err != nil { - // The resource does not have to be tagged when digest is specified - return u, nil - } - if desc != nil && desc.Digest.String() != registryReference.Digest { - return nil, errors.Errorf("chart reference digest mismatch: %s is not %s", desc.Digest.String(), registryReference.Digest) - } - return u, nil - } - - // Evaluate whether an explicit version has been provided. Otherwise, determine version to use - _, errSemVer := semver.NewVersion(version) - if errSemVer == nil { - tag = version - } else { - // Retrieve list of repository tags - tags, err := c.RegistryClient.Tags(strings.TrimPrefix(ref, fmt.Sprintf("%s://", registry.OCIScheme))) - if err != nil { - return nil, err - } - if len(tags) == 0 { - return nil, errors.Errorf("Unable to locate any tags in provided repository: %s", ref) - } - - // Determine if version provided - // If empty, try to get the highest available tag - // If exact version, try to find it - // If semver constraint string, try to find a match - tag, err = registry.GetTagMatchingVersionOrConstraint(tags, version) - if err != nil { - return nil, err - } - } - - u.Path = fmt.Sprintf("%s/%s:%s", registryReference.Registry, registryReference.Repository, tag) - - return u, err -} - // ResolveChartVersion resolves a chart reference to a URL. // // It returns the URL and sets the ChartDownloader's Options that can fetch @@ -230,7 +164,7 @@ func (c *ChartDownloader) ResolveChartVersion(ref, version string) (*url.URL, er } if registry.IsOCI(u.String()) { - return c.getOciURI(ref, version, u) + return c.RegistryClient.ValidateReference(ref, version, u) } rf, err := loadRepoConfig(c.RepositoryConfig) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index fb229bffd..5cb8d1bb4 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -23,6 +23,7 @@ import ( "fmt" "io" "net/http" + "net/url" "sort" "strings" @@ -377,7 +378,7 @@ type ( // Pull downloads a chart from a registry func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { - parsedRef, err := NewReference(ref) + parsedRef, err := newReference(ref) if err != nil { return nil, err } @@ -409,7 +410,7 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { } var descriptors, layers []ocispec.Descriptor - remotesResolver, err := c.resolver(parsedRef.OrasReference) + remotesResolver, err := c.resolver(parsedRef.orasReference) if err != nil { return nil, err } @@ -593,7 +594,7 @@ type ( // Push uploads a chart to a registry. func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResult, error) { - parsedRef, err := NewReference(ref) + parsedRef, err := newReference(ref) if err != nil { return nil, err } @@ -652,12 +653,12 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu return nil, err } - remotesResolver, err := c.resolver(parsedRef.OrasReference) + remotesResolver, err := c.resolver(parsedRef.orasReference) if err != nil { return nil, err } registryStore := content.Registry{Resolver: remotesResolver} - _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.OrasReference.String(), registryStore, "", + _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.orasReference.String(), registryStore, "", oras.WithNameValidation(nil)) if err != nil { return nil, err @@ -688,7 +689,7 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu } fmt.Fprintf(c.out, "Pushed: %s\n", result.Ref) fmt.Fprintf(c.out, "Digest: %s\n", result.Manifest.Digest) - if strings.Contains(parsedRef.OrasReference.Reference, "_") { + if strings.Contains(parsedRef.orasReference.Reference, "_") { fmt.Fprintf(c.out, "%s contains an underscore.\n", result.Ref) fmt.Fprint(c.out, registryUnderscoreMessage+"\n") } @@ -763,7 +764,7 @@ func (c *Client) Tags(ref string) ([]string, error) { // Resolve a reference to a descriptor. func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { ctx := context.Background() - parsedRef, err := NewReference(ref) + parsedRef, err := newReference(ref) if err != nil { return nil, err } @@ -771,7 +772,7 @@ func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { return nil, nil } - remotesResolver, err := c.resolver(parsedRef.OrasReference) + remotesResolver, err := c.resolver(parsedRef.orasReference) if err != nil { return nil, err } @@ -779,3 +780,69 @@ func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { _, desc, err := remotesResolver.Resolve(ctx, ref) return &desc, err } + +// ValidateReference for path and version +func (c *Client) ValidateReference(ref, version string, u *url.URL) (*url.URL, error) { + var tag string + + registryReference, err := newReference(u.Path) + if err != nil { + return nil, err + } + + if version == "" { + // Use OCI URI tag as default + version = registryReference.Tag + } else { + if registryReference.Tag != "" && registryReference.Tag != version { + return nil, errors.Errorf("chart reference and version mismatch: %s is not %s", version, registryReference.Tag) + } + } + + if registryReference.Digest != "" { + if registryReference.Tag == "" { + // Install by digest only + return u, nil + } + + // Validate the tag if it was specified + path := registryReference.Registry + "/" + registryReference.Repository + ":" + registryReference.Tag + desc, err := c.Resolve(path) + if err != nil { + // The resource does not have to be tagged when digest is specified + return u, nil + } + if desc != nil && desc.Digest.String() != registryReference.Digest { + return nil, errors.Errorf("chart reference digest mismatch: %s is not %s", desc.Digest.String(), registryReference.Digest) + } + return u, nil + } + + // Evaluate whether an explicit version has been provided. Otherwise, determine version to use + _, errSemVer := semver.NewVersion(version) + if errSemVer == nil { + tag = version + } else { + // Retrieve list of repository tags + tags, err := c.Tags(strings.TrimPrefix(ref, fmt.Sprintf("%s://", OCIScheme))) + if err != nil { + return nil, err + } + if len(tags) == 0 { + return nil, errors.Errorf("Unable to locate any tags in provided repository: %s", ref) + } + + // Determine if version provided + // If empty, try to get the highest available tag + // If exact version, try to find it + // If semver constraint string, try to find a match + tag, err = GetTagMatchingVersionOrConstraint(tags, version) + if err != nil { + return nil, err + } + } + + u.Path = fmt.Sprintf("%s/%s:%s", registryReference.Registry, registryReference.Repository, tag) + + return u, err +} diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go index 2ba0266a9..9b99d73bf 100644 --- a/pkg/registry/reference.go +++ b/pkg/registry/reference.go @@ -22,19 +22,19 @@ import ( orasregistry "oras.land/oras-go/pkg/registry" ) -type Reference struct { - OrasReference orasregistry.Reference +type reference struct { + orasReference orasregistry.Reference Registry string Repository string Tag string Digest string } -// NewReference will parse and validate the reference, and clean tags when +// newReference will parse and validate the reference, and clean tags when // applicable tags are only cleaned when plus (+) signs are present, and are // converted to underscores (_) before pushing // See https://github.com/helm/helm/issues/10166 -func NewReference(raw string) (result Reference, err error) { +func newReference(raw string) (result reference, err error) { // Remove oci:// prefix if it is there raw = strings.TrimPrefix(raw, OCIScheme+"://") @@ -60,19 +60,19 @@ func NewReference(raw string) (result Reference, err error) { } } - result.OrasReference, err = orasregistry.ParseReference(raw) + result.orasReference, err = orasregistry.ParseReference(raw) if err != nil { return result, err } - result.Registry = result.OrasReference.Registry - result.Repository = result.OrasReference.Repository - result.Tag = result.OrasReference.Reference + result.Registry = result.orasReference.Registry + result.Repository = result.orasReference.Repository + result.Tag = result.orasReference.Reference return result, nil } -func (r *Reference) String() string { +func (r *reference) String() string { if r.Tag == "" { - return r.OrasReference.String() + "@" + r.Digest + return r.orasReference.String() + "@" + r.Digest } - return r.OrasReference.String() + return r.orasReference.String() } diff --git a/pkg/registry/reference_test.go b/pkg/registry/reference_test.go index d62a62eb4..31317d18f 100644 --- a/pkg/registry/reference_test.go +++ b/pkg/registry/reference_test.go @@ -18,15 +18,15 @@ package registry import "testing" -func verify(t *testing.T, actual Reference, registry, repository, tag, digest string) { - if registry != actual.OrasReference.Registry { - t.Errorf("Oras Reference registry expected %v actual %v", registry, actual.Registry) +func verify(t *testing.T, actual reference, registry, repository, tag, digest string) { + if registry != actual.orasReference.Registry { + t.Errorf("Oras reference registry expected %v actual %v", registry, actual.Registry) } - if repository != actual.OrasReference.Repository { - t.Errorf("Oras Reference repository expected %v actual %v", repository, actual.Repository) + if repository != actual.orasReference.Repository { + t.Errorf("Oras reference repository expected %v actual %v", repository, actual.Repository) } - if tag != actual.OrasReference.Reference { - t.Errorf("Oras Reference reference expected %v actual %v", tag, actual.Tag) + if tag != actual.orasReference.Reference { + t.Errorf("Oras reference reference expected %v actual %v", tag, actual.Tag) } if registry != actual.Registry { t.Errorf("Registry expected %v actual %v", registry, actual.Registry) @@ -55,43 +55,43 @@ func verify(t *testing.T, actual Reference, registry, repository, tag, digest st } func TestNewReference(t *testing.T) { - actual, err := NewReference("registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + actual, err := newReference("registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "registry.example.com", "repository", "1.0", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") - actual, err = NewReference("oci://registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + actual, err = newReference("oci://registry.example.com/repository:1.0@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "registry.example.com", "repository", "1.0", "sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") - actual, err = NewReference("a/b:1@c") + actual, err = newReference("a/b:1@c") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "a", "b", "1", "c") - actual, err = NewReference("a/b:@") + actual, err = newReference("a/b:@") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "a", "b", "", "") - actual, err = NewReference("registry.example.com/repository:1.0+001") + actual, err = newReference("registry.example.com/repository:1.0+001") if err != nil { t.Errorf("Unexpected error %v", err) } verify(t, actual, "registry.example.com", "repository", "1.0_001", "") - actual, err = NewReference("thing:1.0") + actual, err = newReference("thing:1.0") if err == nil { t.Errorf("Expect error error %v", err) } verify(t, actual, "", "", "", "") - actual, err = NewReference("registry.example.com/the/repository@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") + actual, err = newReference("registry.example.com/the/repository@sha256:c6841b3a895f1444a6738b5d04564a57e860ce42f8519c3be807fb6d9bee7888") if err != nil { t.Errorf("Unexpected error %v", err) } From 4b617eaa2eceb41c53723881cf6a3f234f26ffb3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 Dec 2024 17:34:05 +0000 Subject: [PATCH 105/206] Bump oras.land/oras-go from 1.2.5 to 1.2.6 Bumps [oras.land/oras-go](https://github.com/oras-project/oras-go) from 1.2.5 to 1.2.6. - [Release notes](https://github.com/oras-project/oras-go/releases) - [Commits](https://github.com/oras-project/oras-go/compare/v1.2.5...v1.2.6) --- updated-dependencies: - dependency-name: oras.land/oras-go dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index a3cd98ede..bf15ddf81 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( k8s.io/client-go v0.32.0 k8s.io/klog/v2 v2.130.1 k8s.io/kubectl v0.32.0 - oras.land/oras-go v1.2.5 + oras.land/oras-go v1.2.6 sigs.k8s.io/yaml v1.4.0 ) @@ -68,9 +68,9 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v25.0.1+incompatible // indirect + github.com/docker/cli v27.1.0+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v25.0.6+incompatible // indirect + github.com/docker/docker v27.1.0+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect diff --git a/go.sum b/go.sum index 712ebd0f6..b95559e07 100644 --- a/go.sum +++ b/go.sum @@ -83,12 +83,12 @@ github.com/distribution/distribution/v3 v3.0.0-rc.2 h1:tTrzntanYMbd20SyvdeR83Ya1 github.com/distribution/distribution/v3 v3.0.0-rc.2/go.mod h1:H2zIRRXS20ylnv2HTuKILAWuANjuA60GB7MLOsQag7Y= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v25.0.1+incompatible h1:mFpqnrS6Hsm3v1k7Wa/BO23oz0k121MTbTO1lpcGSkU= -github.com/docker/cli v25.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v27.1.0+incompatible h1:P0KSYmPtNbmx59wHZvG6+rjivhKDRA1BvvWM0f5DgHc= +github.com/docker/cli v27.1.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v25.0.6+incompatible h1:5cPwbwriIcsua2REJe8HqQV+6WlWc1byg2QSXzBxBGg= -github.com/docker/docker v25.0.6+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.1.0+incompatible h1:rEHVQc4GZ0MIQKifQPHSFGV/dVgaZafgRf8fCPtDYBs= +github.com/docker/docker v27.1.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= @@ -570,8 +570,8 @@ k8s.io/kubectl v0.32.0 h1:rpxl+ng9qeG79YA4Em9tLSfX0G8W0vfaiPVrc/WR7Xw= k8s.io/kubectl v0.32.0/go.mod h1:qIjSX+QgPQUgdy8ps6eKsYNF+YmFOAO3WygfucIqFiE= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -oras.land/oras-go v1.2.5 h1:XpYuAwAb0DfQsunIyMfeET92emK8km3W4yEzZvUbsTo= -oras.land/oras-go v1.2.5/go.mod h1:PuAwRShRZCsZb7g8Ar3jKKQR/2A/qN+pkYxIOd/FAoo= +oras.land/oras-go v1.2.6 h1:z8cmxQXBU8yZ4mkytWqXfo6tZcamPwjsuxYU81xJ8Lk= +oras.land/oras-go v1.2.6/go.mod h1:OVPc1PegSEe/K8YiLfosrlqlqTN9PUyFvOw5Y9gwrT8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= sigs.k8s.io/kustomize/api v0.18.0 h1:hTzp67k+3NEVInwz5BHyzc9rGxIauoXferXyjv5lWPo= From 37fc375481cb5e03ed32ddc49abe3af7e8c999d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Jan 2025 04:06:55 +0000 Subject: [PATCH 106/206] Bump github.com/docker/docker Bumps [github.com/docker/docker](https://github.com/docker/docker) from 27.1.0+incompatible to 27.1.1+incompatible. - [Release notes](https://github.com/docker/docker/releases) - [Commits](https://github.com/docker/docker/compare/v27.1.0...v27.1.1) --- updated-dependencies: - dependency-name: github.com/docker/docker dependency-type: indirect ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bf15ddf81..68b07c1a9 100644 --- a/go.mod +++ b/go.mod @@ -70,7 +70,7 @@ require ( github.com/distribution/reference v0.6.0 // indirect github.com/docker/cli v27.1.0+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v27.1.0+incompatible // indirect + github.com/docker/docker v27.1.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect diff --git a/go.sum b/go.sum index b95559e07..84c9ba0ec 100644 --- a/go.sum +++ b/go.sum @@ -87,8 +87,8 @@ github.com/docker/cli v27.1.0+incompatible h1:P0KSYmPtNbmx59wHZvG6+rjivhKDRA1Bvv github.com/docker/cli v27.1.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.1.0+incompatible h1:rEHVQc4GZ0MIQKifQPHSFGV/dVgaZafgRf8fCPtDYBs= -github.com/docker/docker v27.1.0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= +github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= From 895a4900800de923d7b2930606e7b4f342e7bd47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 21:18:26 +0000 Subject: [PATCH 107/206] Bump github.com/moby/term from 0.5.0 to 0.5.1 Bumps [github.com/moby/term](https://github.com/moby/term) from 0.5.0 to 0.5.1. - [Commits](https://github.com/moby/term/compare/v0.5.0...v0.5.1) --- updated-dependencies: - dependency-name: github.com/moby/term dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 68b07c1a9..fafbda08e 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/lib/pq v1.10.9 github.com/mattn/go-shellwords v1.0.12 github.com/mitchellh/copystructure v1.2.0 - github.com/moby/term v0.5.0 + github.com/moby/term v0.5.1 github.com/opencontainers/image-spec v1.1.0 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 84c9ba0ec..7c903c9f7 100644 --- a/go.sum +++ b/go.sum @@ -263,8 +263,8 @@ github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vyg github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.1 h1:iy+9Sd2jzMs24S0frhx8fMvcw0/5C5LxVU0eEqOWoRs= +github.com/moby/term v0.5.1/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From f8a08145fb94c91c9b3981fb2236e5d13e54ad11 Mon Sep 17 00:00:00 2001 From: Payal Godhani Date: Wed, 8 Jan 2025 15:36:06 -0800 Subject: [PATCH 108/206] Resolving conflict -e Signed-off-by: Payal Godhani --- pkg/action/install.go | 2 +- pkg/action/upgrade.go | 2 +- pkg/chartutil/dependencies.go | 12 ------------ pkg/lint/rules/template.go | 2 +- 4 files changed, 3 insertions(+), 15 deletions(-) diff --git a/pkg/action/install.go b/pkg/action/install.go index 3602d5ada..fbab29767 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -249,7 +249,7 @@ func (i *Install) RunWithContext(ctx context.Context, chrt *chart.Chart, vals ma return nil, errors.Wrap(err, "release name check failed") } - if err := chartutil.ProcessDependenciesWithMerge(chrt, vals); err != nil { + if err := chartutil.ProcessDependencies(chrt, vals); err != nil { i.cfg.Log(fmt.Sprintf("ERROR: Processing chart dependencies failed: %v", err)) return nil, errors.Wrap(err, "chart dependencies processing failed") } diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index f93bf29b1..5fd2bc1fe 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -243,7 +243,7 @@ func (u *Upgrade) prepareUpgrade(name string, chart *chart.Chart, vals map[strin return nil, nil, err } - if err := chartutil.ProcessDependenciesWithMerge(chart, vals); err != nil { + if err := chartutil.ProcessDependencies(chart, vals); err != nil { return nil, nil, err } diff --git a/pkg/chartutil/dependencies.go b/pkg/chartutil/dependencies.go index 31e0e91cc..f0ba166d9 100644 --- a/pkg/chartutil/dependencies.go +++ b/pkg/chartutil/dependencies.go @@ -25,19 +25,7 @@ import ( ) // ProcessDependencies checks through this chart's dependencies, processing accordingly. -// -// TODO: For Helm v4 this can be combined with or turned into ProcessDependenciesWithMerge func ProcessDependencies(c *chart.Chart, v Values) error { - if err := processDependencyEnabled(c, v, ""); err != nil { - return err - } - return processDependencyImportValues(c, false) -} - -// ProcessDependenciesWithMerge checks through this chart's dependencies, processing accordingly. -// It is similar to ProcessDependencies but it does not remove nil values during -// the import/export handling process. -func ProcessDependenciesWithMerge(c *chart.Chart, v Values) error { if err := processDependencyEnabled(c, v, ""); err != nil { return err } diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index d2058d987..a50485a50 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -87,7 +87,7 @@ func TemplatesWithSkipSchemaValidation(linter *support.Linter, values map[string // lint ignores import-values // See https://github.com/helm/helm/issues/9658 - if err := chartutil.ProcessDependenciesWithMerge(chart, values); err != nil { + if err := chartutil.ProcessDependencies(chart, values); err != nil { return } From ca5a9e69c0d1fa5a2bd72188fe829fb76f4dd870 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 27 Dec 2024 21:19:53 -0800 Subject: [PATCH 109/206] refactor: Remove redundant `NewPullWithOpts` Signed-off-by: George Jenkins --- cmd/helm/pull.go | 2 +- pkg/action/pull.go | 9 ++------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/cmd/helm/pull.go b/cmd/helm/pull.go index 1b2a9a44d..231db30bc 100644 --- a/cmd/helm/pull.go +++ b/cmd/helm/pull.go @@ -43,7 +43,7 @@ result in an error, and the chart will not be saved locally. ` func newPullCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { - client := action.NewPullWithOpts(action.WithConfig(cfg)) + client := action.NewPull(action.WithConfig(cfg)) cmd := &cobra.Command{ Use: "pull [chart URL | repo/chartname] [...]", diff --git a/pkg/action/pull.go b/pkg/action/pull.go index 868e6da7b..63bc11d3b 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -56,13 +56,8 @@ func WithConfig(cfg *Configuration) PullOpt { } } -// NewPull creates a new Pull object. -func NewPull() *Pull { - return NewPullWithOpts() -} - -// NewPullWithOpts creates a new pull, with configuration options. -func NewPullWithOpts(opts ...PullOpt) *Pull { +// NewPull creates a new Pull with configuration options. +func NewPull(opts ...PullOpt) *Pull { p := &Pull{} for _, fn := range opts { fn(p) From 77fa61ad399831dee1d04ee500fb649946f51448 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 27 Dec 2024 21:12:48 -0800 Subject: [PATCH 110/206] refactor: Consolidate lint package Run() functions Signed-off-by: George Jenkins --- pkg/action/lint.go | 8 ++++++- pkg/lint/lint.go | 51 ++++++++++++++++++++++++++++--------------- pkg/lint/lint_test.go | 17 +++++++-------- 3 files changed, 49 insertions(+), 27 deletions(-) diff --git a/pkg/action/lint.go b/pkg/action/lint.go index 4ba90b8c3..06fc48612 100644 --- a/pkg/action/lint.go +++ b/pkg/action/lint.go @@ -126,5 +126,11 @@ func lintChart(path string, vals map[string]interface{}, namespace string, kubeV return linter, errors.Wrap(err, "unable to check Chart.yaml file in chart") } - return lint.AllWithKubeVersionAndSchemaValidation(chartPath, vals, namespace, kubeVersion, skipSchemaValidation), nil + return lint.RunAll( + chartPath, + vals, + namespace, + lint.WithKubeVersion(kubeVersion), + lint.WithSkipSchemaValidation(skipSchemaValidation), + ), nil } diff --git a/pkg/lint/lint.go b/pkg/lint/lint.go index de07115ce..70a49ee90 100644 --- a/pkg/lint/lint.go +++ b/pkg/lint/lint.go @@ -24,25 +24,42 @@ import ( "helm.sh/helm/v4/pkg/lint/support" ) -// All runs all the available linters on the given base directory. -func All(basedir string, values map[string]interface{}, namespace string, _ bool) support.Linter { - return AllWithKubeVersion(basedir, values, namespace, nil) +type linterOptions struct { + KubeVersion *chartutil.KubeVersion + SkipSchemaValidation bool } -// AllWithKubeVersion runs all the available linters on the given base directory, allowing to specify the kubernetes version. -func AllWithKubeVersion(basedir string, values map[string]interface{}, namespace string, kubeVersion *chartutil.KubeVersion) support.Linter { - return AllWithKubeVersionAndSchemaValidation(basedir, values, namespace, kubeVersion, false) +type LinterOption func(lo *linterOptions) + +func WithKubeVersion(kubeVersion *chartutil.KubeVersion) LinterOption { + return func(lo *linterOptions) { + lo.KubeVersion = kubeVersion + } +} + +func WithSkipSchemaValidation(skipSchemaValidation bool) LinterOption { + return func(lo *linterOptions) { + lo.SkipSchemaValidation = skipSchemaValidation + } } -// AllWithKubeVersionAndSchemaValidation runs all the available linters on the given base directory, allowing to specify the kubernetes version and if schema validation is enabled or not. -func AllWithKubeVersionAndSchemaValidation(basedir string, values map[string]interface{}, namespace string, kubeVersion *chartutil.KubeVersion, skipSchemaValidation bool) support.Linter { - // Using abs path to get directory context - chartDir, _ := filepath.Abs(basedir) - - linter := support.Linter{ChartDir: chartDir} - rules.Chartfile(&linter) - rules.ValuesWithOverrides(&linter, values) - rules.TemplatesWithSkipSchemaValidation(&linter, values, namespace, kubeVersion, skipSchemaValidation) - rules.Dependencies(&linter) - return linter +func RunAll(baseDir string, values map[string]interface{}, namespace string, options ...LinterOption) support.Linter { + + chartDir, _ := filepath.Abs(baseDir) + + lo := linterOptions{} + for _, option := range options { + option(&lo) + } + + result := support.Linter{ + ChartDir: chartDir, + } + + rules.Chartfile(&result) + rules.ValuesWithOverrides(&result, values) + rules.TemplatesWithSkipSchemaValidation(&result, values, namespace, lo.KubeVersion, lo.SkipSchemaValidation) + rules.Dependencies(&result) + + return result } diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index a6d7707d5..a678940ce 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -28,7 +28,6 @@ import ( var values map[string]interface{} const namespace = "testNamespace" -const strict = false const badChartDir = "rules/testdata/badchartfile" const badValuesFileDir = "rules/testdata/badvaluesfile" @@ -38,7 +37,7 @@ const subChartValuesDir = "rules/testdata/withsubchart" const malformedTemplate = "rules/testdata/malformed-template" func TestBadChart(t *testing.T) { - m := All(badChartDir, values, namespace, strict).Messages + m := RunAll(badChartDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) != 8 { t.Errorf("Number of errors %v", len(m)) t.Errorf("All didn't fail with expected errors, got %#v", m) @@ -82,7 +81,7 @@ func TestBadChart(t *testing.T) { } func TestInvalidYaml(t *testing.T) { - m := All(badYamlFileDir, values, namespace, strict).Messages + m := RunAll(badYamlFileDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) != 1 { t.Fatalf("All didn't fail with expected errors, got %#v", m) } @@ -92,7 +91,7 @@ func TestInvalidYaml(t *testing.T) { } func TestBadValues(t *testing.T) { - m := All(badValuesFileDir, values, namespace, strict).Messages + m := RunAll(badValuesFileDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) < 1 { t.Fatalf("All didn't fail with expected errors, got %#v", m) } @@ -102,7 +101,7 @@ func TestBadValues(t *testing.T) { } func TestGoodChart(t *testing.T) { - m := All(goodChartDir, values, namespace, strict).Messages + m := RunAll(goodChartDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) != 0 { t.Error("All returned linter messages when it shouldn't have") for i, msg := range m { @@ -126,7 +125,7 @@ func TestHelmCreateChart(t *testing.T) { // Note: we test with strict=true here, even though others have // strict = false. - m := All(createdChart, values, namespace, true).Messages + m := RunAll(createdChart, values, namespace, WithSkipSchemaValidation(true)).Messages if ll := len(m); ll != 1 { t.Errorf("All should have had exactly 1 error. Got %d", ll) for i, msg := range m { @@ -173,7 +172,7 @@ func TestHelmCreateChart_CheckDeprecatedWarnings(t *testing.T) { }, } - linterRunDetails := All(createdChart, updatedValues, namespace, true) + linterRunDetails := RunAll(createdChart, updatedValues, namespace, WithSkipSchemaValidation(true)) for _, msg := range linterRunDetails.Messages { if strings.HasPrefix(msg.Error(), "[WARNING]") && strings.Contains(msg.Error(), "deprecated") { @@ -187,7 +186,7 @@ func TestHelmCreateChart_CheckDeprecatedWarnings(t *testing.T) { // lint ignores import-values // See https://github.com/helm/helm/issues/9658 func TestSubChartValuesChart(t *testing.T) { - m := All(subChartValuesDir, values, namespace, strict).Messages + m := RunAll(subChartValuesDir, values, namespace, WithSkipSchemaValidation(false)).Messages if len(m) != 0 { t.Error("All returned linter messages when it shouldn't have") for i, msg := range m { @@ -203,7 +202,7 @@ func TestMalformedTemplate(t *testing.T) { ch := make(chan int, 1) var m []support.Message go func() { - m = All(malformedTemplate, values, namespace, strict).Messages + m = RunAll(malformedTemplate, values, namespace, WithSkipSchemaValidation(false)).Messages ch <- 1 }() select { From 0cf0fc29a76205fd3664510298c497ba283a1ff3 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 27 Dec 2024 21:17:35 -0800 Subject: [PATCH 111/206] more tidy Signed-off-by: George Jenkins --- pkg/lint/lint_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index a678940ce..9246b64f2 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -37,7 +37,7 @@ const subChartValuesDir = "rules/testdata/withsubchart" const malformedTemplate = "rules/testdata/malformed-template" func TestBadChart(t *testing.T) { - m := RunAll(badChartDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(badChartDir, values, namespace).Messages if len(m) != 8 { t.Errorf("Number of errors %v", len(m)) t.Errorf("All didn't fail with expected errors, got %#v", m) @@ -81,7 +81,7 @@ func TestBadChart(t *testing.T) { } func TestInvalidYaml(t *testing.T) { - m := RunAll(badYamlFileDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(badYamlFileDir, values, namespace).Messages if len(m) != 1 { t.Fatalf("All didn't fail with expected errors, got %#v", m) } @@ -91,7 +91,7 @@ func TestInvalidYaml(t *testing.T) { } func TestBadValues(t *testing.T) { - m := RunAll(badValuesFileDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(badValuesFileDir, values, namespace).Messages if len(m) < 1 { t.Fatalf("All didn't fail with expected errors, got %#v", m) } @@ -101,7 +101,7 @@ func TestBadValues(t *testing.T) { } func TestGoodChart(t *testing.T) { - m := RunAll(goodChartDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(goodChartDir, values, namespace).Messages if len(m) != 0 { t.Error("All returned linter messages when it shouldn't have") for i, msg := range m { @@ -186,7 +186,7 @@ func TestHelmCreateChart_CheckDeprecatedWarnings(t *testing.T) { // lint ignores import-values // See https://github.com/helm/helm/issues/9658 func TestSubChartValuesChart(t *testing.T) { - m := RunAll(subChartValuesDir, values, namespace, WithSkipSchemaValidation(false)).Messages + m := RunAll(subChartValuesDir, values, namespace).Messages if len(m) != 0 { t.Error("All returned linter messages when it shouldn't have") for i, msg := range m { @@ -202,7 +202,7 @@ func TestMalformedTemplate(t *testing.T) { ch := make(chan int, 1) var m []support.Message go func() { - m = RunAll(malformedTemplate, values, namespace, WithSkipSchemaValidation(false)).Messages + m = RunAll(malformedTemplate, values, namespace).Messages ch <- 1 }() select { From 0513abf3632d176e06371914aaad05c462c6e62b Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Tue, 7 Jan 2025 11:32:44 -0500 Subject: [PATCH 112/206] Updating the internal version to v4 Signed-off-by: Matt Farina --- cmd/helm/testdata/output/version-client-shorthand.txt | 2 +- cmd/helm/testdata/output/version-client.txt | 2 +- cmd/helm/testdata/output/version-short.txt | 2 +- cmd/helm/testdata/output/version-template.txt | 2 +- cmd/helm/testdata/output/version.txt | 2 +- internal/version/version.go | 2 +- pkg/chartutil/capabilities_test.go | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmd/helm/testdata/output/version-client-shorthand.txt b/cmd/helm/testdata/output/version-client-shorthand.txt index 1623b57d4..3b138ae77 100644 --- a/cmd/helm/testdata/output/version-client-shorthand.txt +++ b/cmd/helm/testdata/output/version-client-shorthand.txt @@ -1 +1 @@ -version.BuildInfo{Version:"v3.16", GitCommit:"", GitTreeState:"", GoVersion:""} +version.BuildInfo{Version:"v4.0", GitCommit:"", GitTreeState:"", GoVersion:""} diff --git a/cmd/helm/testdata/output/version-client.txt b/cmd/helm/testdata/output/version-client.txt index 1623b57d4..3b138ae77 100644 --- a/cmd/helm/testdata/output/version-client.txt +++ b/cmd/helm/testdata/output/version-client.txt @@ -1 +1 @@ -version.BuildInfo{Version:"v3.16", GitCommit:"", GitTreeState:"", GoVersion:""} +version.BuildInfo{Version:"v4.0", GitCommit:"", GitTreeState:"", GoVersion:""} diff --git a/cmd/helm/testdata/output/version-short.txt b/cmd/helm/testdata/output/version-short.txt index 4951775a9..1961bcc21 100644 --- a/cmd/helm/testdata/output/version-short.txt +++ b/cmd/helm/testdata/output/version-short.txt @@ -1 +1 @@ -v3.16 +v4.0 diff --git a/cmd/helm/testdata/output/version-template.txt b/cmd/helm/testdata/output/version-template.txt index f1daff603..1c3c8f5d7 100644 --- a/cmd/helm/testdata/output/version-template.txt +++ b/cmd/helm/testdata/output/version-template.txt @@ -1 +1 @@ -Version: v3.16 \ No newline at end of file +Version: v4.0 \ No newline at end of file diff --git a/cmd/helm/testdata/output/version.txt b/cmd/helm/testdata/output/version.txt index 1623b57d4..3b138ae77 100644 --- a/cmd/helm/testdata/output/version.txt +++ b/cmd/helm/testdata/output/version.txt @@ -1 +1 @@ -version.BuildInfo{Version:"v3.16", GitCommit:"", GitTreeState:"", GoVersion:""} +version.BuildInfo{Version:"v4.0", GitCommit:"", GitTreeState:"", GoVersion:""} diff --git a/internal/version/version.go b/internal/version/version.go index c9f6fad1c..aa64e618f 100644 --- a/internal/version/version.go +++ b/internal/version/version.go @@ -29,7 +29,7 @@ var ( // // Increment major number for new feature additions and behavioral changes. // Increment minor number for bug fixes and performance enhancements. - version = "v3.16" + version = "v4.0" // metadata is extra build time data metadata = "" diff --git a/pkg/chartutil/capabilities_test.go b/pkg/chartutil/capabilities_test.go index ecdf68289..502b0c7d5 100644 --- a/pkg/chartutil/capabilities_test.go +++ b/pkg/chartutil/capabilities_test.go @@ -62,8 +62,8 @@ func TestDefaultCapabilities(t *testing.T) { func TestDefaultCapabilitiesHelmVersion(t *testing.T) { hv := DefaultCapabilities.HelmVersion - if hv.Version != "v3.16" { - t.Errorf("Expected default HelmVersion to be v3.16, got %q", hv.Version) + if hv.Version != "v4.0" { + t.Errorf("Expected default HelmVersion to be v4.0, got %q", hv.Version) } } From 7db0c12de28af113b8c1f694a0200be77557eb46 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:21:38 +0000 Subject: [PATCH 113/206] Bump golang.org/x/crypto from 0.31.0 to 0.32.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.31.0 to 0.32.0. - [Commits](https://github.com/golang/crypto/compare/v0.31.0...v0.32.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index fafbda08e..83e01d34a 100644 --- a/go.mod +++ b/go.mod @@ -34,8 +34,8 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/crypto v0.31.0 - golang.org/x/term v0.27.0 + golang.org/x/crypto v0.32.0 + golang.org/x/term v0.28.0 golang.org/x/text v0.21.0 k8s.io/api v0.32.0 k8s.io/apiextensions-apiserver v0.32.0 @@ -168,7 +168,7 @@ require ( golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/go.sum b/go.sum index 7c903c9f7..1a3b37eed 100644 --- a/go.sum +++ b/go.sum @@ -428,8 +428,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -488,8 +488,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -497,8 +497,8 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= -golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= From f3c15c69f008532a04ad6c4d9dc46cf47703ea17 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 21:21:43 +0000 Subject: [PATCH 114/206] Bump github.com/moby/term from 0.5.1 to 0.5.2 Bumps [github.com/moby/term](https://github.com/moby/term) from 0.5.1 to 0.5.2. - [Commits](https://github.com/moby/term/compare/v0.5.1...v0.5.2) --- updated-dependencies: - dependency-name: github.com/moby/term dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 83e01d34a..cae05b88d 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/lib/pq v1.10.9 github.com/mattn/go-shellwords v1.0.12 github.com/mitchellh/copystructure v1.2.0 - github.com/moby/term v0.5.1 + github.com/moby/term v0.5.2 github.com/opencontainers/image-spec v1.1.0 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 @@ -51,7 +51,7 @@ require ( require ( dario.cat/mergo v1.0.1 // indirect - github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/beorn7/perks v1.0.1 // indirect diff --git a/go.sum b/go.sum index 1a3b37eed..f681b553a 100644 --- a/go.sum +++ b/go.sum @@ -4,8 +4,8 @@ filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= @@ -263,8 +263,8 @@ github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vyg github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/moby/term v0.5.1 h1:iy+9Sd2jzMs24S0frhx8fMvcw0/5C5LxVU0eEqOWoRs= -github.com/moby/term v0.5.1/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From 09cf0b9858e3ccec9b706b0a90bd48a915c9a6ea Mon Sep 17 00:00:00 2001 From: crystalstall Date: Mon, 6 Jan 2025 16:20:22 +0800 Subject: [PATCH 115/206] refactor: using slices.Contains to simplify the code Signed-off-by: crystalstall --- cmd/helm/repo_update.go | 8 ++------ cmd/helm/template.go | 8 ++------ 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/cmd/helm/repo_update.go b/cmd/helm/repo_update.go index 77effe134..1379385c1 100644 --- a/cmd/helm/repo_update.go +++ b/cmd/helm/repo_update.go @@ -19,6 +19,7 @@ package main import ( "fmt" "io" + "slices" "sync" "github.com/pkg/errors" @@ -158,10 +159,5 @@ func checkRequestedRepos(requestedRepos []string, validRepos []*repo.Entry) erro } func isRepoRequested(repoName string, requestedRepos []string) bool { - for _, requestedRepo := range requestedRepos { - if repoName == requestedRepo { - return true - } - } - return false + return slices.Contains(requestedRepos, repoName) } diff --git a/cmd/helm/template.go b/cmd/helm/template.go index 1951d7377..30e509c48 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -24,6 +24,7 @@ import ( "path" "path/filepath" "regexp" + "slices" "sort" "strings" @@ -206,12 +207,7 @@ func newTemplateCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } func isTestHook(h *release.Hook) bool { - for _, e := range h.Events { - if e == release.HookTest { - return true - } - } - return false + return slices.Contains(h.Events, release.HookTest) } // The following functions (writeToFile, createOrOpenFile, and ensureDirectoryForFile) From 6d42a2973d108a28bff46e38f2afe6a9e98918af Mon Sep 17 00:00:00 2001 From: shahbazaamir Date: Sun, 12 Jan 2025 00:11:47 +0530 Subject: [PATCH 116/206] ading info to install helm , referring the documentation Signed-off-by: shahbazaamir --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 33bcb3f05..cf177aa4b 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ If you want to use a package manager: - [Homebrew](https://brew.sh/) users can use `brew install helm`. - [Chocolatey](https://chocolatey.org/) users can use `choco install kubernetes-helm`. +- [Winget](https://learn.microsoft.com/en-us/windows/package-manager/) users can use `winget install Helm.Helm`. - [Scoop](https://scoop.sh/) users can use `scoop install helm`. - [Snapcraft](https://snapcraft.io/) users can use `snap install helm --classic`. - [Flox](https://flox.dev) users can use `flox install kubernetes-helm`. From 4032d159df083f9a506ef8e63f0420404c7cfb5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 21:16:48 +0000 Subject: [PATCH 117/206] Bump github.com/cyphar/filepath-securejoin from 0.3.6 to 0.4.0 Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.3.6 to 0.4.0. - [Release notes](https://github.com/cyphar/filepath-securejoin/releases) - [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md) - [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.3.6...v0.4.0) --- updated-dependencies: - dependency-name: github.com/cyphar/filepath-securejoin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index cae05b88d..e6243a6e5 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/Masterminds/vcs v1.13.3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.24 - github.com/cyphar/filepath-securejoin v0.3.6 + github.com/cyphar/filepath-securejoin v0.4.0 github.com/distribution/distribution/v3 v3.0.0-rc.2 github.com/evanphx/json-patch v5.9.0+incompatible github.com/foxcpp/go-mockdns v1.1.0 diff --git a/go.sum b/go.sum index f681b553a..329f1e745 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= -github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/cyphar/filepath-securejoin v0.4.0 h1:PioTG9TBRSApBpYGnDU8HC+miIsX8vitBH9LGNNMoLQ= +github.com/cyphar/filepath-securejoin v0.4.0/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= From 35a9ead99872f2cbee84922f2538e687fe14d8a9 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Tue, 14 Jan 2025 15:30:44 -0500 Subject: [PATCH 118/206] Ensuring the file paths are clean prior to passing to securejoin securejoin v0.4.0 made a possibly breaking change. Only clean paths are safe to pass to SecureJoin or they could return an error or have the wrong path. The details are in the release notes for v0.4.0. This change ensures the paths are clean prior to passing to SecureJoin. Signed-off-by: Matt Farina --- pkg/chartutil/expand.go | 3 +++ pkg/plugin/installer/http_installer.go | 3 +++ 2 files changed, 6 insertions(+) diff --git a/pkg/chartutil/expand.go b/pkg/chartutil/expand.go index ebe27843a..a9943252d 100644 --- a/pkg/chartutil/expand.go +++ b/pkg/chartutil/expand.go @@ -52,6 +52,9 @@ func Expand(dir string, r io.Reader) error { } // Find the base directory + // The directory needs to be cleaned prior to passing to SecureJoin or the location may end up + // being wrong or returning an error. This was introduced in v0.4.0. + dir = filepath.Clean(dir) chartdir, err := securejoin.SecureJoin(dir, chartName) if err != nil { return err diff --git a/pkg/plugin/installer/http_installer.go b/pkg/plugin/installer/http_installer.go index 758e6039c..b900fa401 100644 --- a/pkg/plugin/installer/http_installer.go +++ b/pkg/plugin/installer/http_installer.go @@ -206,6 +206,9 @@ func cleanJoin(root, dest string) (string, error) { } // SecureJoin will do some cleaning, as well as some rudimentary checking of symlinks. + // The directory needs to be cleaned prior to passing to SecureJoin or the location may end up + // being wrong or returning an error. This was introduced in v0.4.0. + root = filepath.Clean(root) newpath, err := securejoin.SecureJoin(root, dest) if err != nil { return "", err From ec12a61337e4a08b28a1a1f3e2a31fd54e151c33 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Jan 2025 21:07:10 +0000 Subject: [PATCH 119/206] Bump actions/upload-artifact from 4.4.3 to 4.6.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.4.3 to 4.6.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882...65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 61ae29d54..7f568cf9d 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -55,7 +55,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 with: name: SARIF file path: results.sarif From d0053345795b0451ac36f5fc047912e2e0b2a137 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 21:07:24 +0000 Subject: [PATCH 120/206] Bump golangci/golangci-lint-action from 6.1.1 to 6.2.0 Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 6.1.1 to 6.2.0. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/971e284b6050e8a5849b72094c50ab08da042db8...ec5d18412c0aeab7936cb16880d708ba2a64e1ae) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 2a54d0337..cf633ac14 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -21,6 +21,6 @@ jobs: go-version: '1.23' check-latest: true - name: golangci-lint - uses: golangci/golangci-lint-action@971e284b6050e8a5849b72094c50ab08da042db8 #pin@6.1.1 + uses: golangci/golangci-lint-action@ec5d18412c0aeab7936cb16880d708ba2a64e1ae #pin@6.2.0 with: version: v1.62 From 326c1e3f6782a7ed53980ac010c44689c0ae4fb6 Mon Sep 17 00:00:00 2001 From: Ryan Hockstad Date: Wed, 15 Jan 2025 23:29:14 -0500 Subject: [PATCH 121/206] add test for nullifying nested global value Signed-off-by: Ryan Hockstad --- pkg/chartutil/coalesce_test.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/chartutil/coalesce_test.go b/pkg/chartutil/coalesce_test.go index 622d99cc9..e0829b9e3 100644 --- a/pkg/chartutil/coalesce_test.go +++ b/pkg/chartutil/coalesce_test.go @@ -51,6 +51,7 @@ pequod: nested: boat: false sail: true + foo2: null ahab: scope: whale boat: null @@ -112,7 +113,7 @@ func TestCoalesceValues(t *testing.T) { Metadata: &chart.Metadata{Name: "ahab"}, Values: map[string]interface{}{ "global": map[string]interface{}{ - "nested": map[string]interface{}{"foo": "bar"}, + "nested": map[string]interface{}{"foo": "bar", "foo2": "bar2"}, "nested2": map[string]interface{}{"l2": "ahab"}, }, "scope": "ahab", @@ -170,6 +171,7 @@ func TestCoalesceValues(t *testing.T) { {"{{.pequod.ahab.nested.foo}}", "true"}, {"{{.pequod.ahab.global.name}}", "Ishmael"}, {"{{.pequod.ahab.global.nested.foo}}", "bar"}, + {"{{.pequod.ahab.global.nested.foo2}}", ""}, {"{{.pequod.ahab.global.subject}}", "Queequeg"}, {"{{.pequod.ahab.global.harpooner}}", "Tashtego"}, {"{{.pequod.global.name}}", "Ishmael"}, From 99b22110d84e2588f9a9d98fd00e645be6c08999 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 20:12:49 +0000 Subject: [PATCH 122/206] Bump github.com/containerd/containerd from 1.7.24 to 1.7.25 Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.24 to 1.7.25. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.7.24...v1.7.25) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index e6243a6e5..cb9157fbf 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/Masterminds/squirrel v1.5.4 github.com/Masterminds/vcs v1.13.3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 - github.com/containerd/containerd v1.7.24 + github.com/containerd/containerd v1.7.25 github.com/cyphar/filepath-securejoin v0.4.0 github.com/distribution/distribution/v3 v3.0.0-rc.2 github.com/evanphx/json-patch v5.9.0+incompatible @@ -174,7 +174,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect google.golang.org/grpc v1.68.0 // indirect - google.golang.org/protobuf v1.35.1 // indirect + google.golang.org/protobuf v1.35.2 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 329f1e745..70a7fe8c7 100644 --- a/go.sum +++ b/go.sum @@ -54,10 +54,10 @@ github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNS github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= -github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= -github.com/containerd/containerd v1.7.24/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= -github.com/containerd/continuity v0.4.2 h1:v3y/4Yz5jwnvqPKJJ+7Wf93fyWoCB3F5EclWG023MDM= -github.com/containerd/continuity v0.4.2/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/containerd v1.7.25 h1:khEQOAXOEJalRO228yzVsuASLH42vT7DIo9Ss+9SMFQ= +github.com/containerd/containerd v1.7.25/go.mod h1:tWfHzVI0azhw4CT2vaIjsb2CoV4LJ9PrMPaULAr21Ok= +github.com/containerd/continuity v0.4.4 h1:/fNVfTJ7wIl/YPMHjf+5H32uFhl63JucB34PlCpMKII= +github.com/containerd/continuity v0.4.4/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= @@ -530,8 +530,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 h1: google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From 37f184d511140df2f5016a7e4718bb18776528d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jan 2025 22:11:25 +0000 Subject: [PATCH 123/206] Bump the k8s-io group with 7 updates Bumps the k8s-io group with 7 updates: | Package | From | To | | --- | --- | --- | | [k8s.io/api](https://github.com/kubernetes/api) | `0.32.0` | `0.32.1` | | [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.32.0` | `0.32.1` | | [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.32.0` | `0.32.1` | | [k8s.io/apiserver](https://github.com/kubernetes/apiserver) | `0.32.0` | `0.32.1` | | [k8s.io/cli-runtime](https://github.com/kubernetes/cli-runtime) | `0.32.0` | `0.32.1` | | [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.32.0` | `0.32.1` | | [k8s.io/kubectl](https://github.com/kubernetes/kubectl) | `0.32.0` | `0.32.1` | Updates `k8s.io/api` from 0.32.0 to 0.32.1 - [Commits](https://github.com/kubernetes/api/compare/v0.32.0...v0.32.1) Updates `k8s.io/apiextensions-apiserver` from 0.32.0 to 0.32.1 - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.32.0...v0.32.1) Updates `k8s.io/apimachinery` from 0.32.0 to 0.32.1 - [Commits](https://github.com/kubernetes/apimachinery/compare/v0.32.0...v0.32.1) Updates `k8s.io/apiserver` from 0.32.0 to 0.32.1 - [Commits](https://github.com/kubernetes/apiserver/compare/v0.32.0...v0.32.1) Updates `k8s.io/cli-runtime` from 0.32.0 to 0.32.1 - [Commits](https://github.com/kubernetes/cli-runtime/compare/v0.32.0...v0.32.1) Updates `k8s.io/client-go` from 0.32.0 to 0.32.1 - [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md) - [Commits](https://github.com/kubernetes/client-go/compare/v0.32.0...v0.32.1) Updates `k8s.io/kubectl` from 0.32.0 to 0.32.1 - [Commits](https://github.com/kubernetes/kubectl/compare/v0.32.0...v0.32.1) --- updated-dependencies: - dependency-name: k8s.io/api dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apiextensions-apiserver dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apimachinery dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apiserver dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/cli-runtime dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/client-go dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/kubectl dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io ... Signed-off-by: dependabot[bot] --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index cb9157fbf..09b071ef5 100644 --- a/go.mod +++ b/go.mod @@ -37,14 +37,14 @@ require ( golang.org/x/crypto v0.32.0 golang.org/x/term v0.28.0 golang.org/x/text v0.21.0 - k8s.io/api v0.32.0 - k8s.io/apiextensions-apiserver v0.32.0 - k8s.io/apimachinery v0.32.0 - k8s.io/apiserver v0.32.0 - k8s.io/cli-runtime v0.32.0 - k8s.io/client-go v0.32.0 + k8s.io/api v0.32.1 + k8s.io/apiextensions-apiserver v0.32.1 + k8s.io/apimachinery v0.32.1 + k8s.io/apiserver v0.32.1 + k8s.io/cli-runtime v0.32.1 + k8s.io/client-go v0.32.1 k8s.io/klog/v2 v2.130.1 - k8s.io/kubectl v0.32.0 + k8s.io/kubectl v0.32.1 oras.land/oras-go v1.2.6 sigs.k8s.io/yaml v1.4.0 ) @@ -179,7 +179,7 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/component-base v0.32.0 // indirect + k8s.io/component-base v0.32.1 // indirect k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/go.sum b/go.sum index 70a7fe8c7..d70e7733c 100644 --- a/go.sum +++ b/go.sum @@ -548,26 +548,26 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= -k8s.io/api v0.32.0 h1:OL9JpbvAU5ny9ga2fb24X8H6xQlVp+aJMFlgtQjR9CE= -k8s.io/api v0.32.0/go.mod h1:4LEwHZEf6Q/cG96F3dqR965sYOfmPM7rq81BLgsE0p0= -k8s.io/apiextensions-apiserver v0.32.0 h1:S0Xlqt51qzzqjKPxfgX1xh4HBZE+p8KKBq+k2SWNOE0= -k8s.io/apiextensions-apiserver v0.32.0/go.mod h1:86hblMvN5yxMvZrZFX2OhIHAuFIMJIZ19bTvzkP+Fmw= -k8s.io/apimachinery v0.32.0 h1:cFSE7N3rmEEtv4ei5X6DaJPHHX0C+upp+v5lVPiEwpg= -k8s.io/apimachinery v0.32.0/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/apiserver v0.32.0 h1:VJ89ZvQZ8p1sLeiWdRJpRD6oLozNZD2+qVSLi+ft5Qs= -k8s.io/apiserver v0.32.0/go.mod h1:HFh+dM1/BE/Hm4bS4nTXHVfN6Z6tFIZPi649n83b4Ag= -k8s.io/cli-runtime v0.32.0 h1:dP+OZqs7zHPpGQMCGAhectbHU2SNCuZtIimRKTv2T1c= -k8s.io/cli-runtime v0.32.0/go.mod h1:Mai8ht2+esoDRK5hr861KRy6z0zHsSTYttNVJXgP3YQ= -k8s.io/client-go v0.32.0 h1:DimtMcnN/JIKZcrSrstiwvvZvLjG0aSxy8PxN8IChp8= -k8s.io/client-go v0.32.0/go.mod h1:boDWvdM1Drk4NJj/VddSLnx59X3OPgwrOo0vGbtq9+8= -k8s.io/component-base v0.32.0 h1:d6cWHZkCiiep41ObYQS6IcgzOUQUNpywm39KVYaUqzU= -k8s.io/component-base v0.32.0/go.mod h1:JLG2W5TUxUu5uDyKiH2R/7NnxJo1HlPoRIIbVLkK5eM= +k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc= +k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k= +k8s.io/apiextensions-apiserver v0.32.1 h1:hjkALhRUeCariC8DiVmb5jj0VjIc1N0DREP32+6UXZw= +k8s.io/apiextensions-apiserver v0.32.1/go.mod h1:sxWIGuGiYov7Io1fAS2X06NjMIk5CbRHc2StSmbaQto= +k8s.io/apimachinery v0.32.1 h1:683ENpaCBjma4CYqsmZyhEzrGz6cjn1MY/X2jB2hkZs= +k8s.io/apimachinery v0.32.1/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/apiserver v0.32.1 h1:oo0OozRos66WFq87Zc5tclUX2r0mymoVHRq8JmR7Aak= +k8s.io/apiserver v0.32.1/go.mod h1:UcB9tWjBY7aryeI5zAgzVJB/6k7E97bkr1RgqDz0jPw= +k8s.io/cli-runtime v0.32.1 h1:19nwZPlYGJPUDbhAxDIS2/oydCikvKMHsxroKNGA2mM= +k8s.io/cli-runtime v0.32.1/go.mod h1:NJPbeadVFnV2E7B7vF+FvU09mpwYlZCu8PqjzfuOnkY= +k8s.io/client-go v0.32.1 h1:otM0AxdhdBIaQh7l1Q0jQpmo7WOFIk5FFa4bg6YMdUU= +k8s.io/client-go v0.32.1/go.mod h1:aTTKZY7MdxUaJ/KiUs8D+GssR9zJZi77ZqtzcGXIiDg= +k8s.io/component-base v0.32.1 h1:/5IfJ0dHIKBWysGV0yKTFfacZ5yNV1sulPh3ilJjRZk= +k8s.io/component-base v0.32.1/go.mod h1:j1iMMHi/sqAHeG5z+O9BFNCF698a1u0186zkjMZQ28w= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= -k8s.io/kubectl v0.32.0 h1:rpxl+ng9qeG79YA4Em9tLSfX0G8W0vfaiPVrc/WR7Xw= -k8s.io/kubectl v0.32.0/go.mod h1:qIjSX+QgPQUgdy8ps6eKsYNF+YmFOAO3WygfucIqFiE= +k8s.io/kubectl v0.32.1 h1:/btLtXLQUU1rWx8AEvX9jrb9LaI6yeezt3sFALhB8M8= +k8s.io/kubectl v0.32.1/go.mod h1:sezNuyWi1STk4ZNPVRIFfgjqMI6XMf+oCVLjZen/pFQ= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go v1.2.6 h1:z8cmxQXBU8yZ4mkytWqXfo6tZcamPwjsuxYU81xJ8Lk= From b73c514a7846db2d343b8729a1c50f5125a8dbba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 21:56:24 +0000 Subject: [PATCH 124/206] build(deps): bump actions/stale from 9.0.0 to 9.1.0 Bumps [actions/stale](https://github.com/actions/stale) from 9.0.0 to 9.1.0. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/28ca1036281a5e5922ead5184a1bbf96e5fc984e...5bef64f19d7facfb25b37b414482c7164d639639) --- updated-dependencies: - dependency-name: actions/stale dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/stale-issue-bot.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale-issue-bot.yaml b/.github/workflows/stale-issue-bot.yaml index b31e08b6e..613d2900c 100644 --- a/.github/workflows/stale-issue-bot.yaml +++ b/.github/workflows/stale-issue-bot.yaml @@ -9,7 +9,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 + - uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # v9.1.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue has been marked as stale because it has been open for 90 days with no activity. This thread will be automatically closed in 30 days if no further activity occurs.' From 5bf47fb21b0030642d24cdc90574e34e8ff7dc1d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 21:56:24 +0000 Subject: [PATCH 125/206] build(deps): bump actions/setup-go from 5.2.0 to 5.3.0 Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.2.0 to 5.3.0. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/3041bf56c941b39c61721a86cd11f3bb1338122a...f111f3307d8850f501ac008e886eec1fd1932a34) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/build-test.yml | 2 +- .github/workflows/golangci-lint.yml | 2 +- .github/workflows/govulncheck.yml | 2 +- .github/workflows/release.yml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index cd43f3ff3..2ccea3d0e 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -20,7 +20,7 @@ jobs: - name: Checkout source code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2 - name: Setup Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # pin@5.3.0 with: go-version: '1.23' check-latest: true diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 2a54d0337..13db9340f 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -16,7 +16,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2 - name: Setup Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # pin@5.3.0 with: go-version: '1.23' check-latest: true diff --git a/.github/workflows/govulncheck.yml b/.github/workflows/govulncheck.yml index a2f3bfd4b..f8572f2d6 100644 --- a/.github/workflows/govulncheck.yml +++ b/.github/workflows/govulncheck.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Setup Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # pin@5.3.0 with: go-version: '1.23' check-latest: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 146baddd9..c5e7c6840 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: fetch-depth: 0 - name: Setup Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # pin@5.3.0 with: go-version: '1.23' @@ -81,7 +81,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # pin@v4.2.2 - name: Setup Go - uses: actions/setup-go@3041bf56c941b39c61721a86cd11f3bb1338122a # pin@5.2.0 + uses: actions/setup-go@f111f3307d8850f501ac008e886eec1fd1932a34 # pin@5.3.0 with: go-version: '1.23' check-latest: true From 10d267ed8b126c6425233950145f824205b9902b Mon Sep 17 00:00:00 2001 From: Althaf M Date: Fri, 13 Dec 2024 22:22:59 +0000 Subject: [PATCH 126/206] fix: (toToml) renders int as float This commit fixes the issue where the yaml.Unmarshaller converts all int values into float64, this passes in option to decoder, which enables conversion of int into . Signed-off-by: Althaf M --- cmd/helm/template_test.go | 12 ++++++++++ cmd/helm/testdata/output/issue-totoml.txt | 8 +++++++ .../testcharts/issue-totoml/Chart.yaml | 3 +++ .../issue-totoml/templates/configmap.yaml | 6 +++++ .../testcharts/issue-totoml/values.yaml | 2 ++ pkg/chart/loader/load.go | 11 ++++++---- pkg/chartutil/dependencies_test.go | 22 +++++++++++++++++++ pkg/chartutil/values.go | 11 ++++++---- 8 files changed, 67 insertions(+), 8 deletions(-) create mode 100644 cmd/helm/testdata/output/issue-totoml.txt create mode 100644 cmd/helm/testdata/testcharts/issue-totoml/Chart.yaml create mode 100644 cmd/helm/testdata/testcharts/issue-totoml/templates/configmap.yaml create mode 100644 cmd/helm/testdata/testcharts/issue-totoml/values.yaml diff --git a/cmd/helm/template_test.go b/cmd/helm/template_test.go index e5b939879..28e24ce63 100644 --- a/cmd/helm/template_test.go +++ b/cmd/helm/template_test.go @@ -22,6 +22,18 @@ import ( "testing" ) +func TestTemplateCmdWithToml(t *testing.T) { + + tests := []cmdTestCase{ + { + name: "check toToml function rendering", + cmd: fmt.Sprintf("template '%s'", "testdata/testcharts/issue-totoml"), + golden: "output/issue-totoml.txt", + }, + } + runTestCmd(t, tests) +} + var chartPath = "testdata/testcharts/subchart" func TestTemplateCmd(t *testing.T) { diff --git a/cmd/helm/testdata/output/issue-totoml.txt b/cmd/helm/testdata/output/issue-totoml.txt new file mode 100644 index 000000000..06cf4bb8d --- /dev/null +++ b/cmd/helm/testdata/output/issue-totoml.txt @@ -0,0 +1,8 @@ +--- +# Source: issue-totoml/templates/configmap.yaml +apiVersion: v1 +kind: ConfigMap +metadata: + name: issue-totoml +data: | + key = 13 diff --git a/cmd/helm/testdata/testcharts/issue-totoml/Chart.yaml b/cmd/helm/testdata/testcharts/issue-totoml/Chart.yaml new file mode 100644 index 000000000..f4be7a213 --- /dev/null +++ b/cmd/helm/testdata/testcharts/issue-totoml/Chart.yaml @@ -0,0 +1,3 @@ +apiVersion: v2 +name: issue-totoml +version: 0.1.0 diff --git a/cmd/helm/testdata/testcharts/issue-totoml/templates/configmap.yaml b/cmd/helm/testdata/testcharts/issue-totoml/templates/configmap.yaml new file mode 100644 index 000000000..621e70d48 --- /dev/null +++ b/cmd/helm/testdata/testcharts/issue-totoml/templates/configmap.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: issue-totoml +data: | + {{ .Values.global | toToml }} diff --git a/cmd/helm/testdata/testcharts/issue-totoml/values.yaml b/cmd/helm/testdata/testcharts/issue-totoml/values.yaml new file mode 100644 index 000000000..dd0140449 --- /dev/null +++ b/cmd/helm/testdata/testcharts/issue-totoml/values.yaml @@ -0,0 +1,2 @@ +global: + key: 13 \ No newline at end of file diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index 67f09c2bb..6ef83cb5e 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -18,13 +18,13 @@ package loader import ( "bytes" + "encoding/json" + "github.com/pkg/errors" "log" "os" "path/filepath" - "strings" - - "github.com/pkg/errors" "sigs.k8s.io/yaml" + "strings" "helm.sh/helm/v4/pkg/chart" ) @@ -104,7 +104,10 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { } case f.Name == "values.yaml": c.Values = make(map[string]interface{}) - if err := yaml.Unmarshal(f.Data, &c.Values); err != nil { + if err := yaml.Unmarshal(f.Data, &c.Values, func(d *json.Decoder) *json.Decoder { + d.UseNumber() + return d + }); err != nil { return c, errors.Wrap(err, "cannot load values.yaml") } case f.Name == "values.schema.json": diff --git a/pkg/chartutil/dependencies_test.go b/pkg/chartutil/dependencies_test.go index af34a3f6b..516239d27 100644 --- a/pkg/chartutil/dependencies_test.go +++ b/pkg/chartutil/dependencies_test.go @@ -15,8 +15,10 @@ limitations under the License. package chartutil import ( + "encoding/json" "os" "path/filepath" + "reflect" "sort" "strconv" "testing" @@ -237,9 +239,24 @@ func TestProcessDependencyImportValues(t *testing.T) { if b := strconv.FormatBool(pv); b != vv { t.Errorf("failed to match imported bool value %v with expected %v for key %q", b, vv, kk) } + case json.Number: + if fv, err := pv.Float64(); err == nil { + if sfv := strconv.FormatFloat(fv, 'f', -1, 64); sfv != vv { + t.Errorf("failed to match imported float value %v with expected %v for key %q", sfv, vv, kk) + } + } + if iv, err := pv.Int64(); err == nil { + if siv := strconv.FormatInt(iv, 10); siv != vv { + t.Errorf("failed to match imported int value %v with expected %v for key %q", siv, vv, kk) + } + } + if pv.String() != vv { + t.Errorf("failed to match imported string value %q with expected %q for key %q", pv, vv, kk) + } default: if pv != vv { t.Errorf("failed to match imported string value %q with expected %q for key %q", pv, vv, kk) + t.Error(reflect.TypeOf(pv)) } } } @@ -309,9 +326,14 @@ func TestProcessDependencyImportValuesMultiLevelPrecedence(t *testing.T) { if s := strconv.FormatFloat(pv, 'f', -1, 64); s != vv { t.Errorf("failed to match imported float value %v with expected %v", s, vv) } + case json.Number: + if pv.String() != vv { + t.Errorf("failed to match imported string value %q with expected %q", pv, vv) + } default: if pv != vv { t.Errorf("failed to match imported string value %q with expected %q", pv, vv) + t.Error(reflect.TypeOf(pv)) } } } diff --git a/pkg/chartutil/values.go b/pkg/chartutil/values.go index d41df6e7f..79125083a 100644 --- a/pkg/chartutil/values.go +++ b/pkg/chartutil/values.go @@ -17,13 +17,13 @@ limitations under the License. package chartutil import ( + "encoding/json" "fmt" + "github.com/pkg/errors" "io" "os" - "strings" - - "github.com/pkg/errors" "sigs.k8s.io/yaml" + "strings" "helm.sh/helm/v4/pkg/chart" ) @@ -105,7 +105,10 @@ func tableLookup(v Values, simple string) (Values, error) { // ReadValues will parse YAML byte data into a Values. func ReadValues(data []byte) (vals Values, err error) { - err = yaml.Unmarshal(data, &vals) + err = yaml.Unmarshal(data, &vals, func(d *json.Decoder) *json.Decoder { + d.UseNumber() + return d + }) if len(vals) == 0 { vals = Values{} } From 57d85993cbbb823f2145f75b0a7a27e40d9aab22 Mon Sep 17 00:00:00 2001 From: Althaf M Date: Sat, 14 Dec 2024 23:22:28 +0000 Subject: [PATCH 127/206] remove debug statements Signed-off-by: Althaf M --- pkg/chartutil/dependencies_test.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkg/chartutil/dependencies_test.go b/pkg/chartutil/dependencies_test.go index 516239d27..ac8e4d76e 100644 --- a/pkg/chartutil/dependencies_test.go +++ b/pkg/chartutil/dependencies_test.go @@ -18,7 +18,6 @@ import ( "encoding/json" "os" "path/filepath" - "reflect" "sort" "strconv" "testing" @@ -256,7 +255,6 @@ func TestProcessDependencyImportValues(t *testing.T) { default: if pv != vv { t.Errorf("failed to match imported string value %q with expected %q for key %q", pv, vv, kk) - t.Error(reflect.TypeOf(pv)) } } } @@ -333,7 +331,6 @@ func TestProcessDependencyImportValuesMultiLevelPrecedence(t *testing.T) { default: if pv != vv { t.Errorf("failed to match imported string value %q with expected %q", pv, vv) - t.Error(reflect.TypeOf(pv)) } } } From 88f7dc5329a9cf17fdcdbef3f35e4782817cbd5a Mon Sep 17 00:00:00 2001 From: Althaf M Date: Wed, 22 Jan 2025 09:27:51 +0000 Subject: [PATCH 128/206] merge: fixing merge conflicts Signed-off-by: Althaf M althafm@outlook.com Signed-off-by: Althaf M --- pkg/chart/loader/load.go | 5 +++-- pkg/chartutil/values.go | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index 6ef83cb5e..7645ba96c 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -19,13 +19,14 @@ package loader import ( "bytes" "encoding/json" - "github.com/pkg/errors" "log" "os" "path/filepath" - "sigs.k8s.io/yaml" "strings" + "github.com/pkg/errors" + "sigs.k8s.io/yaml" + "helm.sh/helm/v4/pkg/chart" ) diff --git a/pkg/chartutil/values.go b/pkg/chartutil/values.go index 79125083a..706c44d48 100644 --- a/pkg/chartutil/values.go +++ b/pkg/chartutil/values.go @@ -19,12 +19,13 @@ package chartutil import ( "encoding/json" "fmt" - "github.com/pkg/errors" "io" "os" - "sigs.k8s.io/yaml" "strings" + "github.com/pkg/errors" + "sigs.k8s.io/yaml" + "helm.sh/helm/v4/pkg/chart" ) From 605b1a0cf779d10b6b38d92aab19c247f4e6431c Mon Sep 17 00:00:00 2001 From: petercover Date: Thu, 23 Jan 2025 00:38:38 +0800 Subject: [PATCH 129/206] chore: fix some comments Signed-off-by: petercover --- pkg/action/upgrade.go | 2 +- pkg/registry/util.go | 2 +- pkg/storage/driver/mock_test.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index 5fd2bc1fe..f3e9a33bc 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -104,7 +104,7 @@ type Upgrade struct { // Description is the description of this operation Description string Labels map[string]string - // PostRender is an optional post-renderer + // PostRenderer is an optional post-renderer // // If this is non-nil, then after templates are rendered, they will be sent to the // post renderer before sending to the Kubernetes API server. diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 78b7d4385..326d3efcd 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -163,7 +163,7 @@ annotations: return ociAnnotations } -// getChartOCIAnnotations will generate OCI annotations from the provided chart +// generateChartOCIAnnotations will generate OCI annotations from the provided chart func generateChartOCIAnnotations(meta *chart.Metadata, creationTime string) map[string]string { chartOCIAnnotations := map[string]string{} diff --git a/pkg/storage/driver/mock_test.go b/pkg/storage/driver/mock_test.go index 044332334..359f2d079 100644 --- a/pkg/storage/driver/mock_test.go +++ b/pkg/storage/driver/mock_test.go @@ -80,7 +80,7 @@ func tsFixtureMemory(t *testing.T) *Memory { return mem } -// newTestFixture initializes a MockConfigMapsInterface. +// newTestFixtureCfgMaps initializes a MockConfigMapsInterface. // ConfigMaps are created for each release provided. func newTestFixtureCfgMaps(t *testing.T, releases ...*rspb.Release) *ConfigMaps { var mock MockConfigMapsInterface From 7ea1d1df66c56956f9b473035df0ada43bbc2502 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 27 Dec 2024 22:07:27 -0800 Subject: [PATCH 130/206] refactor: Remove duplicate `FindChartIn*RepoURL` funcs Signed-off-by: George Jenkins --- pkg/action/install.go | 14 +++++++-- pkg/action/pull.go | 13 +++++++- pkg/repo/chartrepo.go | 62 +++++++++++++++++++++++--------------- pkg/repo/chartrepo_test.go | 13 ++++++-- 4 files changed, 72 insertions(+), 30 deletions(-) diff --git a/pkg/action/install.go b/pkg/action/install.go index ec074a8d2..c90746c13 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -789,8 +789,18 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) ( dl.Verify = downloader.VerifyAlways } if c.RepoURL != "" { - chartURL, err := repo.FindChartInAuthAndTLSAndPassRepoURL(c.RepoURL, c.Username, c.Password, name, version, - c.CertFile, c.KeyFile, c.CaFile, c.InsecureSkipTLSverify, c.PassCredentialsAll, getter.All(settings)) + chartURL, err := repo.FindChartInRepoURL( + c.RepoURL, + name, + version, + c.CertFile, + c.KeyFile, + c.CaFile, + getter.All(settings), + repo.WithUsernamePassword(c.Username, c.Password), + repo.WithInsecureSkipTLSverify(c.InsecureSkipTLSverify), + repo.WithPassCredentialsAll(c.PassCredentialsAll), + ) if err != nil { return "", err } diff --git a/pkg/action/pull.go b/pkg/action/pull.go index 63bc11d3b..a09cbe368 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -117,7 +117,18 @@ func (p *Pull) Run(chartRef string) (string, error) { } if p.RepoURL != "" { - chartURL, err := repo.FindChartInAuthAndTLSAndPassRepoURL(p.RepoURL, p.Username, p.Password, chartRef, p.Version, p.CertFile, p.KeyFile, p.CaFile, p.InsecureSkipTLSverify, p.PassCredentialsAll, getter.All(p.Settings)) + chartURL, err := repo.FindChartInRepoURL( + p.RepoURL, + chartRef, + p.Version, + p.CertFile, + p.KeyFile, + p.CaFile, + getter.All(p.Settings), + repo.WithUsernamePassword(p.Username, p.Password), + repo.WithInsecureSkipTLSverify(p.InsecureSkipTLSverify), + repo.WithPassCredentialsAll(p.PassCredentialsAll), + ) if err != nil { return out.String(), err } diff --git a/pkg/repo/chartrepo.go b/pkg/repo/chartrepo.go index e20c7e20f..33f790601 100644 --- a/pkg/repo/chartrepo.go +++ b/pkg/repo/chartrepo.go @@ -196,33 +196,45 @@ func (r *ChartRepository) generateIndex() error { return nil } -// FindChartInRepoURL finds chart in chart repository pointed by repoURL -// without adding repo to repositories -func FindChartInRepoURL(repoURL, chartName, chartVersion, certFile, keyFile, caFile string, getters getter.Providers) (string, error) { - return FindChartInAuthRepoURL(repoURL, "", "", chartName, chartVersion, certFile, keyFile, caFile, getters) +type findChartInRepoURLOptions struct { + Username string + Password string + PassCredentialsAll bool + InsecureSkipTLSverify bool +} + +type FindChartInRepoURLOption func(*findChartInRepoURLOptions) + +// WithUsernamePassword specifies the username/password credntials for the repository +func WithUsernamePassword(username, password string) FindChartInRepoURLOption { + return func(options *findChartInRepoURLOptions) { + options.Username = username + options.Password = password + } } -// FindChartInAuthRepoURL finds chart in chart repository pointed by repoURL -// without adding repo to repositories, like FindChartInRepoURL, -// but it also receives credentials for the chart repository. -func FindChartInAuthRepoURL(repoURL, username, password, chartName, chartVersion, certFile, keyFile, caFile string, getters getter.Providers) (string, error) { - return FindChartInAuthAndTLSRepoURL(repoURL, username, password, chartName, chartVersion, certFile, keyFile, caFile, false, getters) +// WithPassCredentialsAll flags whether credentials should be passed on to other domains +func WithPassCredentialsAll(passCredentialsAll bool) FindChartInRepoURLOption { + return func(options *findChartInRepoURLOptions) { + options.PassCredentialsAll = passCredentialsAll + } } -// FindChartInAuthAndTLSRepoURL finds chart in chart repository pointed by repoURL -// without adding repo to repositories, like FindChartInRepoURL, -// but it also receives credentials and TLS verify flag for the chart repository. -// TODO Helm 4, FindChartInAuthAndTLSRepoURL should be integrated into FindChartInAuthRepoURL. -func FindChartInAuthAndTLSRepoURL(repoURL, username, password, chartName, chartVersion, certFile, keyFile, caFile string, insecureSkipTLSverify bool, getters getter.Providers) (string, error) { - return FindChartInAuthAndTLSAndPassRepoURL(repoURL, username, password, chartName, chartVersion, certFile, keyFile, caFile, insecureSkipTLSverify, false, getters) +// WithInsecureSkipTLSverify skips TLS verification for repostory communication +func WithInsecureSkipTLSverify(insecureSkipTLSverify bool) FindChartInRepoURLOption { + return func(options *findChartInRepoURLOptions) { + options.InsecureSkipTLSverify = insecureSkipTLSverify + } } -// FindChartInAuthAndTLSAndPassRepoURL finds chart in chart repository pointed by repoURL -// without adding repo to repositories, like FindChartInRepoURL, -// but it also receives credentials, TLS verify flag, and if credentials should -// be passed on to other domains. -// TODO Helm 4, FindChartInAuthAndTLSAndPassRepoURL should be integrated into FindChartInAuthRepoURL. -func FindChartInAuthAndTLSAndPassRepoURL(repoURL, username, password, chartName, chartVersion, certFile, keyFile, caFile string, insecureSkipTLSverify, passCredentialsAll bool, getters getter.Providers) (string, error) { +// FindChartInRepoURL finds chart in chart repository pointed by repoURL +// without adding repo to repositories +func FindChartInRepoURL(repoURL, chartName, chartVersion, certFile, keyFile, caFile string, getters getter.Providers, options ...FindChartInRepoURLOption) (string, error) { + + opts := findChartInRepoURLOptions{} + for _, option := range options { + option(&opts) + } // Download and write the index file to a temporary location buf := make([]byte, 20) @@ -231,14 +243,14 @@ func FindChartInAuthAndTLSAndPassRepoURL(repoURL, username, password, chartName, c := Entry{ URL: repoURL, - Username: username, - Password: password, - PassCredentialsAll: passCredentialsAll, + Username: opts.Username, + Password: opts.Password, + PassCredentialsAll: opts.PassCredentialsAll, CertFile: certFile, KeyFile: keyFile, CAFile: caFile, Name: name, - InsecureSkipTLSverify: insecureSkipTLSverify, + InsecureSkipTLSverify: opts.InsecureSkipTLSverify, } r, err := NewChartRepository(&c, getters) if err != nil { diff --git a/pkg/repo/chartrepo_test.go b/pkg/repo/chartrepo_test.go index 341bafadc..836a2d66f 100644 --- a/pkg/repo/chartrepo_test.go +++ b/pkg/repo/chartrepo_test.go @@ -297,7 +297,16 @@ func TestFindChartInAuthAndTLSAndPassRepoURL(t *testing.T) { } defer srv.Close() - chartURL, err := FindChartInAuthAndTLSAndPassRepoURL(srv.URL, "", "", "nginx", "", "", "", "", true, false, getter.All(&cli.EnvSettings{})) + chartURL, err := FindChartInRepoURL( + srv.URL, + "nginx", + "", + "", + "", + "", + getter.All(&cli.EnvSettings{}), + WithInsecureSkipTLSverify(true), + ) if err != nil { t.Fatalf("%v", err) } @@ -306,7 +315,7 @@ func TestFindChartInAuthAndTLSAndPassRepoURL(t *testing.T) { } // If the insecureSkipTLSVerify is false, it will return an error that contains "x509: certificate signed by unknown authority". - _, err = FindChartInAuthAndTLSAndPassRepoURL(srv.URL, "", "", "nginx", "0.1.0", "", "", "", false, false, getter.All(&cli.EnvSettings{})) + _, err = FindChartInRepoURL(srv.URL, "nginx", "0.1.0", "", "", "", getter.All(&cli.EnvSettings{})) // Go communicates with the platform and different platforms return different messages. Go itself tests darwin // differently for its message. On newer versions of Darwin the message includes the "Acme Co" portion while older // versions of Darwin do not. As there are people developing Helm using both old and new versions of Darwin we test From 0ce267d907dd776b0cf5ca3f2406f5b5ecce0832 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Fri, 24 Jan 2025 20:38:12 -0800 Subject: [PATCH 131/206] more options Signed-off-by: George Jenkins --- pkg/action/install.go | 6 ++---- pkg/action/pull.go | 6 ++---- pkg/downloader/manager.go | 2 +- pkg/repo/chartrepo.go | 34 +++++++++++++++++++++++++++------- pkg/repo/chartrepo_test.go | 18 +++++++----------- 5 files changed, 39 insertions(+), 27 deletions(-) diff --git a/pkg/action/install.go b/pkg/action/install.go index c90746c13..ef3f0fdc7 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -792,11 +792,9 @@ func (c *ChartPathOptions) LocateChart(name string, settings *cli.EnvSettings) ( chartURL, err := repo.FindChartInRepoURL( c.RepoURL, name, - version, - c.CertFile, - c.KeyFile, - c.CaFile, getter.All(settings), + repo.WithChartVersion(version), + repo.WithClientTLS(c.CertFile, c.KeyFile, c.CaFile), repo.WithUsernamePassword(c.Username, c.Password), repo.WithInsecureSkipTLSverify(c.InsecureSkipTLSverify), repo.WithPassCredentialsAll(c.PassCredentialsAll), diff --git a/pkg/action/pull.go b/pkg/action/pull.go index a09cbe368..7fc1a9fdb 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -120,11 +120,9 @@ func (p *Pull) Run(chartRef string) (string, error) { chartURL, err := repo.FindChartInRepoURL( p.RepoURL, chartRef, - p.Version, - p.CertFile, - p.KeyFile, - p.CaFile, getter.All(p.Settings), + repo.WithChartVersion(p.Version), + repo.WithClientTLS(p.CertFile, p.KeyFile, p.CaFile), repo.WithUsernamePassword(p.Username, p.Password), repo.WithInsecureSkipTLSverify(p.InsecureSkipTLSverify), repo.WithPassCredentialsAll(p.PassCredentialsAll), diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index 5a509646d..f10cbfb8d 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -742,7 +742,7 @@ func (m *Manager) findChartURL(name, version, repoURL string, repos map[string]* return } } - url, err = repo.FindChartInRepoURL(repoURL, name, version, certFile, keyFile, caFile, m.Getters) + url, err = repo.FindChartInRepoURL(repoURL, name, m.Getters, repo.WithChartVersion(version), repo.WithClientTLS(certFile, keyFile, caFile)) if err == nil { return url, username, password, false, false, "", "", "", err } diff --git a/pkg/repo/chartrepo.go b/pkg/repo/chartrepo.go index 33f790601..3629bd24b 100644 --- a/pkg/repo/chartrepo.go +++ b/pkg/repo/chartrepo.go @@ -201,10 +201,21 @@ type findChartInRepoURLOptions struct { Password string PassCredentialsAll bool InsecureSkipTLSverify bool + CertFile string + KeyFile string + CAFile string + ChartVersion string } type FindChartInRepoURLOption func(*findChartInRepoURLOptions) +// WithChartVersion specifies the chart version to find +func WithChartVersion(chartVersion string) FindChartInRepoURLOption { + return func(options *findChartInRepoURLOptions) { + options.ChartVersion = chartVersion + } +} + // WithUsernamePassword specifies the username/password credntials for the repository func WithUsernamePassword(username, password string) FindChartInRepoURLOption { return func(options *findChartInRepoURLOptions) { @@ -220,6 +231,15 @@ func WithPassCredentialsAll(passCredentialsAll bool) FindChartInRepoURLOption { } } +// WithClientTLS species the cert, key, and CA files for client mTLS +func WithClientTLS(certFile, keyFile, caFile string) FindChartInRepoURLOption { + return func(options *findChartInRepoURLOptions) { + options.CertFile = certFile + options.KeyFile = keyFile + options.CAFile = caFile + } +} + // WithInsecureSkipTLSverify skips TLS verification for repostory communication func WithInsecureSkipTLSverify(insecureSkipTLSverify bool) FindChartInRepoURLOption { return func(options *findChartInRepoURLOptions) { @@ -229,7 +249,7 @@ func WithInsecureSkipTLSverify(insecureSkipTLSverify bool) FindChartInRepoURLOpt // FindChartInRepoURL finds chart in chart repository pointed by repoURL // without adding repo to repositories -func FindChartInRepoURL(repoURL, chartName, chartVersion, certFile, keyFile, caFile string, getters getter.Providers, options ...FindChartInRepoURLOption) (string, error) { +func FindChartInRepoURL(repoURL string, chartName string, getters getter.Providers, options ...FindChartInRepoURLOption) (string, error) { opts := findChartInRepoURLOptions{} for _, option := range options { @@ -246,9 +266,9 @@ func FindChartInRepoURL(repoURL, chartName, chartVersion, certFile, keyFile, caF Username: opts.Username, Password: opts.Password, PassCredentialsAll: opts.PassCredentialsAll, - CertFile: certFile, - KeyFile: keyFile, - CAFile: caFile, + CertFile: opts.CertFile, + KeyFile: opts.KeyFile, + CAFile: opts.CAFile, Name: name, InsecureSkipTLSverify: opts.InsecureSkipTLSverify, } @@ -272,10 +292,10 @@ func FindChartInRepoURL(repoURL, chartName, chartVersion, certFile, keyFile, caF } errMsg := fmt.Sprintf("chart %q", chartName) - if chartVersion != "" { - errMsg = fmt.Sprintf("%s version %q", errMsg, chartVersion) + if opts.ChartVersion != "" { + errMsg = fmt.Sprintf("%s version %q", errMsg, opts.ChartVersion) } - cv, err := repoIndex.Get(chartName, chartVersion) + cv, err := repoIndex.Get(chartName, opts.ChartVersion) if err != nil { return "", errors.Errorf("%s not found in %s repository", errMsg, repoURL) } diff --git a/pkg/repo/chartrepo_test.go b/pkg/repo/chartrepo_test.go index 836a2d66f..e3330b8eb 100644 --- a/pkg/repo/chartrepo_test.go +++ b/pkg/repo/chartrepo_test.go @@ -300,10 +300,6 @@ func TestFindChartInAuthAndTLSAndPassRepoURL(t *testing.T) { chartURL, err := FindChartInRepoURL( srv.URL, "nginx", - "", - "", - "", - "", getter.All(&cli.EnvSettings{}), WithInsecureSkipTLSverify(true), ) @@ -315,7 +311,7 @@ func TestFindChartInAuthAndTLSAndPassRepoURL(t *testing.T) { } // If the insecureSkipTLSVerify is false, it will return an error that contains "x509: certificate signed by unknown authority". - _, err = FindChartInRepoURL(srv.URL, "nginx", "0.1.0", "", "", "", getter.All(&cli.EnvSettings{})) + _, err = FindChartInRepoURL(srv.URL, "nginx", getter.All(&cli.EnvSettings{}), WithChartVersion("0.1.0")) // Go communicates with the platform and different platforms return different messages. Go itself tests darwin // differently for its message. On newer versions of Darwin the message includes the "Acme Co" portion while older // versions of Darwin do not. As there are people developing Helm using both old and new versions of Darwin we test @@ -336,7 +332,7 @@ func TestFindChartInRepoURL(t *testing.T) { } defer srv.Close() - chartURL, err := FindChartInRepoURL(srv.URL, "nginx", "", "", "", "", getter.All(&cli.EnvSettings{})) + chartURL, err := FindChartInRepoURL(srv.URL, "nginx", getter.All(&cli.EnvSettings{})) if err != nil { t.Fatalf("%v", err) } @@ -344,7 +340,7 @@ func TestFindChartInRepoURL(t *testing.T) { t.Errorf("%s is not the valid URL", chartURL) } - chartURL, err = FindChartInRepoURL(srv.URL, "nginx", "0.1.0", "", "", "", getter.All(&cli.EnvSettings{})) + chartURL, err = FindChartInRepoURL(srv.URL, "nginx", getter.All(&cli.EnvSettings{}), WithChartVersion("0.1.0")) if err != nil { t.Errorf("%s", err) } @@ -359,7 +355,7 @@ func TestErrorFindChartInRepoURL(t *testing.T) { RepositoryCache: t.TempDir(), }) - if _, err := FindChartInRepoURL("http://someserver/something", "nginx", "", "", "", "", g); err == nil { + if _, err := FindChartInRepoURL("http://someserver/something", "nginx", g); err == nil { t.Errorf("Expected error for bad chart URL, but did not get any errors") } else if !strings.Contains(err.Error(), `looks like "http://someserver/something" is not a valid chart repository or cannot be reached`) { t.Errorf("Expected error for bad chart URL, but got a different error (%v)", err) @@ -371,19 +367,19 @@ func TestErrorFindChartInRepoURL(t *testing.T) { } defer srv.Close() - if _, err = FindChartInRepoURL(srv.URL, "nginx1", "", "", "", "", g); err == nil { + if _, err = FindChartInRepoURL(srv.URL, "nginx1", g); err == nil { t.Errorf("Expected error for chart not found, but did not get any errors") } else if err.Error() != `chart "nginx1" not found in `+srv.URL+` repository` { t.Errorf("Expected error for chart not found, but got a different error (%v)", err) } - if _, err = FindChartInRepoURL(srv.URL, "nginx1", "0.1.0", "", "", "", g); err == nil { + if _, err = FindChartInRepoURL(srv.URL, "nginx1", g, WithChartVersion("0.1.0")); err == nil { t.Errorf("Expected error for chart not found, but did not get any errors") } else if err.Error() != `chart "nginx1" version "0.1.0" not found in `+srv.URL+` repository` { t.Errorf("Expected error for chart not found, but got a different error (%v)", err) } - if _, err = FindChartInRepoURL(srv.URL, "chartWithNoURL", "", "", "", "", g); err == nil { + if _, err = FindChartInRepoURL(srv.URL, "chartWithNoURL", g); err == nil { t.Errorf("Expected error for no chart URLs available, but did not get any errors") } else if err.Error() != `chart "chartWithNoURL" has no downloadable URLs` { t.Errorf("Expected error for chart not found, but got a different error (%v)", err) From c68e3456630aed512f8512667a355aa220c9ea45 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Sat, 25 Jan 2025 11:31:46 -0800 Subject: [PATCH 132/206] fix: Bind repotest server to `localhost` Signed-off-by: George Jenkins --- pkg/repo/repotest/server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/repo/repotest/server.go b/pkg/repo/repotest/server.go index 7a6b1e0f2..a2353987f 100644 --- a/pkg/repo/repotest/server.go +++ b/pkg/repo/repotest/server.go @@ -113,7 +113,7 @@ func NewOCIServer(t *testing.T, dir string) (*OCIServer, error) { t.Fatalf("error finding free port for test registry") } - config.HTTP.Addr = fmt.Sprintf(":%d", port) + config.HTTP.Addr = fmt.Sprintf("127.0.0.1:%d", port) config.HTTP.DrainTimeout = time.Duration(10) * time.Second config.Storage = map[string]configuration.Parameters{"inmemory": map[string]interface{}{}} config.Auth = configuration.Auth{ From 33aa8b53973b9a65e14ffbb6f5f9c99456fca0db Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Mon, 27 Jan 2025 13:30:08 +0000 Subject: [PATCH 133/206] Prefer environment variables to CLI flags Signed-off-by: Evans Mungai --- cmd/helm/profiling.go | 61 +++++++---------------------- cmd/helm/profiling_test.go | 79 -------------------------------------- cmd/helm/root.go | 3 -- 3 files changed, 14 insertions(+), 129 deletions(-) delete mode 100644 cmd/helm/profiling_test.go diff --git a/cmd/helm/profiling.go b/cmd/helm/profiling.go index e231a3e0a..e48441512 100644 --- a/cmd/helm/profiling.go +++ b/cmd/helm/profiling.go @@ -19,30 +19,29 @@ package main import ( "fmt" "os" - "path" - "path/filepath" "runtime" "runtime/pprof" "strings" - - "github.com/spf13/cobra" ) var ( cpuProfileFile *os.File - pprofPaths map[string]string + cpuProfilePath string + memProfilePath string ) func init() { - pprofPaths = parsePProfPaths(os.Getenv("HELM_PPROF")) + cpuProfilePath = os.Getenv("HELM_PPROF_CPU_PROFILE") + memProfilePath = os.Getenv("HELM_PPROF_MEM_PROFILE") } -// startProfiling starts profiling CPU usage +// startProfiling starts profiling CPU usage if HELM_PPROF_CPU_PROFILE is set +// to a file path. It returns an error if the file could not be created or +// CPU profiling could not be started. func startProfiling() error { - cpuprofile, ok := pprofPaths["cpu"] - if ok && cpuprofile != "" { + if cpuProfilePath != "" { var err error - cpuProfileFile, err = os.Create(cpuprofile) + cpuProfileFile, err = os.Create(cpuProfilePath) if err != nil { return fmt.Errorf("could not create CPU profile: %w", err) } @@ -55,8 +54,9 @@ func startProfiling() error { return nil } -// stopProfiling stops profiling CPU and memory usage and writes the results to -// the files specified by HELM_PPROF=cpu=/path/to/cpu.prof,mem=/path/to/mem.prof +// stopProfiling stops profiling CPU and memory usage. +// It writes memory profile to the file path specified in HELM_PPROF_MEM_PROFILE +// environment variable. func stopProfiling() error { errs := []string{} @@ -70,9 +70,8 @@ func stopProfiling() error { cpuProfileFile = nil } - memprofile, ok := pprofPaths["mem"] - if ok && memprofile != "" { - f, err := os.Create(memprofile) + if memProfilePath != "" { + f, err := os.Create(memProfilePath) if err != nil { errs = append(errs, err.Error()) } @@ -90,35 +89,3 @@ func stopProfiling() error { return nil } - -// addProfilingFlags adds the --cpuprofile and --memprofile flags to the given command. -func addProfilingFlags(cmd *cobra.Command) { - // Persistent flags to make available to subcommands - cmd.PersistentFlags().String("cpuprofile", "", "File path to write cpu profiling data") - cmd.PersistentFlags().String("memprofile", "", "File path to write memory profiling data") -} - -func parsePProfPaths(env string) map[string]string { - // Initial empty paths - m := map[string]string{} - for _, pprofs := range strings.Split(env, ",") { - // Is of the format mem=/path/to/memprof - tuple := strings.Split(pprofs, "=") - if len(tuple) != 2 { - continue - } - if tuple[0] != "cpu" && tuple[0] != "mem" { - continue - } - - s, err := filepath.Abs(path.Clean(tuple[1])) - if err != nil { - continue - } - if !strings.HasSuffix(s, string(filepath.Separator)) { - // Ensure its not a directory - m[tuple[0]] = s - } - } - return m -} diff --git a/cmd/helm/profiling_test.go b/cmd/helm/profiling_test.go deleted file mode 100644 index 65928edbb..000000000 --- a/cmd/helm/profiling_test.go +++ /dev/null @@ -1,79 +0,0 @@ -/* -Copyright The Helm Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package main - -import ( - "os" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func Test_parsePProfPaths(t *testing.T) { - cwd, err := os.Getwd() - require.NoError(t, err) - - tests := []struct { - name string - env string - want map[string]string - }{ - { - name: "no env", - env: "", - want: map[string]string{}, - }, - { - name: "single path", - env: "cpu=cpu.pprof", - want: map[string]string{ - "cpu": cwd + "/cpu.pprof", - }, - }, - { - name: "mem and cpu paths", - env: "cpu=cpu.pprof,mem=mem.pprof", - want: map[string]string{ - "cpu": cwd + "/cpu.pprof", - "mem": cwd + "/mem.pprof", - }, - }, - { - name: "extra commas", - env: "cpu=cpu.pprof,mem=mem.pprof,", - want: map[string]string{ - "cpu": cwd + "/cpu.pprof", - "mem": cwd + "/mem.pprof", - }, - }, - { - name: "unknown keys", - env: "cpu=cpu.pprof,mem=mem.pprof,foo=bar", - want: map[string]string{ - "cpu": cwd + "/cpu.pprof", - "mem": cwd + "/mem.pprof", - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - got := parsePProfPaths(tt.env) - assert.Equalf(t, tt.want, got, "parsePProfPaths() = %v, want %v", got, tt.want) - }) - } -} diff --git a/cmd/helm/root.go b/cmd/helm/root.go index edc6376ae..f8ed82a60 100644 --- a/cmd/helm/root.go +++ b/cmd/helm/root.go @@ -216,9 +216,6 @@ func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string // Check for expired repositories checkForExpiredRepos(settings.RepositoryConfig) - // CPU and memory profiling flags that are available to all commands - addProfilingFlags(cmd) - return cmd, nil } From 58748b06c79f37cb79a816324ef1ab878e303a5b Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Mon, 27 Jan 2025 13:37:28 +0000 Subject: [PATCH 134/206] Update CONTRIBUTING guide Signed-off-by: Evans Mungai --- CONTRIBUTING.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0a90054d9..bc225d218 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -284,14 +284,16 @@ Small, ad-hoc changes/PRs to Helm which introduce user facing changes, which wou ### Profiling PRs -If your contribution requires profiling to check memory and/or CPU usage, you can set `HELM_PPROF=cpu=/path/to/cpu.prof,mem=/path/to/mem.prof` environment variable to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. +If your contribution requires profiling to check memory and/or CPU usage, you can set `HELM_PPROF_CPU_PROFILE=/path/to/cpu.prof HELM_PPROF_MEM_PROFILE=/path/to/mem.prof helm show all bitnami/nginx` environment variable to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. Example analysing collected profiling data ``` -HELM_PPROF=cpu=/path/to/cpu.prof,mem=/path/to/mem.prof helm show all bitnami/nginx +HELM_PPROF_CPU_PROFILE=cpu.prof HELM_PPROF_MEM_PROFILE=mem.prof helm show all bitnami/nginx # Visualize graphs. You need to have installed graphviz package in your system go tool pprof -http=":8000" cpu.prof + +go tool pprof -http=":8001" mem.prof ``` ## The Triager From 8a656b524fc7972ed503d6e3744e29fe4ed1ca7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 21:51:04 +0000 Subject: [PATCH 135/206] build(deps): bump github.com/evanphx/json-patch Bumps [github.com/evanphx/json-patch](https://github.com/evanphx/json-patch) from 5.9.0+incompatible to 5.9.11+incompatible. - [Release notes](https://github.com/evanphx/json-patch/releases) - [Commits](https://github.com/evanphx/json-patch/compare/v5.9.0...v5.9.11) --- updated-dependencies: - dependency-name: github.com/evanphx/json-patch dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 09b071ef5..77df05ae2 100644 --- a/go.mod +++ b/go.mod @@ -14,7 +14,7 @@ require ( github.com/containerd/containerd v1.7.25 github.com/cyphar/filepath-securejoin v0.4.0 github.com/distribution/distribution/v3 v3.0.0-rc.2 - github.com/evanphx/json-patch v5.9.0+incompatible + github.com/evanphx/json-patch v5.9.11+incompatible github.com/foxcpp/go-mockdns v1.1.0 github.com/gobwas/glob v0.2.3 github.com/gofrs/flock v0.12.1 diff --git a/go.sum b/go.sum index d70e7733c..be53c4c05 100644 --- a/go.sum +++ b/go.sum @@ -101,8 +101,8 @@ github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arX github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= -github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8= +github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= From 580150e2dd89180c4076af7d6767841a8b827fe7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Jan 2025 22:11:22 +0000 Subject: [PATCH 136/206] build(deps): bump github.com/spf13/pflag from 1.0.5 to 1.0.6 Bumps [github.com/spf13/pflag](https://github.com/spf13/pflag) from 1.0.5 to 1.0.6. - [Release notes](https://github.com/spf13/pflag/releases) - [Commits](https://github.com/spf13/pflag/compare/v1.0.5...v1.0.6) --- updated-dependencies: - dependency-name: github.com/spf13/pflag dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 09b071ef5..79296301a 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/rubenv/sql-migrate v1.7.1 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.1 - github.com/spf13/pflag v1.0.5 + github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/crypto v0.32.0 diff --git a/go.sum b/go.sum index d70e7733c..feac67269 100644 --- a/go.sum +++ b/go.sum @@ -341,8 +341,9 @@ github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= From 119ae859882d68d4daa1e8d6389349e38e1397f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2025 17:12:03 +0000 Subject: [PATCH 137/206] build(deps): bump github.com/cyphar/filepath-securejoin Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.4.0 to 0.4.1. - [Release notes](https://github.com/cyphar/filepath-securejoin/releases) - [Changelog](https://github.com/cyphar/filepath-securejoin/blob/main/CHANGELOG.md) - [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.4.0...v0.4.1) --- updated-dependencies: - dependency-name: github.com/cyphar/filepath-securejoin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6db35856b..8f22e2a67 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/Masterminds/vcs v1.13.3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.25 - github.com/cyphar/filepath-securejoin v0.4.0 + github.com/cyphar/filepath-securejoin v0.4.1 github.com/distribution/distribution/v3 v3.0.0-rc.2 github.com/evanphx/json-patch v5.9.11+incompatible github.com/foxcpp/go-mockdns v1.1.0 diff --git a/go.sum b/go.sum index 266ca3add..40d030f88 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.4.0 h1:PioTG9TBRSApBpYGnDU8HC+miIsX8vitBH9LGNNMoLQ= -github.com/cyphar/filepath-securejoin v0.4.0/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= From 5a7046b9bfaf1d7e97c555e33fa8744bba758004 Mon Sep 17 00:00:00 2001 From: Terry Howe Date: Thu, 2 Jan 2025 04:59:55 -0700 Subject: [PATCH 138/206] chore(oci): upgrade to ORAS v2 Signed-off-by: Terry Howe Co-authored-by: Zoran Regvart --- cmd/helm/dependency_build_test.go | 6 +- cmd/helm/dependency_update_test.go | 10 +- cmd/helm/pull_test.go | 2 +- cmd/helm/registry_login.go | 5 +- go.mod | 9 +- go.sum | 34 +- pkg/action/registry_login.go | 25 +- pkg/downloader/chart_downloader_test.go | 2 - pkg/registry/client.go | 493 +++++++++++++---------- pkg/registry/client_http_test.go | 17 +- pkg/registry/client_insecure_tls_test.go | 5 +- pkg/registry/client_test.go | 33 ++ pkg/registry/client_tls_test.go | 5 +- pkg/registry/reference.go | 6 +- pkg/registry/util.go | 23 +- pkg/registry/utils_test.go | 16 +- pkg/repo/repotest/server.go | 5 +- 17 files changed, 384 insertions(+), 312 deletions(-) create mode 100644 pkg/registry/client_test.go diff --git a/cmd/helm/dependency_build_test.go b/cmd/helm/dependency_build_test.go index e443e64cb..189378ce5 100644 --- a/cmd/helm/dependency_build_test.go +++ b/cmd/helm/dependency_build_test.go @@ -58,7 +58,7 @@ func TestDependencyBuildCmd(t *testing.T) { createTestingChart(t, rootDir, chartname, srv.URL()) repoFile := filepath.Join(rootDir, "repositories.yaml") - cmd := fmt.Sprintf("dependency build '%s' --repository-config %s --repository-cache %s", filepath.Join(rootDir, chartname), repoFile, rootDir) + cmd := fmt.Sprintf("dependency build '%s' --repository-config %s --repository-cache %s --plain-http", filepath.Join(rootDir, chartname), repoFile, rootDir) _, out, err := executeActionCommand(cmd) // In the first pass, we basically want the same results as an update. @@ -117,7 +117,7 @@ func TestDependencyBuildCmd(t *testing.T) { t.Errorf("mismatched versions. Expected %q, got %q", "0.1.0", v) } - skipRefreshCmd := fmt.Sprintf("dependency build '%s' --skip-refresh --repository-config %s --repository-cache %s", filepath.Join(rootDir, chartname), repoFile, rootDir) + skipRefreshCmd := fmt.Sprintf("dependency build '%s' --skip-refresh --repository-config %s --repository-cache %s --plain-http", filepath.Join(rootDir, chartname), repoFile, rootDir) _, out, err = executeActionCommand(skipRefreshCmd) // In this pass, we check --skip-refresh option becomes effective. @@ -134,7 +134,7 @@ func TestDependencyBuildCmd(t *testing.T) { if err := chartutil.SaveDir(c, dir()); err != nil { t.Fatal(err) } - cmd = fmt.Sprintf("dependency build '%s' --repository-config %s --repository-cache %s --registry-config %s/config.json", + cmd = fmt.Sprintf("dependency build '%s' --repository-config %s --repository-cache %s --registry-config %s/config.json --plain-http", dir(ociChartName), dir("repositories.yaml"), dir(), diff --git a/cmd/helm/dependency_update_test.go b/cmd/helm/dependency_update_test.go index b82ce870d..82a6b875d 100644 --- a/cmd/helm/dependency_update_test.go +++ b/cmd/helm/dependency_update_test.go @@ -67,7 +67,7 @@ func TestDependencyUpdateCmd(t *testing.T) { } _, out, err := executeActionCommand( - fmt.Sprintf("dependency update '%s' --repository-config %s --repository-cache %s", dir(chartname), dir("repositories.yaml"), dir()), + fmt.Sprintf("dependency update '%s' --repository-config %s --repository-cache %s --plain-http", dir(chartname), dir("repositories.yaml"), dir()), ) if err != nil { t.Logf("Output: %s", out) @@ -110,7 +110,7 @@ func TestDependencyUpdateCmd(t *testing.T) { t.Fatal(err) } - _, out, err = executeActionCommand(fmt.Sprintf("dependency update '%s' --repository-config %s --repository-cache %s", dir(chartname), dir("repositories.yaml"), dir())) + _, out, err = executeActionCommand(fmt.Sprintf("dependency update '%s' --repository-config %s --repository-cache %s --plain-http", dir(chartname), dir("repositories.yaml"), dir())) if err != nil { t.Logf("Output: %s", out) t.Fatal(err) @@ -131,7 +131,7 @@ func TestDependencyUpdateCmd(t *testing.T) { if err := chartutil.SaveDir(c, dir()); err != nil { t.Fatal(err) } - cmd := fmt.Sprintf("dependency update '%s' --repository-config %s --repository-cache %s --registry-config %s/config.json", + cmd := fmt.Sprintf("dependency update '%s' --repository-config %s --repository-cache %s --registry-config %s/config.json --plain-http", dir(ociChartName), dir("repositories.yaml"), dir(), @@ -169,7 +169,7 @@ func TestDependencyUpdateCmd_DoNotDeleteOldChartsOnError(t *testing.T) { } createTestingChart(t, dir(), chartname, srv.URL()) - _, output, err := executeActionCommand(fmt.Sprintf("dependency update %s --repository-config %s --repository-cache %s", dir(chartname), dir("repositories.yaml"), dir())) + _, output, err := executeActionCommand(fmt.Sprintf("dependency update %s --repository-config %s --repository-cache %s --plain-http", dir(chartname), dir("repositories.yaml"), dir())) if err != nil { t.Logf("Output: %s", output) t.Fatal(err) @@ -178,7 +178,7 @@ func TestDependencyUpdateCmd_DoNotDeleteOldChartsOnError(t *testing.T) { // Chart repo is down srv.Stop() - _, output, err = executeActionCommand(fmt.Sprintf("dependency update %s --repository-config %s --repository-cache %s", dir(chartname), dir("repositories.yaml"), dir())) + _, output, err = executeActionCommand(fmt.Sprintf("dependency update %s --repository-config %s --repository-cache %s --plain-http", dir(chartname), dir("repositories.yaml"), dir())) if err == nil { t.Logf("Output: %s", output) t.Fatal("Expected error, got nil") diff --git a/cmd/helm/pull_test.go b/cmd/helm/pull_test.go index aa75cad49..160e95c76 100644 --- a/cmd/helm/pull_test.go +++ b/cmd/helm/pull_test.go @@ -203,7 +203,7 @@ func TestPullCmd(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { outdir := srv.Root() - cmd := fmt.Sprintf("fetch %s -d '%s' --repository-config %s --repository-cache %s --registry-config %s", + cmd := fmt.Sprintf("fetch %s -d '%s' --repository-config %s --repository-cache %s --registry-config %s --plain-http", tt.args, outdir, filepath.Join(outdir, "repositories.yaml"), diff --git a/cmd/helm/registry_login.go b/cmd/helm/registry_login.go index 59b5591ba..74ad4cebe 100644 --- a/cmd/helm/registry_login.go +++ b/cmd/helm/registry_login.go @@ -43,6 +43,7 @@ type registryLoginOptions struct { keyFile string caFile string insecure bool + plainHTTP bool } func newRegistryLoginCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { @@ -66,7 +67,8 @@ func newRegistryLoginCmd(cfg *action.Configuration, out io.Writer) *cobra.Comman action.WithCertFile(o.certFile), action.WithKeyFile(o.keyFile), action.WithCAFile(o.caFile), - action.WithInsecure(o.insecure)) + action.WithInsecure(o.insecure), + action.WithPlainHTTPLogin(o.plainHTTP)) }, } @@ -78,6 +80,7 @@ func newRegistryLoginCmd(cfg *action.Configuration, out io.Writer) *cobra.Comman f.StringVar(&o.certFile, "cert-file", "", "identify registry client using this SSL certificate file") f.StringVar(&o.keyFile, "key-file", "", "identify registry client using this SSL key file") f.StringVar(&o.caFile, "ca-file", "", "verify certificates of HTTPS-enabled servers using this CA bundle") + f.BoolVar(&o.plainHTTP, "plain-http", false, "use insecure HTTP connections for the chart upload") return cmd } diff --git a/go.mod b/go.mod index 6db35856b..848adb3d6 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,6 @@ require ( github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 github.com/rubenv/sql-migrate v1.7.1 - github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.1 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 @@ -45,7 +44,7 @@ require ( k8s.io/client-go v0.32.1 k8s.io/klog/v2 v2.130.1 k8s.io/kubectl v0.32.1 - oras.land/oras-go v1.2.6 + oras.land/oras-go/v2 v2.5.0 sigs.k8s.io/yaml v1.4.0 ) @@ -68,11 +67,7 @@ require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v27.1.0+incompatible // indirect - github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v27.1.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect - github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c // indirect github.com/docker/go-metrics v0.0.1 // indirect github.com/emicklei/go-restful/v3 v3.11.0 // indirect @@ -118,7 +113,6 @@ require ( github.com/miekg/dns v1.1.57 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/moby/locker v1.0.1 // indirect github.com/moby/spdystream v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect @@ -137,6 +131,7 @@ require ( github.com/redis/go-redis/v9 v9.1.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shopspring/decimal v1.4.0 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect github.com/spf13/cast v1.7.0 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect diff --git a/go.sum b/go.sum index 266ca3add..5e7d07608 100644 --- a/go.sum +++ b/go.sum @@ -22,10 +22,6 @@ github.com/Masterminds/squirrel v1.5.4 h1:uUcX/aBc8O7Fg9kaISIUsHXdKuqehiXAMQTYX8 github.com/Masterminds/squirrel v1.5.4/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10= github.com/Masterminds/vcs v1.13.3 h1:IIA2aBdXvfbIM+yl/eTnL4hb1XwdpvuQLglAix1gweE= github.com/Masterminds/vcs v1.13.3/go.mod h1:TiE7xuEjl1N4j016moRd6vezp6e6Lz23gypeXfzXeW8= -github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= -github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= -github.com/Microsoft/hcsshim v0.11.7 h1:vl/nj3Bar/CvJSYo7gIQPyRWc9f3c6IeSNavBTSZNZQ= -github.com/Microsoft/hcsshim v0.11.7/go.mod h1:MV8xMfmECjl5HdO7U/3/hFVnkmSBjAjmA09d4bExKcU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= @@ -52,12 +48,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= -github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= -github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/containerd v1.7.25 h1:khEQOAXOEJalRO228yzVsuASLH42vT7DIo9Ss+9SMFQ= github.com/containerd/containerd v1.7.25/go.mod h1:tWfHzVI0azhw4CT2vaIjsb2CoV4LJ9PrMPaULAr21Ok= -github.com/containerd/continuity v0.4.4 h1:/fNVfTJ7wIl/YPMHjf+5H32uFhl63JucB34PlCpMKII= -github.com/containerd/continuity v0.4.4/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= @@ -83,22 +75,12 @@ github.com/distribution/distribution/v3 v3.0.0-rc.2 h1:tTrzntanYMbd20SyvdeR83Ya1 github.com/distribution/distribution/v3 v3.0.0-rc.2/go.mod h1:H2zIRRXS20ylnv2HTuKILAWuANjuA60GB7MLOsQag7Y= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v27.1.0+incompatible h1:P0KSYmPtNbmx59wHZvG6+rjivhKDRA1BvvWM0f5DgHc= -github.com/docker/cli v27.1.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= -github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v27.1.1+incompatible h1:hO/M4MtV36kzKldqnA37IWhebRA+LnqqcqDja6kVaKY= -github.com/docker/docker v27.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= -github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= -github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8= @@ -148,8 +130,6 @@ github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeH github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -255,14 +235,8 @@ github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQ github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= -github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= -github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= -github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= -github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= -github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -373,8 +347,6 @@ github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/bridges/prometheus v0.57.0 h1:UW0+QyeyBVhn+COBec3nGhfnFe5lwB0ic1JBVjzhk0w= go.opentelemetry.io/contrib/bridges/prometheus v0.57.0/go.mod h1:ppciCHRLsyCio54qbzQv0E4Jyth/fLWDTJYfvWpcSVk= go.opentelemetry.io/contrib/exporters/autoexport v0.57.0 h1:jmTVJ86dP60C01K3slFQa2NQ/Aoi7zA+wy7vMOKD9H4= @@ -547,8 +519,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc= k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k= k8s.io/apiextensions-apiserver v0.32.1 h1:hjkALhRUeCariC8DiVmb5jj0VjIc1N0DREP32+6UXZw= @@ -571,8 +541,8 @@ k8s.io/kubectl v0.32.1 h1:/btLtXLQUU1rWx8AEvX9jrb9LaI6yeezt3sFALhB8M8= k8s.io/kubectl v0.32.1/go.mod h1:sezNuyWi1STk4ZNPVRIFfgjqMI6XMf+oCVLjZen/pFQ= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -oras.land/oras-go v1.2.6 h1:z8cmxQXBU8yZ4mkytWqXfo6tZcamPwjsuxYU81xJ8Lk= -oras.land/oras-go v1.2.6/go.mod h1:OVPc1PegSEe/K8YiLfosrlqlqTN9PUyFvOw5Y9gwrT8= +oras.land/oras-go/v2 v2.5.0 h1:o8Me9kLY74Vp5uw07QXPiitjsw7qNXi8Twd+19Zf02c= +oras.land/oras-go/v2 v2.5.0/go.mod h1:z4eisnLP530vwIOUOJeBIj0aGI0L1C3d53atvCBqZHg= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8= sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo= sigs.k8s.io/kustomize/api v0.18.0 h1:hTzp67k+3NEVInwz5BHyzc9rGxIauoXferXyjv5lWPo= diff --git a/pkg/action/registry_login.go b/pkg/action/registry_login.go index 7a981d547..fd9d4bfc6 100644 --- a/pkg/action/registry_login.go +++ b/pkg/action/registry_login.go @@ -24,11 +24,12 @@ import ( // RegistryLogin performs a registry login operation. type RegistryLogin struct { - cfg *Configuration - certFile string - keyFile string - caFile string - insecure bool + cfg *Configuration + certFile string + keyFile string + caFile string + insecure bool + plainHTTP bool } type RegistryLoginOpt func(*RegistryLogin) error @@ -41,7 +42,7 @@ func WithCertFile(certFile string) RegistryLoginOpt { } } -// WithKeyFile specifies whether to very certificates when communicating. +// WithInsecure specifies whether to verify certificates. func WithInsecure(insecure bool) RegistryLoginOpt { return func(r *RegistryLogin) error { r.insecure = insecure @@ -65,6 +66,14 @@ func WithCAFile(caFile string) RegistryLoginOpt { } } +// WithPlainHTTPLogin use http rather than https for login. +func WithPlainHTTPLogin(isPlain bool) RegistryLoginOpt { + return func(r *RegistryLogin) error { + r.plainHTTP = isPlain + return nil + } +} + // NewRegistryLogin creates a new RegistryLogin object with the given configuration. func NewRegistryLogin(cfg *Configuration) *RegistryLogin { return &RegistryLogin{ @@ -84,5 +93,7 @@ func (a *RegistryLogin) Run(_ io.Writer, hostname string, username string, passw hostname, registry.LoginOptBasicAuth(username, password), registry.LoginOptInsecure(a.insecure), - registry.LoginOptTLSClientConfig(a.certFile, a.keyFile, a.caFile)) + registry.LoginOptTLSClientConfig(a.certFile, a.keyFile, a.caFile), + registry.LoginOptPlainText(a.plainHTTP), + ) } diff --git a/pkg/downloader/chart_downloader_test.go b/pkg/downloader/chart_downloader_test.go index 1e989ce6f..1d28e3c22 100644 --- a/pkg/downloader/chart_downloader_test.go +++ b/pkg/downloader/chart_downloader_test.go @@ -56,8 +56,6 @@ func TestResolveChartRef(t *testing.T) { {name: "ref with tag", ref: "oci://example.com/helm-charts/nginx:15.4.2", expect: "oci://example.com/helm-charts/nginx:15.4.2"}, {name: "no repository", ref: "oci://", fail: true}, {name: "oci ref", ref: "oci://example.com/helm-charts/nginx", version: "15.4.2", expect: "oci://example.com/helm-charts/nginx:15.4.2"}, - {name: "oci ref with sha256", ref: "oci://example.com/install/by/sha@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.1", expect: "oci://example.com/install/by/sha@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6"}, - {name: "oci ref with sha256 and version", ref: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.1", expect: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6"}, {name: "oci ref with sha256 and version mismatch", ref: "oci://example.com/install/by/sha:0.1.1@sha256:d234555386402a5867ef0169fefe5486858b6d8d209eaf32fd26d29b16807fd6", version: "0.1.2", fail: true}, } diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 5cb8d1bb4..01e5dff7b 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -18,26 +18,31 @@ package registry // import "helm.sh/helm/v4/pkg/registry" import ( "context" - "encoding/base64" + "crypto/tls" + "crypto/x509" "encoding/json" "fmt" "io" "net/http" "net/url" + "os" "sort" "strings" + "sync" "github.com/Masterminds/semver/v3" "github.com/containerd/containerd/remotes" + "github.com/opencontainers/image-spec/specs-go" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/pkg/errors" - "oras.land/oras-go/pkg/auth" - dockerauth "oras.land/oras-go/pkg/auth/docker" - "oras.land/oras-go/pkg/content" - "oras.land/oras-go/pkg/oras" - "oras.land/oras-go/pkg/registry" - registryremote "oras.land/oras-go/pkg/registry/remote" - registryauth "oras.land/oras-go/pkg/registry/remote/auth" + "oras.land/oras-go/v2" + "oras.land/oras-go/v2/content" + "oras.land/oras-go/v2/content/memory" + "oras.land/oras-go/v2/registry" + "oras.land/oras-go/v2/registry/remote" + "oras.land/oras-go/v2/registry/remote/auth" + "oras.land/oras-go/v2/registry/remote/credentials" + "oras.land/oras-go/v2/registry/remote/retry" "helm.sh/helm/v4/internal/version" "helm.sh/helm/v4/pkg/chart" @@ -51,6 +56,8 @@ storing semantic versions, Helm adopts the convention of changing plus (+) to an underscore (_) in chart version tags when pushing to a registry and back to a plus (+) when pulling from a registry.` +var errDeprecatedRemote = errors.New("providing github.com/containerd/containerd/remotes.Resolver via ClientOptResolver is no longer suported") + type ( // RemoteClient shadows the ORAS remote.Client interface // (hiding the ORAS type from Helm client visibility) @@ -68,11 +75,12 @@ type ( username string password string out io.Writer - authorizer auth.Client + authorizer *auth.Client registryAuthorizer RemoteClient - resolver func(ref registry.Reference) (remotes.Resolver, error) + credentialsStore credentials.Store httpClient *http.Client plainHTTP bool + err error // pass any errors from the ClientOption functions } // ClientOption allows specifying various settings configurable by the user for overriding the defaults @@ -87,101 +95,70 @@ func NewClient(options ...ClientOption) (*Client, error) { } for _, option := range options { option(client) + if client.err != nil { + return nil, client.err + } } if client.credentialsFile == "" { client.credentialsFile = helmpath.ConfigPath(CredentialsFileBasename) } - if client.authorizer == nil { - authClient, err := dockerauth.NewClientWithDockerFallback(client.credentialsFile) - if err != nil { - return nil, err - } - client.authorizer = authClient - } - - resolverFn := client.resolver // copy for avoiding recursive call - client.resolver = func(ref registry.Reference) (remotes.Resolver, error) { - if resolverFn != nil { - // validate if the resolverFn returns a valid resolver - if resolver, err := resolverFn(ref); resolver != nil && err == nil { - return resolver, nil - } - } - headers := http.Header{} - headers.Set("User-Agent", version.GetUserAgent()) - opts := []auth.ResolverOption{auth.WithResolverHeaders(headers)} - if client.httpClient != nil { - opts = append(opts, auth.WithResolverClient(client.httpClient)) - } - if client.plainHTTP { - opts = append(opts, auth.WithResolverPlainHTTP()) + if client.httpClient == nil { + type cloner[T any] interface { + Clone() T } - // if username and password are set, use them for authentication - // by adding the basic auth Authorization header to the resolver - if client.username != "" && client.password != "" { - concat := client.username + ":" + client.password - encodedAuth := base64.StdEncoding.EncodeToString([]byte(concat)) - opts = append(opts, auth.WithResolverHeaders( - http.Header{ - "Authorization": []string{"Basic " + encodedAuth}, - }, - )) + // try to copy (clone) the http.DefaultTransport so any mutations we + // perform on it (e.g. TLS config) are not reflected globally + // follow https://github.com/golang/go/issues/39299 for a more elegant + // solution in the future + transport := http.DefaultTransport + if t, ok := transport.(cloner[*http.Transport]); ok { + transport = t.Clone() + } else if t, ok := transport.(cloner[http.RoundTripper]); ok { + // this branch will not be used with go 1.20, it was added + // optimistically to try to clone if the http.DefaultTransport + // implementation changes, still the Clone method in that case + // might not return http.RoundTripper... + transport = t.Clone() } - resolver, err := client.authorizer.ResolverWithOpts(opts...) - if err != nil { - return nil, err + client.httpClient = &http.Client{ + Transport: retry.NewTransport(transport), } - return resolver, nil } - // allocate a cache if option is set - var cache registryauth.Cache - if client.enableCache { - cache = registryauth.DefaultCache + storeOptions := credentials.StoreOptions{ + AllowPlaintextPut: true, + DetectDefaultNativeStore: true, + } + store, err := credentials.NewStore(client.credentialsFile, storeOptions) + if err != nil { + return nil, err + } + dockerStore, err := credentials.NewStoreFromDocker(storeOptions) + if err != nil { + // should only fail if user home directory can't be determined + client.credentialsStore = store + } else { + // use Helm credentials with fallback to Docker + client.credentialsStore = credentials.NewStoreWithFallbacks(store, dockerStore) } - if client.registryAuthorizer == nil { - client.registryAuthorizer = ®istryauth.Client{ - Client: client.httpClient, - Header: http.Header{ - "User-Agent": {version.GetUserAgent()}, - }, - Cache: cache, - Credential: func(_ context.Context, reg string) (registryauth.Credential, error) { - if client.username != "" && client.password != "" { - return registryauth.Credential{ - Username: client.username, - Password: client.password, - }, nil - } - - dockerClient, ok := client.authorizer.(*dockerauth.Client) - if !ok { - return registryauth.EmptyCredential, errors.New("unable to obtain docker client") - } - - username, password, err := dockerClient.Credential(reg) - if err != nil { - return registryauth.EmptyCredential, errors.New("unable to retrieve credentials") - } - // A blank returned username and password value is a bearer token - if username == "" && password != "" { - return registryauth.Credential{ - RefreshToken: password, - }, nil - } + if client.authorizer == nil { + authorizer := auth.Client{ + Client: client.httpClient, + } + authorizer.SetUserAgent(version.GetUserAgent()) - return registryauth.Credential{ - Username: username, - Password: password, - }, nil + authorizer.Credential = credentials.Credential(client.credentialsStore) - }, + if client.enableCache { + authorizer.Cache = auth.NewCache() } + client.authorizer = &authorizer } + return client, nil } @@ -220,7 +197,7 @@ func ClientOptWriter(out io.Writer) ClientOption { // Depending on the use-case you may need to set both ClientOptAuthorizer and ClientOptRegistryAuthorizer. func ClientOptAuthorizer(authorizer auth.Client) ClientOption { return func(client *Client) { - client.authorizer = authorizer + client.authorizer = &authorizer } } @@ -254,12 +231,9 @@ func ClientOptPlainHTTP() ClientOption { } } -// ClientOptResolver returns a function that sets the resolver setting on a client options set -func ClientOptResolver(resolver remotes.Resolver) ClientOption { - return func(client *Client) { - client.resolver = func(_ registry.Reference) (remotes.Resolver, error) { - return resolver, nil - } +func ClientOptResolver(_ remotes.Resolver) ClientOption { + return func(c *Client) { + c.err = errDeprecatedRemote } } @@ -268,60 +242,128 @@ type ( LoginOption func(*loginOperation) loginOperation struct { - username string - password string - insecure bool - certFile string - keyFile string - caFile string + host string + client *Client } ) // Login logs into a registry func (c *Client) Login(host string, options ...LoginOption) error { - operation := &loginOperation{} for _, option := range options { - option(operation) + option(&loginOperation{host, c}) + } + + reg, err := remote.NewRegistry(host) + if err != nil { + return err } - authorizerLoginOpts := []auth.LoginOption{ - auth.WithLoginContext(ctx(c.out, c.debug)), - auth.WithLoginHostname(host), - auth.WithLoginUsername(operation.username), - auth.WithLoginSecret(operation.password), - auth.WithLoginUserAgent(version.GetUserAgent()), - auth.WithLoginTLS(operation.certFile, operation.keyFile, operation.caFile), + reg.PlainHTTP = c.plainHTTP + reg.Client = c.authorizer + + ctx := context.Background() + cred, err := c.authorizer.Credential(ctx, host) + if err != nil { + return fmt.Errorf("fetching credentials for %q: %w", host, err) } - if operation.insecure { - authorizerLoginOpts = append(authorizerLoginOpts, auth.WithLoginInsecure()) + + if err := reg.Ping(ctx); err != nil { + return fmt.Errorf("authenticating to %q: %w", host, err) } - if err := c.authorizer.LoginWithOpts(authorizerLoginOpts...); err != nil { + + key := credentials.ServerAddressFromRegistry(host) + if err := c.credentialsStore.Put(ctx, key, cred); err != nil { return err } + fmt.Fprintln(c.out, "Login Succeeded") return nil } // LoginOptBasicAuth returns a function that sets the username/password settings on login func LoginOptBasicAuth(username string, password string) LoginOption { - return func(operation *loginOperation) { - operation.username = username - operation.password = password + return func(o *loginOperation) { + o.client.username = username + o.client.password = password + o.client.authorizer.Credential = auth.StaticCredential(o.host, auth.Credential{Username: username, Password: password}) } } +// LoginOptPlainText returns a function that allows plaintext (HTTP) login +func LoginOptPlainText(isPlainText bool) LoginOption { + return func(o *loginOperation) { + o.client.plainHTTP = isPlainText + } +} + +func ensureTLSConfig(client *auth.Client) (*tls.Config, error) { + var transport *http.Transport + + switch t := client.Client.Transport.(type) { + case *http.Transport: + transport = t + case *retry.Transport: + switch t := t.Base.(type) { + case *http.Transport: + transport = t + } + } + + if transport == nil { + // we don't know how to access the http.Transport, most likely the + // auth.Client.Client was provided by API user + return nil, fmt.Errorf("unable to access TLS client configuration, the provided HTTP Transport is not supported, given: %T", client.Client.Transport) + } + + if transport.TLSClientConfig == nil { + transport.TLSClientConfig = &tls.Config{} + } + + return transport.TLSClientConfig, nil +} + // LoginOptInsecure returns a function that sets the insecure setting on login func LoginOptInsecure(insecure bool) LoginOption { - return func(operation *loginOperation) { - operation.insecure = insecure + return func(o *loginOperation) { + tlsConfig, err := ensureTLSConfig(o.client.authorizer) + + if err != nil { + panic(err) + } + + tlsConfig.InsecureSkipVerify = insecure } } // LoginOptTLSClientConfig returns a function that sets the TLS settings on login. func LoginOptTLSClientConfig(certFile, keyFile, caFile string) LoginOption { - return func(operation *loginOperation) { - operation.certFile = certFile - operation.keyFile = keyFile - operation.caFile = caFile + return func(o *loginOperation) { + if (certFile == "" || keyFile == "") && caFile == "" { + return + } + tlsConfig, err := ensureTLSConfig(o.client.authorizer) + if err != nil { + panic(err) + } + + if certFile != "" && keyFile != "" { + authCert, err := tls.LoadX509KeyPair(certFile, keyFile) + if err != nil { + panic(err) + } + tlsConfig.Certificates = []tls.Certificate{authCert} + } + + if caFile != "" { + certPool := x509.NewCertPool() + ca, err := os.ReadFile(caFile) + if err != nil { + panic(err) + } + if !certPool.AppendCertsFromPEM(ca) { + panic(fmt.Errorf("unable to parse CA file: %q", caFile)) + } + tlsConfig.RootCAs = certPool + } } } @@ -338,7 +380,8 @@ func (c *Client) Logout(host string, opts ...LogoutOption) error { for _, opt := range opts { opt(operation) } - if err := c.authorizer.Logout(ctx(c.out, c.debug), host); err != nil { + + if err := credentials.Logout(context.Background(), c.credentialsStore, host); err != nil { return err } fmt.Fprintf(c.out, "Removing login credentials for %s\n", host) @@ -393,8 +436,9 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { return nil, errors.New( "must specify at least one layer to pull (chart/prov)") } - memoryStore := content.NewMemory() + memoryStore := memory.New() allowedMediaTypes := []string{ + ocispec.MediaTypeImageManifest, ConfigMediaType, } minNumDescriptors := 1 // 1 for the config @@ -410,18 +454,34 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { } var descriptors, layers []ocispec.Descriptor - remotesResolver, err := c.resolver(parsedRef.orasReference) + + repository, err := remote.NewRepository(parsedRef.String()) if err != nil { return nil, err } - registryStore := content.Registry{Resolver: remotesResolver} + repository.PlainHTTP = c.plainHTTP + repository.Client = c.authorizer - manifest, err := oras.Copy(ctx(c.out, c.debug), registryStore, parsedRef.String(), memoryStore, "", - oras.WithPullEmptyNameAllowed(), - oras.WithAllowedMediaTypes(allowedMediaTypes), - oras.WithLayerDescriptors(func(l []ocispec.Descriptor) { - layers = l - })) + ctx := context.Background() + + sort.Strings(allowedMediaTypes) + + var mu sync.Mutex + manifest, err := oras.Copy(ctx, repository, parsedRef.String(), memoryStore, "", oras.CopyOptions{ + CopyGraphOptions: oras.CopyGraphOptions{ + PreCopy: func(_ context.Context, desc ocispec.Descriptor) error { + mediaType := desc.MediaType + if i := sort.SearchStrings(allowedMediaTypes, mediaType); i >= len(allowedMediaTypes) || allowedMediaTypes[i] != mediaType { + return errors.Errorf("media type %q is not allowed, found in descriptor with digest: %q", mediaType, desc.Digest) + } + + mu.Lock() + layers = append(layers, desc) + mu.Unlock() + return nil + }, + }, + }) if err != nil { return nil, err } @@ -480,54 +540,37 @@ func (c *Client) Pull(ref string, options ...PullOption) (*PullResult, error) { Prov: &DescriptorPullSummary{}, Ref: parsedRef.String(), } - var getManifestErr error - if _, manifestData, ok := memoryStore.Get(manifest); !ok { - getManifestErr = errors.Errorf("Unable to retrieve blob with digest %s", manifest.Digest) - } else { - result.Manifest.Data = manifestData - } - if getManifestErr != nil { - return nil, getManifestErr + + result.Manifest.Data, err = content.FetchAll(ctx, memoryStore, manifest) + if err != nil { + return nil, fmt.Errorf("unable to retrieve blob with digest %s: %w", manifest.Digest, err) } - var getConfigDescriptorErr error - if _, configData, ok := memoryStore.Get(*configDescriptor); !ok { - getConfigDescriptorErr = errors.Errorf("Unable to retrieve blob with digest %s", configDescriptor.Digest) - } else { - result.Config.Data = configData - var meta *chart.Metadata - if err := json.Unmarshal(configData, &meta); err != nil { - return nil, err - } - result.Chart.Meta = meta + + result.Config.Data, err = content.FetchAll(ctx, memoryStore, *configDescriptor) + if err != nil { + return nil, fmt.Errorf("unable to retrieve blob with digest %s: %w", configDescriptor.Digest, err) } - if getConfigDescriptorErr != nil { - return nil, getConfigDescriptorErr + + if err := json.Unmarshal(result.Config.Data, &result.Chart.Meta); err != nil { + return nil, err } + if operation.withChart { - var getChartDescriptorErr error - if _, chartData, ok := memoryStore.Get(*chartDescriptor); !ok { - getChartDescriptorErr = errors.Errorf("Unable to retrieve blob with digest %s", chartDescriptor.Digest) - } else { - result.Chart.Data = chartData - result.Chart.Digest = chartDescriptor.Digest.String() - result.Chart.Size = chartDescriptor.Size - } - if getChartDescriptorErr != nil { - return nil, getChartDescriptorErr + result.Chart.Data, err = content.FetchAll(ctx, memoryStore, *chartDescriptor) + if err != nil { + return nil, fmt.Errorf("unable to retrieve blob with digest %s: %w", chartDescriptor.Digest, err) } + result.Chart.Digest = chartDescriptor.Digest.String() + result.Chart.Size = chartDescriptor.Size } + if operation.withProv && !provMissing { - var getProvDescriptorErr error - if _, provData, ok := memoryStore.Get(*provDescriptor); !ok { - getProvDescriptorErr = errors.Errorf("Unable to retrieve blob with digest %s", provDescriptor.Digest) - } else { - result.Prov.Data = provData - result.Prov.Digest = provDescriptor.Digest.String() - result.Prov.Size = provDescriptor.Size - } - if getProvDescriptorErr != nil { - return nil, getProvDescriptorErr + result.Prov.Data, err = content.FetchAll(ctx, memoryStore, *provDescriptor) + if err != nil { + return nil, fmt.Errorf("unable to retrieve blob with digest %s: %w", provDescriptor.Digest, err) } + result.Prov.Digest = provDescriptor.Digest.String() + result.Prov.Size = provDescriptor.Size } fmt.Fprintf(c.out, "Pulled: %s\n", result.Ref) @@ -615,8 +658,11 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu "strict mode enabled, ref basename and tag must match the chart name and version") } } - memoryStore := content.NewMemory() - chartDescriptor, err := memoryStore.Add("", ChartLayerMediaType, data) + + ctx := context.Background() + + memoryStore := memory.New() + chartDescriptor, err := oras.PushBytes(ctx, memoryStore, ChartLayerMediaType, data) if err != nil { return nil, err } @@ -626,43 +672,57 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu return nil, err } - configDescriptor, err := memoryStore.Add("", ConfigMediaType, configData) + configDescriptor, err := oras.PushBytes(ctx, memoryStore, ConfigMediaType, configData) if err != nil { return nil, err } - descriptors := []ocispec.Descriptor{chartDescriptor} + layers := []ocispec.Descriptor{chartDescriptor} var provDescriptor ocispec.Descriptor if operation.provData != nil { - provDescriptor, err = memoryStore.Add("", ProvLayerMediaType, operation.provData) + provDescriptor, err = oras.PushBytes(ctx, memoryStore, ProvLayerMediaType, operation.provData) if err != nil { return nil, err } - descriptors = append(descriptors, provDescriptor) + layers = append(layers, provDescriptor) } + // sort layers for determinism, similar to how ORAS v1 does it + sort.Slice(layers, func(i, j int) bool { + return layers[i].Digest < layers[j].Digest + }) + ociAnnotations := generateOCIAnnotations(meta, operation.creationTime) + manifest := ocispec.Manifest{ + Versioned: specs.Versioned{SchemaVersion: 2}, + Config: configDescriptor, + Layers: layers, + Annotations: ociAnnotations, + } - manifestData, manifest, err := content.GenerateManifest(&configDescriptor, ociAnnotations, descriptors...) + manifestData, err := json.Marshal(manifest) if err != nil { return nil, err } - if err := memoryStore.StoreManifest(parsedRef.String(), manifest, manifestData); err != nil { + manifestDescriptor, err := oras.TagBytes(ctx, memoryStore, ocispec.MediaTypeImageManifest, manifestData, ref) + if err != nil { return nil, err } - remotesResolver, err := c.resolver(parsedRef.orasReference) + repository, err := remote.NewRepository(parsedRef.String()) if err != nil { return nil, err } - registryStore := content.Registry{Resolver: remotesResolver} - _, err = oras.Copy(ctx(c.out, c.debug), memoryStore, parsedRef.orasReference.String(), registryStore, "", - oras.WithNameValidation(nil)) + repository.PlainHTTP = c.plainHTTP + repository.Client = c.authorizer + + manifestDescriptor, err = oras.ExtendedCopy(ctx, memoryStore, parsedRef.String(), repository, parsedRef.String(), oras.DefaultExtendedCopyOptions) if err != nil { return nil, err } + chartSummary := &descriptorPushSummaryWithMeta{ Meta: meta, } @@ -670,8 +730,8 @@ func (c *Client) Push(data []byte, ref string, options ...PushOption) (*PushResu chartSummary.Size = chartDescriptor.Size result := &PushResult{ Manifest: &descriptorPushSummary{ - Digest: manifest.Digest.String(), - Size: manifest.Size, + Digest: manifestDescriptor.Digest.String(), + Size: manifestDescriptor.Size, }, Config: &descriptorPushSummary{ Digest: configDescriptor.Digest.String(), @@ -725,27 +785,29 @@ func (c *Client) Tags(ref string) ([]string, error) { return nil, err } - repository := registryremote.Repository{ - Reference: parsedReference, - Client: c.registryAuthorizer, - PlainHTTP: c.plainHTTP, - } - - var registryTags []string - - registryTags, err = registry.Tags(ctx(c.out, c.debug), &repository) + ctx := context.Background() + repository, err := remote.NewRepository(parsedReference.String()) if err != nil { return nil, err } + repository.PlainHTTP = c.plainHTTP + repository.Client = c.authorizer var tagVersions []*semver.Version - for _, tag := range registryTags { - // Change underscore (_) back to plus (+) for Helm - // See https://github.com/helm/helm/issues/10166 - tagVersion, err := semver.StrictNewVersion(strings.ReplaceAll(tag, "_", "+")) - if err == nil { - tagVersions = append(tagVersions, tagVersion) + err = repository.Tags(ctx, "", func(tags []string) error { + for _, tag := range tags { + // Change underscore (_) back to plus (+) for Helm + // See https://github.com/helm/helm/issues/10166 + tagVersion, err := semver.StrictNewVersion(strings.ReplaceAll(tag, "_", "+")) + if err == nil { + tagVersions = append(tagVersions, tagVersion) + } } + + return nil + }) + if err != nil { + return nil, err } // Sort the collection @@ -762,30 +824,28 @@ func (c *Client) Tags(ref string) ([]string, error) { } // Resolve a reference to a descriptor. -func (c *Client) Resolve(ref string) (*ocispec.Descriptor, error) { - ctx := context.Background() - parsedRef, err := newReference(ref) +func (c *Client) Resolve(ref string) (desc ocispec.Descriptor, err error) { + remoteRepository, err := remote.NewRepository(ref) if err != nil { - return nil, err - } - if parsedRef.Registry == "" { - return nil, nil + return desc, err } + remoteRepository.PlainHTTP = c.plainHTTP - remotesResolver, err := c.resolver(parsedRef.orasReference) + parsedReference, err := newReference(ref) if err != nil { - return nil, err + return desc, err } - _, desc, err := remotesResolver.Resolve(ctx, ref) - return &desc, err + ctx := context.Background() + parsedString := parsedReference.String() + return remoteRepository.Resolve(ctx, parsedString) } // ValidateReference for path and version func (c *Client) ValidateReference(ref, version string, u *url.URL) (*url.URL, error) { var tag string - registryReference, err := newReference(u.Path) + registryReference, err := newReference(u.Host + u.Path) if err != nil { return nil, err } @@ -800,19 +860,20 @@ func (c *Client) ValidateReference(ref, version string, u *url.URL) (*url.URL, e } if registryReference.Digest != "" { - if registryReference.Tag == "" { + if version == "" { // Install by digest only return u, nil } + u.Path = fmt.Sprintf("%s@%s", registryReference.Repository, registryReference.Digest) // Validate the tag if it was specified - path := registryReference.Registry + "/" + registryReference.Repository + ":" + registryReference.Tag + path := registryReference.Registry + "/" + registryReference.Repository + ":" + version desc, err := c.Resolve(path) if err != nil { // The resource does not have to be tagged when digest is specified return u, nil } - if desc != nil && desc.Digest.String() != registryReference.Digest { + if desc.Digest.String() != registryReference.Digest { return nil, errors.Errorf("chart reference digest mismatch: %s is not %s", desc.Digest.String(), registryReference.Digest) } return u, nil @@ -842,7 +903,7 @@ func (c *Client) ValidateReference(ref, version string, u *url.URL) (*url.URL, e } } - u.Path = fmt.Sprintf("%s/%s:%s", registryReference.Registry, registryReference.Repository, tag) + u.Path = fmt.Sprintf("%s:%s", registryReference.Repository, tag) return u, err } diff --git a/pkg/registry/client_http_test.go b/pkg/registry/client_http_test.go index 872d19fc9..043fd4205 100644 --- a/pkg/registry/client_http_test.go +++ b/pkg/registry/client_http_test.go @@ -17,12 +17,13 @@ limitations under the License. package registry import ( + "errors" "fmt" "os" "testing" - "github.com/containerd/containerd/errdefs" "github.com/stretchr/testify/suite" + "oras.land/oras-go/v2/content" ) type HTTPRegistryClientTestSuite struct { @@ -42,6 +43,18 @@ func (suite *HTTPRegistryClientTestSuite) TearDownSuite() { os.RemoveAll(suite.WorkspaceDir) } +func (suite *HTTPRegistryClientTestSuite) Test_0_Login() { + err := suite.RegistryClient.Login(suite.DockerRegistryHost, + LoginOptBasicAuth("badverybad", "ohsobad"), + LoginOptPlainText(true)) + suite.NotNil(err, "error logging into registry with bad credentials") + + err = suite.RegistryClient.Login(suite.DockerRegistryHost, + LoginOptBasicAuth(testUsername, testPassword), + LoginOptPlainText(true)) + suite.Nil(err, "no error logging into registry with good credentials") +} + func (suite *HTTPRegistryClientTestSuite) Test_1_Push() { testPush(&suite.TestSuite) } @@ -60,7 +73,7 @@ func (suite *HTTPRegistryClientTestSuite) Test_4_ManInTheMiddle() { // returns content that does not match the expected digest _, err := suite.RegistryClient.Pull(ref) suite.NotNil(err) - suite.True(errdefs.IsFailedPrecondition(err)) + suite.True(errors.Is(err, content.ErrMismatchedDigest)) } func TestHTTPRegistryClientTestSuite(t *testing.T) { diff --git a/pkg/registry/client_insecure_tls_test.go b/pkg/registry/client_insecure_tls_test.go index 5ba79b2ea..accbf1670 100644 --- a/pkg/registry/client_insecure_tls_test.go +++ b/pkg/registry/client_insecure_tls_test.go @@ -66,7 +66,10 @@ func (suite *InsecureTLSRegistryClientTestSuite) Test_3_Tags() { func (suite *InsecureTLSRegistryClientTestSuite) Test_4_Logout() { err := suite.RegistryClient.Logout("this-host-aint-real:5000") - suite.NotNil(err, "error logging out of registry that has no entry") + if err != nil { + // credential backend for mac generates an error + suite.NotNil(err, "failed to delete the credential for this-host-aint-real:5000") + } err = suite.RegistryClient.Logout(suite.DockerRegistryHost) suite.Nil(err, "no error logging out of registry") diff --git a/pkg/registry/client_test.go b/pkg/registry/client_test.go new file mode 100644 index 000000000..4c5a78849 --- /dev/null +++ b/pkg/registry/client_test.go @@ -0,0 +1,33 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package registry + +import ( + "testing" + + "github.com/containerd/containerd/remotes" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestNewClientResolverNotSupported(t *testing.T) { + var r remotes.Resolver + + client, err := NewClient(ClientOptResolver(r)) + require.Equal(t, err, errDeprecatedRemote) + assert.Nil(t, client) +} diff --git a/pkg/registry/client_tls_test.go b/pkg/registry/client_tls_test.go index 518cfced4..156ae4816 100644 --- a/pkg/registry/client_tls_test.go +++ b/pkg/registry/client_tls_test.go @@ -66,7 +66,10 @@ func (suite *TLSRegistryClientTestSuite) Test_3_Tags() { func (suite *TLSRegistryClientTestSuite) Test_4_Logout() { err := suite.RegistryClient.Logout("this-host-aint-real:5000") - suite.NotNil(err, "error logging out of registry that has no entry") + if err != nil { + // credential backend for mac generates an error + suite.NotNil(err, "failed to delete the credential for this-host-aint-real:5000") + } err = suite.RegistryClient.Logout(suite.DockerRegistryHost) suite.Nil(err, "no error logging out of registry") diff --git a/pkg/registry/reference.go b/pkg/registry/reference.go index 9b99d73bf..b5677761d 100644 --- a/pkg/registry/reference.go +++ b/pkg/registry/reference.go @@ -19,11 +19,11 @@ package registry import ( "strings" - orasregistry "oras.land/oras-go/pkg/registry" + "oras.land/oras-go/v2/registry" ) type reference struct { - orasReference orasregistry.Reference + orasReference registry.Reference Registry string Repository string Tag string @@ -60,7 +60,7 @@ func newReference(raw string) (result reference, err error) { } } - result.orasReference, err = orasregistry.ParseReference(raw) + result.orasReference, err = registry.ParseReference(raw) if err != nil { return result, err } diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 326d3efcd..fb6103369 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -18,24 +18,20 @@ package registry // import "helm.sh/helm/v4/pkg/registry" import ( "bytes" - "context" "fmt" "io" "net/http" "strings" "time" + "helm.sh/helm/v4/internal/tlsutil" + "helm.sh/helm/v4/pkg/chart" + "helm.sh/helm/v4/pkg/chart/loader" helmtime "helm.sh/helm/v4/pkg/time" "github.com/Masterminds/semver/v3" ocispec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/pkg/errors" - "github.com/sirupsen/logrus" - orascontext "oras.land/oras-go/pkg/context" - - "helm.sh/helm/v4/internal/tlsutil" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" ) var immutableOciAnnotations = []string{ @@ -43,7 +39,7 @@ var immutableOciAnnotations = []string{ ocispec.AnnotationTitle, } -// IsOCI determines whether or not a URL is to be treated as an OCI URL +// IsOCI determines whether a URL is to be treated as an OCI URL func IsOCI(url string) bool { return strings.HasPrefix(url, fmt.Sprintf("%s://", OCIScheme)) } @@ -103,17 +99,6 @@ func extractChartMeta(chartData []byte) (*chart.Metadata, error) { return ch.Metadata, nil } -// ctx retrieves a fresh context. -// disable verbose logging coming from ORAS (unless debug is enabled) -func ctx(out io.Writer, debug bool) context.Context { - if !debug { - return orascontext.Background() - } - ctx := orascontext.WithLoggerFromWriter(context.Background(), out) - orascontext.GetLogger(ctx).Logger.SetLevel(logrus.DebugLevel) - return ctx -} - // NewRegistryClientWithTLS is a helper function to create a new registry client with TLS enabled. func NewRegistryClientWithTLS(out io.Writer, certFile, keyFile, caFile string, insecureSkipTLSverify bool, registryConfig string, debug bool) (*Client, error) { tlsConf, err := tlsutil.NewClientTLS(certFile, keyFile, caFile, insecureSkipTLSverify) diff --git a/pkg/registry/utils_test.go b/pkg/registry/utils_test.go index d064295cd..c8be02a9a 100644 --- a/pkg/registry/utils_test.go +++ b/pkg/registry/utils_test.go @@ -88,7 +88,6 @@ func setup(suite *TestSuite, tlsEnabled, insecure bool) *registry.Registry { ClientOptEnableCache(true), ClientOptWriter(suite.Out), ClientOptCredentialsFile(credentialsFile), - ClientOptResolver(nil), ClientOptBasicAuth(testUsername, testPassword), } @@ -141,14 +140,11 @@ func setup(suite *TestSuite, tlsEnabled, insecure bool) *registry.Registry { config.HTTP.DrainTimeout = time.Duration(10) * time.Second config.Storage = map[string]configuration.Parameters{"inmemory": map[string]interface{}{}} - // Basic auth is not possible if we are serving HTTP. - if tlsEnabled { - config.Auth = configuration.Auth{ - "htpasswd": configuration.Parameters{ - "realm": "localhost", - "path": htpasswdPath, - }, - } + config.Auth = configuration.Auth{ + "htpasswd": configuration.Parameters{ + "realm": "localhost", + "path": htpasswdPath, + }, } // config tls @@ -277,7 +273,7 @@ func testPush(suite *TestSuite) { result, err := suite.RegistryClient.Push(chartData, ref, PushOptProvData(provData), PushOptCreationTime(testingChartCreationTime)) suite.Nil(err, "no error pushing good ref with prov") - _, err = suite.RegistryClient.Pull(ref) + _, err = suite.RegistryClient.Pull(ref, PullOptWithProv(true)) suite.Nil(err, "no error pulling a simple chart") // Validate the output diff --git a/pkg/repo/repotest/server.go b/pkg/repo/repotest/server.go index 7a6b1e0f2..125452261 100644 --- a/pkg/repo/repotest/server.go +++ b/pkg/repo/repotest/server.go @@ -163,9 +163,10 @@ func (srv *OCIServer) Run(t *testing.T, opts ...OCIServerOpt) { err = registryClient.Login( srv.RegistryURL, ociRegistry.LoginOptBasicAuth(srv.TestUsername, srv.TestPassword), - ociRegistry.LoginOptInsecure(false)) + ociRegistry.LoginOptInsecure(true), + ociRegistry.LoginOptPlainText(true)) if err != nil { - t.Fatalf("error logging into registry with good credentials") + t.Fatalf("error logging into registry with good credentials: %v", err) } ref := fmt.Sprintf("%s/u/ocitestuser/oci-dependent-chart:0.1.0", srv.RegistryURL) From d6375957354becca07321781506f429309a22d81 Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Mon, 27 Jan 2025 18:40:38 -0800 Subject: [PATCH 139/206] chore: Remove unused `WaitAndGetCompletedPodPhase` Signed-off-by: George Jenkins --- pkg/kube/client.go | 32 -------------------------------- pkg/kube/fake/fake.go | 34 ++++++++++++---------------------- pkg/kube/fake/printer.go | 6 ------ pkg/kube/interface.go | 5 ----- 4 files changed, 12 insertions(+), 65 deletions(-) diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 79aa98535..0b84f5219 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -824,35 +824,3 @@ func scrubValidationError(err error) error { } return err } - -// WaitAndGetCompletedPodPhase waits up to a timeout until a pod enters a completed phase -// and returns said phase (PodSucceeded or PodFailed qualify). -func (c *Client) WaitAndGetCompletedPodPhase(name string, timeout time.Duration) (v1.PodPhase, error) { - client, err := c.getKubeClient() - if err != nil { - return v1.PodUnknown, err - } - to := int64(timeout) - watcher, err := client.CoreV1().Pods(c.namespace()).Watch(context.Background(), metav1.ListOptions{ - FieldSelector: fmt.Sprintf("metadata.name=%s", name), - TimeoutSeconds: &to, - }) - if err != nil { - return v1.PodUnknown, err - } - - for event := range watcher.ResultChan() { - p, ok := event.Object.(*v1.Pod) - if !ok { - return v1.PodUnknown, fmt.Errorf("%s not a pod", name) - } - switch p.Status.Phase { - case v1.PodFailed: - return v1.PodFailed, nil - case v1.PodSucceeded: - return v1.PodSucceeded, nil - } - } - - return v1.PodUnknown, err -} diff --git a/pkg/kube/fake/fake.go b/pkg/kube/fake/fake.go index a60d9f34e..ceca3c113 100644 --- a/pkg/kube/fake/fake.go +++ b/pkg/kube/fake/fake.go @@ -21,7 +21,6 @@ import ( "io" "time" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" @@ -34,19 +33,18 @@ import ( // delegates all its calls to `PrintingKubeClient` type FailingKubeClient struct { PrintingKubeClient - CreateError error - GetError error - WaitError error - DeleteError error - DeleteWithPropagationError error - WatchUntilReadyError error - UpdateError error - BuildError error - BuildTableError error - BuildDummy bool - BuildUnstructuredError error - WaitAndGetCompletedPodPhaseError error - WaitDuration time.Duration + CreateError error + GetError error + WaitError error + DeleteError error + DeleteWithPropagationError error + WatchUntilReadyError error + UpdateError error + BuildError error + BuildTableError error + BuildDummy bool + BuildUnstructuredError error + WaitDuration time.Duration } // Create returns the configured error if set or prints @@ -133,14 +131,6 @@ func (f *FailingKubeClient) BuildTable(r io.Reader, _ bool) (kube.ResourceList, return f.PrintingKubeClient.BuildTable(r, false) } -// WaitAndGetCompletedPodPhase returns the configured error if set or prints -func (f *FailingKubeClient) WaitAndGetCompletedPodPhase(s string, d time.Duration) (v1.PodPhase, error) { - if f.WaitAndGetCompletedPodPhaseError != nil { - return v1.PodSucceeded, f.WaitAndGetCompletedPodPhaseError - } - return f.PrintingKubeClient.WaitAndGetCompletedPodPhase(s, d) -} - // DeleteWithPropagationPolicy returns the configured error if set or prints func (f *FailingKubeClient) DeleteWithPropagationPolicy(resources kube.ResourceList, policy metav1.DeletionPropagation) (*kube.Result, []error) { if f.DeleteWithPropagationError != nil { diff --git a/pkg/kube/fake/printer.go b/pkg/kube/fake/printer.go index b38e8c084..0b957d725 100644 --- a/pkg/kube/fake/printer.go +++ b/pkg/kube/fake/printer.go @@ -21,7 +21,6 @@ import ( "strings" "time" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" @@ -111,11 +110,6 @@ func (p *PrintingKubeClient) BuildTable(_ io.Reader, _ bool) (kube.ResourceList, return []*resource.Info{}, nil } -// WaitAndGetCompletedPodPhase implements KubeClient WaitAndGetCompletedPodPhase. -func (p *PrintingKubeClient) WaitAndGetCompletedPodPhase(_ string, _ time.Duration) (v1.PodPhase, error) { - return v1.PodSucceeded, nil -} - // DeleteWithPropagationPolicy implements KubeClient delete. // // It only prints out the content to be deleted. diff --git a/pkg/kube/interface.go b/pkg/kube/interface.go index ce42ed950..7dc7ad8bc 100644 --- a/pkg/kube/interface.go +++ b/pkg/kube/interface.go @@ -20,7 +20,6 @@ import ( "io" "time" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" ) @@ -64,10 +63,6 @@ type Interface interface { // Validates against OpenAPI schema if validate is true. Build(reader io.Reader, validate bool) (ResourceList, error) - // WaitAndGetCompletedPodPhase waits up to a timeout until a pod enters a completed phase - // and returns said phase (PodSucceeded or PodFailed qualify). - WaitAndGetCompletedPodPhase(name string, timeout time.Duration) (v1.PodPhase, error) - // IsReachable checks whether the client is able to connect to the cluster. IsReachable() error } From 5f64fe666371113a9057ff9c7938e2da5ad4a0b3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 21:17:19 +0000 Subject: [PATCH 140/206] build(deps): bump golangci/golangci-lint-action from 6.2.0 to 6.3.0 Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 6.2.0 to 6.3.0. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/ec5d18412c0aeab7936cb16880d708ba2a64e1ae...e60da84bfae8c7920a47be973d75e15710aa8bd7) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index eb643fc82..99481d611 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -21,6 +21,6 @@ jobs: go-version: '1.23' check-latest: true - name: golangci-lint - uses: golangci/golangci-lint-action@ec5d18412c0aeab7936cb16880d708ba2a64e1ae #pin@6.2.0 + uses: golangci/golangci-lint-action@e60da84bfae8c7920a47be973d75e15710aa8bd7 #pin@6.3.0 with: version: v1.62 From 54753d64dc26687e65884b799f4f75c92f006ceb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 21:55:15 +0000 Subject: [PATCH 141/206] build(deps): bump golang.org/x/term from 0.28.0 to 0.29.0 Bumps [golang.org/x/term](https://github.com/golang/term) from 0.28.0 to 0.29.0. - [Commits](https://github.com/golang/term/compare/v0.28.0...v0.29.0) --- updated-dependencies: - dependency-name: golang.org/x/term dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 968dc2246..ae9eab763 100644 --- a/go.mod +++ b/go.mod @@ -34,7 +34,7 @@ require ( github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/crypto v0.32.0 - golang.org/x/term v0.28.0 + golang.org/x/term v0.29.0 golang.org/x/text v0.21.0 k8s.io/api v0.32.1 k8s.io/apiextensions-apiserver v0.32.1 @@ -163,7 +163,7 @@ require ( golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.29.0 // indirect + golang.org/x/sys v0.30.0 // indirect golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.26.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect diff --git a/go.sum b/go.sum index bd9fc6626..87037b37d 100644 --- a/go.sum +++ b/go.sum @@ -461,8 +461,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -470,8 +470,8 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= From 56b40ad40fb8ce82b97e83255f1fad7abb5e6147 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 20:05:52 +0000 Subject: [PATCH 142/206] build(deps): bump golang.org/x/text from 0.21.0 to 0.22.0 Bumps [golang.org/x/text](https://github.com/golang/text) from 0.21.0 to 0.22.0. - [Release notes](https://github.com/golang/text/releases) - [Commits](https://github.com/golang/text/compare/v0.21.0...v0.22.0) --- updated-dependencies: - dependency-name: golang.org/x/text dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index ae9eab763..f89eb4ce8 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/xeipuuv/gojsonschema v1.2.0 golang.org/x/crypto v0.32.0 golang.org/x/term v0.29.0 - golang.org/x/text v0.21.0 + golang.org/x/text v0.22.0 k8s.io/api v0.32.1 k8s.io/apiextensions-apiserver v0.32.1 k8s.io/apimachinery v0.32.1 @@ -162,7 +162,7 @@ require ( golang.org/x/mod v0.21.0 // indirect golang.org/x/net v0.33.0 // indirect golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sync v0.10.0 // indirect + golang.org/x/sync v0.11.0 // indirect golang.org/x/sys v0.30.0 // indirect golang.org/x/time v0.7.0 // indirect golang.org/x/tools v0.26.0 // indirect diff --git a/go.sum b/go.sum index 87037b37d..a811b14cc 100644 --- a/go.sum +++ b/go.sum @@ -438,8 +438,8 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -479,8 +479,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ= golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= From c0744a1a8c57f0055fac98b205dc20adf46c91bb Mon Sep 17 00:00:00 2001 From: Edith Puclla <58795858+edithturn@users.noreply.github.com> Date: Fri, 7 Feb 2025 11:47:48 +0000 Subject: [PATCH 143/206] Add Percona to the list of organizations using Helm Adding Percona to the list of organizations using Helm. Percona utilizes Helm for managing its open-source database solutions. Signed-off-by: Edith Puclla <58795858+edithturn@users.noreply.github.com> --- ADOPTERS.md | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/ADOPTERS.md b/ADOPTERS.md index e5ee1e7a2..a83519fea 100644 --- a/ADOPTERS.md +++ b/ADOPTERS.md @@ -5,19 +5,21 @@ # Organizations Using Helm -- [IBM](https://www.ibm.com) -- [InfoCert](https://www.infocert.it/) -- [Microsoft](https://microsoft.com) -- [Omnistrate](https://omnistrate.com) -- [Octopus Deploy](https://octopus.com/) -- [New Relic](https://www.newrelic.com) -- [Qovery](https://www.qovery.com/) -- [Samsung SDS](https://www.samsungsds.com/) -- [Softonic](https://hello.softonic.com/) -- [SyncTune](https://mb-consulting.dev) -- [Syself](https://syself.com) -- [Ville de Montreal](https://montreal.ca) -- [Intercept](https://Intercept.cloud) -- [Oracle](www.oracle.com) +- [IBM](https://www.ibm.com) +- [InfoCert](https://www.infocert.it/) +- [Intercept](https://Intercept.cloud) +- [Microsoft](https://microsoft.com) +- [New Relic](https://www.newrelic.com) +- [Octopus Deploy](https://octopus.com/) +- [Omnistrate](https://omnistrate.com) +- [Oracle](www.oracle.com) +- [Percona](https://www.percona.com) +- [Qovery](https://www.qovery.com/) +- [Samsung SDS](https://www.samsungsds.com/) +- [Softonic](https://hello.softonic.com/) +- [SyncTune](https://mb-consulting.dev) +- [Syself](https://syself.com) +- [Ville de Montreal](https://montreal.ca) + _This file is part of the CNCF official documentation for projects._ From c76b1c1e6a1952de9bbbdfff838128b83455b4a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Feb 2025 21:49:26 +0000 Subject: [PATCH 144/206] build(deps): bump golang.org/x/crypto from 0.32.0 to 0.33.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.32.0 to 0.33.0. - [Commits](https://github.com/golang/crypto/compare/v0.32.0...v0.33.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f89eb4ce8..a92840897 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/crypto v0.32.0 + golang.org/x/crypto v0.33.0 golang.org/x/term v0.29.0 golang.org/x/text v0.22.0 k8s.io/api v0.32.1 diff --git a/go.sum b/go.sum index a811b14cc..0c60af24e 100644 --- a/go.sum +++ b/go.sum @@ -401,8 +401,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= From 274d43c10d1c62f921db1be9b57ce1a722196e9f Mon Sep 17 00:00:00 2001 From: Zhanwei Li Date: Sat, 8 Feb 2025 10:04:14 +0800 Subject: [PATCH 145/206] feat: Enhance JSON value parsing in Helm CLI - Add support for parsing full JSON objects with `--set-json` - Update documentation to clarify JSON value input formats - Improve test coverage for value parsing scenarios - Modify `MergeValues` to handle both key=value and JSON object formats Signed-off-by: Zhanwei Li --- cmd/helm/flags.go | 2 +- cmd/helm/install.go | 5 +- cmd/helm/upgrade.go | 2 +- pkg/cli/values/options.go | 16 +++++- pkg/cli/values/options_test.go | 96 +++++++++++++++++++++++++++++++++- 5 files changed, 115 insertions(+), 6 deletions(-) diff --git a/cmd/helm/flags.go b/cmd/helm/flags.go index 3d159babd..8d0f644d6 100644 --- a/cmd/helm/flags.go +++ b/cmd/helm/flags.go @@ -47,7 +47,7 @@ func addValueOptionsFlags(f *pflag.FlagSet, v *values.Options) { f.StringArrayVar(&v.Values, "set", []string{}, "set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") f.StringArrayVar(&v.StringValues, "set-string", []string{}, "set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)") f.StringArrayVar(&v.FileValues, "set-file", []string{}, "set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)") - f.StringArrayVar(&v.JSONValues, "set-json", []string{}, "set JSON values on the command line (can specify multiple or separate values with commas: key1=jsonval1,key2=jsonval2)") + f.StringArrayVar(&v.JSONValues, "set-json", []string{}, "set JSON values on the command line (can specify multiple or separate values with commas: key1=jsonval1,key2=jsonval2 or using json format: {\"key1\": jsonval1, \"key2\": \"jsonval2\"})") f.StringArrayVar(&v.LiteralValues, "set-literal", []string{}, "set a literal STRING value on the command line") } diff --git a/cmd/helm/install.go b/cmd/helm/install.go index ec651140c..fe09dfc53 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -52,7 +52,7 @@ or use the '--set' flag and pass configuration from the command line, to force a string value use '--set-string'. You can use '--set-file' to set individual values from a file when the value itself is too long for the command line or is dynamically generated. You can also use '--set-json' to set json values -(scalars/objects/arrays) from the command line. +(scalars/objects/arrays) from the command line. Additionally, you can use '--set-json' and passing json object as a string. $ helm install -f myvalues.yaml myredis ./redis @@ -72,6 +72,9 @@ or $ helm install --set-json 'master.sidecars=[{"name":"sidecar","image":"myImage","imagePullPolicy":"Always","ports":[{"name":"portname","containerPort":1234}]}]' myredis ./redis +or + + $ helm install --set-json '{"master":{"sidecars":[{"name":"sidecar","image":"myImage","imagePullPolicy":"Always","ports":[{"name":"portname","containerPort":1234}]}]}}' myredis ./redis You can specify the '--values'/'-f' flag multiple times. The priority will be given to the last (right-most) file specified. For example, if both myvalues.yaml and override.yaml diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 7b4267894..6684f9ebf 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -53,7 +53,7 @@ or use the '--set' flag and pass configuration from the command line, to force s values, use '--set-string'. You can use '--set-file' to set individual values from a file when the value itself is too long for the command line or is dynamically generated. You can also use '--set-json' to set json values -(scalars/objects/arrays) from the command line. +(scalars/objects/arrays) from the command line. Additionally, you can use '--set-json' and passing json object as a string. You can specify the '--values'/'-f' flag multiple times. The priority will be given to the last (right-most) file specified. For example, if both myvalues.yaml and override.yaml diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index 24c47ecba..d7086e8c3 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -17,6 +17,7 @@ limitations under the License. package values import ( + "encoding/json" "io" "net/url" "os" @@ -62,8 +63,19 @@ func (opts *Options) MergeValues(p getter.Providers) (map[string]interface{}, er // User specified a value via --set-json for _, value := range opts.JSONValues { - if err := strvals.ParseJSON(value, base); err != nil { - return nil, errors.Errorf("failed parsing --set-json data %s", value) + trimmedValue := strings.TrimSpace(value) + if len(trimmedValue) > 0 && trimmedValue[0] == '{' { + // If value is JSON object format, parse it as map + var jsonMap map[string]interface{} + if err := json.Unmarshal([]byte(trimmedValue), &jsonMap); err != nil { + return nil, errors.Errorf("failed parsing --set-json data using JSON format: %s", value) + } + base = mergeMaps(base, jsonMap) + } else { + // Otherwise, parse it as key=value format + if err := strvals.ParseJSON(value, base); err != nil { + return nil, errors.Errorf("failed parsing --set-json data %s", value) + } } } diff --git a/pkg/cli/values/options_test.go b/pkg/cli/values/options_test.go index 9182e3cc8..5197a1b5e 100644 --- a/pkg/cli/values/options_test.go +++ b/pkg/cli/values/options_test.go @@ -23,7 +23,7 @@ import ( "helm.sh/helm/v4/pkg/getter" ) -func TestMergeValues(t *testing.T) { +func TestMergeMaps(t *testing.T) { nestedMap := map[string]interface{}{ "foo": "bar", "baz": map[string]string{ @@ -86,3 +86,97 @@ func TestReadFile(t *testing.T) { t.Errorf("Expected error when has special strings") } } + +func TestMergeValues(t *testing.T) { + tests := []struct { + name string + opts Options + expected map[string]interface{} + wantErr bool + }{ + { + name: "set-json object", + opts: Options{ + JSONValues: []string{`{"foo": {"bar": "baz"}}`}, + }, + expected: map[string]interface{}{ + "foo": map[string]interface{}{ + "bar": "baz", + }, + }, + }, + { + name: "set-json key=value", + opts: Options{ + JSONValues: []string{"foo.bar=[1,2,3]"}, + }, + expected: map[string]interface{}{ + "foo": map[string]interface{}{ + "bar": []interface{}{1.0, 2.0, 3.0}, + }, + }, + }, + { + name: "set regular value", + opts: Options{ + Values: []string{"foo=bar"}, + }, + expected: map[string]interface{}{ + "foo": "bar", + }, + }, + { + name: "set string value", + opts: Options{ + StringValues: []string{"foo=123"}, + }, + expected: map[string]interface{}{ + "foo": "123", + }, + }, + { + name: "set literal value", + opts: Options{ + LiteralValues: []string{"foo=true"}, + }, + expected: map[string]interface{}{ + "foo": "true", + }, + }, + { + name: "multiple options", + opts: Options{ + Values: []string{"a=foo"}, + StringValues: []string{"b=bar"}, + JSONValues: []string{`{"c": "foo1"}`}, + LiteralValues: []string{"d=bar1"}, + }, + expected: map[string]interface{}{ + "a": "foo", + "b": "bar", + "c": "foo1", + "d": "bar1", + }, + }, + { + name: "invalid json", + opts: Options{ + JSONValues: []string{`{invalid`}, + }, + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := tt.opts.MergeValues(getter.Providers{}) + if (err != nil) != tt.wantErr { + t.Errorf("MergeValues() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !tt.wantErr && !reflect.DeepEqual(got, tt.expected) { + t.Errorf("MergeValues() = %v, want %v", got, tt.expected) + } + }) + } +} From 234d171da510c5e140f1ad494b2498448c9432db Mon Sep 17 00:00:00 2001 From: George Jenkins Date: Sat, 30 Nov 2024 23:46:18 -0800 Subject: [PATCH 146/206] Cleanup repotest Server constructors Signed-off-by: George Jenkins --- cmd/helm/dependency_build_test.go | 8 +- cmd/helm/dependency_update_test.go | 24 +-- cmd/helm/install_test.go | 16 +- cmd/helm/pull_test.go | 24 +-- cmd/helm/repo_add_test.go | 49 +++--- cmd/helm/repo_remove_test.go | 17 +- cmd/helm/repo_update_test.go | 32 ++-- cmd/helm/show_test.go | 8 +- pkg/downloader/chart_downloader_test.go | 33 ++-- pkg/downloader/manager_test.go | 39 ++--- pkg/repo/repotest/server.go | 222 +++++++++++------------- pkg/repo/repotest/server_test.go | 128 ++++++++++++-- pkg/repo/repotest/tlsconfig.go | 43 +++++ 13 files changed, 382 insertions(+), 261 deletions(-) create mode 100644 pkg/repo/repotest/tlsconfig.go diff --git a/cmd/helm/dependency_build_test.go b/cmd/helm/dependency_build_test.go index 189378ce5..1258db3f8 100644 --- a/cmd/helm/dependency_build_test.go +++ b/cmd/helm/dependency_build_test.go @@ -29,11 +29,11 @@ import ( ) func TestDependencyBuildCmd(t *testing.T) { - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testcharts/*.tgz") + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testcharts/*.tgz"), + ) defer srv.Stop() - if err != nil { - t.Fatal(err) - } rootDir := srv.Root() srv.LinkIndices() diff --git a/cmd/helm/dependency_update_test.go b/cmd/helm/dependency_update_test.go index 82a6b875d..7cf3e8e0a 100644 --- a/cmd/helm/dependency_update_test.go +++ b/cmd/helm/dependency_update_test.go @@ -32,10 +32,10 @@ import ( ) func TestDependencyUpdateCmd(t *testing.T) { - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testcharts/*.tgz") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testcharts/*.tgz"), + ) defer srv.Stop() t.Logf("Listening on directory %s", srv.Root()) @@ -151,10 +151,10 @@ func TestDependencyUpdateCmd_DoNotDeleteOldChartsOnError(t *testing.T) { defer resetEnv()() ensure.HelmHome(t) - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testcharts/*.tgz") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testcharts/*.tgz"), + ) defer srv.Stop() t.Logf("Listening on directory %s", srv.Root()) @@ -248,10 +248,10 @@ func TestDependencyUpdateCmd_WithRepoThatWasNotAdded(t *testing.T) { } func setupMockRepoServer(t *testing.T) *repotest.Server { - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testcharts/*.tgz") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testcharts/*.tgz"), + ) t.Logf("Listening on directory %s", srv.Root()) diff --git a/cmd/helm/install_test.go b/cmd/helm/install_test.go index e7b6e1dff..be8480423 100644 --- a/cmd/helm/install_test.go +++ b/cmd/helm/install_test.go @@ -27,19 +27,13 @@ import ( ) func TestInstall(t *testing.T) { - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testcharts/*.tgz*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testcharts/*.tgz*"), + repotest.WithMiddleware(repotest.BasicAuthMiddleware(t)), + ) defer srv.Stop() - srv.WithMiddleware(http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) { - username, password, ok := r.BasicAuth() - if !ok || username != "username" || password != "password" { - t.Errorf("Expected request to use basic auth and for username == 'username' and password == 'password', got '%v', '%s', '%s'", ok, username, password) - } - })) - srv2 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { http.FileServer(http.Dir(srv.Root())).ServeHTTP(w, r) })) diff --git a/cmd/helm/pull_test.go b/cmd/helm/pull_test.go index 160e95c76..1110a6bdf 100644 --- a/cmd/helm/pull_test.go +++ b/cmd/helm/pull_test.go @@ -28,10 +28,10 @@ import ( ) func TestPullCmd(t *testing.T) { - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testcharts/*.tgz*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testcharts/*.tgz*"), + ) defer srv.Stop() ociSrv, err := repotest.NewOCIServer(t, srv.Root()) @@ -257,19 +257,13 @@ func TestPullCmd(t *testing.T) { } func TestPullWithCredentialsCmd(t *testing.T) { - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testcharts/*.tgz*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testcharts/*.tgz*"), + repotest.WithMiddleware(repotest.BasicAuthMiddleware(t)), + ) defer srv.Stop() - srv.WithMiddleware(http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) { - username, password, ok := r.BasicAuth() - if !ok || username != "username" || password != "password" { - t.Errorf("Expected request to use basic auth and for username == 'username' and password == 'password', got '%v', '%s', '%s'", ok, username, password) - } - })) - srv2 := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { http.FileServer(http.Dir(srv.Root())).ServeHTTP(w, r) })) diff --git a/cmd/helm/repo_add_test.go b/cmd/helm/repo_add_test.go index 15ad835e6..35911d5ae 100644 --- a/cmd/helm/repo_add_test.go +++ b/cmd/helm/repo_add_test.go @@ -34,22 +34,21 @@ import ( ) func TestRepoAddCmd(t *testing.T) { - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer srv.Stop() // A second test server is setup to verify URL changing - srv2, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + srv2 := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer srv2.Stop() tmpdir := filepath.Join(t.TempDir(), "path-component.yaml/data") - err = os.MkdirAll(tmpdir, 0777) - if err != nil { + if err := os.MkdirAll(tmpdir, 0777); err != nil { t.Fatal(err) } repoFile := filepath.Join(tmpdir, "repositories.yaml") @@ -81,10 +80,10 @@ func TestRepoAddCmd(t *testing.T) { } func TestRepoAdd(t *testing.T) { - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer ts.Stop() rootDir := t.TempDir() @@ -134,10 +133,10 @@ func TestRepoAdd(t *testing.T) { } func TestRepoAddCheckLegalName(t *testing.T) { - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer ts.Stop() defer resetEnv()() @@ -190,10 +189,10 @@ func TestRepoAddConcurrentHiddenFile(t *testing.T) { } func repoAddConcurrent(t *testing.T, testName, repoFile string) { - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer ts.Stop() var wg sync.WaitGroup @@ -240,7 +239,11 @@ func TestRepoAddFileCompletion(t *testing.T) { } func TestRepoAddWithPasswordFromStdin(t *testing.T) { - srv := repotest.NewTempServerWithCleanupAndBasicAuth(t, "testdata/testserver/*.*") + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + repotest.WithMiddleware(repotest.BasicAuthMiddleware(t)), + ) defer srv.Stop() defer resetEnv()() diff --git a/cmd/helm/repo_remove_test.go b/cmd/helm/repo_remove_test.go index dcfbd99f8..7e6609671 100644 --- a/cmd/helm/repo_remove_test.go +++ b/cmd/helm/repo_remove_test.go @@ -30,10 +30,10 @@ import ( ) func TestRepoRemove(t *testing.T) { - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer ts.Stop() rootDir := t.TempDir() @@ -162,10 +162,11 @@ func testCacheFiles(t *testing.T, cacheIndexFile string, cacheChartsFile string, } func TestRepoRemoveCompletion(t *testing.T) { - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) + defer ts.Stop() rootDir := t.TempDir() diff --git a/cmd/helm/repo_update_test.go b/cmd/helm/repo_update_test.go index 13369c7cc..7e379da91 100644 --- a/cmd/helm/repo_update_test.go +++ b/cmd/helm/repo_update_test.go @@ -106,10 +106,11 @@ func TestUpdateCustomCacheCmd(t *testing.T) { cachePath := filepath.Join(rootDir, "updcustomcache") os.Mkdir(cachePath, os.ModePerm) - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) + defer ts.Stop() o := &repoUpdateOptions{ @@ -130,10 +131,9 @@ func TestUpdateCharts(t *testing.T) { defer resetEnv()() ensure.HelmHome(t) - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer(t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer ts.Stop() r, err := repo.NewChartRepository(&repo.Entry{ @@ -165,10 +165,10 @@ func TestUpdateChartsFail(t *testing.T) { defer resetEnv()() ensure.HelmHome(t) - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer ts.Stop() var invalidURL = ts.URL() + "55" @@ -198,10 +198,10 @@ func TestUpdateChartsFailWithError(t *testing.T) { defer resetEnv()() ensure.HelmHome(t) - ts, err := repotest.NewTempServerWithCleanup(t, "testdata/testserver/*.*") - if err != nil { - t.Fatal(err) - } + ts := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testserver/*.*"), + ) defer ts.Stop() var invalidURL = ts.URL() + "55" diff --git a/cmd/helm/show_test.go b/cmd/helm/show_test.go index 098335f09..0598095b5 100644 --- a/cmd/helm/show_test.go +++ b/cmd/helm/show_test.go @@ -26,10 +26,10 @@ import ( ) func TestShowPreReleaseChart(t *testing.T) { - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/testcharts/*.tgz*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/testcharts/*.tgz*"), + ) defer srv.Stop() if err := srv.LinkIndices(); err != nil { diff --git a/pkg/downloader/chart_downloader_test.go b/pkg/downloader/chart_downloader_test.go index 1d28e3c22..26dcc58ff 100644 --- a/pkg/downloader/chart_downloader_test.go +++ b/pkg/downloader/chart_downloader_test.go @@ -175,7 +175,11 @@ func TestIsTar(t *testing.T) { } func TestDownloadTo(t *testing.T) { - srv := repotest.NewTempServerWithCleanupAndBasicAuth(t, "testdata/*.tgz*") + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/*.tgz*"), + repotest.WithMiddleware(repotest.BasicAuthMiddleware(t)), + ) defer srv.Stop() if err := srv.CreateIndex(); err != nil { t.Fatal(err) @@ -222,12 +226,11 @@ func TestDownloadTo(t *testing.T) { func TestDownloadTo_TLS(t *testing.T) { // Set up mock server w/ tls enabled - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/*.tgz*") - srv.Stop() - if err != nil { - t.Fatal(err) - } - srv.StartTLS() + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/*.tgz*"), + repotest.WithTLSConfig(repotest.MakeTestTLSConfig(t, "../../testdata")), + ) defer srv.Stop() if err := srv.CreateIndex(); err != nil { t.Fatal(err) @@ -249,7 +252,13 @@ func TestDownloadTo_TLS(t *testing.T) { RepositoryConfig: repoConfig, RepositoryCache: repoCache, }), - Options: []getter.Option{}, + Options: []getter.Option{ + getter.WithTLSClientConfig( + "", + "", + filepath.Join("../../testdata/rootca.crt"), + ), + }, } cname := "test/signtest" dest := srv.Root() @@ -278,10 +287,10 @@ func TestDownloadTo_VerifyLater(t *testing.T) { dest := t.TempDir() // Set up a fake repo - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/*.tgz*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/*.tgz*"), + ) defer srv.Stop() if err := srv.LinkIndices(); err != nil { t.Fatal(err) diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index ae4e693ba..b721c6a0d 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -292,10 +292,10 @@ version: 0.1.0` func TestUpdateBeforeBuild(t *testing.T) { // Set up a fake repo - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/*.tgz*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/*.tgz*"), + ) defer srv.Stop() if err := srv.LinkIndices(); err != nil { t.Fatal(err) @@ -347,13 +347,11 @@ func TestUpdateBeforeBuild(t *testing.T) { } // Update before Build. see issue: https://github.com/helm/helm/issues/7101 - err = m.Update() - if err != nil { + if err := m.Update(); err != nil { t.Fatal(err) } - err = m.Build() - if err != nil { + if err := m.Build(); err != nil { t.Fatal(err) } } @@ -363,10 +361,10 @@ func TestUpdateBeforeBuild(t *testing.T) { // to be fetched. func TestUpdateWithNoRepo(t *testing.T) { // Set up a fake repo - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/*.tgz*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/*.tgz*"), + ) defer srv.Stop() if err := srv.LinkIndices(); err != nil { t.Fatal(err) @@ -422,8 +420,7 @@ func TestUpdateWithNoRepo(t *testing.T) { } // Test the update - err = m.Update() - if err != nil { + if err := m.Update(); err != nil { t.Fatal(err) } } @@ -436,10 +433,10 @@ func TestUpdateWithNoRepo(t *testing.T) { // If each of these main fields (name, version, repository) is not supplied by dep param, default value will be used. func checkBuildWithOptionalFields(t *testing.T, chartName string, dep chart.Dependency) { // Set up a fake repo - srv, err := repotest.NewTempServerWithCleanup(t, "testdata/*.tgz*") - if err != nil { - t.Fatal(err) - } + srv := repotest.NewTempServer( + t, + repotest.WithChartSourceGlob("testdata/*.tgz*"), + ) defer srv.Stop() if err := srv.LinkIndices(); err != nil { t.Fatal(err) @@ -487,14 +484,12 @@ func checkBuildWithOptionalFields(t *testing.T, chartName string, dep chart.Depe } // First build will update dependencies and create Chart.lock file. - err = m.Build() - if err != nil { + if err := m.Build(); err != nil { t.Fatal(err) } // Second build should be passed. See PR #6655. - err = m.Build() - if err != nil { + if err := m.Build(); err != nil { t.Fatal(err) } } diff --git a/pkg/repo/repotest/server.go b/pkg/repo/repotest/server.go index c7b674d04..0155c54d8 100644 --- a/pkg/repo/repotest/server.go +++ b/pkg/repo/repotest/server.go @@ -17,6 +17,7 @@ package repotest import ( "context" + "crypto/tls" "fmt" "net/http" "net/http/httptest" @@ -33,7 +34,6 @@ import ( "golang.org/x/crypto/bcrypt" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/internal/tlsutil" "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" "helm.sh/helm/v4/pkg/chartutil" @@ -41,34 +41,103 @@ import ( "helm.sh/helm/v4/pkg/repo" ) -// NewTempServerWithCleanup creates a server inside of a temp dir. +func BasicAuthMiddleware(t *testing.T) http.HandlerFunc { + return http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) { + username, password, ok := r.BasicAuth() + if !ok || username != "username" || password != "password" { + t.Errorf("Expected request to use basic auth and for username == 'username' and password == 'password', got '%v', '%s', '%s'", ok, username, password) + } + }) +} + +type ServerOption func(*testing.T, *Server) + +func WithTLSConfig(tlsConfig *tls.Config) ServerOption { + return func(_ *testing.T, server *Server) { + server.tlsConfig = tlsConfig + } +} + +func WithMiddleware(middleware http.HandlerFunc) ServerOption { + return func(_ *testing.T, server *Server) { + server.middleware = middleware + } +} + +func WithChartSourceGlob(glob string) ServerOption { + return func(_ *testing.T, server *Server) { + server.chartSourceGlob = glob + } +} + +// Server is an implementation of a repository server for testing. +type Server struct { + docroot string + srv *httptest.Server + middleware http.HandlerFunc + tlsConfig *tls.Config + chartSourceGlob string +} + +// NewTempServer creates a server inside of a temp dir. // // If the passed in string is not "", it will be treated as a shell glob, and files // will be copied from that path to the server's docroot. // -// The caller is responsible for stopping the server. +// The server is started automatically. The caller is responsible for stopping +// the server. +// // The temp dir will be removed by testing package automatically when test finished. -func NewTempServerWithCleanup(t *testing.T, glob string) (*Server, error) { - srv, err := NewTempServer(glob) +func NewTempServer(t *testing.T, options ...ServerOption) *Server { + + docrootTempDir, err := os.MkdirTemp("", "helm-repotest-") + if err != nil { + t.Fatal(err) + } + + srv := newServer(t, docrootTempDir, options...) + t.Cleanup(func() { os.RemoveAll(srv.docroot) }) - return srv, err + + if srv.chartSourceGlob != "" { + if _, err := srv.CopyCharts(srv.chartSourceGlob); err != nil { + t.Fatal(err) + } + } + + return srv } -// Set up a fake repo with basic auth enabled -func NewTempServerWithCleanupAndBasicAuth(t *testing.T, glob string) *Server { - srv, err := NewTempServerWithCleanup(t, glob) - srv.Stop() +// Create the server, but don't yet start it +func newServer(t *testing.T, docroot string, options ...ServerOption) *Server { + absdocroot, err := filepath.Abs(docroot) if err != nil { t.Fatal(err) } - srv.WithMiddleware(http.HandlerFunc(func(_ http.ResponseWriter, r *http.Request) { - username, password, ok := r.BasicAuth() - if !ok || username != "username" || password != "password" { - t.Errorf("Expected request to use basic auth and for username == 'username' and password == 'password', got '%v', '%s', '%s'", ok, username, password) + + s := &Server{ + docroot: absdocroot, + } + + for _, option := range options { + option(t, s) + } + + s.srv = httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if s.middleware != nil { + s.middleware.ServeHTTP(w, r) } + http.FileServer(http.Dir(s.Root())).ServeHTTP(w, r) })) - srv.Start() - return srv + + s.start() + + // Add the testing repository as the only repo. Server must be started for the server's URL to be valid + if err := setTestingRepository(s.URL(), filepath.Join(s.docroot, "repositories.yaml")); err != nil { + t.Fatal(err) + } + + return s } type OCIServer struct { @@ -239,69 +308,6 @@ func (srv *OCIServer) Run(t *testing.T, opts ...OCIServerOpt) { result.Chart.Digest, result.Chart.Size) } -// NewTempServer creates a server inside of a temp dir. -// -// If the passed in string is not "", it will be treated as a shell glob, and files -// will be copied from that path to the server's docroot. -// -// The caller is responsible for destroying the temp directory as well as stopping -// the server. -// -// Deprecated: use NewTempServerWithCleanup -func NewTempServer(glob string) (*Server, error) { - tdir, err := os.MkdirTemp("", "helm-repotest-") - if err != nil { - return nil, err - } - srv := NewServer(tdir) - - if glob != "" { - if _, err := srv.CopyCharts(glob); err != nil { - srv.Stop() - return srv, err - } - } - - return srv, nil -} - -// NewServer creates a repository server for testing. -// -// docroot should be a temp dir managed by the caller. -// -// This will start the server, serving files off of the docroot. -// -// Use CopyCharts to move charts into the repository and then index them -// for service. -func NewServer(docroot string) *Server { - root, err := filepath.Abs(docroot) - if err != nil { - panic(err) - } - srv := &Server{ - docroot: root, - } - srv.Start() - // Add the testing repository as the only repo. - if err := setTestingRepository(srv.URL(), filepath.Join(root, "repositories.yaml")); err != nil { - panic(err) - } - return srv -} - -// Server is an implementation of a repository server for testing. -type Server struct { - docroot string - srv *httptest.Server - middleware http.HandlerFunc -} - -// WithMiddleware injects middleware in front of the server. This can be used to inject -// additional functionality like layering in an authentication frontend. -func (s *Server) WithMiddleware(middleware http.HandlerFunc) { - s.middleware = middleware -} - // Root gets the docroot for the server. func (s *Server) Root() string { return s.docroot @@ -348,50 +354,12 @@ func (s *Server) CreateIndex() error { return os.WriteFile(ifile, d, 0644) } -func (s *Server) Start() { - s.srv = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if s.middleware != nil { - s.middleware.ServeHTTP(w, r) - } - http.FileServer(http.Dir(s.docroot)).ServeHTTP(w, r) - })) -} - -func (s *Server) StartTLS() { - cd := "../../testdata" - ca, pub, priv := filepath.Join(cd, "rootca.crt"), filepath.Join(cd, "crt.pem"), filepath.Join(cd, "key.pem") - insecure := false - - s.srv = httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - if s.middleware != nil { - s.middleware.ServeHTTP(w, r) - } - http.FileServer(http.Dir(s.Root())).ServeHTTP(w, r) - })) - tlsConf, err := tlsutil.NewTLSConfig( - tlsutil.WithInsecureSkipVerify(insecure), - tlsutil.WithCertKeyPairFiles(pub, priv), - tlsutil.WithCAFile(ca), - ) - if err != nil { - panic(err) - } - tlsConf.ServerName = "helm.sh" - s.srv.TLS = tlsConf - s.srv.StartTLS() - - // Set up repositories config with ca file - repoConfig := filepath.Join(s.Root(), "repositories.yaml") - - r := repo.NewFile() - r.Add(&repo.Entry{ - Name: "test", - URL: s.URL(), - CAFile: filepath.Join("../../testdata", "rootca.crt"), - }) - - if err := r.WriteFile(repoConfig, 0600); err != nil { - panic(err) +func (s *Server) start() { + if s.tlsConfig != nil { + s.srv.TLS = s.tlsConfig + s.srv.StartTLS() + } else { + s.srv.Start() } } @@ -411,6 +379,10 @@ func (s *Server) URL() string { return s.srv.URL } +func (s *Server) Client() *http.Client { + return s.srv.Client() +} + // LinkIndices links the index created with CreateIndex and makes a symbolic link to the cache index. // // This makes it possible to simulate a local cache of a repository. @@ -422,6 +394,10 @@ func (s *Server) LinkIndices() error { // setTestingRepository sets up a testing repository.yaml with only the given URL. func setTestingRepository(url, fname string) error { + if url == "" { + panic("no url") + } + r := repo.NewFile() r.Add(&repo.Entry{ Name: "test", diff --git a/pkg/repo/repotest/server_test.go b/pkg/repo/repotest/server_test.go index 6d15925db..cf68e5110 100644 --- a/pkg/repo/repotest/server_test.go +++ b/pkg/repo/repotest/server_test.go @@ -19,6 +19,7 @@ import ( "io" "net/http" "path/filepath" + "strings" "testing" "sigs.k8s.io/yaml" @@ -34,7 +35,7 @@ func TestServer(t *testing.T) { rootDir := t.TempDir() - srv := NewServer(rootDir) + srv := newServer(t, rootDir) defer srv.Stop() c, err := srv.CopyCharts("testdata/*.tgz") @@ -99,18 +100,123 @@ func TestServer(t *testing.T) { func TestNewTempServer(t *testing.T) { ensure.HelmHome(t) - srv, err := NewTempServerWithCleanup(t, "testdata/examplechart-0.1.0.tgz") - if err != nil { - t.Fatal(err) + type testCase struct { + options []ServerOption } - defer srv.Stop() - res, err := http.Head(srv.URL() + "/examplechart-0.1.0.tgz") - res.Body.Close() - if err != nil { - t.Error(err) + testCases := map[string]testCase{ + "plainhttp": { + options: []ServerOption{ + WithChartSourceGlob("testdata/examplechart-0.1.0.tgz"), + }, + }, + "tls": { + options: []ServerOption{ + WithChartSourceGlob("testdata/examplechart-0.1.0.tgz"), + WithTLSConfig(MakeTestTLSConfig(t, "../../../testdata")), + }, + }, + } + + for name, tc := range testCases { + t.Run(name, func(t *testing.T) { + srv := NewTempServer( + t, + tc.options..., + ) + defer srv.Stop() + + if srv.srv.URL == "" { + t.Fatal("unstarted server") + } + + client := srv.Client() + + { + res, err := client.Head(srv.URL() + "/repositories.yaml") + if err != nil { + t.Error(err) + } + + res.Body.Close() + + if res.StatusCode != 200 { + t.Errorf("Expected 200, got %d", res.StatusCode) + } + + } + + { + res, err := client.Head(srv.URL() + "/examplechart-0.1.0.tgz") + if err != nil { + t.Error(err) + } + res.Body.Close() + + if res.StatusCode != 200 { + t.Errorf("Expected 200, got %d", res.StatusCode) + } + } + + res, err := client.Get(srv.URL() + "/examplechart-0.1.0.tgz") + res.Body.Close() + if err != nil { + t.Fatal(err) + } + + if res.ContentLength < 500 { + t.Errorf("Expected at least 500 bytes of data, got %d", res.ContentLength) + } + + res, err = client.Get(srv.URL() + "/index.yaml") + if err != nil { + t.Fatal(err) + } + + data, err := io.ReadAll(res.Body) + res.Body.Close() + if err != nil { + t.Fatal(err) + } + + m := repo.NewIndexFile() + if err := yaml.Unmarshal(data, m); err != nil { + t.Fatal(err) + } + + if l := len(m.Entries); l != 1 { + t.Fatalf("Expected 1 entry, got %d", l) + } + + expect := "examplechart" + if !m.Has(expect, "0.1.0") { + t.Errorf("missing %q", expect) + } + + res, err = client.Get(srv.URL() + "/index.yaml-nosuchthing") + res.Body.Close() + if err != nil { + t.Fatal(err) + } + if res.StatusCode != 404 { + t.Fatalf("Expected 404, got %d", res.StatusCode) + } + }) } - if res.StatusCode != 200 { - t.Errorf("Expected 200, got %d", res.StatusCode) + +} + +func TestNewTempServer_TLS(t *testing.T) { + ensure.HelmHome(t) + + srv := NewTempServer( + t, + WithChartSourceGlob("testdata/examplechart-0.1.0.tgz"), + WithTLSConfig(MakeTestTLSConfig(t, "../../../testdata")), + ) + defer srv.Stop() + + if !strings.HasPrefix(srv.URL(), "https://") { + t.Fatal("non-TLS server") } } diff --git a/pkg/repo/repotest/tlsconfig.go b/pkg/repo/repotest/tlsconfig.go new file mode 100644 index 000000000..3914a4d3f --- /dev/null +++ b/pkg/repo/repotest/tlsconfig.go @@ -0,0 +1,43 @@ +/* +Copyright The Helm Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package repotest + +import ( + "crypto/tls" + "path/filepath" + "testing" + + "helm.sh/helm/v4/internal/tlsutil" + + "github.com/stretchr/testify/require" +) + +func MakeTestTLSConfig(t *testing.T, path string) *tls.Config { + ca, pub, priv := filepath.Join(path, "rootca.crt"), filepath.Join(path, "crt.pem"), filepath.Join(path, "key.pem") + + insecure := false + tlsConf, err := tlsutil.NewTLSConfig( + tlsutil.WithInsecureSkipVerify(insecure), + tlsutil.WithCertKeyPairFiles(pub, priv), + tlsutil.WithCAFile(ca), + ) + //require.Nil(t, err, err.Error()) + require.Nil(t, err) + + tlsConf.ServerName = "helm.sh" + + return tlsConf +} From 37020c32fa3bb7660fd61453165b9da9ee62a491 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Sun, 9 Feb 2025 11:11:00 +0800 Subject: [PATCH 147/206] Update pkg/cli/values/options.go Co-authored-by: George Jenkins Signed-off-by: Jonathan --- pkg/cli/values/options.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index d7086e8c3..09af69f8b 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -68,7 +68,7 @@ func (opts *Options) MergeValues(p getter.Providers) (map[string]interface{}, er // If value is JSON object format, parse it as map var jsonMap map[string]interface{} if err := json.Unmarshal([]byte(trimmedValue), &jsonMap); err != nil { - return nil, errors.Errorf("failed parsing --set-json data using JSON format: %s", value) + return nil, errors.Errorf("failed parsing --set-json data JSON: %s", value) } base = mergeMaps(base, jsonMap) } else { From 9498994ab5ce6676bc02f0c6931cb9afcd9ba1da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 21:15:38 +0000 Subject: [PATCH 148/206] build(deps): bump golangci/golangci-lint-action from 6.3.0 to 6.3.2 Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 6.3.0 to 6.3.2. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/e60da84bfae8c7920a47be973d75e15710aa8bd7...051d91933864810ecd5e2ea2cfd98f6a5bca5347) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 99481d611..914af6a0a 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -21,6 +21,6 @@ jobs: go-version: '1.23' check-latest: true - name: golangci-lint - uses: golangci/golangci-lint-action@e60da84bfae8c7920a47be973d75e15710aa8bd7 #pin@6.3.0 + uses: golangci/golangci-lint-action@051d91933864810ecd5e2ea2cfd98f6a5bca5347 #pin@6.3.2 with: version: v1.62 From 8b8cc948224875091d0939216c0bdcc337a58602 Mon Sep 17 00:00:00 2001 From: wangjingcun Date: Tue, 11 Feb 2025 23:20:27 +0800 Subject: [PATCH 149/206] Use a more direct and less error-prone return value Signed-off-by: wangjingcun --- pkg/cli/values/options.go | 2 +- pkg/kube/roundtripper.go | 8 ++++---- pkg/plugin/installer/vcs_installer.go | 2 +- pkg/provenance/sign_test.go | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index 24c47ecba..0710d5b86 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -143,5 +143,5 @@ func readFile(filePath string, p getter.Providers) ([]byte, error) { if err != nil { return nil, err } - return data.Bytes(), err + return data.Bytes(), nil } diff --git a/pkg/kube/roundtripper.go b/pkg/kube/roundtripper.go index fdb103529..551d3009b 100644 --- a/pkg/kube/roundtripper.go +++ b/pkg/kube/roundtripper.go @@ -49,7 +49,7 @@ func (rt *RetryingRoundTripper) roundTrip(req *http.Request, retry int, prevResp b, err := io.ReadAll(resp.Body) resp.Body.Close() if err != nil { - return resp, rtErr + return resp, err } var ke kubernetesError @@ -58,10 +58,10 @@ func (rt *RetryingRoundTripper) roundTrip(req *http.Request, retry int, prevResp r.Seek(0, io.SeekStart) resp.Body = io.NopCloser(r) if err != nil { - return resp, rtErr + return resp, nil } if ke.Code < 500 { - return resp, rtErr + return resp, nil } // Matches messages like "etcdserver: leader changed" if strings.HasSuffix(ke.Message, "etcdserver: leader changed") { @@ -71,7 +71,7 @@ func (rt *RetryingRoundTripper) roundTrip(req *http.Request, retry int, prevResp if strings.HasSuffix(ke.Message, "raft proposal dropped") { return rt.roundTrip(req, retry-1, resp) } - return resp, rtErr + return resp, nil } type kubernetesError struct { diff --git a/pkg/plugin/installer/vcs_installer.go b/pkg/plugin/installer/vcs_installer.go index 8153550b2..3967e46cd 100644 --- a/pkg/plugin/installer/vcs_installer.go +++ b/pkg/plugin/installer/vcs_installer.go @@ -63,7 +63,7 @@ func NewVCSInstaller(source, version string) (*VCSInstaller, error) { Version: version, base: newBase(source), } - return i, err + return i, nil } // Install clones a remote repository and installs into the plugin directory. diff --git a/pkg/provenance/sign_test.go b/pkg/provenance/sign_test.go index bf6848368..69a6dad5b 100644 --- a/pkg/provenance/sign_test.go +++ b/pkg/provenance/sign_test.go @@ -34,7 +34,7 @@ const ( // phrase. Use `gpg --export-secret-keys helm-test` to export the secret. testKeyfile = "testdata/helm-test-key.secret" - // testPasswordKeyFile is a keyfile with a password. + // testPasswordKeyfile is a keyfile with a password. testPasswordKeyfile = "testdata/helm-password-key.secret" // testPubfile is the public key file. From 9097b7eacc3b0fc7826b937612a9cd085ffcf08b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 11 Feb 2025 21:42:41 +0000 Subject: [PATCH 150/206] build(deps): bump github.com/distribution/distribution/v3 Bumps [github.com/distribution/distribution/v3](https://github.com/distribution/distribution) from 3.0.0-rc.2 to 3.0.0-rc.3. - [Release notes](https://github.com/distribution/distribution/releases) - [Commits](https://github.com/distribution/distribution/compare/v3.0.0-rc.2...v3.0.0-rc.3) --- updated-dependencies: - dependency-name: github.com/distribution/distribution/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f89eb4ce8..a68148c79 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 github.com/containerd/containerd v1.7.25 github.com/cyphar/filepath-securejoin v0.4.1 - github.com/distribution/distribution/v3 v3.0.0-rc.2 + github.com/distribution/distribution/v3 v3.0.0-rc.3 github.com/evanphx/json-patch v5.9.11+incompatible github.com/foxcpp/go-mockdns v1.1.0 github.com/gobwas/glob v0.2.3 diff --git a/go.sum b/go.sum index a811b14cc..ea2d733e8 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/distribution/distribution/v3 v3.0.0-rc.2 h1:tTrzntanYMbd20SyvdeR83Ya1l/aBwDcA3NCIpmwemc= -github.com/distribution/distribution/v3 v3.0.0-rc.2/go.mod h1:H2zIRRXS20ylnv2HTuKILAWuANjuA60GB7MLOsQag7Y= +github.com/distribution/distribution/v3 v3.0.0-rc.3 h1:JRJso9IVLoooKX76oWR+DWCCdZlK5m4nRtDWvzB1ITg= +github.com/distribution/distribution/v3 v3.0.0-rc.3/go.mod h1:offoOgrnYs+CFwis8nE0hyzYZqRCZj5EFc5kgfszwiE= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= From 653eec1da31bf3bf7621a29234c2735d0ab06076 Mon Sep 17 00:00:00 2001 From: Robert Sirchia Date: Wed, 12 Feb 2025 15:35:10 -0500 Subject: [PATCH 151/206] adding-my-key Signed-off-by: Robert Sirchia --- KEYS | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/KEYS b/KEYS index f14c596c7..e772fff40 100644 --- a/KEYS +++ b/KEYS @@ -1037,3 +1037,24 @@ nk38BkgHg3LHjCbCNEVkSK2TMT69A58iwpY9WUQlphsiz4WBpafSPbv/jSlsm7uK TNWtbFGBRpJyEg== =w141 -----END PGP PUBLIC KEY BLOCK----- +pub ed25519 2024-07-09 [SC] + 7FEC81FACC7FFB2A010ADD13C2D40F4D8196E874 +uid [ultimate] Robert Sirchia (I like turtles.) +sig 3 C2D40F4D8196E874 2024-07-09 [self-signature] +sub cv25519 2024-07-09 [E] +sig C2D40F4D8196E874 2024-07-09 [self-signature] + +-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEZo2C6xYJKwYBBAHaRw8BAQdA8kCWaI+FlCabcTw8EVeiMkokyWDalgl/Inbn +ACcGN1e0N1JvYmVydCBTaXJjaGlhIChJIGxpa2UgdHVydGxlcy4pIDxyc2lyY2hp +YUBvdXRsb29rLmNvbT6IkwQTFgoAOxYhBH/sgfrMf/sqAQrdE8LUD02Bluh0BQJm +jYLrAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEMLUD02Bluh0dyYA +/i7RB6m3MXNA8ei7GD8uQVpLfCRgEFsqSS/AzAOu8NGhAQCbw1kWL3AUll7KKtiQ +UE96nhCk+HnkQeVkWYS+MZ1tALg4BGaNgusSCisGAQQBl1UBBQEBB0CCA6Au4krL +YinQq9aAs29fFeRu/ye3PqQuz5jZ2r1ScAMBCAeIeAQYFgoAIBYhBH/sgfrMf/sq +AQrdE8LUD02Bluh0BQJmjYLrAhsMAAoJEMLUD02Bluh0KH4BAMSwEIGkoQl10LN3 +K6V08VpFmniENmCDHshXYq0gGiTDAP9FsXl2UtmFU5xuYxH4fRKIxgmxJRAFMWI8 +u3Rdu/s+DQ== +=smBO +-----END PGP PUBLIC KEY BLOCK----- From 8eb615d37604294611d2fe4a3f39aa433d6fb7e9 Mon Sep 17 00:00:00 2001 From: Eimhin Laverty Date: Thu, 13 Feb 2025 17:23:43 +0100 Subject: [PATCH 152/206] Update version option description with more accurate info Signed-off-by: Eimhin Laverty --- scripts/get-helm-3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/get-helm-3 b/scripts/get-helm-3 index 5f19bd3fa..3aa44daee 100755 --- a/scripts/get-helm-3 +++ b/scripts/get-helm-3 @@ -279,7 +279,7 @@ testVersion() { help () { echo "Accepted cli arguments are:" echo -e "\t[--help|-h ] ->> prints this help" - echo -e "\t[--version|-v ] . When not defined it fetches the latest release from GitHub" + echo -e "\t[--version|-v ] . When not defined it fetches the latest release tag from the Helm CDN" echo -e "\te.g. --version v3.0.0 or -v canary" echo -e "\t[--no-sudo] ->> install without sudo" } From 5b940c026d717aa553cf590a1c4032e01c231fad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Feb 2025 22:01:53 +0000 Subject: [PATCH 153/206] build(deps): bump the k8s-io group with 7 updates Bumps the k8s-io group with 7 updates: | Package | From | To | | --- | --- | --- | | [k8s.io/api](https://github.com/kubernetes/api) | `0.32.1` | `0.32.2` | | [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) | `0.32.1` | `0.32.2` | | [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) | `0.32.1` | `0.32.2` | | [k8s.io/apiserver](https://github.com/kubernetes/apiserver) | `0.32.1` | `0.32.2` | | [k8s.io/cli-runtime](https://github.com/kubernetes/cli-runtime) | `0.32.1` | `0.32.2` | | [k8s.io/client-go](https://github.com/kubernetes/client-go) | `0.32.1` | `0.32.2` | | [k8s.io/kubectl](https://github.com/kubernetes/kubectl) | `0.32.1` | `0.32.2` | Updates `k8s.io/api` from 0.32.1 to 0.32.2 - [Commits](https://github.com/kubernetes/api/compare/v0.32.1...v0.32.2) Updates `k8s.io/apiextensions-apiserver` from 0.32.1 to 0.32.2 - [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases) - [Commits](https://github.com/kubernetes/apiextensions-apiserver/compare/v0.32.1...v0.32.2) Updates `k8s.io/apimachinery` from 0.32.1 to 0.32.2 - [Commits](https://github.com/kubernetes/apimachinery/compare/v0.32.1...v0.32.2) Updates `k8s.io/apiserver` from 0.32.1 to 0.32.2 - [Commits](https://github.com/kubernetes/apiserver/compare/v0.32.1...v0.32.2) Updates `k8s.io/cli-runtime` from 0.32.1 to 0.32.2 - [Commits](https://github.com/kubernetes/cli-runtime/compare/v0.32.1...v0.32.2) Updates `k8s.io/client-go` from 0.32.1 to 0.32.2 - [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md) - [Commits](https://github.com/kubernetes/client-go/compare/v0.32.1...v0.32.2) Updates `k8s.io/kubectl` from 0.32.1 to 0.32.2 - [Commits](https://github.com/kubernetes/kubectl/compare/v0.32.1...v0.32.2) --- updated-dependencies: - dependency-name: k8s.io/api dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apiextensions-apiserver dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apimachinery dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/apiserver dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/cli-runtime dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/client-go dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io - dependency-name: k8s.io/kubectl dependency-type: direct:production update-type: version-update:semver-patch dependency-group: k8s-io ... Signed-off-by: dependabot[bot] --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index d4bb5755d..f3a8265b6 100644 --- a/go.mod +++ b/go.mod @@ -36,14 +36,14 @@ require ( golang.org/x/crypto v0.33.0 golang.org/x/term v0.29.0 golang.org/x/text v0.22.0 - k8s.io/api v0.32.1 - k8s.io/apiextensions-apiserver v0.32.1 - k8s.io/apimachinery v0.32.1 - k8s.io/apiserver v0.32.1 - k8s.io/cli-runtime v0.32.1 - k8s.io/client-go v0.32.1 + k8s.io/api v0.32.2 + k8s.io/apiextensions-apiserver v0.32.2 + k8s.io/apimachinery v0.32.2 + k8s.io/apiserver v0.32.2 + k8s.io/cli-runtime v0.32.2 + k8s.io/client-go v0.32.2 k8s.io/klog/v2 v2.130.1 - k8s.io/kubectl v0.32.1 + k8s.io/kubectl v0.32.2 oras.land/oras-go/v2 v2.5.0 sigs.k8s.io/yaml v1.4.0 ) @@ -174,7 +174,7 @@ require ( gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/component-base v0.32.1 // indirect + k8s.io/component-base v0.32.2 // indirect k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect diff --git a/go.sum b/go.sum index 4eaeeaf3a..25a825e86 100644 --- a/go.sum +++ b/go.sum @@ -519,26 +519,26 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.32.1 h1:f562zw9cy+GvXzXf0CKlVQ7yHJVYzLfL6JAS4kOAaOc= -k8s.io/api v0.32.1/go.mod h1:/Yi/BqkuueW1BgpoePYBRdDYfjPF5sgTr5+YqDZra5k= -k8s.io/apiextensions-apiserver v0.32.1 h1:hjkALhRUeCariC8DiVmb5jj0VjIc1N0DREP32+6UXZw= -k8s.io/apiextensions-apiserver v0.32.1/go.mod h1:sxWIGuGiYov7Io1fAS2X06NjMIk5CbRHc2StSmbaQto= -k8s.io/apimachinery v0.32.1 h1:683ENpaCBjma4CYqsmZyhEzrGz6cjn1MY/X2jB2hkZs= -k8s.io/apimachinery v0.32.1/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= -k8s.io/apiserver v0.32.1 h1:oo0OozRos66WFq87Zc5tclUX2r0mymoVHRq8JmR7Aak= -k8s.io/apiserver v0.32.1/go.mod h1:UcB9tWjBY7aryeI5zAgzVJB/6k7E97bkr1RgqDz0jPw= -k8s.io/cli-runtime v0.32.1 h1:19nwZPlYGJPUDbhAxDIS2/oydCikvKMHsxroKNGA2mM= -k8s.io/cli-runtime v0.32.1/go.mod h1:NJPbeadVFnV2E7B7vF+FvU09mpwYlZCu8PqjzfuOnkY= -k8s.io/client-go v0.32.1 h1:otM0AxdhdBIaQh7l1Q0jQpmo7WOFIk5FFa4bg6YMdUU= -k8s.io/client-go v0.32.1/go.mod h1:aTTKZY7MdxUaJ/KiUs8D+GssR9zJZi77ZqtzcGXIiDg= -k8s.io/component-base v0.32.1 h1:/5IfJ0dHIKBWysGV0yKTFfacZ5yNV1sulPh3ilJjRZk= -k8s.io/component-base v0.32.1/go.mod h1:j1iMMHi/sqAHeG5z+O9BFNCF698a1u0186zkjMZQ28w= +k8s.io/api v0.32.2 h1:bZrMLEkgizC24G9eViHGOPbW+aRo9duEISRIJKfdJuw= +k8s.io/api v0.32.2/go.mod h1:hKlhk4x1sJyYnHENsrdCWw31FEmCijNGPJO5WzHiJ6Y= +k8s.io/apiextensions-apiserver v0.32.2 h1:2YMk285jWMk2188V2AERy5yDwBYrjgWYggscghPCvV4= +k8s.io/apiextensions-apiserver v0.32.2/go.mod h1:GPwf8sph7YlJT3H6aKUWtd0E+oyShk/YHWQHf/OOgCA= +k8s.io/apimachinery v0.32.2 h1:yoQBR9ZGkA6Rgmhbp/yuT9/g+4lxtsGYwW6dR6BDPLQ= +k8s.io/apimachinery v0.32.2/go.mod h1:GpHVgxoKlTxClKcteaeuF1Ul/lDVb74KpZcxcmLDElE= +k8s.io/apiserver v0.32.2 h1:WzyxAu4mvLkQxwD9hGa4ZfExo3yZZaYzoYvvVDlM6vw= +k8s.io/apiserver v0.32.2/go.mod h1:PEwREHiHNU2oFdte7BjzA1ZyjWjuckORLIK/wLV5goM= +k8s.io/cli-runtime v0.32.2 h1:aKQR4foh9qeyckKRkNXUccP9moxzffyndZAvr+IXMks= +k8s.io/cli-runtime v0.32.2/go.mod h1:a/JpeMztz3xDa7GCyyShcwe55p8pbcCVQxvqZnIwXN8= +k8s.io/client-go v0.32.2 h1:4dYCD4Nz+9RApM2b/3BtVvBHw54QjMFUl1OLcJG5yOA= +k8s.io/client-go v0.32.2/go.mod h1:fpZ4oJXclZ3r2nDOv+Ux3XcJutfrwjKTCHz2H3sww94= +k8s.io/component-base v0.32.2 h1:1aUL5Vdmu7qNo4ZsE+569PV5zFatM9hl+lb3dEea2zU= +k8s.io/component-base v0.32.2/go.mod h1:PXJ61Vx9Lg+P5mS8TLd7bCIr+eMJRQTyXe8KvkrvJq0= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f h1:GA7//TjRY9yWGy1poLzYYJJ4JRdzg3+O6e8I+e+8T5Y= k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f/go.mod h1:R/HEjbvWI0qdfb8viZUeVZm0X6IZnxAydC7YU42CMw4= -k8s.io/kubectl v0.32.1 h1:/btLtXLQUU1rWx8AEvX9jrb9LaI6yeezt3sFALhB8M8= -k8s.io/kubectl v0.32.1/go.mod h1:sezNuyWi1STk4ZNPVRIFfgjqMI6XMf+oCVLjZen/pFQ= +k8s.io/kubectl v0.32.2 h1:TAkag6+XfSBgkqK9I7ZvwtF0WVtUAvK8ZqTt+5zi1Us= +k8s.io/kubectl v0.32.2/go.mod h1:+h/NQFSPxiDZYX/WZaWw9fwYezGLISP0ud8nQKg+3g8= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= oras.land/oras-go/v2 v2.5.0 h1:o8Me9kLY74Vp5uw07QXPiitjsw7qNXi8Twd+19Zf02c= From 165654426d9edeaadc5352e54e2ac4c72f408c1d Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Mon, 17 Feb 2025 10:27:11 +0000 Subject: [PATCH 154/206] chore: update profiling doc in CONTRIBUTING.md Signed-off-by: Evans Mungai --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bc225d218..8ab93403d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -284,7 +284,7 @@ Small, ad-hoc changes/PRs to Helm which introduce user facing changes, which wou ### Profiling PRs -If your contribution requires profiling to check memory and/or CPU usage, you can set `HELM_PPROF_CPU_PROFILE=/path/to/cpu.prof HELM_PPROF_MEM_PROFILE=/path/to/mem.prof helm show all bitnami/nginx` environment variable to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. +If your contribution requires profiling to check memory and/or CPU usage, you can set `HELM_PPROF_CPU_PROFILE=/path/to/cpu.prof` and/or `HELM_PPROF_MEM_PROFILE=/path/to/mem.prof` environment variables to collect runtime profiling data for analysis. You can use Golang's [pprof](https://github.com/google/pprof/blob/main/doc/README.md) tool to inspect the results. Example analysing collected profiling data ``` From fdf448497137d8c9358d5ccc481e535cfbc6523b Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Mon, 17 Feb 2025 18:31:17 +0000 Subject: [PATCH 155/206] Update cmd/helm/profiling.go Co-authored-by: George Jenkins Signed-off-by: Evans Mungai --- cmd/helm/profiling.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/helm/profiling.go b/cmd/helm/profiling.go index e48441512..9bcdb850e 100644 --- a/cmd/helm/profiling.go +++ b/cmd/helm/profiling.go @@ -83,8 +83,8 @@ func stopProfiling() error { } } - if len(errs) > 0 { - return fmt.Errorf("errors while stopping profiling: [%s]", strings.Join(errs, ", ")) + if err := errors.Join(errs...); err != nil { + return fmt.Errorf("error(s) while stopping profiling: %w", err) } return nil From 62576db2fcabd40bb9801f81a0de9e8fcc36d154 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Mon, 17 Feb 2025 18:36:04 +0000 Subject: [PATCH 156/206] chore: use []error instead of []string Signed-off-by: Evans Mungai --- cmd/helm/profiling.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmd/helm/profiling.go b/cmd/helm/profiling.go index 9bcdb850e..950ad15da 100644 --- a/cmd/helm/profiling.go +++ b/cmd/helm/profiling.go @@ -17,11 +17,11 @@ limitations under the License. package main import ( + "errors" "fmt" "os" "runtime" "runtime/pprof" - "strings" ) var ( @@ -58,14 +58,14 @@ func startProfiling() error { // It writes memory profile to the file path specified in HELM_PPROF_MEM_PROFILE // environment variable. func stopProfiling() error { - errs := []string{} + errs := []error{} // Stop CPU profiling if it was started if cpuProfileFile != nil { pprof.StopCPUProfile() err := cpuProfileFile.Close() if err != nil { - errs = append(errs, err.Error()) + errs = append(errs, err) } cpuProfileFile = nil } @@ -73,13 +73,13 @@ func stopProfiling() error { if memProfilePath != "" { f, err := os.Create(memProfilePath) if err != nil { - errs = append(errs, err.Error()) + errs = append(errs, err) } defer f.Close() runtime.GC() // get up-to-date statistics if err := pprof.WriteHeapProfile(f); err != nil { - errs = append(errs, err.Error()) + errs = append(errs, err) } } From 50be8ae64b7756597f72d451b0ffd5951b82ee61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 21:08:38 +0000 Subject: [PATCH 157/206] build(deps): bump golangci/golangci-lint-action from 6.3.2 to 6.5.0 Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 6.3.2 to 6.5.0. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/051d91933864810ecd5e2ea2cfd98f6a5bca5347...2226d7cb06a077cd73e56eedd38eecad18e5d837) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/golangci-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index 914af6a0a..5971ada24 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -21,6 +21,6 @@ jobs: go-version: '1.23' check-latest: true - name: golangci-lint - uses: golangci/golangci-lint-action@051d91933864810ecd5e2ea2cfd98f6a5bca5347 #pin@6.3.2 + uses: golangci/golangci-lint-action@2226d7cb06a077cd73e56eedd38eecad18e5d837 #pin@6.5.0 with: version: v1.62 From 001d2978b6dc4df0a3d0a4b5c76f8f34b9e1beca Mon Sep 17 00:00:00 2001 From: hugehope Date: Tue, 18 Feb 2025 15:20:46 +0800 Subject: [PATCH 158/206] refactor: using slices.Contains to simplify the code Signed-off-by: hugehope --- pkg/action/release_testing.go | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go index 2539a7f65..1568b0683 100644 --- a/pkg/action/release_testing.go +++ b/pkg/action/release_testing.go @@ -20,6 +20,7 @@ import ( "context" "fmt" "io" + "slices" "sort" "time" @@ -75,7 +76,7 @@ func (r *ReleaseTesting) Run(name string) (*release.Release, error) { executingHooks := []*release.Hook{} if len(r.Filters[ExcludeNameFilter]) != 0 { for _, h := range rel.Hooks { - if contains(r.Filters[ExcludeNameFilter], h.Name) { + if slices.Contains(r.Filters[ExcludeNameFilter], h.Name) { skippedHooks = append(skippedHooks, h) } else { executingHooks = append(executingHooks, h) @@ -86,7 +87,7 @@ func (r *ReleaseTesting) Run(name string) (*release.Release, error) { if len(r.Filters[IncludeNameFilter]) != 0 { executingHooks = nil for _, h := range rel.Hooks { - if contains(r.Filters[IncludeNameFilter], h.Name) { + if slices.Contains(r.Filters[IncludeNameFilter], h.Name) { executingHooks = append(executingHooks, h) } else { skippedHooks = append(skippedHooks, h) @@ -119,10 +120,10 @@ func (r *ReleaseTesting) GetPodLogs(out io.Writer, rel *release.Release) error { for _, h := range hooksByWight { for _, e := range h.Events { if e == release.HookTest { - if contains(r.Filters[ExcludeNameFilter], h.Name) { + if slices.Contains(r.Filters[ExcludeNameFilter], h.Name) { continue } - if len(r.Filters[IncludeNameFilter]) > 0 && !contains(r.Filters[IncludeNameFilter], h.Name) { + if len(r.Filters[IncludeNameFilter]) > 0 && !slices.Contains(r.Filters[IncludeNameFilter], h.Name) { continue } req := client.CoreV1().Pods(r.Namespace).GetLogs(h.Name, &v1.PodLogOptions{}) @@ -142,12 +143,3 @@ func (r *ReleaseTesting) GetPodLogs(out io.Writer, rel *release.Release) error { } return nil } - -func contains(arr []string, value string) bool { - for _, item := range arr { - if item == value { - return true - } - } - return false -} From b689ff203e76cf009f931dcec49910c6054c06b3 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Wed, 19 Feb 2025 14:58:10 -0500 Subject: [PATCH 159/206] Moving to SetOut and SetErr for Cobra SetOutput is deprecated. This causes it to fail linting. Signed-off-by: Matt Farina --- cmd/helm/require/args_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmd/helm/require/args_test.go b/cmd/helm/require/args_test.go index 5a84a42d0..cd5850650 100644 --- a/cmd/helm/require/args_test.go +++ b/cmd/helm/require/args_test.go @@ -71,7 +71,8 @@ func runTestCases(t *testing.T, testCases []testCase) { Args: tc.validateFunc, } cmd.SetArgs(tc.args) - cmd.SetOutput(io.Discard) + cmd.SetOut(io.Discard) + cmd.SetErr(io.Discard) err := cmd.Execute() if tc.wantError == "" { From 3d2c914a6d38000c8d9f68efdf7538adab567d4f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Feb 2025 20:12:17 +0000 Subject: [PATCH 160/206] build(deps): bump github.com/spf13/cobra from 1.8.1 to 1.9.1 Bumps [github.com/spf13/cobra](https://github.com/spf13/cobra) from 1.8.1 to 1.9.1. - [Release notes](https://github.com/spf13/cobra/releases) - [Commits](https://github.com/spf13/cobra/compare/v1.8.1...v1.9.1) --- updated-dependencies: - dependency-name: github.com/spf13/cobra dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index f3a8265b6..c84140350 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 github.com/pkg/errors v0.9.1 github.com/rubenv/sql-migrate v1.7.1 - github.com/spf13/cobra v1.8.1 + github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 @@ -63,7 +63,7 @@ require ( github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/distribution/reference v0.6.0 // indirect diff --git a/go.sum b/go.sum index 25a825e86..995e14598 100644 --- a/go.sum +++ b/go.sum @@ -58,8 +58,8 @@ github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpS github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= @@ -313,9 +313,8 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= From 0d36cb664a30826ad3f1b811e5ad942144e85336 Mon Sep 17 00:00:00 2001 From: lubingtan Date: Fri, 24 Jan 2025 16:21:02 +0800 Subject: [PATCH 161/206] feat: support multi-document values files Signed-off-by: lubingtan --- pkg/cli/values/options.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index add2f72d5..e1f1988c8 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -17,6 +17,7 @@ limitations under the License. package values import ( + "bytes" "encoding/json" "io" "net/url" @@ -24,7 +25,7 @@ import ( "strings" "github.com/pkg/errors" - "sigs.k8s.io/yaml" + utilyaml "k8s.io/apimachinery/pkg/util/yaml" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/strvals" @@ -47,18 +48,23 @@ func (opts *Options) MergeValues(p getter.Providers) (map[string]interface{}, er // User specified a values files via -f/--values for _, filePath := range opts.ValueFiles { - currentMap := map[string]interface{}{} - - bytes, err := readFile(filePath, p) + raw, err := readFile(filePath, p) if err != nil { return nil, err } - if err := yaml.Unmarshal(bytes, ¤tMap); err != nil { - return nil, errors.Wrapf(err, "failed to parse %s", filePath) + decoder := utilyaml.NewYAMLOrJSONDecoder(bytes.NewReader(raw), 4096) + for { + currentMap := map[string]interface{}{} + if err := decoder.Decode(¤tMap); err != nil { + if err == io.EOF { + break + } + return nil, errors.Wrapf(err, "failed to parse %s", filePath) + } + // Merge with the previous map + base = mergeMaps(base, currentMap) } - // Merge with the previous map - base = mergeMaps(base, currentMap) } // User specified a value via --set-json From 92087f6e33d6a5d8333e6afda7d68a4d15a2cec9 Mon Sep 17 00:00:00 2001 From: lubingtan Date: Mon, 3 Feb 2025 20:53:07 +0800 Subject: [PATCH 162/206] feat: support multi-document values files for default chart values Signed-off-by: lubingtan --- pkg/chart/loader/load.go | 53 ++++++++++++++-- pkg/chart/loader/load_test.go | 113 +++++++++++++++++++++++++++++++++ pkg/cli/values/options.go | 41 ++---------- pkg/cli/values/options_test.go | 55 ---------------- 4 files changed, 168 insertions(+), 94 deletions(-) diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index 7645ba96c..c40a1aaf5 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -17,14 +17,17 @@ limitations under the License. package loader import ( + "bufio" "bytes" "encoding/json" + "io" "log" "os" "path/filepath" "strings" "github.com/pkg/errors" + utilyaml "k8s.io/apimachinery/pkg/util/yaml" "sigs.k8s.io/yaml" "helm.sh/helm/v4/pkg/chart" @@ -104,13 +107,11 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { return c, errors.Wrap(err, "cannot load Chart.lock") } case f.Name == "values.yaml": - c.Values = make(map[string]interface{}) - if err := yaml.Unmarshal(f.Data, &c.Values, func(d *json.Decoder) *json.Decoder { - d.UseNumber() - return d - }); err != nil { + values, err := LoadValues(f.Data) + if err != nil { return c, errors.Wrap(err, "cannot load values.yaml") } + c.Values = values case f.Name == "values.schema.json": c.Schema = f.Data @@ -205,3 +206,45 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { return c, nil } + +func LoadValues(data []byte) (map[string]interface{}, error) { + values := map[string]interface{}{} + reader := utilyaml.NewYAMLReader(bufio.NewReader(bytes.NewReader(data))) + for { + currentMap := map[string]interface{}{} + raw, err := reader.Read() + if err != nil { + if err == io.EOF { + break + } + return nil, errors.Wrap(err, "error reading yaml document") + } + if err := yaml.Unmarshal(raw, ¤tMap, func(d *json.Decoder) *json.Decoder { + d.UseNumber() + return d + }); err != nil { + return nil, errors.Wrap(err, "cannot unmarshal yaml document") + } + values = MergeMaps(values, currentMap) + } + return values, nil +} + +func MergeMaps(a, b map[string]interface{}) map[string]interface{} { + out := make(map[string]interface{}, len(a)) + for k, v := range a { + out[k] = v + } + for k, v := range b { + if v, ok := v.(map[string]interface{}); ok { + if bv, ok := out[k]; ok { + if bv, ok := bv.(map[string]interface{}); ok { + out[k] = MergeMaps(bv, v) + continue + } + } + } + out[k] = v + } + return out +} diff --git a/pkg/chart/loader/load_test.go b/pkg/chart/loader/load_test.go index 25e000835..92ffa002b 100644 --- a/pkg/chart/loader/load_test.go +++ b/pkg/chart/loader/load_test.go @@ -24,6 +24,7 @@ import ( "log" "os" "path/filepath" + "reflect" "runtime" "strings" "testing" @@ -488,6 +489,118 @@ func TestLoadInvalidArchive(t *testing.T) { } } +func TestLoadValues(t *testing.T) { + testDatas := []struct { + name string + data []byte + expctedValues map[string]interface{} + }{ + { + name: "It should load values correctly", + data: []byte(` +foo: + image: foo:v1 +bar: + version: v2 +`), + expctedValues: map[string]interface{}{ + "foo": map[string]interface{}{ + "image": "foo:v1", + }, + "bar": map[string]interface{}{ + "version": "v2", + }, + }, + }, + { + name: "It should load values correctly with multiple documents in one file", + data: []byte(` +foo: + image: foo:v1 +bar: + version: v2 +--- +foo: + image: foo:v2 +`), + expctedValues: map[string]interface{}{ + "foo": map[string]interface{}{ + "image": "foo:v2", + }, + "bar": map[string]interface{}{ + "version": "v2", + }, + }, + }, + } + for _, testData := range testDatas { + t.Run(testData.name, func(tt *testing.T) { + values, err := LoadValues(testData.data) + if err != nil { + tt.Fatal(err) + } + if !reflect.DeepEqual(values, testData.expctedValues) { + tt.Errorf("Expected values: %v, got %v", testData.expctedValues, values) + } + }) + } +} + +func TestMergeValues(t *testing.T) { + nestedMap := map[string]interface{}{ + "foo": "bar", + "baz": map[string]string{ + "cool": "stuff", + }, + } + anotherNestedMap := map[string]interface{}{ + "foo": "bar", + "baz": map[string]string{ + "cool": "things", + "awesome": "stuff", + }, + } + flatMap := map[string]interface{}{ + "foo": "bar", + "baz": "stuff", + } + anotherFlatMap := map[string]interface{}{ + "testing": "fun", + } + + testMap := MergeMaps(flatMap, nestedMap) + equal := reflect.DeepEqual(testMap, nestedMap) + if !equal { + t.Errorf("Expected a nested map to overwrite a flat value. Expected: %v, got %v", nestedMap, testMap) + } + + testMap = MergeMaps(nestedMap, flatMap) + equal = reflect.DeepEqual(testMap, flatMap) + if !equal { + t.Errorf("Expected a flat value to overwrite a map. Expected: %v, got %v", flatMap, testMap) + } + + testMap = MergeMaps(nestedMap, anotherNestedMap) + equal = reflect.DeepEqual(testMap, anotherNestedMap) + if !equal { + t.Errorf("Expected a nested map to overwrite another nested map. Expected: %v, got %v", anotherNestedMap, testMap) + } + + testMap = MergeMaps(anotherFlatMap, anotherNestedMap) + expectedMap := map[string]interface{}{ + "testing": "fun", + "foo": "bar", + "baz": map[string]string{ + "cool": "things", + "awesome": "stuff", + }, + } + equal = reflect.DeepEqual(testMap, expectedMap) + if !equal { + t.Errorf("Expected a map with different keys to merge properly with another map. Expected: %v, got %v", expectedMap, testMap) + } +} + func verifyChart(t *testing.T, c *chart.Chart) { t.Helper() if c.Name() == "" { diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index e1f1988c8..70390f12a 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -17,7 +17,6 @@ limitations under the License. package values import ( - "bytes" "encoding/json" "io" "net/url" @@ -25,8 +24,8 @@ import ( "strings" "github.com/pkg/errors" - utilyaml "k8s.io/apimachinery/pkg/util/yaml" + "helm.sh/helm/v4/pkg/chart/loader" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/strvals" ) @@ -48,23 +47,16 @@ func (opts *Options) MergeValues(p getter.Providers) (map[string]interface{}, er // User specified a values files via -f/--values for _, filePath := range opts.ValueFiles { - raw, err := readFile(filePath, p) + bytes, err := readFile(filePath, p) if err != nil { return nil, err } - - decoder := utilyaml.NewYAMLOrJSONDecoder(bytes.NewReader(raw), 4096) - for { - currentMap := map[string]interface{}{} - if err := decoder.Decode(¤tMap); err != nil { - if err == io.EOF { - break - } - return nil, errors.Wrapf(err, "failed to parse %s", filePath) - } - // Merge with the previous map - base = mergeMaps(base, currentMap) + currentMap, err := loader.LoadValues(bytes) + if err != nil { + return nil, errors.Wrapf(err, "failed to parse %s", filePath) } + // Merge with the previous map + base = loader.MergeMaps(base, currentMap) } // User specified a value via --set-json @@ -123,25 +115,6 @@ func (opts *Options) MergeValues(p getter.Providers) (map[string]interface{}, er return base, nil } -func mergeMaps(a, b map[string]interface{}) map[string]interface{} { - out := make(map[string]interface{}, len(a)) - for k, v := range a { - out[k] = v - } - for k, v := range b { - if v, ok := v.(map[string]interface{}); ok { - if bv, ok := out[k]; ok { - if bv, ok := bv.(map[string]interface{}); ok { - out[k] = mergeMaps(bv, v) - continue - } - } - } - out[k] = v - } - return out -} - // readFile load a file from stdin, the local directory, or a remote file with a url. func readFile(filePath string, p getter.Providers) ([]byte, error) { if strings.TrimSpace(filePath) == "-" { diff --git a/pkg/cli/values/options_test.go b/pkg/cli/values/options_test.go index 5197a1b5e..c3bb0af33 100644 --- a/pkg/cli/values/options_test.go +++ b/pkg/cli/values/options_test.go @@ -23,61 +23,6 @@ import ( "helm.sh/helm/v4/pkg/getter" ) -func TestMergeMaps(t *testing.T) { - nestedMap := map[string]interface{}{ - "foo": "bar", - "baz": map[string]string{ - "cool": "stuff", - }, - } - anotherNestedMap := map[string]interface{}{ - "foo": "bar", - "baz": map[string]string{ - "cool": "things", - "awesome": "stuff", - }, - } - flatMap := map[string]interface{}{ - "foo": "bar", - "baz": "stuff", - } - anotherFlatMap := map[string]interface{}{ - "testing": "fun", - } - - testMap := mergeMaps(flatMap, nestedMap) - equal := reflect.DeepEqual(testMap, nestedMap) - if !equal { - t.Errorf("Expected a nested map to overwrite a flat value. Expected: %v, got %v", nestedMap, testMap) - } - - testMap = mergeMaps(nestedMap, flatMap) - equal = reflect.DeepEqual(testMap, flatMap) - if !equal { - t.Errorf("Expected a flat value to overwrite a map. Expected: %v, got %v", flatMap, testMap) - } - - testMap = mergeMaps(nestedMap, anotherNestedMap) - equal = reflect.DeepEqual(testMap, anotherNestedMap) - if !equal { - t.Errorf("Expected a nested map to overwrite another nested map. Expected: %v, got %v", anotherNestedMap, testMap) - } - - testMap = mergeMaps(anotherFlatMap, anotherNestedMap) - expectedMap := map[string]interface{}{ - "testing": "fun", - "foo": "bar", - "baz": map[string]string{ - "cool": "things", - "awesome": "stuff", - }, - } - equal = reflect.DeepEqual(testMap, expectedMap) - if !equal { - t.Errorf("Expected a map with different keys to merge properly with another map. Expected: %v, got %v", expectedMap, testMap) - } -} - func TestReadFile(t *testing.T) { var p getter.Providers filePath := "%a.txt" From 3d84e00ce756f34f8d3cf41c1489548696edd8a7 Mon Sep 17 00:00:00 2001 From: lubingtan Date: Sun, 9 Feb 2025 16:16:08 +0800 Subject: [PATCH 163/206] fix: use Reader interface as the input of LoadValues and enhance UT of LoadValues Signed-off-by: lubingtan --- pkg/chart/loader/load.go | 7 ++++--- pkg/chart/loader/load_test.go | 19 ++++++++----------- pkg/cli/values/options.go | 5 +++-- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index c40a1aaf5..84a040c0f 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -107,7 +107,7 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { return c, errors.Wrap(err, "cannot load Chart.lock") } case f.Name == "values.yaml": - values, err := LoadValues(f.Data) + values, err := LoadValues(bytes.NewReader(f.Data)) if err != nil { return c, errors.Wrap(err, "cannot load values.yaml") } @@ -207,9 +207,10 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { return c, nil } -func LoadValues(data []byte) (map[string]interface{}, error) { +// LoadValues loads chat values from a reader. +func LoadValues(data io.Reader) (map[string]interface{}, error) { values := map[string]interface{}{} - reader := utilyaml.NewYAMLReader(bufio.NewReader(bytes.NewReader(data))) + reader := utilyaml.NewYAMLReader(bufio.NewReader(data)) for { currentMap := map[string]interface{}{} raw, err := reader.Read() diff --git a/pkg/chart/loader/load_test.go b/pkg/chart/loader/load_test.go index 92ffa002b..e34124829 100644 --- a/pkg/chart/loader/load_test.go +++ b/pkg/chart/loader/load_test.go @@ -490,13 +490,11 @@ func TestLoadInvalidArchive(t *testing.T) { } func TestLoadValues(t *testing.T) { - testDatas := []struct { - name string + testCases := map[string]struct { data []byte expctedValues map[string]interface{} }{ - { - name: "It should load values correctly", + "It should load values correctly": { data: []byte(` foo: image: foo:v1 @@ -512,8 +510,7 @@ bar: }, }, }, - { - name: "It should load values correctly with multiple documents in one file", + "It should load values correctly with multiple documents in one file": { data: []byte(` foo: image: foo:v1 @@ -533,14 +530,14 @@ foo: }, }, } - for _, testData := range testDatas { - t.Run(testData.name, func(tt *testing.T) { - values, err := LoadValues(testData.data) + for testName, testCase := range testCases { + t.Run(testName, func(tt *testing.T) { + values, err := LoadValues(bytes.NewReader(testCase.data)) if err != nil { tt.Fatal(err) } - if !reflect.DeepEqual(values, testData.expctedValues) { - tt.Errorf("Expected values: %v, got %v", testData.expctedValues, values) + if !reflect.DeepEqual(values, testCase.expctedValues) { + tt.Errorf("Expected values: %v, got %v", testCase.expctedValues, values) } }) } diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index 70390f12a..54dd288bc 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -17,6 +17,7 @@ limitations under the License. package values import ( + "bytes" "encoding/json" "io" "net/url" @@ -47,11 +48,11 @@ func (opts *Options) MergeValues(p getter.Providers) (map[string]interface{}, er // User specified a values files via -f/--values for _, filePath := range opts.ValueFiles { - bytes, err := readFile(filePath, p) + raw, err := readFile(filePath, p) if err != nil { return nil, err } - currentMap, err := loader.LoadValues(bytes) + currentMap, err := loader.LoadValues(bytes.NewReader(raw)) if err != nil { return nil, errors.Wrapf(err, "failed to parse %s", filePath) } From fb7221bc9aa8f7747d7f31bffa1181886b7de6ec Mon Sep 17 00:00:00 2001 From: lubingtan Date: Sun, 9 Feb 2025 22:13:26 +0800 Subject: [PATCH 164/206] fix: add doc for func MergeMaps Signed-off-by: lubingtan --- pkg/chart/loader/load.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index 84a040c0f..c957c398d 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -231,6 +231,8 @@ func LoadValues(data io.Reader) (map[string]interface{}, error) { return values, nil } +// MergeMaps merges two maps. If a key exists in both maps, the value from b will be used. +// If the value is a map, the maps will be merged recursively. func MergeMaps(a, b map[string]interface{}) map[string]interface{} { out := make(map[string]interface{}, len(a)) for k, v := range a { From 91cd72d0e47cd5a45871037894927c62956b0f98 Mon Sep 17 00:00:00 2001 From: lubingtan Date: Mon, 10 Feb 2025 08:25:23 +0800 Subject: [PATCH 165/206] fix: improve LoadValues function documentation Signed-off-by: lubingtan --- pkg/chart/loader/load.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/chart/loader/load.go b/pkg/chart/loader/load.go index c957c398d..e32094ef5 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/loader/load.go @@ -207,7 +207,10 @@ func LoadFiles(files []*BufferedFile) (*chart.Chart, error) { return c, nil } -// LoadValues loads chat values from a reader. +// LoadValues loads values from a reader. +// +// The reader is expected to contain one or more YAML documents, the values of which are merged. +// And the values can be either a chart's default values or a user-supplied values. func LoadValues(data io.Reader) (map[string]interface{}, error) { values := map[string]interface{}{} reader := utilyaml.NewYAMLReader(bufio.NewReader(data)) From ef5614364bb174df3126fbb7d0d89b39c2af5c8f Mon Sep 17 00:00:00 2001 From: lubingtan Date: Thu, 20 Feb 2025 08:13:54 +0800 Subject: [PATCH 166/206] fix: replace mergeMaps call with loader.MergeMaps in MergeValues function Signed-off-by: lubingtan --- pkg/cli/values/options.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index 54dd288bc..2c3706b84 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -69,7 +69,7 @@ func (opts *Options) MergeValues(p getter.Providers) (map[string]interface{}, er if err := json.Unmarshal([]byte(trimmedValue), &jsonMap); err != nil { return nil, errors.Errorf("failed parsing --set-json data JSON: %s", value) } - base = mergeMaps(base, jsonMap) + base = loader.MergeMaps(base, jsonMap) } else { // Otherwise, parse it as key=value format if err := strvals.ParseJSON(value, base); err != nil { From 8207fafe130feb0540c53acb6c0cb95f242d6e3c Mon Sep 17 00:00:00 2001 From: Robert Sirchia Date: Thu, 20 Feb 2025 12:13:59 -0500 Subject: [PATCH 167/206] fixing error handling from a previous PR Signed-off-by: Robert Sirchia --- pkg/kube/roundtripper.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/kube/roundtripper.go b/pkg/kube/roundtripper.go index 551d3009b..52cb5bad2 100644 --- a/pkg/kube/roundtripper.go +++ b/pkg/kube/roundtripper.go @@ -58,7 +58,7 @@ func (rt *RetryingRoundTripper) roundTrip(req *http.Request, retry int, prevResp r.Seek(0, io.SeekStart) resp.Body = io.NopCloser(r) if err != nil { - return resp, nil + return resp, err } if ke.Code < 500 { return resp, nil From bb6314adefd2020cf8adb45a3109e1957446b741 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Thu, 20 Feb 2025 14:42:48 -0300 Subject: [PATCH 168/206] Do not reassign repos variable Signed-off-by: Felipe Santos --- pkg/downloader/manager.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index 2e284ab73..dfff0ddd4 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -678,9 +678,9 @@ func (m *Manager) parallelRepoUpdate(repos []*repo.Entry) error { var wg sync.WaitGroup - repos = dedupeRepos(repos) + localRepos := dedupeRepos(repos) - for _, c := range repos { + for _, c := range localRepos { r, err := repo.NewChartRepository(c, m.Getters) if err != nil { return err From 281ccb083543beeac21b9b72be9a07dbdd18f21f Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Thu, 20 Feb 2025 15:33:52 -0300 Subject: [PATCH 169/206] Do not store the normalized chart url Signed-off-by: Felipe Santos --- pkg/downloader/manager.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index dfff0ddd4..c430eddaf 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -664,8 +664,8 @@ func dedupeRepos(repos []*repo.Entry) []*repo.Entry { seen := make(map[string]*repo.Entry) for _, r := range repos { // Normalize URL by removing trailing slashes. - r.URL = strings.TrimSuffix(r.URL, "/") - seen[r.URL] = r + seenUrl := strings.TrimRight(r.URL, "/") + seen[seenUrl] = r } var unique []*repo.Entry for _, r := range seen { From ecb5a2c9dd3f6363c7b153e7b3527db4444ff54f Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Thu, 20 Feb 2025 15:45:57 -0300 Subject: [PATCH 170/206] Fix variable name for linter And restore trimSuffix instead of trimRight, which was a mistake. Signed-off-by: Felipe Santos --- pkg/downloader/manager.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index c430eddaf..52f7d5a92 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -664,8 +664,8 @@ func dedupeRepos(repos []*repo.Entry) []*repo.Entry { seen := make(map[string]*repo.Entry) for _, r := range repos { // Normalize URL by removing trailing slashes. - seenUrl := strings.TrimRight(r.URL, "/") - seen[seenUrl] = r + seenURL := strings.TrimSuffix(r.URL, "/") + seen[seenURL] = r } var unique []*repo.Entry for _, r := range seen { From b1fd2391679258afeb06bf6ad540c51eeb18f4ea Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Thu, 20 Feb 2025 16:58:55 -0300 Subject: [PATCH 171/206] Fix tests failing after removing repo normalization Signed-off-by: Felipe Santos --- pkg/downloader/manager_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index 6a963f603..1c45ee011 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -649,7 +649,8 @@ func TestDedupeRepos(t *testing.T) { }, want: []*repo.Entry{ { - URL: "https://example.com/charts", + // the last one wins + URL: "https://example.com/charts/", }, }, }, From cde407b7d10a2ba2b2ba72466d90ce25fd953ee5 Mon Sep 17 00:00:00 2001 From: Chris Berry Date: Fri, 7 Jan 2022 13:37:19 +0000 Subject: [PATCH 172/206] Add hook annotations to output pod logs to client on success and fail Signed-off-by: Chris Berry --- pkg/action/action_test.go | 15 ++- pkg/action/hooks.go | 88 +++++++++++- pkg/action/hooks_test.go | 208 +++++++++++++++++++++++++++++ pkg/action/install_test.go | 4 + pkg/kube/client.go | 50 ++++++- pkg/kube/client_test.go | 35 +++++ pkg/kube/fake/printer.go | 20 ++- pkg/kube/interface.go | 7 + pkg/release/hook.go | 16 +++ pkg/releaseutil/manifest_sorter.go | 36 +++-- 10 files changed, 452 insertions(+), 27 deletions(-) create mode 100644 pkg/action/hooks_test.go diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 71ea83789..47cff6ec1 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -111,6 +111,14 @@ type chartOptions struct { type chartOption func(*chartOptions) func buildChart(opts ...chartOption) *chart.Chart { + defaultTemplates := []*chart.File{ + {Name: "templates/hello", Data: []byte("hello: world")}, + {Name: "templates/hooks", Data: []byte(manifestWithHook)}, + } + return buildChartWithTemplates(defaultTemplates, opts...) +} + +func buildChartWithTemplates(templates []*chart.File, opts ...chartOption) *chart.Chart { c := &chartOptions{ Chart: &chart.Chart{ // TODO: This should be more complete. @@ -119,18 +127,13 @@ func buildChart(opts ...chartOption) *chart.Chart { Name: "hello", Version: "0.1.0", }, - // This adds a basic template and hooks. - Templates: []*chart.File{ - {Name: "templates/hello", Data: []byte("hello: world")}, - {Name: "templates/hooks", Data: []byte(manifestWithHook)}, - }, + Templates: templates, }, } for _, opt := range opts { opt(c) } - return c.Chart } diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index ecca1d997..95d843ce0 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -17,12 +17,19 @@ package action import ( "bytes" + "fmt" + "log" "sort" "time" + "helm.sh/helm/v4/pkg/kube" + + "helm.sh/helm/v4/pkg/chartutil" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/release" helmtime "helm.sh/helm/v4/pkg/time" ) @@ -44,7 +51,7 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, for _, h := range executingHooks { // Set default delete policy to before-hook-creation - if len(h.DeletePolicies) == 0 { + if h.DeletePolicies == nil || len(h.DeletePolicies) == 0 { // TODO(jlegrone): Only apply before-hook-creation delete policy to run to completion // resources. For all other resource types update in place if a // resource with the same name already exists and is owned by the @@ -87,10 +94,18 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, // Mark hook as succeeded or failed if err != nil { h.LastRun.Phase = release.HookPhaseFailed + // If a hook is failed, check the annotation of the hook to determine if we should copy the logs client side + if errOutputting := cfg.outputLogsByPolicy(h, rl.Namespace, release.HookOutputOnFailed); errOutputting != nil { + // We log the error here as we want to propagate the hook failure upwards to the release object. + log.Printf("error outputting logs for hook failure: %v", errOutputting) + } // If a hook is failed, check the annotation of the hook to determine whether the hook should be deleted // under failed condition. If so, then clear the corresponding resource object in the hook - if err := cfg.deleteHookByPolicy(h, release.HookFailed, timeout); err != nil { - return err + if errDeleting := cfg.deleteHookByPolicy(h, release.HookFailed, timeout); err != nil { + // We log the error here as we want to propagate the hook failure upwards to the release object. + // This is a change in behaviour as the edge case previously would lose the hook error and only + // raise the delete hook error. + log.Printf("error the hook resource on hook failure: %v", errDeleting) } return err } @@ -98,9 +113,13 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, } // If all hooks are successful, check the annotation of each hook to determine whether the hook should be deleted - // under succeeded condition. If so, then clear the corresponding resource object in each hook + // or output should be logged under succeeded condition. If so, then clear the corresponding resource object in each hook for i := len(executingHooks) - 1; i >= 0; i-- { h := executingHooks[i] + if err := cfg.outputLogsByPolicy(h, rl.Namespace, release.HookOutputOnSucceeded); err != nil { + // We log here as we still want to attempt hook resource deletion even if output logging fails. + log.Printf("error outputting logs for hook failure: %v", err) + } if err := cfg.deleteHookByPolicy(h, release.HookSucceeded, timeout); err != nil { return err } @@ -158,3 +177,62 @@ func hookHasDeletePolicy(h *release.Hook, policy release.HookDeletePolicy) bool } return false } + +// outputLogsByPolicy outputs a pods logs if the hook policy instructs it to +func (cfg *Configuration) outputLogsByPolicy(h *release.Hook, releaseNamespace string, policy release.HookOutputLogPolicy) error { + if hookHasOutputLogPolicy(h, policy) { + namespace, err := cfg.deriveNamespace(h, releaseNamespace) + if err != nil { + return err + } + switch h.Kind { + case "Job": + return cfg.outputContainerLogsForListOptions(namespace, metav1.ListOptions{LabelSelector: fmt.Sprintf("job-name=%s", h.Name)}) + case "Pod": + return cfg.outputContainerLogsForListOptions(namespace, metav1.ListOptions{FieldSelector: fmt.Sprintf("metadata.name=%s", h.Name)}) + default: + return nil + } + } + return nil +} + +func (cfg *Configuration) outputContainerLogsForListOptions(namespace string, listOptions metav1.ListOptions) error { + //TODO Helm 4: Remove this check when GetPodList and OutputContainerLogsForPodList are moved from InterfaceExt to Interface + if kubeClient, ok := cfg.KubeClient.(kube.InterfaceExt); ok { + podList, err := kubeClient.GetPodList(namespace, listOptions) + if err != nil { + return err + } + err = kubeClient.OutputContainerLogsForPodList(podList, namespace, log.Writer()) + return err + } + return nil +} + +func (cfg *Configuration) deriveNamespace(h *release.Hook, namespace string) (string, error) { + values, err := chartutil.ReadValues([]byte(h.Manifest)) + if err != nil { + return "", errors.Wrapf(err, "unable to parse kubernetes manifest for output logs hook %s", h.Path) + } + value, err := values.PathValue("metadata.namespace") + switch err.(type) { + case nil: + return value.(string), nil + case chartutil.ErrNoValue: + return namespace, nil + default: + return "", errors.Wrapf(err, "unable to parse path of metadata.namespace in yaml for output logs hook %s", h.Path) + } +} + +// hookHasOutputLogPolicy determines whether the defined hook output log policy matches the hook output log policies +// supported by helm. +func hookHasOutputLogPolicy(h *release.Hook, policy release.HookOutputLogPolicy) bool { + for _, v := range h.OutputLogPolicies { + if policy == v { + return true + } + } + return false +} diff --git a/pkg/action/hooks_test.go b/pkg/action/hooks_test.go new file mode 100644 index 000000000..25a28f60f --- /dev/null +++ b/pkg/action/hooks_test.go @@ -0,0 +1,208 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package action + +import ( + "bytes" + "fmt" + "io/ioutil" + "testing" + + "github.com/stretchr/testify/assert" + + "helm.sh/helm/v3/pkg/chart" + kubefake "helm.sh/helm/v3/pkg/kube/fake" + "helm.sh/helm/v3/pkg/release" +) + +func podManifestWithOutputLogs(hookDefinitions []release.HookOutputLogPolicy) string { + hookDefinitionString := convertHooksToCommaSeparated(hookDefinitions) + return fmt.Sprintf(`kind: Pod +metadata: + name: finding-sharky, + annotations: + "helm.sh/hook": pre-install + "helm.sh/hook-output-log-policy": %s +spec: + containers: + - name: sharky-test + image: fake-image + cmd: fake-command`, hookDefinitionString) +} + +func podManifestWithOutputLogWithNamespace(hookDefinitions []release.HookOutputLogPolicy) string { + hookDefinitionString := convertHooksToCommaSeparated(hookDefinitions) + return fmt.Sprintf(`kind: Pod +metadata: + name: finding-george + namespace: sneaky-namespace + annotations: + "helm.sh/hook": pre-install + "helm.sh/hook-output-log-policy": %s +spec: + containers: + - name: george-test + image: fake-image + cmd: fake-command`, hookDefinitionString) +} + +func jobManifestWithOutputLog(hookDefinitions []release.HookOutputLogPolicy) string { + hookDefinitionString := convertHooksToCommaSeparated(hookDefinitions) + return fmt.Sprintf(`kind: Job +apiVersion: batch/v1 +metadata: + name: losing-religion + annotations: + "helm.sh/hook": pre-install + "helm.sh/hook-output-log-policy": %s +spec: + completions: 1 + parallelism: 1 + activeDeadlineSeconds: 30 + template: + spec: + containers: + - name: religion-container + image: religion-image + cmd: religion-command`, hookDefinitionString) +} + +func jobManifestWithOutputLogWithNamespace(hookDefinitions []release.HookOutputLogPolicy) string { + hookDefinitionString := convertHooksToCommaSeparated(hookDefinitions) + return fmt.Sprintf(`kind: Job +apiVersion: batch/v1 +metadata: + name: losing-religion + namespace: rem-namespace + annotations: + "helm.sh/hook": pre-install + "helm.sh/hook-output-log-policy": %s +spec: + completions: 1 + parallelism: 1 + activeDeadlineSeconds: 30 + template: + spec: + containers: + - name: religion-container + image: religion-image + cmd: religion-command`, hookDefinitionString) +} + +func convertHooksToCommaSeparated(hookDefinitions []release.HookOutputLogPolicy) string { + var commaSeparated string + for i, policy := range hookDefinitions { + if i+1 == len(hookDefinitions) { + commaSeparated += policy.String() + } else { + commaSeparated += policy.String() + "," + } + } + return commaSeparated +} + +func TestInstallRelease_HookOutputLogsOnFailure(t *testing.T) { + // Should output on failure with expected namespace if hook-failed is set + runInstallForHooksWithFailure(t, podManifestWithOutputLogs([]release.HookOutputLogPolicy{release.HookOutputOnFailed}), "spaced", true) + runInstallForHooksWithFailure(t, podManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnFailed}), "sneaky-namespace", true) + runInstallForHooksWithFailure(t, jobManifestWithOutputLog([]release.HookOutputLogPolicy{release.HookOutputOnFailed}), "spaced", true) + runInstallForHooksWithFailure(t, jobManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnFailed}), "rem-namespace", true) + + // Should not output on failure with expected namespace if hook-succeed is set + runInstallForHooksWithFailure(t, podManifestWithOutputLogs([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded}), "", false) + runInstallForHooksWithFailure(t, podManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded}), "", false) + runInstallForHooksWithFailure(t, jobManifestWithOutputLog([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded}), "", false) + runInstallForHooksWithFailure(t, jobManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded}), "", false) +} + +func TestInstallRelease_HookOutputLogsOnSuccess(t *testing.T) { + // Should output on success with expected namespace if hook-succeeded is set + runInstallForHooksWithSuccess(t, podManifestWithOutputLogs([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded}), "spaced", true) + runInstallForHooksWithSuccess(t, podManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded}), "sneaky-namespace", true) + runInstallForHooksWithSuccess(t, jobManifestWithOutputLog([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded}), "spaced", true) + runInstallForHooksWithSuccess(t, jobManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded}), "rem-namespace", true) + + // Should not output on success if hook-failed is set + runInstallForHooksWithSuccess(t, podManifestWithOutputLogs([]release.HookOutputLogPolicy{release.HookOutputOnFailed}), "", false) + runInstallForHooksWithSuccess(t, podManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnFailed}), "", false) + runInstallForHooksWithSuccess(t, jobManifestWithOutputLog([]release.HookOutputLogPolicy{release.HookOutputOnFailed}), "", false) + runInstallForHooksWithSuccess(t, jobManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnFailed}), "", false) +} + +func TestInstallRelease_HooksOutputLogsOnSuccessAndFailure(t *testing.T) { + // Should output on success with expected namespace if hook-succeeded and hook-failed is set + runInstallForHooksWithSuccess(t, podManifestWithOutputLogs([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded, release.HookOutputOnFailed}), "spaced", true) + runInstallForHooksWithSuccess(t, podManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded, release.HookOutputOnFailed}), "sneaky-namespace", true) + runInstallForHooksWithSuccess(t, jobManifestWithOutputLog([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded, release.HookOutputOnFailed}), "spaced", true) + runInstallForHooksWithSuccess(t, jobManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded, release.HookOutputOnFailed}), "rem-namespace", true) + + // Should output on failure if hook-succeeded and hook-failed is set + runInstallForHooksWithFailure(t, podManifestWithOutputLogs([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded, release.HookOutputOnFailed}), "spaced", true) + runInstallForHooksWithFailure(t, podManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded, release.HookOutputOnFailed}), "sneaky-namespace", true) + runInstallForHooksWithFailure(t, jobManifestWithOutputLog([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded, release.HookOutputOnFailed}), "spaced", true) + runInstallForHooksWithFailure(t, jobManifestWithOutputLogWithNamespace([]release.HookOutputLogPolicy{release.HookOutputOnSucceeded, release.HookOutputOnFailed}), "rem-namespace", true) +} + +func runInstallForHooksWithSuccess(t *testing.T, manifest, expectedNamespace string, shouldOutput bool) { + var expectedOutput string + if shouldOutput { + expectedOutput = fmt.Sprintf("attempted to output logs for namespace: %s", expectedNamespace) + } + is := assert.New(t) + instAction := installAction(t) + instAction.ReleaseName = "failed-hooks" + outBuffer := &bytes.Buffer{} + instAction.cfg.KubeClient = &kubefake.PrintingKubeClient{Out: ioutil.Discard, LogOutput: outBuffer} + + templates := []*chart.File{ + {Name: "templates/hello", Data: []byte("hello: world")}, + {Name: "templates/hooks", Data: []byte(manifest)}, + } + vals := map[string]interface{}{} + + res, err := instAction.Run(buildChartWithTemplates(templates), vals) + is.NoError(err) + is.Equal(expectedOutput, outBuffer.String()) + is.Equal(release.StatusDeployed, res.Info.Status) +} + +func runInstallForHooksWithFailure(t *testing.T, manifest, expectedNamespace string, shouldOutput bool) { + var expectedOutput string + if shouldOutput { + expectedOutput = fmt.Sprintf("attempted to output logs for namespace: %s", expectedNamespace) + } + is := assert.New(t) + instAction := installAction(t) + instAction.ReleaseName = "failed-hooks" + failingClient := instAction.cfg.KubeClient.(*kubefake.FailingKubeClient) + failingClient.WatchUntilReadyError = fmt.Errorf("failed watch") + instAction.cfg.KubeClient = failingClient + outBuffer := &bytes.Buffer{} + failingClient.PrintingKubeClient = kubefake.PrintingKubeClient{Out: ioutil.Discard, LogOutput: outBuffer} + + templates := []*chart.File{ + {Name: "templates/hello", Data: []byte("hello: world")}, + {Name: "templates/hooks", Data: []byte(manifest)}, + } + vals := map[string]interface{}{} + + res, err := instAction.Run(buildChartWithTemplates(templates), vals) + is.Error(err) + is.Contains(res.Info.Description, "failed pre-install") + is.Equal(expectedOutput, outBuffer.String()) + is.Equal(release.StatusFailed, res.Info.Status) +} diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index 9f738f0bc..a1eadf693 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -17,6 +17,7 @@ limitations under the License. package action import ( + "bytes" "context" "fmt" "io" @@ -354,11 +355,14 @@ func TestInstallRelease_FailedHooks(t *testing.T) { failer := instAction.cfg.KubeClient.(*kubefake.FailingKubeClient) failer.WatchUntilReadyError = fmt.Errorf("Failed watch") instAction.cfg.KubeClient = failer + outBuffer := &bytes.Buffer{} + failer.PrintingKubeClient = kubefake.PrintingKubeClient{Out: ioutil.Discard, LogOutput: outBuffer} vals := map[string]interface{}{} res, err := instAction.Run(buildChart(), vals) is.Error(err) is.Contains(res.Info.Description, "failed post-install") + is.Equal("", outBuffer.String()) is.Equal(release.StatusFailed, res.Info.Status) } diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 0b84f5219..bf7e77c5a 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -29,6 +29,8 @@ import ( "sync" "time" + "k8s.io/client-go/rest" + jsonpatch "github.com/evanphx/json-patch" "github.com/pkg/errors" batch "k8s.io/api/batch/v1" @@ -83,7 +85,7 @@ type Client struct { // Namespace allows to bypass the kubeconfig file for the choice of the namespace Namespace string - kubeClient *kubernetes.Clientset + kubeClient kubernetes.Interface } func init() { @@ -111,7 +113,7 @@ func New(getter genericclioptions.RESTClientGetter) *Client { var nopLogger = func(_ string, _ ...interface{}) {} // getKubeClient get or create a new KubernetesClientSet -func (c *Client) getKubeClient() (*kubernetes.Clientset, error) { +func (c *Client) getKubeClient() (kubernetes.Interface, error) { var err error if c.kubeClient == nil { c.kubeClient, err = c.Factory.KubernetesClientSet() @@ -131,7 +133,7 @@ func (c *Client) IsReachable() error { if err != nil { return errors.Wrap(err, "Kubernetes cluster unreachable") } - if _, err := client.ServerVersion(); err != nil { + if _, err := client.Discovery().ServerVersion(); err != nil { return errors.Wrap(err, "Kubernetes cluster unreachable") } return nil @@ -812,6 +814,48 @@ func (c *Client) waitForPodSuccess(obj runtime.Object, name string) (bool, error return false, nil } +// GetPodList uses the kubernetes interface to get the list of pods filtered by listOptions +func (c *Client) GetPodList(namespace string, listOptions metav1.ListOptions) (*v1.PodList, error) { + podList, err := c.kubeClient.CoreV1().Pods(namespace).List(context.Background(), listOptions) + if err != nil { + return nil, fmt.Errorf("failed to get pod list with options: %+v with error: %v", listOptions, err) + } + return podList, nil +} + +// OutputContainerLogsForPodList is a helper that outputs logs for a list of pods +func (c *Client) OutputContainerLogsForPodList(podList *v1.PodList, namespace string, writer io.Writer) error { + for _, pod := range podList.Items { + for _, container := range pod.Spec.Containers { + options := &v1.PodLogOptions{ + Container: container.Name, + } + request := c.kubeClient.CoreV1().Pods(namespace).GetLogs(pod.Name, options) + err2 := copyRequestStreamToWriter(request, pod.Name, container.Name, writer) + if err2 != nil { + return err2 + } + } + } + return nil +} + +func copyRequestStreamToWriter(request *rest.Request, podName, containerName string, writer io.Writer) error { + readCloser, err := request.Stream(context.Background()) + if err != nil { + return errors.Errorf("Failed to stream pod logs for pod: %s, container: %s", podName, containerName) + } + defer readCloser.Close() + _, err = io.Copy(writer, readCloser) + if err != nil { + return errors.Errorf("Failed to copy IO from logs for pod: %s, container: %s", podName, containerName) + } + if err != nil { + return errors.Errorf("Failed to close reader for pod: %s, container: %s", podName, containerName) + } + return nil +} + // scrubValidationError removes kubectl info from the message. func scrubValidationError(err error) error { if err == nil { diff --git a/pkg/kube/client_test.go b/pkg/kube/client_test.go index f2d6bcb59..d9bd72783 100644 --- a/pkg/kube/client_test.go +++ b/pkg/kube/client_test.go @@ -24,10 +24,13 @@ import ( "testing" "time" + "github.com/stretchr/testify/assert" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" + k8sfake "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest/fake" cmdtesting "k8s.io/kubectl/pkg/cmd/testing" @@ -682,6 +685,38 @@ func TestReal(t *testing.T) { } } +func TestGetPodList(t *testing.T) { + + namespace := "some-namespace" + names := []string{"dave", "jimmy"} + var responsePodList v1.PodList + for _, name := range names { + responsePodList.Items = append(responsePodList.Items, newPodWithStatus(name, v1.PodStatus{}, namespace)) + } + + kubeClient := k8sfake.NewSimpleClientset(&responsePodList) + c := Client{Namespace: namespace, kubeClient: kubeClient} + + podList, err := c.GetPodList(namespace, metav1.ListOptions{}) + clientAssertions := assert.New(t) + clientAssertions.NoError(err) + clientAssertions.Equal(&responsePodList, podList) + +} + +func TestOutputContainerLogsForPodList(t *testing.T) { + namespace := "some-namespace" + somePodList := newPodList("jimmy", "three", "structs") + + kubeClient := k8sfake.NewSimpleClientset(&somePodList) + c := Client{Namespace: namespace, kubeClient: kubeClient} + outBuffer := &bytes.Buffer{} + err := c.OutputContainerLogsForPodList(&somePodList, namespace, outBuffer) + clientAssertions := assert.New(t) + clientAssertions.NoError(err) + clientAssertions.Equal("fake logsfake logsfake logs", outBuffer.String()) +} + const testServiceManifest = ` kind: Service apiVersion: v1 diff --git a/pkg/kube/fake/printer.go b/pkg/kube/fake/printer.go index 0b957d725..4b9a6d523 100644 --- a/pkg/kube/fake/printer.go +++ b/pkg/kube/fake/printer.go @@ -17,6 +17,7 @@ limitations under the License. package fake import ( + "fmt" "io" "strings" "time" @@ -31,7 +32,8 @@ import ( // PrintingKubeClient implements KubeClient, but simply prints the reader to // the given output. type PrintingKubeClient struct { - Out io.Writer + Out io.Writer + LogOutput io.Writer } // IsReachable checks if the cluster is reachable @@ -110,6 +112,22 @@ func (p *PrintingKubeClient) BuildTable(_ io.Reader, _ bool) (kube.ResourceList, return []*resource.Info{}, nil } +// WaitAndGetCompletedPodPhase implements KubeClient WaitAndGetCompletedPodPhase. +func (p *PrintingKubeClient) WaitAndGetCompletedPodPhase(_ string, _ time.Duration) (v1.PodPhase, error) { + return v1.PodSucceeded, nil +} + +// GetPodList implements KubeClient GetPodList. +func (p *PrintingKubeClient) GetPodList(_ string, _ metav1.ListOptions) (*v1.PodList, error) { + return &v1.PodList{}, nil +} + +// OutputContainerLogsForPodList implements KubeClient OutputContainerLogsForPodList. +func (p *PrintingKubeClient) OutputContainerLogsForPodList(_ *v1.PodList, someNamespace string, _ io.Writer) error { + _, err := io.Copy(p.LogOutput, strings.NewReader(fmt.Sprintf("attempted to output logs for namespace: %s", someNamespace))) + return err +} + // DeleteWithPropagationPolicy implements KubeClient delete. // // It only prints out the content to be deleted. diff --git a/pkg/kube/interface.go b/pkg/kube/interface.go index 7dc7ad8bc..4d295f560 100644 --- a/pkg/kube/interface.go +++ b/pkg/kube/interface.go @@ -20,6 +20,7 @@ import ( "io" "time" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" ) @@ -73,6 +74,12 @@ type Interface interface { type InterfaceExt interface { // WaitForDelete wait up to the given timeout for the specified resources to be deleted. WaitForDelete(resources ResourceList, timeout time.Duration) error + + // GetPodList list all pods that match the specified listOptions + GetPodList(namespace string, listOptions metav1.ListOptions) (*v1.PodList, error) + + // OutputContainerLogsForPodList output the logs for a pod list + OutputContainerLogsForPodList(podList *v1.PodList, namespace string, writer io.Writer) error } // InterfaceDeletionPropagation is introduced to avoid breaking backwards compatibility for Interface implementers. diff --git a/pkg/release/hook.go b/pkg/release/hook.go index e2cdc0eb8..5ff61fdaa 100644 --- a/pkg/release/hook.go +++ b/pkg/release/hook.go @@ -50,6 +50,17 @@ const ( func (x HookDeletePolicy) String() string { return string(x) } +// HookOutputLogPolicy specifies the hook output log policy +type HookOutputLogPolicy string + +// Hook output log policy types +const ( + HookOutputOnSucceeded HookOutputLogPolicy = "hook-succeeded" + HookOutputOnFailed HookOutputLogPolicy = "hook-failed" +) + +func (x HookOutputLogPolicy) String() string { return string(x) } + // HookAnnotation is the label name for a hook const HookAnnotation = "helm.sh/hook" @@ -59,6 +70,9 @@ const HookWeightAnnotation = "helm.sh/hook-weight" // HookDeleteAnnotation is the label name for the delete policy for a hook const HookDeleteAnnotation = "helm.sh/hook-delete-policy" +// HookOutputLogAnnotation is the label name for the output log policy for a hook +const HookOutputLogAnnotation = "helm.sh/hook-output-log-policy" + // Hook defines a hook object. type Hook struct { Name string `json:"name,omitempty"` @@ -76,6 +90,8 @@ type Hook struct { Weight int `json:"weight,omitempty"` // DeletePolicies are the policies that indicate when to delete the hook DeletePolicies []HookDeletePolicy `json:"delete_policies,omitempty"` + // OutputLogPolicies defines whether we should copy hook logs back to main process + OutputLogPolicies []HookOutputLogPolicy `json:"output_log_policies,omitempty"` } // A HookExecution records the result for the last execution of a hook for a given release. diff --git a/pkg/releaseutil/manifest_sorter.go b/pkg/releaseutil/manifest_sorter.go index b2db2ff9f..4aaae2d8c 100644 --- a/pkg/releaseutil/manifest_sorter.go +++ b/pkg/releaseutil/manifest_sorter.go @@ -123,11 +123,18 @@ func SortManifests(files map[string]string, _ chartutil.VersionSet, ordering Kin // // To determine the policy to delete the hook, it looks for a YAML structure like this: // -// kind: SomeKind -// apiVersion: v1 -// metadata: -// annotations: -// helm.sh/hook-delete-policy: hook-succeeded +// kind: SomeKind +// apiVersion: v1 +// metadata: +// annotations: +// helm.sh/hook-delete-policy: hook-succeeded +// To determine the policy to output logs of the hook (for Pod and Job only), it looks for a YAML structure like this: +// +// kind: Pod +// apiVersion: v1 +// metadata: +// annotations: +// helm.sh/hook-output-log-policy: hook-succeeded,hook-failed func (file *manifestFile) sort(result *result) error { // Go through manifests in order found in file (function `SplitManifests` creates integer-sortable keys) var sortedEntryKeys []string @@ -166,13 +173,14 @@ func (file *manifestFile) sort(result *result) error { hw := calculateHookWeight(entry) h := &release.Hook{ - Name: entry.Metadata.Name, - Kind: entry.Kind, - Path: file.path, - Manifest: m, - Events: []release.HookEvent{}, - Weight: hw, - DeletePolicies: []release.HookDeletePolicy{}, + Name: entry.Metadata.Name, + Kind: entry.Kind, + Path: file.path, + Manifest: m, + Events: []release.HookEvent{}, + Weight: hw, + DeletePolicies: []release.HookDeletePolicy{}, + OutputLogPolicies: []release.HookOutputLogPolicy{}, } isUnknownHook := false @@ -196,6 +204,10 @@ func (file *manifestFile) sort(result *result) error { operateAnnotationValues(entry, release.HookDeleteAnnotation, func(value string) { h.DeletePolicies = append(h.DeletePolicies, release.HookDeletePolicy(value)) }) + + operateAnnotationValues(entry, release.HookOutputLogAnnotation, func(value string) { + h.OutputLogPolicies = append(h.OutputLogPolicies, release.HookOutputLogPolicy(value)) + }) } return nil From 3964f84ac86a190b8e163554a056f67f09555cfe Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 3 May 2023 10:35:25 +0100 Subject: [PATCH 173/206] Tidy up imports Signed-off-by: Chris --- pkg/action/hooks_test.go | 6 +++--- pkg/action/install_test.go | 2 +- pkg/kube/client.go | 2 -- pkg/kube/fake/printer.go | 1 + 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/pkg/action/hooks_test.go b/pkg/action/hooks_test.go index 25a28f60f..76de9e505 100644 --- a/pkg/action/hooks_test.go +++ b/pkg/action/hooks_test.go @@ -19,7 +19,7 @@ package action import ( "bytes" "fmt" - "io/ioutil" + "io" "testing" "github.com/stretchr/testify/assert" @@ -166,7 +166,7 @@ func runInstallForHooksWithSuccess(t *testing.T, manifest, expectedNamespace str instAction := installAction(t) instAction.ReleaseName = "failed-hooks" outBuffer := &bytes.Buffer{} - instAction.cfg.KubeClient = &kubefake.PrintingKubeClient{Out: ioutil.Discard, LogOutput: outBuffer} + instAction.cfg.KubeClient = &kubefake.PrintingKubeClient{Out: io.Discard, LogOutput: outBuffer} templates := []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, @@ -192,7 +192,7 @@ func runInstallForHooksWithFailure(t *testing.T, manifest, expectedNamespace str failingClient.WatchUntilReadyError = fmt.Errorf("failed watch") instAction.cfg.KubeClient = failingClient outBuffer := &bytes.Buffer{} - failingClient.PrintingKubeClient = kubefake.PrintingKubeClient{Out: ioutil.Discard, LogOutput: outBuffer} + failingClient.PrintingKubeClient = kubefake.PrintingKubeClient{Out: io.Discard, LogOutput: outBuffer} templates := []*chart.File{ {Name: "templates/hello", Data: []byte("hello: world")}, diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index a1eadf693..f78fa40d2 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -356,7 +356,7 @@ func TestInstallRelease_FailedHooks(t *testing.T) { failer.WatchUntilReadyError = fmt.Errorf("Failed watch") instAction.cfg.KubeClient = failer outBuffer := &bytes.Buffer{} - failer.PrintingKubeClient = kubefake.PrintingKubeClient{Out: ioutil.Discard, LogOutput: outBuffer} + failer.PrintingKubeClient = kubefake.PrintingKubeClient{Out: io.Discard, LogOutput: outBuffer} vals := map[string]interface{}{} res, err := instAction.Run(buildChart(), vals) diff --git a/pkg/kube/client.go b/pkg/kube/client.go index bf7e77c5a..361111fed 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -29,8 +29,6 @@ import ( "sync" "time" - "k8s.io/client-go/rest" - jsonpatch "github.com/evanphx/json-patch" "github.com/pkg/errors" batch "k8s.io/api/batch/v1" diff --git a/pkg/kube/fake/printer.go b/pkg/kube/fake/printer.go index 4b9a6d523..65515812e 100644 --- a/pkg/kube/fake/printer.go +++ b/pkg/kube/fake/printer.go @@ -22,6 +22,7 @@ import ( "strings" "time" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/cli-runtime/pkg/resource" From a55a4770691fb7d98b2db8c8f66e20159396053d Mon Sep 17 00:00:00 2001 From: Chris Berry Date: Wed, 28 Aug 2024 21:14:17 +0100 Subject: [PATCH 174/206] Fix lint Signed-off-by: Chris Berry --- pkg/action/hooks.go | 6 +++--- pkg/releaseutil/manifest_sorter.go | 21 +++++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 95d843ce0..b1e8e1d66 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -51,7 +51,7 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, for _, h := range executingHooks { // Set default delete policy to before-hook-creation - if h.DeletePolicies == nil || len(h.DeletePolicies) == 0 { + if len(h.DeletePolicies) == 0 { // TODO(jlegrone): Only apply before-hook-creation delete policy to run to completion // resources. For all other resource types update in place if a // resource with the same name already exists and is owned by the @@ -157,7 +157,7 @@ func (cfg *Configuration) deleteHookByPolicy(h *release.Hook, policy release.Hoo return errors.New(joinErrors(errs)) } - //wait for resources until they are deleted to avoid conflicts + // wait for resources until they are deleted to avoid conflicts if kubeClient, ok := cfg.KubeClient.(kube.InterfaceExt); ok { if err := kubeClient.WaitForDelete(resources, timeout); err != nil { return err @@ -198,7 +198,7 @@ func (cfg *Configuration) outputLogsByPolicy(h *release.Hook, releaseNamespace s } func (cfg *Configuration) outputContainerLogsForListOptions(namespace string, listOptions metav1.ListOptions) error { - //TODO Helm 4: Remove this check when GetPodList and OutputContainerLogsForPodList are moved from InterfaceExt to Interface + // TODO Helm 4: Remove this check when GetPodList and OutputContainerLogsForPodList are moved from InterfaceExt to Interface if kubeClient, ok := cfg.KubeClient.(kube.InterfaceExt); ok { podList, err := kubeClient.GetPodList(namespace, listOptions) if err != nil { diff --git a/pkg/releaseutil/manifest_sorter.go b/pkg/releaseutil/manifest_sorter.go index 4aaae2d8c..844ce161b 100644 --- a/pkg/releaseutil/manifest_sorter.go +++ b/pkg/releaseutil/manifest_sorter.go @@ -123,18 +123,19 @@ func SortManifests(files map[string]string, _ chartutil.VersionSet, ordering Kin // // To determine the policy to delete the hook, it looks for a YAML structure like this: // -// kind: SomeKind -// apiVersion: v1 -// metadata: -// annotations: -// helm.sh/hook-delete-policy: hook-succeeded +// kind: SomeKind +// apiVersion: v1 +// metadata: +// annotations: +// helm.sh/hook-delete-policy: hook-succeeded +// // To determine the policy to output logs of the hook (for Pod and Job only), it looks for a YAML structure like this: // -// kind: Pod -// apiVersion: v1 -// metadata: -// annotations: -// helm.sh/hook-output-log-policy: hook-succeeded,hook-failed +// kind: Pod +// apiVersion: v1 +// metadata: +// annotations: +// helm.sh/hook-output-log-policy: hook-succeeded,hook-failed func (file *manifestFile) sort(result *result) error { // Go through manifests in order found in file (function `SplitManifests` creates integer-sortable keys) var sortedEntryKeys []string From 3d4e679d9faad8167aeb99f4d02eed2ed99723de Mon Sep 17 00:00:00 2001 From: Chris Berry Date: Tue, 14 Jan 2025 10:49:28 +0000 Subject: [PATCH 175/206] Update based on review comments Signed-off-by: Chris Berry --- pkg/action/hooks.go | 2 +- pkg/action/hooks_test.go | 6 +++--- pkg/kube/interface.go | 10 ++++++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index b1e8e1d66..021a563c3 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -199,7 +199,7 @@ func (cfg *Configuration) outputLogsByPolicy(h *release.Hook, releaseNamespace s func (cfg *Configuration) outputContainerLogsForListOptions(namespace string, listOptions metav1.ListOptions) error { // TODO Helm 4: Remove this check when GetPodList and OutputContainerLogsForPodList are moved from InterfaceExt to Interface - if kubeClient, ok := cfg.KubeClient.(kube.InterfaceExt); ok { + if kubeClient, ok := cfg.KubeClient.(kube.InterfaceLogs); ok { podList, err := kubeClient.GetPodList(namespace, listOptions) if err != nil { return err diff --git a/pkg/action/hooks_test.go b/pkg/action/hooks_test.go index 76de9e505..0f4a9be34 100644 --- a/pkg/action/hooks_test.go +++ b/pkg/action/hooks_test.go @@ -24,9 +24,9 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v3/pkg/chart" - kubefake "helm.sh/helm/v3/pkg/kube/fake" - "helm.sh/helm/v3/pkg/release" + "helm.sh/helm/v4/pkg/chart" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" ) func podManifestWithOutputLogs(hookDefinitions []release.HookOutputLogPolicy) string { diff --git a/pkg/kube/interface.go b/pkg/kube/interface.go index 4d295f560..f701690e3 100644 --- a/pkg/kube/interface.go +++ b/pkg/kube/interface.go @@ -68,13 +68,18 @@ type Interface interface { IsReachable() error } -// InterfaceExt is introduced to avoid breaking backwards compatibility for Interface implementers. +// InterfaceExt was introduced to avoid breaking backwards compatibility for Interface implementers. // // TODO Helm 4: Remove InterfaceExt and integrate its method(s) into the Interface. type InterfaceExt interface { // WaitForDelete wait up to the given timeout for the specified resources to be deleted. WaitForDelete(resources ResourceList, timeout time.Duration) error +} +// InterfaceLogs was introduced to avoid breaking backwards compatibility for Interface implementers. +// +// TODO Helm 4: Remove InterfaceLogs and integrate its method(s) into the Interface. +type InterfaceLogs interface { // GetPodList list all pods that match the specified listOptions GetPodList(namespace string, listOptions metav1.ListOptions) (*v1.PodList, error) @@ -86,7 +91,7 @@ type InterfaceExt interface { // // TODO Helm 4: Remove InterfaceDeletionPropagation and integrate its method(s) into the Interface. type InterfaceDeletionPropagation interface { - // Delete destroys one or more resources. The deletion propagation is handled as per the given deletion propagation value. + // DeleteWithPropagationPolicy destroys one or more resources. The deletion propagation is handled as per the given deletion propagation value. DeleteWithPropagationPolicy(resources ResourceList, policy metav1.DeletionPropagation) (*Result, []error) } @@ -114,5 +119,6 @@ type InterfaceResources interface { var _ Interface = (*Client)(nil) var _ InterfaceExt = (*Client)(nil) +var _ InterfaceLogs = (*Client)(nil) var _ InterfaceDeletionPropagation = (*Client)(nil) var _ InterfaceResources = (*Client)(nil) From 243cb2e21f38767314e2dcd5b827b5aa4adc94fb Mon Sep 17 00:00:00 2001 From: Chris Berry Date: Tue, 14 Jan 2025 11:09:40 +0000 Subject: [PATCH 176/206] Update based on review comments Signed-off-by: Chris Berry --- pkg/action/hooks.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 021a563c3..539f8e7c1 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -198,7 +198,7 @@ func (cfg *Configuration) outputLogsByPolicy(h *release.Hook, releaseNamespace s } func (cfg *Configuration) outputContainerLogsForListOptions(namespace string, listOptions metav1.ListOptions) error { - // TODO Helm 4: Remove this check when GetPodList and OutputContainerLogsForPodList are moved from InterfaceExt to Interface + // TODO Helm 4: Remove this check when GetPodList and OutputContainerLogsForPodList are moved from InterfaceLogs to Interface if kubeClient, ok := cfg.KubeClient.(kube.InterfaceLogs); ok { podList, err := kubeClient.GetPodList(namespace, listOptions) if err != nil { From f729b9ade059579ee53182bafcb399a8b7d86f5a Mon Sep 17 00:00:00 2001 From: Scott Rigby Date: Thu, 20 Feb 2025 12:36:11 -0500 Subject: [PATCH 177/206] add short circuit return Co-authored-by: George Jenkins Signed-off-by: Scott Rigby --- pkg/action/hooks.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 539f8e7c1..310e6d372 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -180,7 +180,9 @@ func hookHasDeletePolicy(h *release.Hook, policy release.HookDeletePolicy) bool // outputLogsByPolicy outputs a pods logs if the hook policy instructs it to func (cfg *Configuration) outputLogsByPolicy(h *release.Hook, releaseNamespace string, policy release.HookOutputLogPolicy) error { - if hookHasOutputLogPolicy(h, policy) { + if !hookHasOutputLogPolicy(h, policy) { + return nil + } namespace, err := cfg.deriveNamespace(h, releaseNamespace) if err != nil { return err From 3796c1f4a171d33b6622e118ae812435574fdadb Mon Sep 17 00:00:00 2001 From: Scott Rigby Date: Thu, 20 Feb 2025 12:37:41 -0500 Subject: [PATCH 178/206] remove comments about previous functionality Signed-off-by: Scott Rigby --- pkg/action/hooks.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 310e6d372..370aa9a67 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -103,8 +103,6 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, // under failed condition. If so, then clear the corresponding resource object in the hook if errDeleting := cfg.deleteHookByPolicy(h, release.HookFailed, timeout); err != nil { // We log the error here as we want to propagate the hook failure upwards to the release object. - // This is a change in behaviour as the edge case previously would lose the hook error and only - // raise the delete hook error. log.Printf("error the hook resource on hook failure: %v", errDeleting) } return err From e8a76bc3eb2a9e1ce9a246164d9d555031eb055e Mon Sep 17 00:00:00 2001 From: Scott Rigby Date: Thu, 20 Feb 2025 13:34:09 -0500 Subject: [PATCH 179/206] fix err check Co-authored-by: George Jenkins Signed-off-by: Scott Rigby --- pkg/action/hooks.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index 370aa9a67..ebe8be6ba 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -101,7 +101,7 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, } // If a hook is failed, check the annotation of the hook to determine whether the hook should be deleted // under failed condition. If so, then clear the corresponding resource object in the hook - if errDeleting := cfg.deleteHookByPolicy(h, release.HookFailed, timeout); err != nil { + if errDeleting := cfg.deleteHookByPolicy(h, release.HookFailed, timeout); errDeleting != nil { // We log the error here as we want to propagate the hook failure upwards to the release object. log.Printf("error the hook resource on hook failure: %v", errDeleting) } From 52ac92fb690bb6c4f8d09900330608b88f745ab2 Mon Sep 17 00:00:00 2001 From: Scott Rigby Date: Thu, 20 Feb 2025 13:34:54 -0500 Subject: [PATCH 180/206] clarify fix error message Signed-off-by: Scott Rigby --- pkg/action/hooks.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index ebe8be6ba..dadcb27f6 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -103,7 +103,7 @@ func (cfg *Configuration) execHook(rl *release.Release, hook release.HookEvent, // under failed condition. If so, then clear the corresponding resource object in the hook if errDeleting := cfg.deleteHookByPolicy(h, release.HookFailed, timeout); errDeleting != nil { // We log the error here as we want to propagate the hook failure upwards to the release object. - log.Printf("error the hook resource on hook failure: %v", errDeleting) + log.Printf("error deleting the hook resource on hook failure: %v", errDeleting) } return err } From 6d30fa59904f1936613e0882d3e3c2608351da0b Mon Sep 17 00:00:00 2001 From: Chris Berry Date: Fri, 21 Feb 2025 12:33:12 +0000 Subject: [PATCH 181/206] Add HookOutputFunc and generic yaml unmarshaller Signed-off-by: Chris Berry --- pkg/action/action.go | 13 ++++++++- pkg/action/hooks.go | 57 ++++++++++++++++++---------------------- pkg/kube/client.go | 4 +-- pkg/kube/client_test.go | 3 ++- pkg/kube/fake/printer.go | 2 +- pkg/kube/interface.go | 2 +- 6 files changed, 43 insertions(+), 38 deletions(-) diff --git a/pkg/action/action.go b/pkg/action/action.go index 8418a4c27..0d81a63cb 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -19,6 +19,8 @@ package action import ( "bytes" "fmt" + "io" + "log" "os" "path" "path/filepath" @@ -95,6 +97,9 @@ type Configuration struct { Capabilities *chartutil.Capabilities Log func(string, ...interface{}) + + // HookOutputFunc Called with container name and returns and expects writer that will receive the log output + HookOutputFunc func(namespace, pod, container string) io.Writer } // renderResources renders the templates in a chart @@ -122,7 +127,7 @@ func (cfg *Configuration) renderResources(ch *chart.Chart, values chartutil.Valu var err2 error // A `helm template` should not talk to the remote cluster. However, commands with the flag - //`--dry-run` with the value of `false`, `none`, or `server` should try to interact with the cluster. + // `--dry-run` with the value of `false`, `none`, or `server` should try to interact with the cluster. // It may break in interesting and exotic ways because other data (e.g. discovery) is mocked. if interactWithRemote && cfg.RESTClientGetter != nil { restConfig, err := cfg.RESTClientGetter.ToRESTConfig() @@ -422,6 +427,12 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp cfg.KubeClient = kc cfg.Releases = store cfg.Log = log + cfg.HookOutputFunc = defaultHookOutputWriter return nil } + +// defaultHookOutputWriter will write the Hook logs to log.Writer(). +func defaultHookOutputWriter(_, _, _ string) io.Writer { + return log.Writer() +} diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index dadcb27f6..b6c505807 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -19,16 +19,16 @@ import ( "bytes" "fmt" "log" + "slices" "sort" "time" "helm.sh/helm/v4/pkg/kube" - "helm.sh/helm/v4/pkg/chartutil" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/pkg/errors" + "gopkg.in/yaml.v3" "helm.sh/helm/v4/pkg/release" helmtime "helm.sh/helm/v4/pkg/time" @@ -179,22 +179,20 @@ func hookHasDeletePolicy(h *release.Hook, policy release.HookDeletePolicy) bool // outputLogsByPolicy outputs a pods logs if the hook policy instructs it to func (cfg *Configuration) outputLogsByPolicy(h *release.Hook, releaseNamespace string, policy release.HookOutputLogPolicy) error { if !hookHasOutputLogPolicy(h, policy) { - return nil + return nil } - namespace, err := cfg.deriveNamespace(h, releaseNamespace) - if err != nil { - return err - } - switch h.Kind { - case "Job": - return cfg.outputContainerLogsForListOptions(namespace, metav1.ListOptions{LabelSelector: fmt.Sprintf("job-name=%s", h.Name)}) - case "Pod": - return cfg.outputContainerLogsForListOptions(namespace, metav1.ListOptions{FieldSelector: fmt.Sprintf("metadata.name=%s", h.Name)}) - default: - return nil - } + namespace, err := cfg.deriveNamespace(h, releaseNamespace) + if err != nil { + return err + } + switch h.Kind { + case "Job": + return cfg.outputContainerLogsForListOptions(namespace, metav1.ListOptions{LabelSelector: fmt.Sprintf("job-name=%s", h.Name)}) + case "Pod": + return cfg.outputContainerLogsForListOptions(namespace, metav1.ListOptions{FieldSelector: fmt.Sprintf("metadata.name=%s", h.Name)}) + default: + return nil } - return nil } func (cfg *Configuration) outputContainerLogsForListOptions(namespace string, listOptions metav1.ListOptions) error { @@ -204,35 +202,30 @@ func (cfg *Configuration) outputContainerLogsForListOptions(namespace string, li if err != nil { return err } - err = kubeClient.OutputContainerLogsForPodList(podList, namespace, log.Writer()) + err = kubeClient.OutputContainerLogsForPodList(podList, namespace, cfg.HookOutputFunc) return err } return nil } func (cfg *Configuration) deriveNamespace(h *release.Hook, namespace string) (string, error) { - values, err := chartutil.ReadValues([]byte(h.Manifest)) + tmp := struct { + Metadata struct { + Namespace string + } + }{} + err := yaml.Unmarshal([]byte(h.Manifest), &tmp) if err != nil { - return "", errors.Wrapf(err, "unable to parse kubernetes manifest for output logs hook %s", h.Path) + return "", errors.Wrapf(err, "unable to parse metadata.namespace from kubernetes manifest for output logs hook %s", h.Path) } - value, err := values.PathValue("metadata.namespace") - switch err.(type) { - case nil: - return value.(string), nil - case chartutil.ErrNoValue: + if tmp.Metadata.Namespace == "" { return namespace, nil - default: - return "", errors.Wrapf(err, "unable to parse path of metadata.namespace in yaml for output logs hook %s", h.Path) } + return tmp.Metadata.Namespace, nil } // hookHasOutputLogPolicy determines whether the defined hook output log policy matches the hook output log policies // supported by helm. func hookHasOutputLogPolicy(h *release.Hook, policy release.HookOutputLogPolicy) bool { - for _, v := range h.OutputLogPolicies { - if policy == v { - return true - } - } - return false + return slices.Contains(h.OutputLogPolicies, policy) } diff --git a/pkg/kube/client.go b/pkg/kube/client.go index 361111fed..fd111c647 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -822,14 +822,14 @@ func (c *Client) GetPodList(namespace string, listOptions metav1.ListOptions) (* } // OutputContainerLogsForPodList is a helper that outputs logs for a list of pods -func (c *Client) OutputContainerLogsForPodList(podList *v1.PodList, namespace string, writer io.Writer) error { +func (c *Client) OutputContainerLogsForPodList(podList *v1.PodList, namespace string, writerFunc func(namespace, pod, container string) io.Writer) error { for _, pod := range podList.Items { for _, container := range pod.Spec.Containers { options := &v1.PodLogOptions{ Container: container.Name, } request := c.kubeClient.CoreV1().Pods(namespace).GetLogs(pod.Name, options) - err2 := copyRequestStreamToWriter(request, pod.Name, container.Name, writer) + err2 := copyRequestStreamToWriter(request, pod.Name, container.Name, writerFunc(namespace, pod.Name, container.Name)) if err2 != nil { return err2 } diff --git a/pkg/kube/client_test.go b/pkg/kube/client_test.go index d9bd72783..ff1335f0f 100644 --- a/pkg/kube/client_test.go +++ b/pkg/kube/client_test.go @@ -711,7 +711,8 @@ func TestOutputContainerLogsForPodList(t *testing.T) { kubeClient := k8sfake.NewSimpleClientset(&somePodList) c := Client{Namespace: namespace, kubeClient: kubeClient} outBuffer := &bytes.Buffer{} - err := c.OutputContainerLogsForPodList(&somePodList, namespace, outBuffer) + outBufferFunc := func(_, _, _ string) io.Writer { return outBuffer } + err := c.OutputContainerLogsForPodList(&somePodList, namespace, outBufferFunc) clientAssertions := assert.New(t) clientAssertions.NoError(err) clientAssertions.Equal("fake logsfake logsfake logs", outBuffer.String()) diff --git a/pkg/kube/fake/printer.go b/pkg/kube/fake/printer.go index 65515812e..dcce9a3be 100644 --- a/pkg/kube/fake/printer.go +++ b/pkg/kube/fake/printer.go @@ -124,7 +124,7 @@ func (p *PrintingKubeClient) GetPodList(_ string, _ metav1.ListOptions) (*v1.Pod } // OutputContainerLogsForPodList implements KubeClient OutputContainerLogsForPodList. -func (p *PrintingKubeClient) OutputContainerLogsForPodList(_ *v1.PodList, someNamespace string, _ io.Writer) error { +func (p *PrintingKubeClient) OutputContainerLogsForPodList(_ *v1.PodList, someNamespace string, _ func(namespace, pod, container string) io.Writer) error { _, err := io.Copy(p.LogOutput, strings.NewReader(fmt.Sprintf("attempted to output logs for namespace: %s", someNamespace))) return err } diff --git a/pkg/kube/interface.go b/pkg/kube/interface.go index f701690e3..c9776cacd 100644 --- a/pkg/kube/interface.go +++ b/pkg/kube/interface.go @@ -84,7 +84,7 @@ type InterfaceLogs interface { GetPodList(namespace string, listOptions metav1.ListOptions) (*v1.PodList, error) // OutputContainerLogsForPodList output the logs for a pod list - OutputContainerLogsForPodList(podList *v1.PodList, namespace string, writer io.Writer) error + OutputContainerLogsForPodList(podList *v1.PodList, namespace string, writerFunc func(namespace, pod, container string) io.Writer) error } // InterfaceDeletionPropagation is introduced to avoid breaking backwards compatibility for Interface implementers. From 9791767baa9d3e4d460c25e921f06172b2cec53f Mon Sep 17 00:00:00 2001 From: Chris Berry Date: Fri, 21 Feb 2025 16:16:26 +0000 Subject: [PATCH 182/206] Refactor based on review comment Signed-off-by: Chris Berry --- cmd/helm/helm.go | 7 ++++++- cmd/helm/list.go | 2 +- pkg/action/action.go | 19 ++++++++++--------- pkg/action/action_test.go | 2 +- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index aa981740f..3d5c17030 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -57,6 +57,11 @@ func warning(format string, v ...interface{}) { fmt.Fprintf(os.Stderr, format, v...) } +// hookOutputWriter provides the writer for writing hook logs. +func hookOutputWriter(_, _, _ string) io.Writer { + return log.Writer() +} + func main() { // Setting the name of the app for managedFields in the Kubernetes client. // It is set here to the full name of "helm" so that renaming of helm to @@ -74,7 +79,7 @@ func main() { // run when each command's execute method is called cobra.OnInitialize(func() { helmDriver := os.Getenv("HELM_DRIVER") - if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), helmDriver, debug); err != nil { + if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), helmDriver, debug, hookOutputWriter); err != nil { log.Fatal(err) } if helmDriver == "memory" { diff --git a/cmd/helm/list.go b/cmd/helm/list.go index 67da22cdf..f9bf336d4 100644 --- a/cmd/helm/list.go +++ b/cmd/helm/list.go @@ -71,7 +71,7 @@ func newListCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { ValidArgsFunction: noMoreArgsCompFunc, RunE: func(cmd *cobra.Command, _ []string) error { if client.AllNamespaces { - if err := cfg.Init(settings.RESTClientGetter(), "", os.Getenv("HELM_DRIVER"), debug); err != nil { + if err := cfg.Init(settings.RESTClientGetter(), "", os.Getenv("HELM_DRIVER"), debug, nil); err != nil { return err } } diff --git a/pkg/action/action.go b/pkg/action/action.go index 0d81a63cb..dfb263269 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -20,7 +20,6 @@ import ( "bytes" "fmt" "io" - "log" "os" "path" "path/filepath" @@ -98,7 +97,7 @@ type Configuration struct { Log func(string, ...interface{}) - // HookOutputFunc Called with container name and returns and expects writer that will receive the log output + // HookOutputFunc called with container name and returns and expects writer that will receive the log output. HookOutputFunc func(namespace, pod, container string) io.Writer } @@ -247,6 +246,9 @@ type RESTClientGetter interface { // DebugLog sets the logger that writes debug strings type DebugLog func(format string, v ...interface{}) +// HookOutputFunc returns the io.Writer for outputting hook logs. +type HookOutputFunc func(namespace, pod, container string) io.Writer + // capabilities builds a Capabilities from discovery information. func (cfg *Configuration) getCapabilities() (*chartutil.Capabilities, error) { if cfg.Capabilities != nil { @@ -375,7 +377,7 @@ func (cfg *Configuration) recordRelease(r *release.Release) { } // Init initializes the action configuration -func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string, log DebugLog) error { +func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string, log DebugLog, outputFunc HookOutputFunc) error { kc := kube.New(getter) kc.Log = log @@ -427,12 +429,11 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp cfg.KubeClient = kc cfg.Releases = store cfg.Log = log - cfg.HookOutputFunc = defaultHookOutputWriter + if outputFunc != nil { + cfg.HookOutputFunc = outputFunc + } else { + cfg.HookOutputFunc = func(_, _, _ string) io.Writer { return io.Discard } + } return nil } - -// defaultHookOutputWriter will write the Hook logs to log.Writer(). -func defaultHookOutputWriter(_, _, _ string) io.Writer { - return log.Writer() -} diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 47cff6ec1..2d1516edb 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -334,7 +334,7 @@ func TestConfiguration_Init(t *testing.T) { t.Run(tt.name, func(t *testing.T) { cfg := &Configuration{} - actualErr := cfg.Init(nil, "default", tt.helmDriver, nil) + actualErr := cfg.Init(nil, "default", tt.helmDriver, nil, nil) if tt.expectErr { assert.Error(t, actualErr) assert.Contains(t, actualErr.Error(), tt.errMsg) From e5bc21c56b5b384acf77dbc3589694d03477cb27 Mon Sep 17 00:00:00 2001 From: Chris Berry Date: Fri, 21 Feb 2025 16:33:31 +0000 Subject: [PATCH 183/206] Refactor based on review comment Signed-off-by: Chris Berry --- cmd/helm/helm.go | 3 ++- cmd/helm/list.go | 2 +- pkg/action/action.go | 16 +++++++--------- pkg/action/action_test.go | 2 +- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index 3d5c17030..c8de18796 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -79,12 +79,13 @@ func main() { // run when each command's execute method is called cobra.OnInitialize(func() { helmDriver := os.Getenv("HELM_DRIVER") - if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), helmDriver, debug, hookOutputWriter); err != nil { + if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), helmDriver, debug); err != nil { log.Fatal(err) } if helmDriver == "memory" { loadReleasesInMemory(actionConfig) } + actionConfig.SetHookOutputFunc(hookOutputWriter) }) if err := cmd.Execute(); err != nil { diff --git a/cmd/helm/list.go b/cmd/helm/list.go index f9bf336d4..67da22cdf 100644 --- a/cmd/helm/list.go +++ b/cmd/helm/list.go @@ -71,7 +71,7 @@ func newListCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { ValidArgsFunction: noMoreArgsCompFunc, RunE: func(cmd *cobra.Command, _ []string) error { if client.AllNamespaces { - if err := cfg.Init(settings.RESTClientGetter(), "", os.Getenv("HELM_DRIVER"), debug, nil); err != nil { + if err := cfg.Init(settings.RESTClientGetter(), "", os.Getenv("HELM_DRIVER"), debug); err != nil { return err } } diff --git a/pkg/action/action.go b/pkg/action/action.go index dfb263269..745f02138 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -246,9 +246,6 @@ type RESTClientGetter interface { // DebugLog sets the logger that writes debug strings type DebugLog func(format string, v ...interface{}) -// HookOutputFunc returns the io.Writer for outputting hook logs. -type HookOutputFunc func(namespace, pod, container string) io.Writer - // capabilities builds a Capabilities from discovery information. func (cfg *Configuration) getCapabilities() (*chartutil.Capabilities, error) { if cfg.Capabilities != nil { @@ -377,7 +374,7 @@ func (cfg *Configuration) recordRelease(r *release.Release) { } // Init initializes the action configuration -func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string, log DebugLog, outputFunc HookOutputFunc) error { +func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namespace, helmDriver string, log DebugLog) error { kc := kube.New(getter) kc.Log = log @@ -429,11 +426,12 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp cfg.KubeClient = kc cfg.Releases = store cfg.Log = log - if outputFunc != nil { - cfg.HookOutputFunc = outputFunc - } else { - cfg.HookOutputFunc = func(_, _, _ string) io.Writer { return io.Discard } - } + cfg.HookOutputFunc = func(_, _, _ string) io.Writer { return io.Discard } return nil } + +// SetHookOutputFunc sets the HookOutputFunc on the Configuration. +func (cfg *Configuration) SetHookOutputFunc(hookOutputFunc func(_, _, _ string) io.Writer) { + cfg.HookOutputFunc = hookOutputFunc +} diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 2d1516edb..47cff6ec1 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -334,7 +334,7 @@ func TestConfiguration_Init(t *testing.T) { t.Run(tt.name, func(t *testing.T) { cfg := &Configuration{} - actualErr := cfg.Init(nil, "default", tt.helmDriver, nil, nil) + actualErr := cfg.Init(nil, "default", tt.helmDriver, nil) if tt.expectErr { assert.Error(t, actualErr) assert.Contains(t, actualErr.Error(), tt.errMsg) From 5c0deec32792d32c052883b73ee03be3381cabab Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Fri, 21 Feb 2025 15:25:55 -0500 Subject: [PATCH 184/206] Moving chartutil to chart/util chartutil was originally created to operate on protobufs which are no longer part of Helm. The util package makes more sense to be part of the chart package. This change is part of the HIP 20 to create v3 charts and explicitly call out v2 charts. The changes for this are in smaller bite size changes. Signed-off-by: Matt Farina --- Makefile | 4 ++-- cmd/helm/create.go | 2 +- cmd/helm/create_test.go | 2 +- cmd/helm/dependency_build_test.go | 2 +- cmd/helm/dependency_update_test.go | 2 +- cmd/helm/helm_test.go | 2 +- cmd/helm/lint.go | 2 +- cmd/helm/status.go | 2 +- cmd/helm/template.go | 2 +- cmd/helm/upgrade_test.go | 2 +- pkg/action/action.go | 2 +- pkg/action/action_test.go | 2 +- pkg/action/dependency_test.go | 2 +- pkg/action/get_values.go | 2 +- pkg/action/history.go | 2 +- pkg/action/install.go | 2 +- pkg/action/install_test.go | 2 +- pkg/action/lint.go | 2 +- pkg/action/package.go | 2 +- pkg/action/pull.go | 2 +- pkg/action/release_testing.go | 2 +- pkg/action/rollback.go | 2 +- pkg/action/show.go | 2 +- pkg/action/uninstall.go | 2 +- pkg/action/upgrade.go | 2 +- pkg/{chartutil => chart/util}/capabilities.go | 2 +- pkg/{chartutil => chart/util}/capabilities_test.go | 2 +- pkg/{chartutil => chart/util}/chartfile.go | 2 +- pkg/{chartutil => chart/util}/chartfile_test.go | 2 +- pkg/{chartutil => chart/util}/coalesce.go | 2 +- pkg/{chartutil => chart/util}/coalesce_test.go | 2 +- pkg/{chartutil => chart/util}/compatible.go | 2 +- pkg/{chartutil => chart/util}/compatible_test.go | 2 +- pkg/{chartutil => chart/util}/create.go | 2 +- pkg/{chartutil => chart/util}/create_test.go | 2 +- pkg/{chartutil => chart/util}/dependencies.go | 2 +- pkg/{chartutil => chart/util}/dependencies_test.go | 2 +- pkg/{chartutil => chart/util}/doc.go | 4 ++-- pkg/{chartutil => chart/util}/errors.go | 2 +- pkg/{chartutil => chart/util}/errors_test.go | 2 +- pkg/{chartutil => chart/util}/expand.go | 2 +- pkg/{chartutil => chart/util}/expand_test.go | 2 +- pkg/{chartutil => chart/util}/jsonschema.go | 2 +- pkg/{chartutil => chart/util}/jsonschema_test.go | 2 +- pkg/{chartutil => chart/util}/save.go | 2 +- pkg/{chartutil => chart/util}/save_test.go | 2 +- .../util}/testdata/chartfiletest.yaml | 0 .../util}/testdata/coleridge.yaml | 0 .../testdata/dependent-chart-alias/.helmignore | 0 .../util}/testdata/dependent-chart-alias/Chart.lock | 0 .../util}/testdata/dependent-chart-alias/Chart.yaml | 0 .../testdata/dependent-chart-alias/INSTALL.txt | 0 .../util}/testdata/dependent-chart-alias/LICENSE | 0 .../util}/testdata/dependent-chart-alias/README.md | 0 .../dependent-chart-alias/charts/_ignore_me | 0 .../dependent-chart-alias/charts/alpine/Chart.yaml | 0 .../dependent-chart-alias/charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../dependent-chart-alias/charts/alpine/values.yaml | 0 .../dependent-chart-alias/charts/mariner-4.3.2.tgz | Bin .../testdata/dependent-chart-alias/docs/README.md | 0 .../util}/testdata/dependent-chart-alias/icon.svg | 0 .../testdata/dependent-chart-alias/ignore/me.txt | 0 .../dependent-chart-alias/templates/template.tpl | 0 .../testdata/dependent-chart-alias/values.yaml | 0 .../testdata/dependent-chart-helmignore/.helmignore | 0 .../testdata/dependent-chart-helmignore/Chart.yaml | 0 .../dependent-chart-helmignore/charts/.ignore_me | 0 .../dependent-chart-helmignore/charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../templates/template.tpl | 0 .../testdata/dependent-chart-helmignore/values.yaml | 0 .../.helmignore | 0 .../dependent-chart-no-requirements-yaml/Chart.yaml | 0 .../INSTALL.txt | 0 .../dependent-chart-no-requirements-yaml/LICENSE | 0 .../dependent-chart-no-requirements-yaml/README.md | 0 .../charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../docs/README.md | 0 .../dependent-chart-no-requirements-yaml/icon.svg | 0 .../ignore/me.txt | 0 .../templates/template.tpl | 0 .../values.yaml | 0 .../.helmignore | 0 .../Chart.yaml | 0 .../INSTALL.txt | 0 .../LICENSE | 0 .../README.md | 0 .../charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../docs/README.md | 0 .../icon.svg | 0 .../ignore/me.txt | 0 .../templates/template.tpl | 0 .../values.yaml | 0 .../.helmignore | 0 .../Chart.yaml | 0 .../INSTALL.txt | 0 .../LICENSE | 0 .../README.md | 0 .../charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../docs/README.md | 0 .../icon.svg | 0 .../ignore/me.txt | 0 .../templates/template.tpl | 0 .../values.yaml | 0 .../util}/testdata/frobnitz-1.2.3.tgz | Bin .../util}/testdata/frobnitz/.helmignore | 0 .../util}/testdata/frobnitz/Chart.lock | 0 .../util}/testdata/frobnitz/Chart.yaml | 0 .../util}/testdata/frobnitz/INSTALL.txt | 0 .../util}/testdata/frobnitz/LICENSE | 0 .../util}/testdata/frobnitz/README.md | 0 .../util}/testdata/frobnitz/charts/_ignore_me | 0 .../testdata/frobnitz/charts/alpine/Chart.yaml | 0 .../util}/testdata/frobnitz/charts/alpine/README.md | 0 .../frobnitz/charts/alpine/charts/mast1/Chart.yaml | 0 .../frobnitz/charts/alpine/charts/mast1/values.yaml | 0 .../frobnitz/charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../testdata/frobnitz/charts/alpine/values.yaml | 0 .../testdata/frobnitz/charts/mariner/Chart.yaml | 0 .../charts/mariner/charts/albatross/Chart.yaml | 0 .../charts/mariner/charts/albatross/values.yaml | 0 .../charts/mariner/templates/placeholder.tpl | 0 .../testdata/frobnitz/charts/mariner/values.yaml | 0 .../util}/testdata/frobnitz/docs/README.md | 0 .../util}/testdata/frobnitz/icon.svg | 0 .../util}/testdata/frobnitz/ignore/me.txt | 0 .../util}/testdata/frobnitz/templates/template.tpl | 0 .../util}/testdata/frobnitz/values.yaml | 0 .../util}/testdata/frobnitz_backslash-1.2.3.tgz | Bin pkg/{chartutil => chart/util}/testdata/genfrob.sh | 0 .../parent-chart/Chart.lock | 0 .../parent-chart/Chart.yaml | 0 .../parent-chart/charts/dev-v0.1.0.tgz | Bin .../parent-chart/charts/prod-v0.1.0.tgz | Bin .../parent-chart/envs/dev/Chart.yaml | 0 .../parent-chart/envs/dev/values.yaml | 0 .../parent-chart/envs/prod/Chart.yaml | 0 .../parent-chart/envs/prod/values.yaml | 0 .../parent-chart/templates/autoscaler.yaml | 0 .../parent-chart/values.yaml | 0 .../util}/testdata/joonix/Chart.yaml | 0 .../util}/testdata/joonix/charts/.gitkeep | 0 .../util}/testdata/subpop/Chart.yaml | 0 .../util}/testdata/subpop/README.md | 0 .../testdata/subpop/charts/subchart1/Chart.yaml | 0 .../charts/subchart1/charts/subchartA/Chart.yaml | 0 .../charts/subchartA/templates/service.yaml | 0 .../charts/subchart1/charts/subchartA/values.yaml | 0 .../charts/subchart1/charts/subchartB/Chart.yaml | 0 .../charts/subchartB/templates/service.yaml | 0 .../charts/subchart1/charts/subchartB/values.yaml | 0 .../testdata/subpop/charts/subchart1/crds/crdA.yaml | 0 .../subpop/charts/subchart1/templates/NOTES.txt | 0 .../subpop/charts/subchart1/templates/service.yaml | 0 .../charts/subchart1/templates/subdir/role.yaml | 0 .../subchart1/templates/subdir/rolebinding.yaml | 0 .../subchart1/templates/subdir/serviceaccount.yaml | 0 .../testdata/subpop/charts/subchart1/values.yaml | 0 .../testdata/subpop/charts/subchart2/Chart.yaml | 0 .../charts/subchart2/charts/subchartB/Chart.yaml | 0 .../charts/subchartB/templates/service.yaml | 0 .../charts/subchart2/charts/subchartB/values.yaml | 0 .../charts/subchart2/charts/subchartC/Chart.yaml | 0 .../charts/subchartC/templates/service.yaml | 0 .../charts/subchart2/charts/subchartC/values.yaml | 0 .../subpop/charts/subchart2/templates/service.yaml | 0 .../testdata/subpop/charts/subchart2/values.yaml | 0 .../util}/testdata/subpop/noreqs/Chart.yaml | 0 .../testdata/subpop/noreqs/templates/service.yaml | 0 .../util}/testdata/subpop/noreqs/values.yaml | 0 .../util}/testdata/subpop/values.yaml | 0 .../util}/testdata/test-values-invalid.schema.json | 0 .../util}/testdata/test-values-negative.yaml | 0 .../util}/testdata/test-values.schema.json | 0 .../util}/testdata/test-values.yaml | 0 .../testdata/three-level-dependent-chart/README.md | 0 .../three-level-dependent-chart/umbrella/Chart.yaml | 0 .../umbrella/charts/app1/Chart.yaml | 0 .../umbrella/charts/app1/charts/library/Chart.yaml | 0 .../app1/charts/library/templates/service.yaml | 0 .../umbrella/charts/app1/charts/library/values.yaml | 0 .../umbrella/charts/app1/templates/service.yaml | 0 .../umbrella/charts/app1/values.yaml | 0 .../umbrella/charts/app2/Chart.yaml | 0 .../umbrella/charts/app2/charts/library/Chart.yaml | 0 .../app2/charts/library/templates/service.yaml | 0 .../umbrella/charts/app2/charts/library/values.yaml | 0 .../umbrella/charts/app2/templates/service.yaml | 0 .../umbrella/charts/app2/values.yaml | 0 .../umbrella/charts/app3/Chart.yaml | 0 .../umbrella/charts/app3/charts/library/Chart.yaml | 0 .../app3/charts/library/templates/service.yaml | 0 .../umbrella/charts/app3/charts/library/values.yaml | 0 .../umbrella/charts/app3/templates/service.yaml | 0 .../umbrella/charts/app3/values.yaml | 0 .../umbrella/charts/app4/Chart.yaml | 0 .../umbrella/charts/app4/charts/library/Chart.yaml | 0 .../app4/charts/library/templates/service.yaml | 0 .../umbrella/charts/app4/charts/library/values.yaml | 0 .../umbrella/charts/app4/templates/service.yaml | 0 .../umbrella/charts/app4/values.yaml | 0 .../umbrella/values.yaml | 0 pkg/{chartutil => chart/util}/validate_name.go | 2 +- pkg/{chartutil => chart/util}/validate_name_test.go | 2 +- pkg/{chartutil => chart/util}/values.go | 2 +- pkg/{chartutil => chart/util}/values_test.go | 2 +- pkg/downloader/manager.go | 2 +- pkg/downloader/manager_test.go | 2 +- pkg/engine/engine.go | 2 +- pkg/engine/engine_test.go | 2 +- pkg/lint/lint.go | 2 +- pkg/lint/lint_test.go | 2 +- pkg/lint/rules/chartfile.go | 2 +- pkg/lint/rules/chartfile_test.go | 2 +- pkg/lint/rules/dependencies_test.go | 2 +- pkg/lint/rules/deprecations.go | 2 +- pkg/lint/rules/template.go | 2 +- pkg/lint/rules/template_test.go | 2 +- pkg/lint/rules/values.go | 2 +- pkg/releaseutil/manifest_sorter.go | 2 +- pkg/repo/repotest/server.go | 2 +- 256 files changed, 67 insertions(+), 67 deletions(-) rename pkg/{chartutil => chart/util}/capabilities.go (99%) rename pkg/{chartutil => chart/util}/capabilities_test.go (99%) rename pkg/{chartutil => chart/util}/chartfile.go (99%) rename pkg/{chartutil => chart/util}/chartfile_test.go (99%) rename pkg/{chartutil => chart/util}/coalesce.go (99%) rename pkg/{chartutil => chart/util}/coalesce_test.go (99%) rename pkg/{chartutil => chart/util}/compatible.go (98%) rename pkg/{chartutil => chart/util}/compatible_test.go (98%) rename pkg/{chartutil => chart/util}/create.go (99%) rename pkg/{chartutil => chart/util}/create_test.go (99%) rename pkg/{chartutil => chart/util}/dependencies.go (99%) rename pkg/{chartutil => chart/util}/dependencies_test.go (99%) rename pkg/{chartutil => chart/util}/doc.go (92%) rename pkg/{chartutil => chart/util}/errors.go (98%) rename pkg/{chartutil => chart/util}/errors_test.go (97%) rename pkg/{chartutil => chart/util}/expand.go (99%) rename pkg/{chartutil => chart/util}/expand_test.go (99%) rename pkg/{chartutil => chart/util}/jsonschema.go (99%) rename pkg/{chartutil => chart/util}/jsonschema_test.go (99%) rename pkg/{chartutil => chart/util}/save.go (99%) rename pkg/{chartutil => chart/util}/save_test.go (99%) rename pkg/{chartutil => chart/util}/testdata/chartfiletest.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/coleridge.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/.helmignore (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/Chart.lock (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/INSTALL.txt (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/LICENSE (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/_ignore_me (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/alpine/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/alpine/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/alpine/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/docs/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/icon.svg (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/ignore/me.txt (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/templates/template.tpl (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-alias/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/.helmignore (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/.ignore_me (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/_ignore_me (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/alpine/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/charts/alpine/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/templates/template.tpl (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-helmignore/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/.helmignore (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/LICENSE (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/docs/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/icon.svg (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-no-requirements-yaml/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl (100%) rename pkg/{chartutil => chart/util}/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz-1.2.3.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/.helmignore (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/Chart.lock (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/INSTALL.txt (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/LICENSE (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/_ignore_me (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/alpine/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/alpine/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/alpine/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/mariner/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/mariner/templates/placeholder.tpl (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/charts/mariner/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/docs/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/icon.svg (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/ignore/me.txt (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/templates/template.tpl (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/frobnitz_backslash-1.2.3.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/genfrob.sh (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/joonix/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/joonix/charts/.gitkeep (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/crds/crdA.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/templates/NOTES.txt (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/templates/subdir/role.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart1/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/charts/subchart2/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/noreqs/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/noreqs/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/noreqs/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/subpop/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/test-values-invalid.schema.json (100%) rename pkg/{chartutil => chart/util}/testdata/test-values-negative.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/test-values.schema.json (100%) rename pkg/{chartutil => chart/util}/testdata/test-values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/README.md (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml (100%) rename pkg/{chartutil => chart/util}/testdata/three-level-dependent-chart/umbrella/values.yaml (100%) rename pkg/{chartutil => chart/util}/validate_name.go (99%) rename pkg/{chartutil => chart/util}/validate_name_test.go (99%) rename pkg/{chartutil => chart/util}/values.go (99%) rename pkg/{chartutil => chart/util}/values_test.go (99%) diff --git a/Makefile b/Makefile index f1fcbfb08..d2c82b033 100644 --- a/Makefile +++ b/Makefile @@ -65,8 +65,8 @@ K8S_MODULES_MINOR_VER=$(word 2,$(K8S_MODULES_VER)) LDFLAGS += -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) LDFLAGS += -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) -LDFLAGS += -X helm.sh/helm/v4/pkg/chartutil.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) -LDFLAGS += -X helm.sh/helm/v4/pkg/chartutil.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/chart/util.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/chart/util.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) .PHONY: all all: build diff --git a/cmd/helm/create.go b/cmd/helm/create.go index 29beca303..a18f2c915 100644 --- a/cmd/helm/create.go +++ b/cmd/helm/create.go @@ -25,7 +25,7 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/helmpath" ) diff --git a/cmd/helm/create_test.go b/cmd/helm/create_test.go index 88d9c315a..76fce804c 100644 --- a/cmd/helm/create_test.go +++ b/cmd/helm/create_test.go @@ -25,7 +25,7 @@ import ( "helm.sh/helm/v4/internal/test/ensure" "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/helmpath" ) diff --git a/cmd/helm/dependency_build_test.go b/cmd/helm/dependency_build_test.go index 1258db3f8..76c01d911 100644 --- a/cmd/helm/dependency_build_test.go +++ b/cmd/helm/dependency_build_test.go @@ -22,7 +22,7 @@ import ( "strings" "testing" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/provenance" "helm.sh/helm/v4/pkg/repo" "helm.sh/helm/v4/pkg/repo/repotest" diff --git a/cmd/helm/dependency_update_test.go b/cmd/helm/dependency_update_test.go index 7cf3e8e0a..0732ba7b5 100644 --- a/cmd/helm/dependency_update_test.go +++ b/cmd/helm/dependency_update_test.go @@ -24,7 +24,7 @@ import ( "helm.sh/helm/v4/internal/test/ensure" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/helmpath" "helm.sh/helm/v4/pkg/provenance" "helm.sh/helm/v4/pkg/repo" diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go index a20928b37..e7a05aecf 100644 --- a/cmd/helm/helm_test.go +++ b/cmd/helm/helm_test.go @@ -30,7 +30,7 @@ import ( "helm.sh/helm/v4/internal/test" "helm.sh/helm/v4/pkg/action" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/release" diff --git a/cmd/helm/lint.go b/cmd/helm/lint.go index 9a3f7a2fc..3e37922b2 100644 --- a/cmd/helm/lint.go +++ b/cmd/helm/lint.go @@ -27,7 +27,7 @@ import ( "github.com/spf13/cobra" "helm.sh/helm/v4/pkg/action" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli/values" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/lint/support" diff --git a/cmd/helm/status.go b/cmd/helm/status.go index c56ff1f29..fd3e4ce14 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -30,7 +30,7 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/release" ) diff --git a/cmd/helm/template.go b/cmd/helm/template.go index 8cd91df32..1a6265eba 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -34,7 +34,7 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli/values" "helm.sh/helm/v4/pkg/releaseutil" ) diff --git a/cmd/helm/upgrade_test.go b/cmd/helm/upgrade_test.go index e3d41d7fa..f97a4a26b 100644 --- a/cmd/helm/upgrade_test.go +++ b/cmd/helm/upgrade_test.go @@ -26,7 +26,7 @@ import ( "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/release" ) diff --git a/pkg/action/action.go b/pkg/action/action.go index 8418a4c27..fef4a91f5 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -33,7 +33,7 @@ import ( "k8s.io/client-go/rest" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/engine" "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/postrender" diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 71ea83789..8545b1edc 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -25,7 +25,7 @@ import ( fakeclientset "k8s.io/client-go/kubernetes/fake" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/release" diff --git a/pkg/action/dependency_test.go b/pkg/action/dependency_test.go index aee8c240f..38f2668ae 100644 --- a/pkg/action/dependency_test.go +++ b/pkg/action/dependency_test.go @@ -26,7 +26,7 @@ import ( "helm.sh/helm/v4/internal/test" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" ) func TestList(t *testing.T) { diff --git a/pkg/action/get_values.go b/pkg/action/get_values.go index aa399f76c..21253b7aa 100644 --- a/pkg/action/get_values.go +++ b/pkg/action/get_values.go @@ -17,7 +17,7 @@ limitations under the License. package action import ( - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" ) // GetValues is the action for checking a given release's values. diff --git a/pkg/action/history.go b/pkg/action/history.go index 5f514a14a..1c5cfa86f 100644 --- a/pkg/action/history.go +++ b/pkg/action/history.go @@ -19,7 +19,7 @@ package action import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/release" ) diff --git a/pkg/action/install.go b/pkg/action/install.go index ef3f0fdc7..6ad77a509 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -40,7 +40,7 @@ import ( "sigs.k8s.io/yaml" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index 9f738f0bc..171622e46 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -33,7 +33,7 @@ import ( "helm.sh/helm/v4/internal/test" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/storage/driver" diff --git a/pkg/action/lint.go b/pkg/action/lint.go index 06fc48612..a6fd7c71c 100644 --- a/pkg/action/lint.go +++ b/pkg/action/lint.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/lint" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/action/package.go b/pkg/action/package.go index 2e792a65c..8343ba109 100644 --- a/pkg/action/package.go +++ b/pkg/action/package.go @@ -27,7 +27,7 @@ import ( "golang.org/x/term" "helm.sh/helm/v4/pkg/chart/loader" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/provenance" ) diff --git a/pkg/action/pull.go b/pkg/action/pull.go index 7fc1a9fdb..fa85fe242 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -24,7 +24,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go index 1568b0683..a2c68ad64 100644 --- a/pkg/action/release_testing.go +++ b/pkg/action/release_testing.go @@ -27,7 +27,7 @@ import ( "github.com/pkg/errors" v1 "k8s.io/api/core/v1" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/release" ) diff --git a/pkg/action/rollback.go b/pkg/action/rollback.go index 12dee35ce..961ef8377 100644 --- a/pkg/action/rollback.go +++ b/pkg/action/rollback.go @@ -24,7 +24,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/release" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/action/show.go b/pkg/action/show.go index 1aa9bf1d0..3b2722eef 100644 --- a/pkg/action/show.go +++ b/pkg/action/show.go @@ -27,7 +27,7 @@ import ( "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/registry" ) diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index dda7d6978..b786c37f7 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -24,7 +24,7 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/releaseutil" diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index f3e9a33bc..c5397c984 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -29,7 +29,7 @@ import ( "k8s.io/cli-runtime/pkg/resource" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" diff --git a/pkg/chartutil/capabilities.go b/pkg/chart/util/capabilities.go similarity index 99% rename from pkg/chartutil/capabilities.go rename to pkg/chart/util/capabilities.go index 6c1ebf24c..d4b420b2f 100644 --- a/pkg/chartutil/capabilities.go +++ b/pkg/chart/util/capabilities.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "fmt" diff --git a/pkg/chartutil/capabilities_test.go b/pkg/chart/util/capabilities_test.go similarity index 99% rename from pkg/chartutil/capabilities_test.go rename to pkg/chart/util/capabilities_test.go index 502b0c7d5..aa9be9db8 100644 --- a/pkg/chartutil/capabilities_test.go +++ b/pkg/chart/util/capabilities_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "testing" diff --git a/pkg/chartutil/chartfile.go b/pkg/chart/util/chartfile.go similarity index 99% rename from pkg/chartutil/chartfile.go rename to pkg/chart/util/chartfile.go index 596011ba3..acab80d0a 100644 --- a/pkg/chartutil/chartfile.go +++ b/pkg/chart/util/chartfile.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "os" diff --git a/pkg/chartutil/chartfile_test.go b/pkg/chart/util/chartfile_test.go similarity index 99% rename from pkg/chartutil/chartfile_test.go rename to pkg/chart/util/chartfile_test.go index 595aee517..6eb599680 100644 --- a/pkg/chartutil/chartfile_test.go +++ b/pkg/chart/util/chartfile_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "testing" diff --git a/pkg/chartutil/coalesce.go b/pkg/chart/util/coalesce.go similarity index 99% rename from pkg/chartutil/coalesce.go rename to pkg/chart/util/coalesce.go index a46936cc6..9ab5c1015 100644 --- a/pkg/chartutil/coalesce.go +++ b/pkg/chart/util/coalesce.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "fmt" diff --git a/pkg/chartutil/coalesce_test.go b/pkg/chart/util/coalesce_test.go similarity index 99% rename from pkg/chartutil/coalesce_test.go rename to pkg/chart/util/coalesce_test.go index e207274d7..5a8dfe94a 100644 --- a/pkg/chartutil/coalesce_test.go +++ b/pkg/chart/util/coalesce_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "encoding/json" diff --git a/pkg/chartutil/compatible.go b/pkg/chart/util/compatible.go similarity index 98% rename from pkg/chartutil/compatible.go rename to pkg/chart/util/compatible.go index f4656c913..d384d2d45 100644 --- a/pkg/chartutil/compatible.go +++ b/pkg/chart/util/compatible.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import "github.com/Masterminds/semver/v3" diff --git a/pkg/chartutil/compatible_test.go b/pkg/chart/util/compatible_test.go similarity index 98% rename from pkg/chartutil/compatible_test.go rename to pkg/chart/util/compatible_test.go index df7be6161..e17d33e35 100644 --- a/pkg/chartutil/compatible_test.go +++ b/pkg/chart/util/compatible_test.go @@ -15,7 +15,7 @@ limitations under the License. */ // Package version represents the current version of the project. -package chartutil +package util import "testing" diff --git a/pkg/chartutil/create.go b/pkg/chart/util/create.go similarity index 99% rename from pkg/chartutil/create.go rename to pkg/chart/util/create.go index 4f59b9f83..dfb5099f2 100644 --- a/pkg/chartutil/create.go +++ b/pkg/chart/util/create.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "fmt" diff --git a/pkg/chartutil/create_test.go b/pkg/chart/util/create_test.go similarity index 99% rename from pkg/chartutil/create_test.go rename to pkg/chart/util/create_test.go index 8f8122f6f..e67ce3e1f 100644 --- a/pkg/chartutil/create_test.go +++ b/pkg/chart/util/create_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "bytes" diff --git a/pkg/chartutil/dependencies.go b/pkg/chart/util/dependencies.go similarity index 99% rename from pkg/chartutil/dependencies.go rename to pkg/chart/util/dependencies.go index f0ba166d9..fb9052d71 100644 --- a/pkg/chartutil/dependencies.go +++ b/pkg/chart/util/dependencies.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "log" diff --git a/pkg/chartutil/dependencies_test.go b/pkg/chart/util/dependencies_test.go similarity index 99% rename from pkg/chartutil/dependencies_test.go rename to pkg/chart/util/dependencies_test.go index ac8e4d76e..10fca265e 100644 --- a/pkg/chartutil/dependencies_test.go +++ b/pkg/chart/util/dependencies_test.go @@ -12,7 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "encoding/json" diff --git a/pkg/chartutil/doc.go b/pkg/chart/util/doc.go similarity index 92% rename from pkg/chartutil/doc.go rename to pkg/chart/util/doc.go index 6c0b1582b..587fcaeb1 100644 --- a/pkg/chartutil/doc.go +++ b/pkg/chart/util/doc.go @@ -15,7 +15,7 @@ limitations under the License. */ /* -Package chartutil contains tools for working with charts. +package util contains tools for working with charts. Charts are described in the chart package (pkg/chart). This package provides utilities for serializing and deserializing charts. @@ -42,4 +42,4 @@ into a Chart. When creating charts in memory, use the 'helm.sh/helm/pkg/chart' package directly. */ -package chartutil // import "helm.sh/helm/v4/pkg/chartutil" +package util // import chartutil "helm.sh/helm/v4/pkg/chart/util" diff --git a/pkg/chartutil/errors.go b/pkg/chart/util/errors.go similarity index 98% rename from pkg/chartutil/errors.go rename to pkg/chart/util/errors.go index 0a4046d2e..a175b9758 100644 --- a/pkg/chartutil/errors.go +++ b/pkg/chart/util/errors.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "fmt" diff --git a/pkg/chartutil/errors_test.go b/pkg/chart/util/errors_test.go similarity index 97% rename from pkg/chartutil/errors_test.go rename to pkg/chart/util/errors_test.go index 3f63e3733..b8ae86384 100644 --- a/pkg/chartutil/errors_test.go +++ b/pkg/chart/util/errors_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "testing" diff --git a/pkg/chartutil/expand.go b/pkg/chart/util/expand.go similarity index 99% rename from pkg/chartutil/expand.go rename to pkg/chart/util/expand.go index a9943252d..4b83bf584 100644 --- a/pkg/chartutil/expand.go +++ b/pkg/chart/util/expand.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "io" diff --git a/pkg/chartutil/expand_test.go b/pkg/chart/util/expand_test.go similarity index 99% rename from pkg/chartutil/expand_test.go rename to pkg/chart/util/expand_test.go index b46ace01f..280995f7e 100644 --- a/pkg/chartutil/expand_test.go +++ b/pkg/chart/util/expand_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "os" diff --git a/pkg/chartutil/jsonschema.go b/pkg/chart/util/jsonschema.go similarity index 99% rename from pkg/chartutil/jsonschema.go rename to pkg/chart/util/jsonschema.go index f1c8dcdf4..616c6d444 100644 --- a/pkg/chartutil/jsonschema.go +++ b/pkg/chart/util/jsonschema.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "bytes" diff --git a/pkg/chartutil/jsonschema_test.go b/pkg/chart/util/jsonschema_test.go similarity index 99% rename from pkg/chartutil/jsonschema_test.go rename to pkg/chart/util/jsonschema_test.go index 098cf70db..c5600044a 100644 --- a/pkg/chartutil/jsonschema_test.go +++ b/pkg/chart/util/jsonschema_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "os" diff --git a/pkg/chartutil/save.go b/pkg/chart/util/save.go similarity index 99% rename from pkg/chartutil/save.go rename to pkg/chart/util/save.go index 0dddad912..635ff7944 100644 --- a/pkg/chartutil/save.go +++ b/pkg/chart/util/save.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "archive/tar" diff --git a/pkg/chartutil/save_test.go b/pkg/chart/util/save_test.go similarity index 99% rename from pkg/chartutil/save_test.go rename to pkg/chart/util/save_test.go index 3789b6617..a7338c8d7 100644 --- a/pkg/chartutil/save_test.go +++ b/pkg/chart/util/save_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "archive/tar" diff --git a/pkg/chartutil/testdata/chartfiletest.yaml b/pkg/chart/util/testdata/chartfiletest.yaml similarity index 100% rename from pkg/chartutil/testdata/chartfiletest.yaml rename to pkg/chart/util/testdata/chartfiletest.yaml diff --git a/pkg/chartutil/testdata/coleridge.yaml b/pkg/chart/util/testdata/coleridge.yaml similarity index 100% rename from pkg/chartutil/testdata/coleridge.yaml rename to pkg/chart/util/testdata/coleridge.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-alias/.helmignore b/pkg/chart/util/testdata/dependent-chart-alias/.helmignore similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/.helmignore rename to pkg/chart/util/testdata/dependent-chart-alias/.helmignore diff --git a/pkg/chartutil/testdata/dependent-chart-alias/Chart.lock b/pkg/chart/util/testdata/dependent-chart-alias/Chart.lock similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/Chart.lock rename to pkg/chart/util/testdata/dependent-chart-alias/Chart.lock diff --git a/pkg/chartutil/testdata/dependent-chart-alias/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-alias/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-alias/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-alias/INSTALL.txt b/pkg/chart/util/testdata/dependent-chart-alias/INSTALL.txt similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/INSTALL.txt rename to pkg/chart/util/testdata/dependent-chart-alias/INSTALL.txt diff --git a/pkg/chartutil/testdata/dependent-chart-alias/LICENSE b/pkg/chart/util/testdata/dependent-chart-alias/LICENSE similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/LICENSE rename to pkg/chart/util/testdata/dependent-chart-alias/LICENSE diff --git a/pkg/chartutil/testdata/dependent-chart-alias/README.md b/pkg/chart/util/testdata/dependent-chart-alias/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/README.md rename to pkg/chart/util/testdata/dependent-chart-alias/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/_ignore_me b/pkg/chart/util/testdata/dependent-chart-alias/charts/_ignore_me similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/_ignore_me rename to pkg/chart/util/testdata/dependent-chart-alias/charts/_ignore_me diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/README.md b/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/README.md rename to pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml b/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/values.yaml b/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/alpine/values.yaml rename to pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz b/pkg/chart/util/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz rename to pkg/chart/util/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-alias/docs/README.md b/pkg/chart/util/testdata/dependent-chart-alias/docs/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/docs/README.md rename to pkg/chart/util/testdata/dependent-chart-alias/docs/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-alias/icon.svg b/pkg/chart/util/testdata/dependent-chart-alias/icon.svg similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/icon.svg rename to pkg/chart/util/testdata/dependent-chart-alias/icon.svg diff --git a/pkg/chartutil/testdata/dependent-chart-alias/ignore/me.txt b/pkg/chart/util/testdata/dependent-chart-alias/ignore/me.txt similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/ignore/me.txt rename to pkg/chart/util/testdata/dependent-chart-alias/ignore/me.txt diff --git a/pkg/chartutil/testdata/dependent-chart-alias/templates/template.tpl b/pkg/chart/util/testdata/dependent-chart-alias/templates/template.tpl similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/templates/template.tpl rename to pkg/chart/util/testdata/dependent-chart-alias/templates/template.tpl diff --git a/pkg/chartutil/testdata/dependent-chart-alias/values.yaml b/pkg/chart/util/testdata/dependent-chart-alias/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-alias/values.yaml rename to pkg/chart/util/testdata/dependent-chart-alias/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/.helmignore b/pkg/chart/util/testdata/dependent-chart-helmignore/.helmignore similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/.helmignore rename to pkg/chart/util/testdata/dependent-chart-helmignore/.helmignore diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-helmignore/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-helmignore/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/.ignore_me b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/.ignore_me similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/.ignore_me rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/.ignore_me diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/_ignore_me b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/_ignore_me similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/_ignore_me rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/_ignore_me diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/README.md b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/README.md rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/values.yaml b/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/charts/alpine/values.yaml rename to pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/templates/template.tpl b/pkg/chart/util/testdata/dependent-chart-helmignore/templates/template.tpl similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/templates/template.tpl rename to pkg/chart/util/testdata/dependent-chart-helmignore/templates/template.tpl diff --git a/pkg/chartutil/testdata/dependent-chart-helmignore/values.yaml b/pkg/chart/util/testdata/dependent-chart-helmignore/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-helmignore/values.yaml rename to pkg/chart/util/testdata/dependent-chart-helmignore/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/.helmignore b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/.helmignore similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/.helmignore rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/.helmignore diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/LICENSE b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/LICENSE similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/LICENSE rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/LICENSE diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/README.md b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/README.md rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/docs/README.md b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/docs/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/docs/README.md rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/docs/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/icon.svg b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/icon.svg similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/icon.svg rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/icon.svg diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl diff --git a/pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/values.yaml b/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-no-requirements-yaml/values.yaml rename to pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/README.md b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/README.md rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl diff --git a/pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml b/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml rename to pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/README.md b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/README.md rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl diff --git a/pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml b/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml similarity index 100% rename from pkg/chartutil/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml rename to pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml diff --git a/pkg/chartutil/testdata/frobnitz-1.2.3.tgz b/pkg/chart/util/testdata/frobnitz-1.2.3.tgz similarity index 100% rename from pkg/chartutil/testdata/frobnitz-1.2.3.tgz rename to pkg/chart/util/testdata/frobnitz-1.2.3.tgz diff --git a/pkg/chartutil/testdata/frobnitz/.helmignore b/pkg/chart/util/testdata/frobnitz/.helmignore similarity index 100% rename from pkg/chartutil/testdata/frobnitz/.helmignore rename to pkg/chart/util/testdata/frobnitz/.helmignore diff --git a/pkg/chartutil/testdata/frobnitz/Chart.lock b/pkg/chart/util/testdata/frobnitz/Chart.lock similarity index 100% rename from pkg/chartutil/testdata/frobnitz/Chart.lock rename to pkg/chart/util/testdata/frobnitz/Chart.lock diff --git a/pkg/chartutil/testdata/frobnitz/Chart.yaml b/pkg/chart/util/testdata/frobnitz/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/Chart.yaml rename to pkg/chart/util/testdata/frobnitz/Chart.yaml diff --git a/pkg/chartutil/testdata/frobnitz/INSTALL.txt b/pkg/chart/util/testdata/frobnitz/INSTALL.txt similarity index 100% rename from pkg/chartutil/testdata/frobnitz/INSTALL.txt rename to pkg/chart/util/testdata/frobnitz/INSTALL.txt diff --git a/pkg/chartutil/testdata/frobnitz/LICENSE b/pkg/chart/util/testdata/frobnitz/LICENSE similarity index 100% rename from pkg/chartutil/testdata/frobnitz/LICENSE rename to pkg/chart/util/testdata/frobnitz/LICENSE diff --git a/pkg/chartutil/testdata/frobnitz/README.md b/pkg/chart/util/testdata/frobnitz/README.md similarity index 100% rename from pkg/chartutil/testdata/frobnitz/README.md rename to pkg/chart/util/testdata/frobnitz/README.md diff --git a/pkg/chartutil/testdata/frobnitz/charts/_ignore_me b/pkg/chart/util/testdata/frobnitz/charts/_ignore_me similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/_ignore_me rename to pkg/chart/util/testdata/frobnitz/charts/_ignore_me diff --git a/pkg/chartutil/testdata/frobnitz/charts/alpine/Chart.yaml b/pkg/chart/util/testdata/frobnitz/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/alpine/Chart.yaml rename to pkg/chart/util/testdata/frobnitz/charts/alpine/Chart.yaml diff --git a/pkg/chartutil/testdata/frobnitz/charts/alpine/README.md b/pkg/chart/util/testdata/frobnitz/charts/alpine/README.md similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/alpine/README.md rename to pkg/chart/util/testdata/frobnitz/charts/alpine/README.md diff --git a/pkg/chartutil/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chartutil/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml b/pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chartutil/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chartutil/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/util/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/util/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chartutil/testdata/frobnitz/charts/alpine/values.yaml b/pkg/chart/util/testdata/frobnitz/charts/alpine/values.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/alpine/values.yaml rename to pkg/chart/util/testdata/frobnitz/charts/alpine/values.yaml diff --git a/pkg/chartutil/testdata/frobnitz/charts/mariner/Chart.yaml b/pkg/chart/util/testdata/frobnitz/charts/mariner/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/mariner/Chart.yaml rename to pkg/chart/util/testdata/frobnitz/charts/mariner/Chart.yaml diff --git a/pkg/chartutil/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml b/pkg/chart/util/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml rename to pkg/chart/util/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml diff --git a/pkg/chartutil/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml b/pkg/chart/util/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml rename to pkg/chart/util/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml diff --git a/pkg/chartutil/testdata/frobnitz/charts/mariner/templates/placeholder.tpl b/pkg/chart/util/testdata/frobnitz/charts/mariner/templates/placeholder.tpl similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/mariner/templates/placeholder.tpl rename to pkg/chart/util/testdata/frobnitz/charts/mariner/templates/placeholder.tpl diff --git a/pkg/chartutil/testdata/frobnitz/charts/mariner/values.yaml b/pkg/chart/util/testdata/frobnitz/charts/mariner/values.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/charts/mariner/values.yaml rename to pkg/chart/util/testdata/frobnitz/charts/mariner/values.yaml diff --git a/pkg/chartutil/testdata/frobnitz/docs/README.md b/pkg/chart/util/testdata/frobnitz/docs/README.md similarity index 100% rename from pkg/chartutil/testdata/frobnitz/docs/README.md rename to pkg/chart/util/testdata/frobnitz/docs/README.md diff --git a/pkg/chartutil/testdata/frobnitz/icon.svg b/pkg/chart/util/testdata/frobnitz/icon.svg similarity index 100% rename from pkg/chartutil/testdata/frobnitz/icon.svg rename to pkg/chart/util/testdata/frobnitz/icon.svg diff --git a/pkg/chartutil/testdata/frobnitz/ignore/me.txt b/pkg/chart/util/testdata/frobnitz/ignore/me.txt similarity index 100% rename from pkg/chartutil/testdata/frobnitz/ignore/me.txt rename to pkg/chart/util/testdata/frobnitz/ignore/me.txt diff --git a/pkg/chartutil/testdata/frobnitz/templates/template.tpl b/pkg/chart/util/testdata/frobnitz/templates/template.tpl similarity index 100% rename from pkg/chartutil/testdata/frobnitz/templates/template.tpl rename to pkg/chart/util/testdata/frobnitz/templates/template.tpl diff --git a/pkg/chartutil/testdata/frobnitz/values.yaml b/pkg/chart/util/testdata/frobnitz/values.yaml similarity index 100% rename from pkg/chartutil/testdata/frobnitz/values.yaml rename to pkg/chart/util/testdata/frobnitz/values.yaml diff --git a/pkg/chartutil/testdata/frobnitz_backslash-1.2.3.tgz b/pkg/chart/util/testdata/frobnitz_backslash-1.2.3.tgz similarity index 100% rename from pkg/chartutil/testdata/frobnitz_backslash-1.2.3.tgz rename to pkg/chart/util/testdata/frobnitz_backslash-1.2.3.tgz diff --git a/pkg/chartutil/testdata/genfrob.sh b/pkg/chart/util/testdata/genfrob.sh similarity index 100% rename from pkg/chartutil/testdata/genfrob.sh rename to pkg/chart/util/testdata/genfrob.sh diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml diff --git a/pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml b/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml similarity index 100% rename from pkg/chartutil/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml rename to pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml diff --git a/pkg/chartutil/testdata/joonix/Chart.yaml b/pkg/chart/util/testdata/joonix/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/joonix/Chart.yaml rename to pkg/chart/util/testdata/joonix/Chart.yaml diff --git a/pkg/chartutil/testdata/joonix/charts/.gitkeep b/pkg/chart/util/testdata/joonix/charts/.gitkeep similarity index 100% rename from pkg/chartutil/testdata/joonix/charts/.gitkeep rename to pkg/chart/util/testdata/joonix/charts/.gitkeep diff --git a/pkg/chartutil/testdata/subpop/Chart.yaml b/pkg/chart/util/testdata/subpop/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/Chart.yaml rename to pkg/chart/util/testdata/subpop/Chart.yaml diff --git a/pkg/chartutil/testdata/subpop/README.md b/pkg/chart/util/testdata/subpop/README.md similarity index 100% rename from pkg/chartutil/testdata/subpop/README.md rename to pkg/chart/util/testdata/subpop/README.md diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/Chart.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/Chart.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/Chart.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/crds/crdA.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/crds/crdA.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/crds/crdA.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/crds/crdA.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/templates/NOTES.txt b/pkg/chart/util/testdata/subpop/charts/subchart1/templates/NOTES.txt similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/templates/NOTES.txt rename to pkg/chart/util/testdata/subpop/charts/subchart1/templates/NOTES.txt diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/templates/service.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/templates/service.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/templates/service.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/templates/subdir/role.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/role.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/templates/subdir/role.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/role.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart1/values.yaml b/pkg/chart/util/testdata/subpop/charts/subchart1/values.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart1/values.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart1/values.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/Chart.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/Chart.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/Chart.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/templates/service.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/templates/service.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/templates/service.yaml diff --git a/pkg/chartutil/testdata/subpop/charts/subchart2/values.yaml b/pkg/chart/util/testdata/subpop/charts/subchart2/values.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/charts/subchart2/values.yaml rename to pkg/chart/util/testdata/subpop/charts/subchart2/values.yaml diff --git a/pkg/chartutil/testdata/subpop/noreqs/Chart.yaml b/pkg/chart/util/testdata/subpop/noreqs/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/noreqs/Chart.yaml rename to pkg/chart/util/testdata/subpop/noreqs/Chart.yaml diff --git a/pkg/chartutil/testdata/subpop/noreqs/templates/service.yaml b/pkg/chart/util/testdata/subpop/noreqs/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/noreqs/templates/service.yaml rename to pkg/chart/util/testdata/subpop/noreqs/templates/service.yaml diff --git a/pkg/chartutil/testdata/subpop/noreqs/values.yaml b/pkg/chart/util/testdata/subpop/noreqs/values.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/noreqs/values.yaml rename to pkg/chart/util/testdata/subpop/noreqs/values.yaml diff --git a/pkg/chartutil/testdata/subpop/values.yaml b/pkg/chart/util/testdata/subpop/values.yaml similarity index 100% rename from pkg/chartutil/testdata/subpop/values.yaml rename to pkg/chart/util/testdata/subpop/values.yaml diff --git a/pkg/chartutil/testdata/test-values-invalid.schema.json b/pkg/chart/util/testdata/test-values-invalid.schema.json similarity index 100% rename from pkg/chartutil/testdata/test-values-invalid.schema.json rename to pkg/chart/util/testdata/test-values-invalid.schema.json diff --git a/pkg/chartutil/testdata/test-values-negative.yaml b/pkg/chart/util/testdata/test-values-negative.yaml similarity index 100% rename from pkg/chartutil/testdata/test-values-negative.yaml rename to pkg/chart/util/testdata/test-values-negative.yaml diff --git a/pkg/chartutil/testdata/test-values.schema.json b/pkg/chart/util/testdata/test-values.schema.json similarity index 100% rename from pkg/chartutil/testdata/test-values.schema.json rename to pkg/chart/util/testdata/test-values.schema.json diff --git a/pkg/chartutil/testdata/test-values.yaml b/pkg/chart/util/testdata/test-values.yaml similarity index 100% rename from pkg/chartutil/testdata/test-values.yaml rename to pkg/chart/util/testdata/test-values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/README.md b/pkg/chart/util/testdata/three-level-dependent-chart/README.md similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/README.md rename to pkg/chart/util/testdata/three-level-dependent-chart/README.md diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml diff --git a/pkg/chartutil/testdata/three-level-dependent-chart/umbrella/values.yaml b/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/values.yaml similarity index 100% rename from pkg/chartutil/testdata/three-level-dependent-chart/umbrella/values.yaml rename to pkg/chart/util/testdata/three-level-dependent-chart/umbrella/values.yaml diff --git a/pkg/chartutil/validate_name.go b/pkg/chart/util/validate_name.go similarity index 99% rename from pkg/chartutil/validate_name.go rename to pkg/chart/util/validate_name.go index 05c090cb6..73be43303 100644 --- a/pkg/chartutil/validate_name.go +++ b/pkg/chart/util/validate_name.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "fmt" diff --git a/pkg/chartutil/validate_name_test.go b/pkg/chart/util/validate_name_test.go similarity index 99% rename from pkg/chartutil/validate_name_test.go rename to pkg/chart/util/validate_name_test.go index 09dec9fbb..cfc62a0f7 100644 --- a/pkg/chartutil/validate_name_test.go +++ b/pkg/chart/util/validate_name_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import "testing" diff --git a/pkg/chartutil/values.go b/pkg/chart/util/values.go similarity index 99% rename from pkg/chartutil/values.go rename to pkg/chart/util/values.go index 706c44d48..46952c079 100644 --- a/pkg/chartutil/values.go +++ b/pkg/chart/util/values.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "encoding/json" diff --git a/pkg/chartutil/values_test.go b/pkg/chart/util/values_test.go similarity index 99% rename from pkg/chartutil/values_test.go rename to pkg/chart/util/values_test.go index 56167c8a1..660b7e4ed 100644 --- a/pkg/chartutil/values_test.go +++ b/pkg/chart/util/values_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chartutil +package util import ( "bytes" diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index f10cbfb8d..361cd6109 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -38,7 +38,7 @@ import ( "helm.sh/helm/v4/internal/urlutil" "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/helmpath" "helm.sh/helm/v4/pkg/registry" diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index b721c6a0d..c9947e341 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -24,7 +24,7 @@ import ( "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/repo/repotest" ) diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 8f69505f6..0229b1833 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -30,7 +30,7 @@ import ( "k8s.io/client-go/rest" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" ) // Engine is an implementation of the Helm rendering implementation for templates. diff --git a/pkg/engine/engine_test.go b/pkg/engine/engine_test.go index f6a96bd6a..4c28c2965 100644 --- a/pkg/engine/engine_test.go +++ b/pkg/engine/engine_test.go @@ -31,7 +31,7 @@ import ( "k8s.io/client-go/dynamic/fake" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" ) func TestSortTemplates(t *testing.T) { diff --git a/pkg/lint/lint.go b/pkg/lint/lint.go index 70a49ee90..b53400c87 100644 --- a/pkg/lint/lint.go +++ b/pkg/lint/lint.go @@ -19,7 +19,7 @@ package lint // import "helm.sh/helm/v4/pkg/lint" import ( "path/filepath" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/lint/rules" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index 9246b64f2..bba024d59 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -21,7 +21,7 @@ import ( "testing" "time" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/chartfile.go b/pkg/lint/rules/chartfile.go index 2e718067b..a1e08b58d 100644 --- a/pkg/lint/rules/chartfile.go +++ b/pkg/lint/rules/chartfile.go @@ -27,7 +27,7 @@ import ( "sigs.k8s.io/yaml" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/chartfile_test.go b/pkg/lint/rules/chartfile_test.go index eb9b19cb7..6d709790a 100644 --- a/pkg/lint/rules/chartfile_test.go +++ b/pkg/lint/rules/chartfile_test.go @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/dependencies_test.go b/pkg/lint/rules/dependencies_test.go index e167b4479..e946b1c01 100644 --- a/pkg/lint/rules/dependencies_test.go +++ b/pkg/lint/rules/dependencies_test.go @@ -20,7 +20,7 @@ import ( "testing" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/deprecations.go b/pkg/lint/rules/deprecations.go index 6eae06802..0a8e642c9 100644 --- a/pkg/lint/rules/deprecations.go +++ b/pkg/lint/rules/deprecations.go @@ -25,7 +25,7 @@ import ( "k8s.io/apiserver/pkg/endpoints/deprecation" kscheme "k8s.io/client-go/kubernetes/scheme" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" ) var ( diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index a50485a50..ec434aba5 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -34,7 +34,7 @@ import ( "k8s.io/apimachinery/pkg/util/yaml" "helm.sh/helm/v4/pkg/chart/loader" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/engine" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/template_test.go b/pkg/lint/rules/template_test.go index 9e6dc4004..d3185d8c8 100644 --- a/pkg/lint/rules/template_test.go +++ b/pkg/lint/rules/template_test.go @@ -24,7 +24,7 @@ import ( "testing" "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/values.go b/pkg/lint/rules/values.go index 82278522d..f430178c3 100644 --- a/pkg/lint/rules/values.go +++ b/pkg/lint/rules/values.go @@ -22,7 +22,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/releaseutil/manifest_sorter.go b/pkg/releaseutil/manifest_sorter.go index b2db2ff9f..c7d92b184 100644 --- a/pkg/releaseutil/manifest_sorter.go +++ b/pkg/releaseutil/manifest_sorter.go @@ -26,7 +26,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/release" ) diff --git a/pkg/repo/repotest/server.go b/pkg/repo/repotest/server.go index 0155c54d8..7b004dbc3 100644 --- a/pkg/repo/repotest/server.go +++ b/pkg/repo/repotest/server.go @@ -36,7 +36,7 @@ import ( "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" - "helm.sh/helm/v4/pkg/chartutil" + chartutil "helm.sh/helm/v4/pkg/chart/util" ociRegistry "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/repo" ) From 8dd279271e5a18613aa33655c0bd990e6979cf47 Mon Sep 17 00:00:00 2001 From: Robert Sirchia Date: Fri, 21 Feb 2025 15:33:24 -0500 Subject: [PATCH 185/206] remove unused config.go Signed-off-by: Robert Sirchia --- pkg/kube/config.go | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 pkg/kube/config.go diff --git a/pkg/kube/config.go b/pkg/kube/config.go deleted file mode 100644 index 0ef94453f..000000000 --- a/pkg/kube/config.go +++ /dev/null @@ -1,30 +0,0 @@ -/* -Copyright The Helm Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package kube // import "helm.sh/helm/v4/pkg/kube" - -import "k8s.io/cli-runtime/pkg/genericclioptions" - -// GetConfig returns a Kubernetes client config. -// -// Deprecated -func GetConfig(kubeconfig, context, namespace string) *genericclioptions.ConfigFlags { - cf := genericclioptions.NewConfigFlags(true) - cf.Namespace = &namespace - cf.Context = &context - cf.KubeConfig = &kubeconfig - return cf -} From 5c648151d59f0f88bd9e5d878f5909f75bde6ed7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 21:59:40 +0000 Subject: [PATCH 186/206] build(deps): bump ossf/scorecard-action from 2.4.0 to 2.4.1 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.0 to 2.4.1. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/62b2cac7ed8198b15735ed49ab1e5cf35480ba46...f49aabe0b5af0936a0987cfb85d86b75731b0186) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 7f568cf9d..a31084c72 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -33,7 +33,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 with: results_file: results.sarif results_format: sarif From 3d35e786c75493120833523da97c390f7c9b024e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Feb 2025 21:59:44 +0000 Subject: [PATCH 187/206] build(deps): bump actions/upload-artifact from 4.6.0 to 4.6.1 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08...4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecards.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards.yml b/.github/workflows/scorecards.yml index 7f568cf9d..55b5581c1 100644 --- a/.github/workflows/scorecards.yml +++ b/.github/workflows/scorecards.yml @@ -55,7 +55,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@65c4c4a1ddee5b72f698fdd19549f0f0fb45cf08 # v4.6.0 + uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 with: name: SARIF file path: results.sarif From f475f3e1fd8c4eb04dd07b78c68967bba39cedb8 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Sat, 22 Feb 2025 13:05:21 +0200 Subject: [PATCH 188/206] feat: error out when post-renderer produces no output When the templating post-renderer produces no output, something went wrong so we error out. Signed-off-by: Yarden Shoham --- pkg/postrender/exec.go | 6 ++++++ pkg/postrender/exec_test.go | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/pkg/postrender/exec.go b/pkg/postrender/exec.go index 167e737d6..30f3983cf 100644 --- a/pkg/postrender/exec.go +++ b/pkg/postrender/exec.go @@ -64,6 +64,12 @@ func (p *execRender) Run(renderedManifests *bytes.Buffer) (*bytes.Buffer, error) return nil, errors.Wrapf(err, "error while running command %s. error output:\n%s", p.binaryPath, stderr.String()) } + // If the binary returned almost nothing, it's likely that it didn't + // successfully render anything + if len(bytes.TrimSpace(postRendered.Bytes())) == 0 { + return nil, errors.Errorf("post render binary %s did not produce any output %s", p.binaryPath, postRendered.String()) + } + return postRendered, nil } diff --git a/pkg/postrender/exec_test.go b/pkg/postrender/exec_test.go index 19a6ec6c4..2b091cc12 100644 --- a/pkg/postrender/exec_test.go +++ b/pkg/postrender/exec_test.go @@ -121,6 +121,21 @@ func TestExecRun(t *testing.T) { is.Contains(output.String(), "BARTEST") } +func TestExecRunWithNoOutput(t *testing.T) { + if runtime.GOOS == "windows" { + // the actual Run test uses a basic sed example, so skip this test on windows + t.Skip("skipping on windows") + } + is := assert.New(t) + testpath := setupTestingScript(t) + + renderer, err := NewExec(testpath) + require.NoError(t, err) + + _, err = renderer.Run(bytes.NewBufferString("")) + is.Error(err) +} + func TestNewExecWithOneArgsRun(t *testing.T) { if runtime.GOOS == "windows" { // the actual Run test uses a basic sed example, so skip this test on windows From 9e17871afbb3e71fc8846fafd2b4aa6b7ccb0cd4 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Sat, 22 Feb 2025 14:25:26 +0200 Subject: [PATCH 189/206] fix: error when more than one post-renderer is specified We now make sure the post-renderer flag can be passed at most once instead of silently taking the last one passed. Example: ```bash $ helm template test ... --post-renderer=true --post-renderer=cat Error: invalid argument "cat" for "--post-renderer" flag: cannot set post-renderer more than once, given: cat, previous: true ``` Signed-off-by: Yarden Shoham --- cmd/helm/flags.go | 4 ++++ cmd/helm/flags_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/cmd/helm/flags.go b/cmd/helm/flags.go index 8d0f644d6..b92e7cf0b 100644 --- a/cmd/helm/flags.go +++ b/cmd/helm/flags.go @@ -24,6 +24,7 @@ import ( "sort" "strings" + "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/pflag" "k8s.io/klog/v2" @@ -143,6 +144,9 @@ func (p *postRendererString) Set(val string) error { if val == "" { return nil } + if p.options.binaryPath != "" && p.options.binaryPath != val { + return errors.Errorf("cannot set post-renderer more than once, given: %s, previous: %s", val, p.options.binaryPath) + } p.options.binaryPath = val pr, err := postrender.NewExec(p.options.binaryPath, p.options.args...) if err != nil { diff --git a/cmd/helm/flags_test.go b/cmd/helm/flags_test.go index 295f55022..bea916c34 100644 --- a/cmd/helm/flags_test.go +++ b/cmd/helm/flags_test.go @@ -20,6 +20,9 @@ import ( "fmt" "testing" + "github.com/stretchr/testify/require" + + "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/release" helmtime "helm.sh/helm/v4/pkg/time" @@ -93,3 +96,24 @@ func outputFlagCompletionTest(t *testing.T, cmdName string) { }} runTestCmd(t, tests) } + +func TestPostRendererFlagSetOnce(t *testing.T) { + cfg := action.Configuration{} + client := action.NewInstall(&cfg) + str := postRendererString{ + options: &postRendererOptions{ + renderer: &client.PostRenderer, + }, + } + // Set the binary once + err := str.Set("echo") + require.NoError(t, err) + + // Set the binary again to the same value is ok + err = str.Set("echo") + require.NoError(t, err) + + // Set the binary again to a different value is not ok + err = str.Set("cat") + require.Error(t, err) +} From 392ff9391657840d00c825030d68bef6c5181cc7 Mon Sep 17 00:00:00 2001 From: Felipe Santos Date: Sun, 23 Feb 2025 16:51:33 -0300 Subject: [PATCH 190/206] Fix flaky TestDedupeRepos (#30576) Signed-off-by: Felipe Santos --- pkg/downloader/manager_test.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index 481a9e038..8731fb003 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -22,6 +22,8 @@ import ( "reflect" "testing" + "github.com/stretchr/testify/assert" + "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" chartutil "helm.sh/helm/v4/pkg/chart/util" @@ -657,9 +659,8 @@ func TestDedupeRepos(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := dedupeRepos(tt.repos); !reflect.DeepEqual(got, tt.want) { - t.Errorf("received:\n%v\nwant:\n%v", got, tt.want) - } + got := dedupeRepos(tt.repos) + assert.ElementsMatch(t, tt.want, got) }) } } From 326fdc3e5fa89f62dd1584dd46236f2bb8ecdbdb Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Mon, 24 Feb 2025 07:23:18 +0200 Subject: [PATCH 191/206] Apply suggestions from code review Co-authored-by: George Jenkins Signed-off-by: Yarden Shoham --- cmd/helm/flags.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/helm/flags.go b/cmd/helm/flags.go index b92e7cf0b..d8e0107fd 100644 --- a/cmd/helm/flags.go +++ b/cmd/helm/flags.go @@ -144,8 +144,8 @@ func (p *postRendererString) Set(val string) error { if val == "" { return nil } - if p.options.binaryPath != "" && p.options.binaryPath != val { - return errors.Errorf("cannot set post-renderer more than once, given: %s, previous: %s", val, p.options.binaryPath) + if p.options.binaryPath != "" { + return fmt.Errorf("cannot specify --post-renderer flag more than once") } p.options.binaryPath = val pr, err := postrender.NewExec(p.options.binaryPath, p.options.args...) From dd728861a9a4353273ad77b7e16cba69144e42e6 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Mon, 24 Feb 2025 07:24:15 +0200 Subject: [PATCH 192/206] Fix tests Signed-off-by: Yarden Shoham --- cmd/helm/flags.go | 1 - cmd/helm/flags_test.go | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/cmd/helm/flags.go b/cmd/helm/flags.go index d8e0107fd..379b2140d 100644 --- a/cmd/helm/flags.go +++ b/cmd/helm/flags.go @@ -24,7 +24,6 @@ import ( "sort" "strings" - "github.com/pkg/errors" "github.com/spf13/cobra" "github.com/spf13/pflag" "k8s.io/klog/v2" diff --git a/cmd/helm/flags_test.go b/cmd/helm/flags_test.go index bea916c34..3b43b1f47 100644 --- a/cmd/helm/flags_test.go +++ b/cmd/helm/flags_test.go @@ -109,9 +109,9 @@ func TestPostRendererFlagSetOnce(t *testing.T) { err := str.Set("echo") require.NoError(t, err) - // Set the binary again to the same value is ok + // Set the binary again to the same value is not ok err = str.Set("echo") - require.NoError(t, err) + require.Error(t, err) // Set the binary again to a different value is not ok err = str.Set("cat") From ab926212d9f14db74f3ead30d00a0a6fa4587f8c Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Mon, 24 Feb 2025 07:26:12 +0200 Subject: [PATCH 193/206] Apply suggestions from code review Co-authored-by: George Jenkins Signed-off-by: Yarden Shoham --- pkg/postrender/exec.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/postrender/exec.go b/pkg/postrender/exec.go index 30f3983cf..84357c656 100644 --- a/pkg/postrender/exec.go +++ b/pkg/postrender/exec.go @@ -67,7 +67,7 @@ func (p *execRender) Run(renderedManifests *bytes.Buffer) (*bytes.Buffer, error) // If the binary returned almost nothing, it's likely that it didn't // successfully render anything if len(bytes.TrimSpace(postRendered.Bytes())) == 0 { - return nil, errors.Errorf("post render binary %s did not produce any output %s", p.binaryPath, postRendered.String()) + return nil, errors.Errorf("post-renderer %q produced empty output", p.binaryPath) } return postRendered, nil From 297f7b9acb5203967edc19c90b2719d48084c531 Mon Sep 17 00:00:00 2001 From: Austin Abro Date: Mon, 24 Feb 2025 15:11:54 +0000 Subject: [PATCH 194/206] squash Signed-off-by: Austin Abro --- cmd/helm/helm.go | 29 +--- cmd/helm/helm_test.go | 147 +--------------- {cmd/helm => pkg/cmd}/completion.go | 4 +- {cmd/helm => pkg/cmd}/completion_test.go | 2 +- {cmd/helm => pkg/cmd}/create.go | 4 +- {cmd/helm => pkg/cmd}/create_test.go | 2 +- {cmd/helm => pkg/cmd}/dependency.go | 4 +- {cmd/helm => pkg/cmd}/dependency_build.go | 4 +- .../helm => pkg/cmd}/dependency_build_test.go | 2 +- {cmd/helm => pkg/cmd}/dependency_test.go | 2 +- {cmd/helm => pkg/cmd}/dependency_update.go | 4 +- .../cmd}/dependency_update_test.go | 2 +- {cmd/helm => pkg/cmd}/docs.go | 4 +- {cmd/helm => pkg/cmd}/docs_test.go | 2 +- {cmd/helm => pkg/cmd}/env.go | 4 +- {cmd/helm => pkg/cmd}/env_test.go | 2 +- {cmd/helm => pkg/cmd}/flags.go | 2 +- {cmd/helm => pkg/cmd}/flags_test.go | 2 +- {cmd/helm => pkg/cmd}/get.go | 4 +- {cmd/helm => pkg/cmd}/get_all.go | 4 +- {cmd/helm => pkg/cmd}/get_all_test.go | 2 +- {cmd/helm => pkg/cmd}/get_hooks.go | 4 +- {cmd/helm => pkg/cmd}/get_hooks_test.go | 2 +- {cmd/helm => pkg/cmd}/get_manifest.go | 4 +- {cmd/helm => pkg/cmd}/get_manifest_test.go | 2 +- {cmd/helm => pkg/cmd}/get_metadata.go | 4 +- {cmd/helm => pkg/cmd}/get_metadata_test.go | 2 +- {cmd/helm => pkg/cmd}/get_notes.go | 4 +- {cmd/helm => pkg/cmd}/get_notes_test.go | 2 +- {cmd/helm => pkg/cmd}/get_test.go | 2 +- {cmd/helm => pkg/cmd}/get_values.go | 4 +- {cmd/helm => pkg/cmd}/get_values_test.go | 2 +- pkg/cmd/helpers_test.go | 164 ++++++++++++++++++ {cmd/helm => pkg/cmd}/history.go | 4 +- {cmd/helm => pkg/cmd}/history_test.go | 2 +- {cmd/helm => pkg/cmd}/install.go | 12 +- {cmd/helm => pkg/cmd}/install_test.go | 2 +- {cmd/helm => pkg/cmd}/lint.go | 2 +- {cmd/helm => pkg/cmd}/lint_test.go | 2 +- {cmd/helm => pkg/cmd}/list.go | 6 +- {cmd/helm => pkg/cmd}/list_test.go | 2 +- {cmd/helm => pkg/cmd}/load_plugins.go | 10 +- {cmd/helm => pkg/cmd}/package.go | 2 +- {cmd/helm => pkg/cmd}/package_test.go | 2 +- {cmd/helm => pkg/cmd}/plugin.go | 4 +- {cmd/helm => pkg/cmd}/plugin_install.go | 6 +- {cmd/helm => pkg/cmd}/plugin_list.go | 4 +- {cmd/helm => pkg/cmd}/plugin_test.go | 14 +- {cmd/helm => pkg/cmd}/plugin_uninstall.go | 4 +- {cmd/helm => pkg/cmd}/plugin_update.go | 6 +- {cmd/helm => pkg/cmd}/printer.go | 2 +- {cmd/helm => pkg/cmd}/profiling.go | 2 +- {cmd/helm => pkg/cmd}/pull.go | 6 +- {cmd/helm => pkg/cmd}/pull_test.go | 2 +- {cmd/helm => pkg/cmd}/push.go | 4 +- {cmd/helm => pkg/cmd}/push_test.go | 2 +- {cmd/helm => pkg/cmd}/registry.go | 2 +- {cmd/helm => pkg/cmd}/registry_login.go | 6 +- {cmd/helm => pkg/cmd}/registry_login_test.go | 2 +- {cmd/helm => pkg/cmd}/registry_logout.go | 4 +- {cmd/helm => pkg/cmd}/registry_logout_test.go | 2 +- {cmd/helm => pkg/cmd}/release_testing.go | 4 +- {cmd/helm => pkg/cmd}/release_testing_test.go | 2 +- {cmd/helm => pkg/cmd}/repo.go | 4 +- {cmd/helm => pkg/cmd}/repo_add.go | 4 +- {cmd/helm => pkg/cmd}/repo_add_test.go | 2 +- {cmd/helm => pkg/cmd}/repo_index.go | 4 +- {cmd/helm => pkg/cmd}/repo_index_test.go | 2 +- {cmd/helm => pkg/cmd}/repo_list.go | 4 +- {cmd/helm => pkg/cmd}/repo_list_test.go | 2 +- {cmd/helm => pkg/cmd}/repo_remove.go | 4 +- {cmd/helm => pkg/cmd}/repo_remove_test.go | 2 +- {cmd/helm => pkg/cmd}/repo_test.go | 2 +- {cmd/helm => pkg/cmd}/repo_update.go | 4 +- {cmd/helm => pkg/cmd}/repo_update_test.go | 2 +- {cmd/helm => pkg/cmd}/require/args.go | 0 {cmd/helm => pkg/cmd}/require/args_test.go | 0 {cmd/helm => pkg/cmd}/rollback.go | 4 +- {cmd/helm => pkg/cmd}/rollback_test.go | 2 +- {cmd/helm => pkg/cmd}/root.go | 17 +- {cmd/helm => pkg/cmd}/root_test.go | 2 +- {cmd/helm => pkg/cmd}/search.go | 2 +- {cmd/helm => pkg/cmd}/search/search.go | 0 {cmd/helm => pkg/cmd}/search/search_test.go | 0 {cmd/helm => pkg/cmd}/search_hub.go | 4 +- {cmd/helm => pkg/cmd}/search_hub_test.go | 2 +- {cmd/helm => pkg/cmd}/search_repo.go | 14 +- {cmd/helm => pkg/cmd}/search_repo_test.go | 2 +- {cmd/helm => pkg/cmd}/search_test.go | 2 +- {cmd/helm => pkg/cmd}/show.go | 8 +- {cmd/helm => pkg/cmd}/show_test.go | 2 +- {cmd/helm => pkg/cmd}/status.go | 4 +- {cmd/helm => pkg/cmd}/status_test.go | 2 +- {cmd/helm => pkg/cmd}/template.go | 4 +- {cmd/helm => pkg/cmd}/template_test.go | 2 +- .../helm/plugins/fullenv/completion.yaml | 0 .../helm/plugins/fullenv/fullenv.sh | 0 .../helm/plugins/fullenv/plugin.yaml | 0 .../helm/repositories.yaml | 0 .../helm/repository/test-name-charts.txt | 0 .../helm/repository/test-name-index.yaml | 0 .../helm/repository/testing-index.yaml | 0 .../cmd}/testdata/helm-test-key.pub | Bin .../cmd}/testdata/helm-test-key.secret | Bin .../helmhome/helm/plugins/args/args.sh | 0 .../helm/plugins/args/plugin.complete | 0 .../helmhome/helm/plugins/args/plugin.yaml | 0 .../helm/plugins/echo/completion.yaml | 0 .../helm/plugins/echo/plugin.complete | 0 .../helmhome/helm/plugins/echo/plugin.yaml | 0 .../helmhome/helm/plugins/env/completion.yaml | 0 .../helmhome/helm/plugins/env/plugin.yaml | 0 .../helm/plugins/exitwith/completion.yaml | 0 .../helm/plugins/exitwith/exitwith.sh | 0 .../helm/plugins/exitwith/plugin.yaml | 0 .../helm/plugins/fullenv/completion.yaml | 0 .../helmhome/helm/plugins/fullenv/fullenv.sh | 0 .../helmhome/helm/plugins/fullenv/plugin.yaml | 0 .../testdata/helmhome/helm/repositories.yaml | 0 .../helm/repository/test-name-charts.txt | 0 .../helm/repository/test-name-index.yaml | 0 .../helm/repository/testing-index.yaml | 0 .../output/chart-with-subchart-update.txt | 0 .../output/dependency-list-archive.txt | 0 .../output/dependency-list-no-chart-linux.txt | 0 .../dependency-list-no-requirements-linux.txt | 0 .../cmd}/testdata/output/dependency-list.txt | 0 .../cmd}/testdata/output/deprecated-chart.txt | 0 .../cmd}/testdata/output/docs-type-comp.txt | 0 .../testdata/output/empty_default_comp.txt | 0 .../testdata/output/empty_nofile_comp.txt | 0 .../cmd}/testdata/output/env-comp.txt | 0 .../cmd}/testdata/output/get-all-no-args.txt | 0 .../testdata/output/get-hooks-no-args.txt | 0 .../cmd}/testdata/output/get-hooks.txt | 0 .../testdata/output/get-manifest-no-args.txt | 0 .../cmd}/testdata/output/get-manifest.txt | 0 .../testdata/output/get-metadata-args.txt | 0 .../cmd}/testdata/output/get-metadata.json | 0 .../cmd}/testdata/output/get-metadata.txt | 0 .../cmd}/testdata/output/get-metadata.yaml | 0 .../testdata/output/get-notes-no-args.txt | 0 .../cmd}/testdata/output/get-notes.txt | 0 .../testdata/output/get-release-template.txt | 0 .../cmd}/testdata/output/get-release.txt | 0 .../cmd}/testdata/output/get-values-all.txt | 0 .../cmd}/testdata/output/get-values-args.txt | 0 .../cmd}/testdata/output/get-values.txt | 0 .../cmd}/testdata/output/history-limit.txt | 0 .../cmd}/testdata/output/history.json | 0 .../cmd}/testdata/output/history.txt | 0 .../cmd}/testdata/output/history.yaml | 0 .../testdata/output/install-and-replace.txt | 0 .../output/install-and-take-ownership.txt | 0 .../output/install-chart-bad-type.txt | 0 .../install-dry-run-with-secret-hidden.txt | 0 .../output/install-dry-run-with-secret.txt | 0 .../testdata/output/install-hide-secret.txt | 0 .../testdata/output/install-lib-chart.txt | 0 .../testdata/output/install-name-template.txt | 0 .../cmd}/testdata/output/install-no-args.txt | 0 .../cmd}/testdata/output/install-no-hooks.txt | 0 .../install-with-multiple-values-files.txt | 0 .../output/install-with-multiple-values.txt | 0 .../testdata/output/install-with-timeout.txt | 0 .../output/install-with-values-file.txt | 0 .../testdata/output/install-with-values.txt | 0 .../output/install-with-wait-for-jobs.txt | 0 .../testdata/output/install-with-wait.txt | 0 .../cmd}/testdata/output/install.txt | 0 .../cmd}/testdata/output/issue-9027.txt | 0 .../cmd}/testdata/output/issue-totoml.txt | 0 ...hart-with-bad-subcharts-with-subcharts.txt | 0 .../output/lint-chart-with-bad-subcharts.txt | 0 ...lint-chart-with-deprecated-api-old-k8s.txt | 0 .../lint-chart-with-deprecated-api-strict.txt | 0 .../output/lint-chart-with-deprecated-api.txt | 0 .../testdata/output/lint-quiet-with-error.txt | 0 .../output/lint-quiet-with-warning.txt | 0 .../cmd}/testdata/output/lint-quiet.txt | 0 .../cmd}/testdata/output/list-all.txt | 0 .../testdata/output/list-date-reversed.txt | 0 .../cmd}/testdata/output/list-date.txt | 0 .../cmd}/testdata/output/list-failed.txt | 0 .../cmd}/testdata/output/list-filter.txt | 0 .../cmd}/testdata/output/list-max.txt | 0 .../cmd}/testdata/output/list-namespace.txt | 0 .../cmd}/testdata/output/list-no-headers.txt | 0 .../cmd}/testdata/output/list-offset.txt | 0 .../cmd}/testdata/output/list-pending.txt | 0 .../cmd}/testdata/output/list-reverse.txt | 0 .../cmd}/testdata/output/list-short-json.txt | 0 .../cmd}/testdata/output/list-short-yaml.txt | 0 .../cmd}/testdata/output/list-short.txt | 0 .../cmd}/testdata/output/list-superseded.txt | 0 .../cmd}/testdata/output/list-uninstalled.txt | 0 .../testdata/output/list-uninstalling.txt | 0 .../helm => pkg/cmd}/testdata/output/list.txt | 0 .../cmd}/testdata/output/object-order.txt | 0 .../cmd}/testdata/output/output-comp.txt | 0 .../cmd}/testdata/output/plugin_args_comp.txt | 0 .../testdata/output/plugin_args_flag_comp.txt | 0 .../output/plugin_args_many_args_comp.txt | 0 .../testdata/output/plugin_args_ns_comp.txt | 0 .../output/plugin_echo_no_directive.txt | 0 .../cmd}/testdata/output/plugin_list_comp.txt | 0 .../testdata/output/plugin_repeat_comp.txt | 0 .../testdata/output/release_list_comp.txt | 0 .../output/release_list_repeat_comp.txt | 0 .../cmd}/testdata/output/repo-add.txt | 0 .../cmd}/testdata/output/repo-add2.txt | 0 .../cmd}/testdata/output/repo_list_comp.txt | 0 .../cmd}/testdata/output/repo_repeat_comp.txt | 0 .../cmd}/testdata/output/revision-comp.txt | 0 .../output/revision-wrong-args-comp.txt | 0 .../cmd}/testdata/output/rollback-comp.txt | 0 .../cmd}/testdata/output/rollback-no-args.txt | 0 .../testdata/output/rollback-no-revision.txt | 0 .../output/rollback-non-existent-version.txt | 0 .../cmd}/testdata/output/rollback-timeout.txt | 0 .../output/rollback-wait-for-jobs.txt | 0 .../cmd}/testdata/output/rollback-wait.txt | 0 .../output/rollback-wrong-args-comp.txt | 0 .../cmd}/testdata/output/rollback.txt | 0 .../testdata/output/schema-negative-cli.txt | 0 .../cmd}/testdata/output/schema-negative.txt | 0 .../cmd}/testdata/output/schema.txt | 0 .../output/search-constraint-single.txt | 0 .../testdata/output/search-constraint.txt | 0 .../output/search-multiple-devel-release.txt | 0 .../output/search-multiple-stable-release.txt | 0 .../search-multiple-versions-constraints.txt | 0 .../output/search-multiple-versions.txt | 0 .../output/search-not-found-error.txt | 0 .../cmd}/testdata/output/search-not-found.txt | 0 .../testdata/output/search-output-json.txt | 0 .../testdata/output/search-output-yaml.txt | 0 .../cmd}/testdata/output/search-regex.txt | 0 .../output/search-versions-constraint.txt | 0 .../cmd}/testdata/output/status-comp.txt | 0 .../cmd}/testdata/output/status-with-desc.txt | 0 .../testdata/output/status-with-notes.txt | 0 .../output/status-with-resources.json | 0 .../testdata/output/status-with-resources.txt | 0 .../output/status-with-test-suite.txt | 0 .../output/status-wrong-args-comp.txt | 0 .../cmd}/testdata/output/status.json | 0 .../cmd}/testdata/output/status.txt | 0 .../output/subchart-schema-cli-negative.txt | 0 .../testdata/output/subchart-schema-cli.txt | 0 .../output/subchart-schema-negative.txt | 0 .../output/template-chart-bad-type.txt | 0 ...te-chart-with-template-lib-archive-dep.txt | 0 .../template-chart-with-template-lib-dep.txt | 0 .../testdata/output/template-lib-chart.txt | 0 .../output/template-name-template.txt | 0 .../cmd}/testdata/output/template-no-args.txt | 0 .../cmd}/testdata/output/template-set.txt | 0 .../output/template-show-only-glob.txt | 0 .../output/template-show-only-multiple.txt | 0 .../output/template-show-only-one.txt | 0 .../testdata/output/template-skip-tests.txt | 0 .../output/template-subchart-cm-set-file.txt | 0 .../output/template-subchart-cm-set.txt | 0 .../testdata/output/template-subchart-cm.txt | 0 .../testdata/output/template-values-files.txt | 0 .../output/template-with-api-version.txt | 0 .../testdata/output/template-with-crds.txt | 0 .../template-with-invalid-yaml-debug.txt | 0 .../output/template-with-invalid-yaml.txt | 0 .../output/template-with-kube-version.txt | 0 .../cmd}/testdata/output/template.txt | 0 .../output/uninstall-keep-history.txt | 0 .../testdata/output/uninstall-multiple.txt | 0 .../testdata/output/uninstall-no-args.txt | 0 .../testdata/output/uninstall-no-hooks.txt | 0 .../testdata/output/uninstall-timeout.txt | 0 .../cmd}/testdata/output/uninstall-wait.txt | 0 .../cmd}/testdata/output/uninstall.txt | 0 .../output/upgrade-and-take-ownership.txt | 0 .../upgrade-uninstalled-with-keep-history.txt | 0 .../output/upgrade-with-bad-dependencies.txt | 0 ...e-with-bad-or-missing-existing-release.txt | 0 .../output/upgrade-with-dependency-update.txt | 0 .../output/upgrade-with-install-timeout.txt | 0 .../testdata/output/upgrade-with-install.txt | 0 .../upgrade-with-missing-dependencies.txt | 0 .../output/upgrade-with-pending-install.txt | 0 .../output/upgrade-with-reset-values.txt | 0 .../output/upgrade-with-reset-values2.txt | 0 .../testdata/output/upgrade-with-timeout.txt | 0 .../output/upgrade-with-wait-for-jobs.txt | 0 .../testdata/output/upgrade-with-wait.txt | 0 .../cmd}/testdata/output/upgrade.txt | 0 .../cmd}/testdata/output/values.json | 0 .../cmd}/testdata/output/values.yaml | 0 .../output/version-client-shorthand.txt | 0 .../cmd}/testdata/output/version-client.txt | 0 .../cmd}/testdata/output/version-comp.txt | 0 .../testdata/output/version-invalid-comp.txt | 0 .../cmd}/testdata/output/version-short.txt | 0 .../cmd}/testdata/output/version-template.txt | 0 .../cmd}/testdata/output/version.txt | 0 {cmd/helm => pkg/cmd}/testdata/password | 0 {cmd/helm => pkg/cmd}/testdata/plugins.yaml | 0 .../cmd}/testdata/repositories.yaml | 0 .../testdata/testcharts/alpine/Chart.yaml | 0 .../cmd}/testdata/testcharts/alpine/README.md | 0 .../testcharts/alpine/extra_values.yaml | 0 .../testcharts/alpine/more_values.yaml | 0 .../alpine/templates/alpine-pod.yaml | 0 .../testdata/testcharts/alpine/values.yaml | 0 .../chart-bad-requirements/.helmignore | 0 .../chart-bad-requirements/Chart.yaml | 0 .../charts/reqsubchart/.helmignore | 0 .../charts/reqsubchart/Chart.yaml | 0 .../charts/reqsubchart/values.yaml | 0 .../chart-bad-requirements/values.yaml | 0 .../testcharts/chart-bad-type/Chart.yaml | 0 .../testcharts/chart-bad-type/README.md | 0 .../chart-bad-type/extra_values.yaml | 0 .../chart-bad-type/more_values.yaml | 0 .../chart-bad-type/templates/alpine-pod.yaml | 0 .../testcharts/chart-bad-type/values.yaml | 0 .../testcharts/chart-missing-deps/.helmignore | 0 .../testcharts/chart-missing-deps/Chart.yaml | 0 .../charts/reqsubchart/.helmignore | 0 .../charts/reqsubchart/Chart.yaml | 0 .../charts/reqsubchart/values.yaml | 0 .../testcharts/chart-missing-deps/values.yaml | 0 .../chart-with-bad-subcharts/Chart.yaml | 0 .../charts/bad-subchart/Chart.yaml | 0 .../charts/bad-subchart/values.yaml | 0 .../charts/good-subchart/Chart.yaml | 0 .../charts/good-subchart/values.yaml | 0 .../requirements.yaml | 0 .../chart-with-bad-subcharts/values.yaml | 0 .../chart-with-deprecated-api/Chart.yaml | 0 .../templates/horizontalpodautoscaler.yaml | 0 .../chart-with-deprecated-api/values.yaml | 0 .../testcharts/chart-with-lib-dep/.helmignore | 0 .../testcharts/chart-with-lib-dep/Chart.yaml | 0 .../charts/common-0.0.5.tgz | Bin .../chart-with-lib-dep/templates/NOTES.txt | 0 .../chart-with-lib-dep/templates/_helpers.tpl | 0 .../templates/deployment.yaml | 0 .../chart-with-lib-dep/templates/ingress.yaml | 0 .../chart-with-lib-dep/templates/service.yaml | 0 .../testcharts/chart-with-lib-dep/values.yaml | 0 .../chart-with-only-crds/.helmignore | 0 .../chart-with-only-crds/Chart.yaml | 0 .../chart-with-only-crds/crds/test-crd.yaml | 0 .../chart-with-schema-and-subchart/Chart.yaml | 0 .../charts/subchart-with-schema/Chart.yaml | 0 .../subchart-with-schema/templates/empty.yaml | 0 .../subchart-with-schema/values.schema.json | 0 .../charts/subchart-with-schema/values.yaml | 0 .../templates/empty.yaml | 0 .../values.schema.json | 0 .../values.yaml | 0 .../Chart.yaml | 0 .../templates/empty.yaml | 0 .../values.schema.json | 0 .../values.yaml | 0 .../chart-with-schema-negative/Chart.yaml | 0 .../templates/empty.yaml | 0 .../values.schema.json | 0 .../chart-with-schema-negative/values.yaml | 0 .../testcharts/chart-with-schema/Chart.yaml | 0 .../chart-with-schema/extra-values.yaml | 0 .../chart-with-schema/templates/empty.yaml | 0 .../chart-with-schema/values.schema.json | 0 .../testcharts/chart-with-schema/values.yaml | 0 .../testcharts/chart-with-secret/Chart.yaml | 0 .../templates/configmap.yaml | 0 .../chart-with-secret/templates/secret.yaml | 0 .../chart-with-subchart-notes/Chart.yaml | 0 .../charts/subchart-with-notes/Chart.yaml | 0 .../subchart-with-notes/templates/NOTES.txt | 0 .../templates/NOTES.txt | 0 .../chart-with-subchart-update/Chart.lock | 0 .../chart-with-subchart-update/Chart.yaml | 0 .../charts/subchart-with-notes/Chart.yaml | 0 .../subchart-with-notes/templates/NOTES.txt | 0 .../templates/NOTES.txt | 0 .../.helmignore | 0 .../Chart.yaml | 0 .../charts/common-0.0.5.tgz | Bin .../templates/NOTES.txt | 0 .../templates/_helpers.tpl | 0 .../templates/deployment.yaml | 0 .../templates/ingress.yaml | 0 .../templates/service.yaml | 0 .../values.yaml | 0 .../chart-with-template-lib-dep/.helmignore | 0 .../chart-with-template-lib-dep/Chart.yaml | 0 .../charts/common/.helmignore | 0 .../charts/common/Chart.yaml | 0 .../charts/common/README.md | 0 .../charts/common/templates/_chartref.tpl | 0 .../charts/common/templates/_configmap.yaml | 0 .../charts/common/templates/_container.yaml | 0 .../charts/common/templates/_deployment.yaml | 0 .../charts/common/templates/_envvar.tpl | 0 .../charts/common/templates/_fullname.tpl | 0 .../charts/common/templates/_ingress.yaml | 0 .../charts/common/templates/_metadata.yaml | 0 .../templates/_metadata_annotations.tpl | 0 .../common/templates/_metadata_labels.tpl | 0 .../charts/common/templates/_name.tpl | 0 .../templates/_persistentvolumeclaim.yaml | 0 .../charts/common/templates/_secret.yaml | 0 .../charts/common/templates/_service.yaml | 0 .../charts/common/templates/_util.tpl | 0 .../charts/common/templates/_volume.tpl | 0 .../charts/common/templates/configmap.yaml | 0 .../charts/common/values.yaml | 0 .../templates/NOTES.txt | 0 .../templates/_helpers.tpl | 0 .../templates/deployment.yaml | 0 .../templates/ingress.yaml | 0 .../templates/service.yaml | 0 .../chart-with-template-lib-dep/values.yaml | 0 .../Chart.yaml | 0 .../README.md | 0 .../templates/alpine-pod.yaml | 0 .../values.yaml | 0 .../testcharts/compressedchart-0.1.0.tar.gz | Bin .../testcharts/compressedchart-0.1.0.tgz | Bin .../testcharts/compressedchart-0.2.0.tgz | Bin .../testcharts/compressedchart-0.3.0.tgz | Bin .../compressedchart-with-hyphens-0.1.0.tgz | Bin .../testdata/testcharts/deprecated/Chart.yaml | 0 .../testdata/testcharts/deprecated/README.md | 0 .../cmd}/testdata/testcharts/empty/Chart.yaml | 0 .../cmd}/testdata/testcharts/empty/README.md | 0 .../testcharts/empty/templates/empty.yaml | 0 .../testdata/testcharts/empty/values.yaml | 0 .../testcharts/issue-7233/.helmignore | 0 .../testdata/testcharts/issue-7233/Chart.yaml | 0 .../testcharts/issue-7233/requirements.lock | 0 .../testcharts/issue-7233/requirements.yaml | 0 .../issue-7233/templates/configmap.yaml | 0 .../testcharts/issue-7233/values.yaml | 0 .../testdata/testcharts/issue-9027/Chart.yaml | 0 .../issue-9027/charts/subchart/Chart.yaml | 0 .../charts/subchart/templates/values.yaml | 0 .../issue-9027/charts/subchart/values.yaml | 0 .../issue-9027/templates/values.yaml | 0 .../testcharts/issue-9027/values.yaml | 0 .../testcharts/issue-totoml/Chart.yaml | 0 .../issue-totoml/templates/configmap.yaml | 0 .../testcharts/issue-totoml/values.yaml | 0 .../testdata/testcharts/issue1979/Chart.yaml | 0 .../testdata/testcharts/issue1979/README.md | 0 .../testcharts/issue1979/extra_values.yaml | 0 .../testcharts/issue1979/more_values.yaml | 0 .../issue1979/templates/alpine-pod.yaml | 0 .../testdata/testcharts/issue1979/values.yaml | 0 .../testdata/testcharts/lib-chart/.helmignore | 0 .../testdata/testcharts/lib-chart/Chart.yaml | 0 .../testdata/testcharts/lib-chart/README.md | 0 .../lib-chart/templates/_chartref.tpl | 0 .../lib-chart/templates/_configmap.yaml | 0 .../lib-chart/templates/_container.yaml | 0 .../lib-chart/templates/_deployment.yaml | 0 .../lib-chart/templates/_envvar.tpl | 0 .../lib-chart/templates/_fullname.tpl | 0 .../lib-chart/templates/_ingress.yaml | 0 .../lib-chart/templates/_metadata.yaml | 0 .../templates/_metadata_annotations.tpl | 0 .../lib-chart/templates/_metadata_labels.tpl | 0 .../testcharts/lib-chart/templates/_name.tpl | 0 .../templates/_persistentvolumeclaim.yaml | 0 .../lib-chart/templates/_secret.yaml | 0 .../lib-chart/templates/_service.yaml | 0 .../testcharts/lib-chart/templates/_util.tpl | 0 .../lib-chart/templates/_volume.tpl | 0 .../testdata/testcharts/lib-chart/values.yaml | 0 .../testcharts/object-order/Chart.yaml | 0 .../object-order/templates/01-a.yml | 0 .../object-order/templates/02-b.yml | 0 .../testcharts/object-order/values.yaml | 0 .../testcharts/oci-dependent-chart-0.1.0.tgz | Bin .../pre-release-chart-0.1.0-alpha.tgz | Bin .../testdata/testcharts/reqtest-0.1.0.tgz | Bin .../testdata/testcharts/reqtest/.helmignore | 0 .../testdata/testcharts/reqtest/Chart.lock | 0 .../testdata/testcharts/reqtest/Chart.yaml | 0 .../reqtest/charts/reqsubchart/.helmignore | 0 .../reqtest/charts/reqsubchart/Chart.yaml | 0 .../reqtest/charts/reqsubchart/values.yaml | 0 .../reqtest/charts/reqsubchart2/.helmignore | 0 .../reqtest/charts/reqsubchart2/Chart.yaml | 0 .../reqtest/charts/reqsubchart2/values.yaml | 0 .../reqtest/charts/reqsubchart3-0.2.0.tgz | Bin .../testdata/testcharts/reqtest/values.yaml | 0 .../testdata/testcharts/signtest-0.1.0.tgz | Bin .../testcharts/signtest-0.1.0.tgz.prov | 0 .../testdata/testcharts/signtest/.helmignore | 0 .../testdata/testcharts/signtest/Chart.yaml | 0 .../testcharts/signtest/alpine/Chart.yaml | 0 .../testcharts/signtest/alpine/README.md | 0 .../signtest/alpine/templates/alpine-pod.yaml | 0 .../testcharts/signtest/alpine/values.yaml | 0 .../testcharts/signtest/templates/pod.yaml | 0 .../testdata/testcharts/signtest/values.yaml | 0 .../testdata/testcharts/subchart/Chart.yaml | 0 .../subchart/charts/subchartA/Chart.yaml | 0 .../charts/subchartA/templates/service.yaml | 0 .../subchart/charts/subchartA/values.yaml | 0 .../subchart/charts/subchartB/Chart.yaml | 0 .../charts/subchartB/templates/service.yaml | 0 .../subchart/charts/subchartB/values.yaml | 0 .../testcharts/subchart/crds/crdA.yaml | 0 .../testcharts/subchart/extra_values.yaml | 0 .../testcharts/subchart/templates/NOTES.txt | 0 .../subchart/templates/service.yaml | 0 .../subchart/templates/subdir/configmap.yaml | 0 .../subchart/templates/subdir/role.yaml | 0 .../templates/subdir/rolebinding.yaml | 0 .../templates/subdir/serviceaccount.yaml | 0 .../subchart/templates/tests/test-config.yaml | 0 .../templates/tests/test-nothing.yaml | 0 .../testdata/testcharts/subchart/values.yaml | 0 .../upgradetest/templates/configmap.yaml | 0 .../testcharts/upgradetest/values.yaml | 0 .../cmd}/testdata/testplugin/plugin.yaml | 0 .../cmd}/testdata/testserver/index.yaml | 0 .../testserver/repository/repositories.yaml | 0 {cmd/helm => pkg/cmd}/uninstall.go | 4 +- {cmd/helm => pkg/cmd}/uninstall_test.go | 2 +- {cmd/helm => pkg/cmd}/upgrade.go | 8 +- {cmd/helm => pkg/cmd}/upgrade_test.go | 2 +- {cmd/helm => pkg/cmd}/verify.go | 4 +- {cmd/helm => pkg/cmd}/verify_test.go | 2 +- {cmd/helm => pkg/cmd}/version.go | 4 +- {cmd/helm => pkg/cmd}/version_test.go | 2 +- 538 files changed, 354 insertions(+), 335 deletions(-) rename {cmd/helm => pkg/cmd}/completion.go (99%) rename {cmd/helm => pkg/cmd}/completion_test.go (99%) rename {cmd/helm => pkg/cmd}/create.go (98%) rename {cmd/helm => pkg/cmd}/create_test.go (99%) rename {cmd/helm => pkg/cmd}/dependency.go (98%) rename {cmd/helm => pkg/cmd}/dependency_build.go (98%) rename {cmd/helm => pkg/cmd}/dependency_build_test.go (99%) rename {cmd/helm => pkg/cmd}/dependency_test.go (99%) rename {cmd/helm => pkg/cmd}/dependency_update.go (98%) rename {cmd/helm => pkg/cmd}/dependency_update_test.go (99%) rename {cmd/helm => pkg/cmd}/docs.go (98%) rename {cmd/helm => pkg/cmd}/docs_test.go (98%) rename {cmd/helm => pkg/cmd}/env.go (97%) rename {cmd/helm => pkg/cmd}/env_test.go (98%) rename {cmd/helm => pkg/cmd}/flags.go (99%) rename {cmd/helm => pkg/cmd}/flags_test.go (99%) rename {cmd/helm => pkg/cmd}/get.go (96%) rename {cmd/helm => pkg/cmd}/get_all.go (97%) rename {cmd/helm => pkg/cmd}/get_all_test.go (99%) rename {cmd/helm => pkg/cmd}/get_hooks.go (97%) rename {cmd/helm => pkg/cmd}/get_hooks_test.go (99%) rename {cmd/helm => pkg/cmd}/get_manifest.go (97%) rename {cmd/helm => pkg/cmd}/get_manifest_test.go (99%) rename {cmd/helm => pkg/cmd}/get_metadata.go (98%) rename {cmd/helm => pkg/cmd}/get_metadata_test.go (99%) rename {cmd/helm => pkg/cmd}/get_notes.go (97%) rename {cmd/helm => pkg/cmd}/get_notes_test.go (99%) rename {cmd/helm => pkg/cmd}/get_test.go (98%) rename {cmd/helm => pkg/cmd}/get_values.go (98%) rename {cmd/helm => pkg/cmd}/get_values_test.go (99%) create mode 100644 pkg/cmd/helpers_test.go rename {cmd/helm => pkg/cmd}/history.go (99%) rename {cmd/helm => pkg/cmd}/history_test.go (99%) rename {cmd/helm => pkg/cmd}/install.go (98%) rename {cmd/helm => pkg/cmd}/install_test.go (99%) rename {cmd/helm => pkg/cmd}/lint.go (99%) rename {cmd/helm => pkg/cmd}/lint_test.go (99%) rename {cmd/helm => pkg/cmd}/list.go (98%) rename {cmd/helm => pkg/cmd}/list_test.go (99%) rename {cmd/helm => pkg/cmd}/load_plugins.go (99%) rename {cmd/helm => pkg/cmd}/package.go (99%) rename {cmd/helm => pkg/cmd}/package_test.go (99%) rename {cmd/helm => pkg/cmd}/plugin.go (97%) rename {cmd/helm => pkg/cmd}/plugin_install.go (96%) rename {cmd/helm => pkg/cmd}/plugin_list.go (97%) rename {cmd/helm => pkg/cmd}/plugin_test.go (98%) rename {cmd/helm => pkg/cmd}/plugin_uninstall.go (97%) rename {cmd/helm => pkg/cmd}/plugin_update.go (95%) rename {cmd/helm => pkg/cmd}/printer.go (98%) rename {cmd/helm => pkg/cmd}/profiling.go (99%) rename {cmd/helm => pkg/cmd}/pull.go (97%) rename {cmd/helm => pkg/cmd}/pull_test.go (99%) rename {cmd/helm => pkg/cmd}/push.go (98%) rename {cmd/helm => pkg/cmd}/push_test.go (98%) rename {cmd/helm => pkg/cmd}/registry.go (98%) rename {cmd/helm => pkg/cmd}/registry_login.go (97%) rename {cmd/helm => pkg/cmd}/registry_login_test.go (98%) rename {cmd/helm => pkg/cmd}/registry_logout.go (96%) rename {cmd/helm => pkg/cmd}/registry_logout_test.go (98%) rename {cmd/helm => pkg/cmd}/release_testing.go (98%) rename {cmd/helm => pkg/cmd}/release_testing_test.go (98%) rename {cmd/helm => pkg/cmd}/repo.go (96%) rename {cmd/helm => pkg/cmd}/repo_add.go (99%) rename {cmd/helm => pkg/cmd}/repo_add_test.go (99%) rename {cmd/helm => pkg/cmd}/repo_index.go (98%) rename {cmd/helm => pkg/cmd}/repo_index_test.go (99%) rename {cmd/helm => pkg/cmd}/repo_list.go (98%) rename {cmd/helm => pkg/cmd}/repo_list_test.go (98%) rename {cmd/helm => pkg/cmd}/repo_remove.go (98%) rename {cmd/helm => pkg/cmd}/repo_remove_test.go (99%) rename {cmd/helm => pkg/cmd}/repo_test.go (98%) rename {cmd/helm => pkg/cmd}/repo_update.go (98%) rename {cmd/helm => pkg/cmd}/repo_update_test.go (99%) rename {cmd/helm => pkg/cmd}/require/args.go (100%) rename {cmd/helm => pkg/cmd}/require/args_test.go (100%) rename {cmd/helm => pkg/cmd}/rollback.go (98%) rename {cmd/helm => pkg/cmd}/rollback_test.go (99%) rename {cmd/helm => pkg/cmd}/root.go (97%) rename {cmd/helm => pkg/cmd}/root_test.go (99%) rename {cmd/helm => pkg/cmd}/search.go (98%) rename {cmd/helm => pkg/cmd}/search/search.go (100%) rename {cmd/helm => pkg/cmd}/search/search_test.go (100%) rename {cmd/helm => pkg/cmd}/search_hub.go (99%) rename {cmd/helm => pkg/cmd}/search_hub_test.go (99%) rename {cmd/helm => pkg/cmd}/search_repo.go (97%) rename {cmd/helm => pkg/cmd}/search_repo_test.go (99%) rename {cmd/helm => pkg/cmd}/search_test.go (98%) rename {cmd/helm => pkg/cmd}/show.go (97%) rename {cmd/helm => pkg/cmd}/show_test.go (99%) rename {cmd/helm => pkg/cmd}/status.go (99%) rename {cmd/helm => pkg/cmd}/status_test.go (99%) rename {cmd/helm => pkg/cmd}/template.go (99%) rename {cmd/helm => pkg/cmd}/template_test.go (99%) rename {cmd/helm => pkg/cmd}/testdata/helm home with space/helm/plugins/fullenv/completion.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helm home with space/helm/plugins/fullenv/fullenv.sh (100%) rename {cmd/helm => pkg/cmd}/testdata/helm home with space/helm/plugins/fullenv/plugin.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helm home with space/helm/repositories.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helm home with space/helm/repository/test-name-charts.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/helm home with space/helm/repository/test-name-index.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helm home with space/helm/repository/testing-index.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helm-test-key.pub (100%) rename {cmd/helm => pkg/cmd}/testdata/helm-test-key.secret (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/args/args.sh (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/args/plugin.complete (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/args/plugin.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/echo/completion.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/echo/plugin.complete (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/echo/plugin.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/env/completion.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/env/plugin.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/exitwith/completion.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/exitwith/exitwith.sh (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/exitwith/plugin.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/fullenv/completion.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/fullenv/fullenv.sh (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/plugins/fullenv/plugin.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/repositories.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/repository/test-name-charts.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/repository/test-name-index.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/helmhome/helm/repository/testing-index.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/output/chart-with-subchart-update.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/dependency-list-archive.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/dependency-list-no-chart-linux.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/dependency-list-no-requirements-linux.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/dependency-list.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/deprecated-chart.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/docs-type-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/empty_default_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/empty_nofile_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/env-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-all-no-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-hooks-no-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-hooks.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-manifest-no-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-manifest.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-metadata-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-metadata.json (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-metadata.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-metadata.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-notes-no-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-notes.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-release-template.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-release.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-values-all.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-values-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/get-values.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/history-limit.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/history.json (100%) rename {cmd/helm => pkg/cmd}/testdata/output/history.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/history.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-and-replace.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-and-take-ownership.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-chart-bad-type.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-dry-run-with-secret-hidden.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-dry-run-with-secret.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-hide-secret.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-lib-chart.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-name-template.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-no-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-no-hooks.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-with-multiple-values-files.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-with-multiple-values.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-with-timeout.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-with-values-file.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-with-values.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-with-wait-for-jobs.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install-with-wait.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/install.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/issue-9027.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/issue-totoml.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/lint-chart-with-bad-subcharts-with-subcharts.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/lint-chart-with-bad-subcharts.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/lint-chart-with-deprecated-api-old-k8s.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/lint-chart-with-deprecated-api-strict.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/lint-chart-with-deprecated-api.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/lint-quiet-with-error.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/lint-quiet-with-warning.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/lint-quiet.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-all.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-date-reversed.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-date.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-failed.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-filter.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-max.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-namespace.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-no-headers.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-offset.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-pending.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-reverse.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-short-json.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-short-yaml.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-short.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-superseded.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-uninstalled.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list-uninstalling.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/list.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/object-order.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/output-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/plugin_args_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/plugin_args_flag_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/plugin_args_many_args_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/plugin_args_ns_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/plugin_echo_no_directive.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/plugin_list_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/plugin_repeat_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/release_list_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/release_list_repeat_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/repo-add.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/repo-add2.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/repo_list_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/repo_repeat_comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/revision-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/revision-wrong-args-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback-no-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback-no-revision.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback-non-existent-version.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback-timeout.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback-wait-for-jobs.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback-wait.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback-wrong-args-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/rollback.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/schema-negative-cli.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/schema-negative.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/schema.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-constraint-single.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-constraint.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-multiple-devel-release.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-multiple-stable-release.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-multiple-versions-constraints.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-multiple-versions.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-not-found-error.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-not-found.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-output-json.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-output-yaml.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-regex.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/search-versions-constraint.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status-with-desc.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status-with-notes.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status-with-resources.json (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status-with-resources.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status-with-test-suite.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status-wrong-args-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status.json (100%) rename {cmd/helm => pkg/cmd}/testdata/output/status.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/subchart-schema-cli-negative.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/subchart-schema-cli.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/subchart-schema-negative.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-chart-bad-type.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-chart-with-template-lib-archive-dep.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-chart-with-template-lib-dep.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-lib-chart.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-name-template.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-no-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-set.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-show-only-glob.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-show-only-multiple.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-show-only-one.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-skip-tests.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-subchart-cm-set-file.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-subchart-cm-set.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-subchart-cm.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-values-files.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-with-api-version.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-with-crds.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-with-invalid-yaml-debug.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-with-invalid-yaml.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template-with-kube-version.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/template.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/uninstall-keep-history.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/uninstall-multiple.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/uninstall-no-args.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/uninstall-no-hooks.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/uninstall-timeout.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/uninstall-wait.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/uninstall.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-and-take-ownership.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-uninstalled-with-keep-history.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-bad-dependencies.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-bad-or-missing-existing-release.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-dependency-update.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-install-timeout.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-install.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-missing-dependencies.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-pending-install.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-reset-values.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-reset-values2.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-timeout.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-wait-for-jobs.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade-with-wait.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/upgrade.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/values.json (100%) rename {cmd/helm => pkg/cmd}/testdata/output/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/output/version-client-shorthand.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/version-client.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/version-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/version-invalid-comp.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/version-short.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/version-template.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/output/version.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/password (100%) rename {cmd/helm => pkg/cmd}/testdata/plugins.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/repositories.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/alpine/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/alpine/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/alpine/extra_values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/alpine/more_values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/alpine/templates/alpine-pod.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/alpine/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-requirements/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-requirements/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-requirements/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-type/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-type/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-type/extra_values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-type/more_values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-type/templates/alpine-pod.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-bad-type/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-missing-deps/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-missing-deps/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-missing-deps/charts/reqsubchart/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-missing-deps/charts/reqsubchart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-missing-deps/charts/reqsubchart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-missing-deps/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-bad-subcharts/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-bad-subcharts/requirements.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-bad-subcharts/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-deprecated-api/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-deprecated-api/templates/horizontalpodautoscaler.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-deprecated-api/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/charts/common-0.0.5.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/templates/NOTES.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/templates/_helpers.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/templates/deployment.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/templates/ingress.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/templates/service.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-lib-dep/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-only-crds/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-only-crds/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-only-crds/crds/test-crd.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-and-subchart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/templates/empty.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.schema.json (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-and-subchart/templates/empty.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-and-subchart/values.schema.json (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-and-subchart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-negative-skip-validation/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-negative-skip-validation/templates/empty.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-negative-skip-validation/values.schema.json (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-negative-skip-validation/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-negative/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-negative/templates/empty.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-negative/values.schema.json (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema-negative/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema/extra-values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema/templates/empty.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema/values.schema.json (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-schema/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-secret/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-secret/templates/configmap.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-secret/templates/secret.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-notes/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/templates/NOTES.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-notes/templates/NOTES.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-update/Chart.lock (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-update/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/templates/NOTES.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-subchart-update/templates/NOTES.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/charts/common-0.0.5.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/templates/NOTES.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/templates/_helpers.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/templates/deployment.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/templates/ingress.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/templates/service.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-archive-dep/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_chartref.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_configmap.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_container.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_deployment.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_envvar.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_fullname.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_ingress.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_annotations.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_labels.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_name.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_persistentvolumeclaim.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_secret.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_service.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_util.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_volume.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/configmap.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/charts/common/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/templates/NOTES.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/templates/_helpers.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/templates/deployment.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/templates/ingress.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/templates/service.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-lib-dep/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-with-invalid-yaml/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-with-invalid-yaml/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-with-invalid-yaml/templates/alpine-pod.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/chart-with-template-with-invalid-yaml/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/compressedchart-0.1.0.tar.gz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/compressedchart-0.1.0.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/compressedchart-0.2.0.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/compressedchart-0.3.0.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/compressedchart-with-hyphens-0.1.0.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/deprecated/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/deprecated/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/empty/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/empty/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/empty/templates/empty.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/empty/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-7233/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-7233/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-7233/requirements.lock (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-7233/requirements.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-7233/templates/configmap.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-7233/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-9027/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-9027/charts/subchart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-9027/charts/subchart/templates/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-9027/charts/subchart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-9027/templates/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-9027/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-totoml/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-totoml/templates/configmap.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue-totoml/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue1979/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue1979/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue1979/extra_values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue1979/more_values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue1979/templates/alpine-pod.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/issue1979/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_chartref.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_configmap.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_container.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_deployment.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_envvar.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_fullname.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_ingress.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_metadata.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_metadata_annotations.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_metadata_labels.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_name.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_persistentvolumeclaim.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_secret.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_service.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_util.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/templates/_volume.tpl (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/lib-chart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/object-order/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/object-order/templates/01-a.yml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/object-order/templates/02-b.yml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/object-order/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/oci-dependent-chart-0.1.0.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/pre-release-chart-0.1.0-alpha.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest-0.1.0.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/Chart.lock (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/charts/reqsubchart/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/charts/reqsubchart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/charts/reqsubchart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/charts/reqsubchart2/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/charts/reqsubchart2/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/charts/reqsubchart2/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/charts/reqsubchart3-0.2.0.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/reqtest/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest-0.1.0.tgz (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest-0.1.0.tgz.prov (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest/.helmignore (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest/alpine/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest/alpine/README.md (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest/alpine/templates/alpine-pod.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest/alpine/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest/templates/pod.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/signtest/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/charts/subchartA/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/charts/subchartA/templates/service.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/charts/subchartA/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/charts/subchartB/Chart.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/charts/subchartB/templates/service.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/charts/subchartB/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/crds/crdA.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/extra_values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/templates/NOTES.txt (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/templates/service.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/templates/subdir/configmap.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/templates/subdir/role.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/templates/subdir/rolebinding.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/templates/subdir/serviceaccount.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/templates/tests/test-config.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/templates/tests/test-nothing.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/subchart/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/upgradetest/templates/configmap.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testcharts/upgradetest/values.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testplugin/plugin.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testserver/index.yaml (100%) rename {cmd/helm => pkg/cmd}/testdata/testserver/repository/repositories.yaml (100%) rename {cmd/helm => pkg/cmd}/uninstall.go (98%) rename {cmd/helm => pkg/cmd}/uninstall_test.go (99%) rename {cmd/helm => pkg/cmd}/upgrade.go (99%) rename {cmd/helm => pkg/cmd}/upgrade_test.go (99%) rename {cmd/helm => pkg/cmd}/verify.go (97%) rename {cmd/helm => pkg/cmd}/verify_test.go (99%) rename {cmd/helm => pkg/cmd}/version.go (98%) rename {cmd/helm => pkg/cmd}/version_test.go (98%) diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index c8de18796..78b2c6cd3 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -17,12 +17,10 @@ limitations under the License. package main // import "helm.sh/helm/v4/cmd/helm" import ( - "fmt" "io" "log" "os" "strings" - "time" "github.com/spf13/cobra" "sigs.k8s.io/yaml" @@ -32,6 +30,7 @@ import ( "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/cli" + helmcmd "helm.sh/helm/v4/pkg/cmd" "helm.sh/helm/v4/pkg/kube" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/release" @@ -44,19 +43,6 @@ func init() { log.SetFlags(log.Lshortfile) } -func debug(format string, v ...interface{}) { - if settings.Debug { - timeNow := time.Now().String() - format = fmt.Sprintf("%s [debug] %s\n", timeNow, format) - log.Output(2, fmt.Sprintf(format, v...)) - } -} - -func warning(format string, v ...interface{}) { - format = fmt.Sprintf("WARNING: %s\n", format) - fmt.Fprintf(os.Stderr, format, v...) -} - // hookOutputWriter provides the writer for writing hook logs. func hookOutputWriter(_, _, _ string) io.Writer { return log.Writer() @@ -70,16 +56,15 @@ func main() { kube.ManagedFieldsManager = "helm" actionConfig := new(action.Configuration) - cmd, err := newRootCmd(actionConfig, os.Stdout, os.Args[1:]) + cmd, err := helmcmd.NewRootCmd(actionConfig, os.Stdout, os.Args[1:]) if err != nil { - warning("%+v", err) + helmcmd.Warning("%+v", err) os.Exit(1) } - // run when each command's execute method is called cobra.OnInitialize(func() { helmDriver := os.Getenv("HELM_DRIVER") - if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), helmDriver, debug); err != nil { + if err := actionConfig.Init(settings.RESTClientGetter(), settings.Namespace(), helmDriver, helmcmd.Debug); err != nil { log.Fatal(err) } if helmDriver == "memory" { @@ -89,10 +74,10 @@ func main() { }) if err := cmd.Execute(); err != nil { - debug("%+v", err) + helmcmd.Debug("%+v", err) switch e := err.(type) { - case pluginError: - os.Exit(e.code) + case helmcmd.PluginError: + os.Exit(e.Code) default: os.Exit(1) } diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go index e7a05aecf..5431daad0 100644 --- a/cmd/helm/helm_test.go +++ b/cmd/helm/helm_test.go @@ -18,153 +18,12 @@ package main import ( "bytes" - "io" "os" "os/exec" "runtime" - "strings" "testing" - - shellwords "github.com/mattn/go-shellwords" - "github.com/spf13/cobra" - - "helm.sh/helm/v4/internal/test" - "helm.sh/helm/v4/pkg/action" - chartutil "helm.sh/helm/v4/pkg/chart/util" - "helm.sh/helm/v4/pkg/cli" - kubefake "helm.sh/helm/v4/pkg/kube/fake" - "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/storage" - "helm.sh/helm/v4/pkg/storage/driver" - "helm.sh/helm/v4/pkg/time" ) -func testTimestamper() time.Time { return time.Unix(242085845, 0).UTC() } - -func init() { - action.Timestamper = testTimestamper -} - -func runTestCmd(t *testing.T, tests []cmdTestCase) { - t.Helper() - for _, tt := range tests { - for i := 0; i <= tt.repeat; i++ { - t.Run(tt.name, func(t *testing.T) { - defer resetEnv()() - - storage := storageFixture() - for _, rel := range tt.rels { - if err := storage.Create(rel); err != nil { - t.Fatal(err) - } - } - t.Logf("running cmd (attempt %d): %s", i+1, tt.cmd) - _, out, err := executeActionCommandC(storage, tt.cmd) - if tt.wantError && err == nil { - t.Errorf("expected error, got success with the following output:\n%s", out) - } - if !tt.wantError && err != nil { - t.Errorf("expected no error, got: '%v'", err) - } - if tt.golden != "" { - test.AssertGoldenString(t, out, tt.golden) - } - }) - } - } -} - -func storageFixture() *storage.Storage { - return storage.Init(driver.NewMemory()) -} - -func executeActionCommandC(store *storage.Storage, cmd string) (*cobra.Command, string, error) { - return executeActionCommandStdinC(store, nil, cmd) -} - -func executeActionCommandStdinC(store *storage.Storage, in *os.File, cmd string) (*cobra.Command, string, error) { - args, err := shellwords.Parse(cmd) - if err != nil { - return nil, "", err - } - - buf := new(bytes.Buffer) - - actionConfig := &action.Configuration{ - Releases: store, - KubeClient: &kubefake.PrintingKubeClient{Out: io.Discard}, - Capabilities: chartutil.DefaultCapabilities, - Log: func(_ string, _ ...interface{}) {}, - } - - root, err := newRootCmd(actionConfig, buf, args) - if err != nil { - return nil, "", err - } - - root.SetOut(buf) - root.SetErr(buf) - root.SetArgs(args) - - oldStdin := os.Stdin - if in != nil { - root.SetIn(in) - os.Stdin = in - } - - if mem, ok := store.Driver.(*driver.Memory); ok { - mem.SetNamespace(settings.Namespace()) - } - c, err := root.ExecuteC() - - result := buf.String() - - os.Stdin = oldStdin - - return c, result, err -} - -// cmdTestCase describes a test case that works with releases. -type cmdTestCase struct { - name string - cmd string - golden string - wantError bool - // Rels are the available releases at the start of the test. - rels []*release.Release - // Number of repeats (in case a feature was previously flaky and the test checks - // it's now stably producing identical results). 0 means test is run exactly once. - repeat int -} - -func executeActionCommand(cmd string) (*cobra.Command, string, error) { - return executeActionCommandC(storageFixture(), cmd) -} - -func resetEnv() func() { - origEnv := os.Environ() - return func() { - os.Clearenv() - for _, pair := range origEnv { - kv := strings.SplitN(pair, "=", 2) - os.Setenv(kv[0], kv[1]) - } - settings = cli.New() - } -} - -func testChdir(t *testing.T, dir string) func() { - t.Helper() - old, err := os.Getwd() - if err != nil { - t.Fatal(err) - } - if err := os.Chdir(dir); err != nil { - t.Fatal(err) - } - return func() { os.Chdir(old) } -} - func TestPluginExitCode(t *testing.T) { if os.Getenv("RUN_MAIN_FOR_TESTING") == "1" { os.Args = []string{"helm", "exitwith", "2"} @@ -190,10 +49,8 @@ func TestPluginExitCode(t *testing.T) { "RUN_MAIN_FOR_TESTING=1", // See pkg/cli/environment.go for which envvars can be used for configuring these passes // and also see plugin_test.go for how a plugin env can be set up. - // We just does the same setup as plugin_test.go via envvars - "HELM_PLUGINS=testdata/helmhome/helm/plugins", - "HELM_REPOSITORY_CONFIG=testdata/helmhome/helm/repositories.yaml", - "HELM_REPOSITORY_CACHE=testdata/helmhome/helm/repository", + // This mimics the "exitwith" test case in TestLoadPlugins using envvars + "HELM_PLUGINS=../../pkg/cmd/testdata/helmhome/helm/plugins", ) stdout := &bytes.Buffer{} stderr := &bytes.Buffer{} diff --git a/cmd/helm/completion.go b/pkg/cmd/completion.go similarity index 99% rename from cmd/helm/completion.go rename to pkg/cmd/completion.go index 5d2186939..6f6dbd25d 100644 --- a/cmd/helm/completion.go +++ b/pkg/cmd/completion.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" ) const completionDesc = ` diff --git a/cmd/helm/completion_test.go b/pkg/cmd/completion_test.go similarity index 99% rename from cmd/helm/completion_test.go rename to pkg/cmd/completion_test.go index 4dd427232..0618a7f64 100644 --- a/cmd/helm/completion_test.go +++ b/pkg/cmd/completion_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/create.go b/pkg/cmd/create.go similarity index 98% rename from cmd/helm/create.go rename to pkg/cmd/create.go index a18f2c915..d1e7ef4c6 100644 --- a/cmd/helm/create.go +++ b/pkg/cmd/create.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,9 +23,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/chart" chartutil "helm.sh/helm/v4/pkg/chart/util" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/helmpath" ) diff --git a/cmd/helm/create_test.go b/pkg/cmd/create_test.go similarity index 99% rename from cmd/helm/create_test.go rename to pkg/cmd/create_test.go index 76fce804c..8f40bfc57 100644 --- a/cmd/helm/create_test.go +++ b/pkg/cmd/create_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/dependency.go b/pkg/cmd/dependency.go similarity index 98% rename from cmd/helm/dependency.go rename to pkg/cmd/dependency.go index 5e108b6fd..34bbff6be 100644 --- a/cmd/helm/dependency.go +++ b/pkg/cmd/dependency.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" @@ -22,8 +22,8 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const dependencyDesc = ` diff --git a/cmd/helm/dependency_build.go b/pkg/cmd/dependency_build.go similarity index 98% rename from cmd/helm/dependency_build.go rename to pkg/cmd/dependency_build.go index 719c720a7..16907facf 100644 --- a/cmd/helm/dependency_build.go +++ b/pkg/cmd/dependency_build.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -24,8 +24,8 @@ import ( "github.com/spf13/cobra" "k8s.io/client-go/util/homedir" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" ) diff --git a/cmd/helm/dependency_build_test.go b/pkg/cmd/dependency_build_test.go similarity index 99% rename from cmd/helm/dependency_build_test.go rename to pkg/cmd/dependency_build_test.go index 76c01d911..8d0191e3f 100644 --- a/cmd/helm/dependency_build_test.go +++ b/pkg/cmd/dependency_build_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/dependency_test.go b/pkg/cmd/dependency_test.go similarity index 99% rename from cmd/helm/dependency_test.go rename to pkg/cmd/dependency_test.go index 34c6a25e1..d6bcebf1b 100644 --- a/cmd/helm/dependency_test.go +++ b/pkg/cmd/dependency_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "runtime" diff --git a/cmd/helm/dependency_update.go b/pkg/cmd/dependency_update.go similarity index 98% rename from cmd/helm/dependency_update.go rename to pkg/cmd/dependency_update.go index 563d7eba5..921e5ef49 100644 --- a/cmd/helm/dependency_update.go +++ b/pkg/cmd/dependency_update.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -22,8 +22,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" ) diff --git a/cmd/helm/dependency_update_test.go b/pkg/cmd/dependency_update_test.go similarity index 99% rename from cmd/helm/dependency_update_test.go rename to pkg/cmd/dependency_update_test.go index 0732ba7b5..3246f9c54 100644 --- a/cmd/helm/dependency_update_test.go +++ b/pkg/cmd/dependency_update_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/docs.go b/pkg/cmd/docs.go similarity index 98% rename from cmd/helm/docs.go rename to pkg/cmd/docs.go index 571840b5f..b3fd773f9 100644 --- a/cmd/helm/docs.go +++ b/pkg/cmd/docs.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -28,7 +28,7 @@ import ( "golang.org/x/text/cases" "golang.org/x/text/language" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" ) const docsDesc = ` diff --git a/cmd/helm/docs_test.go b/pkg/cmd/docs_test.go similarity index 98% rename from cmd/helm/docs_test.go rename to pkg/cmd/docs_test.go index fe5864d5e..4a8a8c687 100644 --- a/cmd/helm/docs_test.go +++ b/pkg/cmd/docs_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/env.go b/pkg/cmd/env.go similarity index 97% rename from cmd/helm/env.go rename to pkg/cmd/env.go index c7305434b..8da201031 100644 --- a/cmd/helm/env.go +++ b/pkg/cmd/env.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,7 +23,7 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" ) var envHelp = ` diff --git a/cmd/helm/env_test.go b/pkg/cmd/env_test.go similarity index 98% rename from cmd/helm/env_test.go rename to pkg/cmd/env_test.go index 01ef25933..c5d7af1b7 100644 --- a/cmd/helm/env_test.go +++ b/pkg/cmd/env_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/flags.go b/pkg/cmd/flags.go similarity index 99% rename from cmd/helm/flags.go rename to pkg/cmd/flags.go index 8d0f644d6..7c69385b4 100644 --- a/cmd/helm/flags.go +++ b/pkg/cmd/flags.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "flag" diff --git a/cmd/helm/flags_test.go b/pkg/cmd/flags_test.go similarity index 99% rename from cmd/helm/flags_test.go rename to pkg/cmd/flags_test.go index 295f55022..da026ea8c 100644 --- a/cmd/helm/flags_test.go +++ b/pkg/cmd/flags_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/get.go b/pkg/cmd/get.go similarity index 96% rename from cmd/helm/get.go rename to pkg/cmd/get.go index 27d536f8b..1e672beea 100644 --- a/cmd/helm/get.go +++ b/pkg/cmd/get.go @@ -14,15 +14,15 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) var getHelp = ` diff --git a/cmd/helm/get_all.go b/pkg/cmd/get_all.go similarity index 97% rename from cmd/helm/get_all.go rename to pkg/cmd/get_all.go index 522327b67..aee92df51 100644 --- a/cmd/helm/get_all.go +++ b/pkg/cmd/get_all.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" @@ -22,9 +22,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/require" ) var getAllHelp = ` diff --git a/cmd/helm/get_all_test.go b/pkg/cmd/get_all_test.go similarity index 99% rename from cmd/helm/get_all_test.go rename to pkg/cmd/get_all_test.go index 60ea1161d..163400d22 100644 --- a/cmd/helm/get_all_test.go +++ b/pkg/cmd/get_all_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/get_hooks.go b/pkg/cmd/get_hooks.go similarity index 97% rename from cmd/helm/get_hooks.go rename to pkg/cmd/get_hooks.go index 25c6eb4e3..7ffefd93c 100644 --- a/cmd/helm/get_hooks.go +++ b/pkg/cmd/get_hooks.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const getHooksHelp = ` diff --git a/cmd/helm/get_hooks_test.go b/pkg/cmd/get_hooks_test.go similarity index 99% rename from cmd/helm/get_hooks_test.go rename to pkg/cmd/get_hooks_test.go index 75cf448cc..62eaefd1b 100644 --- a/cmd/helm/get_hooks_test.go +++ b/pkg/cmd/get_hooks_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/get_manifest.go b/pkg/cmd/get_manifest.go similarity index 97% rename from cmd/helm/get_manifest.go rename to pkg/cmd/get_manifest.go index d2a4bbe96..021495d8d 100644 --- a/cmd/helm/get_manifest.go +++ b/pkg/cmd/get_manifest.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) var getManifestHelp = ` diff --git a/cmd/helm/get_manifest_test.go b/pkg/cmd/get_manifest_test.go similarity index 99% rename from cmd/helm/get_manifest_test.go rename to pkg/cmd/get_manifest_test.go index b266620e7..004cd9ad2 100644 --- a/cmd/helm/get_manifest_test.go +++ b/pkg/cmd/get_manifest_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/get_metadata.go b/pkg/cmd/get_metadata.go similarity index 98% rename from cmd/helm/get_metadata.go rename to pkg/cmd/get_metadata.go index 4ab0c8cab..9f58e0f4e 100644 --- a/cmd/helm/get_metadata.go +++ b/pkg/cmd/get_metadata.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -24,9 +24,9 @@ import ( "github.com/spf13/cobra" k8sLabels "k8s.io/apimachinery/pkg/labels" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/require" ) type metadataWriter struct { diff --git a/cmd/helm/get_metadata_test.go b/pkg/cmd/get_metadata_test.go similarity index 99% rename from cmd/helm/get_metadata_test.go rename to pkg/cmd/get_metadata_test.go index 28c3c3649..213fe705d 100644 --- a/cmd/helm/get_metadata_test.go +++ b/pkg/cmd/get_metadata_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/get_notes.go b/pkg/cmd/get_notes.go similarity index 97% rename from cmd/helm/get_notes.go rename to pkg/cmd/get_notes.go index 8a8e67079..ae79d8bcc 100644 --- a/cmd/helm/get_notes.go +++ b/pkg/cmd/get_notes.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) var getNotesHelp = ` diff --git a/cmd/helm/get_notes_test.go b/pkg/cmd/get_notes_test.go similarity index 99% rename from cmd/helm/get_notes_test.go rename to pkg/cmd/get_notes_test.go index 4ddd4c7a8..0071cdcc2 100644 --- a/cmd/helm/get_notes_test.go +++ b/pkg/cmd/get_notes_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/get_test.go b/pkg/cmd/get_test.go similarity index 98% rename from cmd/helm/get_test.go rename to pkg/cmd/get_test.go index 79f914bea..cf81e4df7 100644 --- a/cmd/helm/get_test.go +++ b/pkg/cmd/get_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/get_values.go b/pkg/cmd/get_values.go similarity index 98% rename from cmd/helm/get_values.go rename to pkg/cmd/get_values.go index 8244fbaaa..02b195551 100644 --- a/cmd/helm/get_values.go +++ b/pkg/cmd/get_values.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,9 +23,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/require" ) var getValuesHelp = ` diff --git a/cmd/helm/get_values_test.go b/pkg/cmd/get_values_test.go similarity index 99% rename from cmd/helm/get_values_test.go rename to pkg/cmd/get_values_test.go index 44610c103..7f82531e3 100644 --- a/cmd/helm/get_values_test.go +++ b/pkg/cmd/get_values_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/pkg/cmd/helpers_test.go b/pkg/cmd/helpers_test.go new file mode 100644 index 000000000..8002cb0d1 --- /dev/null +++ b/pkg/cmd/helpers_test.go @@ -0,0 +1,164 @@ +/* +Copyright The Helm Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cmd + +import ( + "bytes" + "io" + "os" + "strings" + "testing" + + shellwords "github.com/mattn/go-shellwords" + "github.com/spf13/cobra" + + "helm.sh/helm/v4/internal/test" + "helm.sh/helm/v4/pkg/action" + chartutil "helm.sh/helm/v4/pkg/chart/util" + "helm.sh/helm/v4/pkg/cli" + kubefake "helm.sh/helm/v4/pkg/kube/fake" + "helm.sh/helm/v4/pkg/release" + "helm.sh/helm/v4/pkg/storage" + "helm.sh/helm/v4/pkg/storage/driver" + "helm.sh/helm/v4/pkg/time" +) + +func testTimestamper() time.Time { return time.Unix(242085845, 0).UTC() } + +func init() { + action.Timestamper = testTimestamper +} + +func runTestCmd(t *testing.T, tests []cmdTestCase) { + t.Helper() + for _, tt := range tests { + for i := 0; i <= tt.repeat; i++ { + t.Run(tt.name, func(t *testing.T) { + defer resetEnv()() + + storage := storageFixture() + for _, rel := range tt.rels { + if err := storage.Create(rel); err != nil { + t.Fatal(err) + } + } + t.Logf("running cmd (attempt %d): %s", i+1, tt.cmd) + _, out, err := executeActionCommandC(storage, tt.cmd) + if tt.wantError && err == nil { + t.Errorf("expected error, got success with the following output:\n%s", out) + } + if !tt.wantError && err != nil { + t.Errorf("expected no error, got: '%v'", err) + } + if tt.golden != "" { + test.AssertGoldenString(t, out, tt.golden) + } + }) + } + } +} + +func storageFixture() *storage.Storage { + return storage.Init(driver.NewMemory()) +} + +func executeActionCommandC(store *storage.Storage, cmd string) (*cobra.Command, string, error) { + return executeActionCommandStdinC(store, nil, cmd) +} + +func executeActionCommandStdinC(store *storage.Storage, in *os.File, cmd string) (*cobra.Command, string, error) { + args, err := shellwords.Parse(cmd) + if err != nil { + return nil, "", err + } + + buf := new(bytes.Buffer) + + actionConfig := &action.Configuration{ + Releases: store, + KubeClient: &kubefake.PrintingKubeClient{Out: io.Discard}, + Capabilities: chartutil.DefaultCapabilities, + Log: func(_ string, _ ...interface{}) {}, + } + + root, err := NewRootCmd(actionConfig, buf, args) + if err != nil { + return nil, "", err + } + + root.SetOut(buf) + root.SetErr(buf) + root.SetArgs(args) + + oldStdin := os.Stdin + if in != nil { + root.SetIn(in) + os.Stdin = in + } + + if mem, ok := store.Driver.(*driver.Memory); ok { + mem.SetNamespace(settings.Namespace()) + } + c, err := root.ExecuteC() + + result := buf.String() + + os.Stdin = oldStdin + + return c, result, err +} + +// cmdTestCase describes a test case that works with releases. +type cmdTestCase struct { + name string + cmd string + golden string + wantError bool + // Rels are the available releases at the start of the test. + rels []*release.Release + // Number of repeats (in case a feature was previously flaky and the test checks + // it's now stably producing identical results). 0 means test is run exactly once. + repeat int +} + +func executeActionCommand(cmd string) (*cobra.Command, string, error) { + return executeActionCommandC(storageFixture(), cmd) +} + +func resetEnv() func() { + origEnv := os.Environ() + return func() { + os.Clearenv() + for _, pair := range origEnv { + kv := strings.SplitN(pair, "=", 2) + os.Setenv(kv[0], kv[1]) + } + settings = cli.New() + } +} + +func testChdir(t *testing.T, dir string) func() { + t.Helper() + old, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + if err := os.Chdir(dir); err != nil { + t.Fatal(err) + } + return func() { os.Chdir(old) } +} diff --git a/cmd/helm/history.go b/pkg/cmd/history.go similarity index 99% rename from cmd/helm/history.go rename to pkg/cmd/history.go index 91d005e7a..87ba97714 100644 --- a/cmd/helm/history.go +++ b/pkg/cmd/history.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -25,10 +25,10 @@ import ( "github.com/gosuri/uitable" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/releaseutil" helmtime "helm.sh/helm/v4/pkg/time" diff --git a/cmd/helm/history_test.go b/pkg/cmd/history_test.go similarity index 99% rename from cmd/helm/history_test.go rename to pkg/cmd/history_test.go index 07f5134c6..52e742334 100644 --- a/cmd/helm/history_test.go +++ b/pkg/cmd/history_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/install.go b/pkg/cmd/install.go similarity index 98% rename from cmd/helm/install.go rename to pkg/cmd/install.go index fe09dfc53..ee94b3489 100644 --- a/cmd/helm/install.go +++ b/pkg/cmd/install.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "context" @@ -30,12 +30,12 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/chart/loader" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/release" @@ -229,9 +229,9 @@ func addInstallFlags(cmd *cobra.Command, f *pflag.FlagSet, client *action.Instal } func runInstall(args []string, client *action.Install, valueOpts *values.Options, out io.Writer) (*release.Release, error) { - debug("Original chart version: %q", client.Version) + Debug("Original chart version: %q", client.Version) if client.Version == "" && client.Devel { - debug("setting version to >0.0.0-0") + Debug("setting version to >0.0.0-0") client.Version = ">0.0.0-0" } @@ -246,7 +246,7 @@ func runInstall(args []string, client *action.Install, valueOpts *values.Options return nil, err } - debug("CHART PATH: %s\n", cp) + Debug("CHART PATH: %s\n", cp) p := getter.All(settings) vals, err := valueOpts.MergeValues(p) @@ -265,7 +265,7 @@ func runInstall(args []string, client *action.Install, valueOpts *values.Options } if chartRequested.Metadata.Deprecated { - warning("This chart is deprecated") + Warning("This chart is deprecated") } if req := chartRequested.Metadata.Dependencies; req != nil { diff --git a/cmd/helm/install_test.go b/pkg/cmd/install_test.go similarity index 99% rename from cmd/helm/install_test.go rename to pkg/cmd/install_test.go index be8480423..9cd244e84 100644 --- a/cmd/helm/install_test.go +++ b/pkg/cmd/install_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/lint.go b/pkg/cmd/lint.go similarity index 99% rename from cmd/helm/lint.go rename to pkg/cmd/lint.go index 3e37922b2..ba154d1e6 100644 --- a/cmd/helm/lint.go +++ b/pkg/cmd/lint.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/lint_test.go b/pkg/cmd/lint_test.go similarity index 99% rename from cmd/helm/lint_test.go rename to pkg/cmd/lint_test.go index 166b69ba0..401c84d74 100644 --- a/cmd/helm/lint_test.go +++ b/pkg/cmd/lint_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/list.go b/pkg/cmd/list.go similarity index 98% rename from cmd/helm/list.go rename to pkg/cmd/list.go index 67da22cdf..2e1a7737b 100644 --- a/cmd/helm/list.go +++ b/pkg/cmd/list.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -25,9 +25,9 @@ import ( "github.com/gosuri/uitable" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/release" ) @@ -71,7 +71,7 @@ func newListCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { ValidArgsFunction: noMoreArgsCompFunc, RunE: func(cmd *cobra.Command, _ []string) error { if client.AllNamespaces { - if err := cfg.Init(settings.RESTClientGetter(), "", os.Getenv("HELM_DRIVER"), debug); err != nil { + if err := cfg.Init(settings.RESTClientGetter(), "", os.Getenv("HELM_DRIVER"), Debug); err != nil { return err } } diff --git a/cmd/helm/list_test.go b/pkg/cmd/list_test.go similarity index 99% rename from cmd/helm/list_test.go rename to pkg/cmd/list_test.go index 01b6d7490..866c6a151 100644 --- a/cmd/helm/list_test.go +++ b/pkg/cmd/list_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/load_plugins.go b/pkg/cmd/load_plugins.go similarity index 99% rename from cmd/helm/load_plugins.go rename to pkg/cmd/load_plugins.go index 23b1b7ff4..3cf701242 100644 --- a/cmd/helm/load_plugins.go +++ b/pkg/cmd/load_plugins.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bytes" @@ -39,9 +39,9 @@ const ( pluginDynamicCompletionExecutable = "plugin.complete" ) -type pluginError struct { +type PluginError struct { error - code int + Code int } // loadPlugins loads plugins into the command list. @@ -138,9 +138,9 @@ func callPluginExecutable(pluginName string, main string, argv []string, out io. if eerr, ok := err.(*exec.ExitError); ok { os.Stderr.Write(eerr.Stderr) status := eerr.Sys().(syscall.WaitStatus) - return pluginError{ + return PluginError{ error: errors.Errorf("plugin %q exited with error", pluginName), - code: status.ExitStatus(), + Code: status.ExitStatus(), } } return err diff --git a/cmd/helm/package.go b/pkg/cmd/package.go similarity index 99% rename from cmd/helm/package.go rename to pkg/cmd/package.go index 185442b20..7bc22dfb4 100644 --- a/cmd/helm/package.go +++ b/pkg/cmd/package.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/package_test.go b/pkg/cmd/package_test.go similarity index 99% rename from cmd/helm/package_test.go rename to pkg/cmd/package_test.go index 107928765..4a7a143bf 100644 --- a/cmd/helm/package_test.go +++ b/pkg/cmd/package_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/plugin.go b/pkg/cmd/plugin.go similarity index 97% rename from cmd/helm/plugin.go rename to pkg/cmd/plugin.go index 82fd34b72..3340e76e6 100644 --- a/cmd/helm/plugin.go +++ b/pkg/cmd/plugin.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" @@ -66,7 +66,7 @@ func runHook(p *plugin.Plugin, event string) error { prog := exec.Command(main, argv...) - debug("running %s hook: %s", event, prog) + Debug("running %s hook: %s", event, prog) prog.Stdout, prog.Stderr = os.Stdout, os.Stderr if err := prog.Run(); err != nil { diff --git a/cmd/helm/plugin_install.go b/pkg/cmd/plugin_install.go similarity index 96% rename from cmd/helm/plugin_install.go rename to pkg/cmd/plugin_install.go index d8dff6316..e17744cbb 100644 --- a/cmd/helm/plugin_install.go +++ b/pkg/cmd/plugin_install.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -22,7 +22,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/plugin" "helm.sh/helm/v4/pkg/plugin/installer" ) @@ -79,7 +79,7 @@ func (o *pluginInstallOptions) run(out io.Writer) error { return err } - debug("loading plugin from %s", i.Path()) + Debug("loading plugin from %s", i.Path()) p, err := plugin.LoadDir(i.Path()) if err != nil { return errors.Wrap(err, "plugin is installed but unusable") diff --git a/cmd/helm/plugin_list.go b/pkg/cmd/plugin_list.go similarity index 97% rename from cmd/helm/plugin_list.go rename to pkg/cmd/plugin_list.go index 27ce3c973..9cca790ae 100644 --- a/cmd/helm/plugin_list.go +++ b/pkg/cmd/plugin_list.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -32,7 +32,7 @@ func newPluginListCmd(out io.Writer) *cobra.Command { Short: "list installed Helm plugins", ValidArgsFunction: noMoreArgsCompFunc, RunE: func(_ *cobra.Command, _ []string) error { - debug("pluginDirs: %s", settings.PluginsDirectory) + Debug("pluginDirs: %s", settings.PluginsDirectory) plugins, err := plugin.FindPlugins(settings.PluginsDirectory) if err != nil { return err diff --git a/cmd/helm/plugin_test.go b/pkg/cmd/plugin_test.go similarity index 98% rename from cmd/helm/plugin_test.go rename to pkg/cmd/plugin_test.go index 4d2aa1a59..c5d3728b9 100644 --- a/cmd/helm/plugin_test.go +++ b/pkg/cmd/plugin_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bytes" @@ -143,12 +143,12 @@ func TestLoadPlugins(t *testing.T) { if runtime.GOOS != "windows" { if err := pp.RunE(pp, tt.args); err != nil { if tt.code > 0 { - perr, ok := err.(pluginError) + perr, ok := err.(PluginError) if !ok { t.Errorf("Expected %s to return pluginError: got %v(%T)", tt.use, err, err) } - if perr.code != tt.code { - t.Errorf("Expected %s to return %d: got %d", tt.use, tt.code, perr.code) + if perr.Code != tt.code { + t.Errorf("Expected %s to return %d: got %d", tt.use, tt.code, perr.Code) } } else { t.Errorf("Error running %s: %+v", tt.use, err) @@ -218,12 +218,12 @@ func TestLoadPluginsWithSpace(t *testing.T) { if runtime.GOOS != "windows" { if err := pp.RunE(pp, tt.args); err != nil { if tt.code > 0 { - perr, ok := err.(pluginError) + perr, ok := err.(PluginError) if !ok { t.Errorf("Expected %s to return pluginError: got %v(%T)", tt.use, err, err) } - if perr.code != tt.code { - t.Errorf("Expected %s to return %d: got %d", tt.use, tt.code, perr.code) + if perr.Code != tt.code { + t.Errorf("Expected %s to return %d: got %d", tt.use, tt.code, perr.Code) } } else { t.Errorf("Error running %s: %+v", tt.use, err) diff --git a/cmd/helm/plugin_uninstall.go b/pkg/cmd/plugin_uninstall.go similarity index 97% rename from cmd/helm/plugin_uninstall.go rename to pkg/cmd/plugin_uninstall.go index 6ef4e4f59..c1f90ca49 100644 --- a/cmd/helm/plugin_uninstall.go +++ b/pkg/cmd/plugin_uninstall.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -60,7 +60,7 @@ func (o *pluginUninstallOptions) complete(args []string) error { } func (o *pluginUninstallOptions) run(out io.Writer) error { - debug("loading installed plugins from %s", settings.PluginsDirectory) + Debug("loading installed plugins from %s", settings.PluginsDirectory) plugins, err := plugin.FindPlugins(settings.PluginsDirectory) if err != nil { return err diff --git a/cmd/helm/plugin_update.go b/pkg/cmd/plugin_update.go similarity index 95% rename from cmd/helm/plugin_update.go rename to pkg/cmd/plugin_update.go index 5d0465274..cbbd8994c 100644 --- a/cmd/helm/plugin_update.go +++ b/pkg/cmd/plugin_update.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -62,7 +62,7 @@ func (o *pluginUpdateOptions) complete(args []string) error { func (o *pluginUpdateOptions) run(out io.Writer) error { installer.Debug = settings.Debug - debug("loading installed plugins from %s", settings.PluginsDirectory) + Debug("loading installed plugins from %s", settings.PluginsDirectory) plugins, err := plugin.FindPlugins(settings.PluginsDirectory) if err != nil { return err @@ -104,7 +104,7 @@ func updatePlugin(p *plugin.Plugin) error { return err } - debug("loading plugin from %s", i.Path()) + Debug("loading plugin from %s", i.Path()) updatedPlugin, err := plugin.LoadDir(i.Path()) if err != nil { return err diff --git a/cmd/helm/printer.go b/pkg/cmd/printer.go similarity index 98% rename from cmd/helm/printer.go rename to pkg/cmd/printer.go index 7cf7bf994..30238f5bb 100644 --- a/cmd/helm/printer.go +++ b/pkg/cmd/printer.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" diff --git a/cmd/helm/profiling.go b/pkg/cmd/profiling.go similarity index 99% rename from cmd/helm/profiling.go rename to pkg/cmd/profiling.go index 950ad15da..45e7b9342 100644 --- a/cmd/helm/profiling.go +++ b/pkg/cmd/profiling.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "errors" diff --git a/cmd/helm/pull.go b/pkg/cmd/pull.go similarity index 97% rename from cmd/helm/pull.go rename to pkg/cmd/pull.go index 231db30bc..5d188ee4f 100644 --- a/cmd/helm/pull.go +++ b/pkg/cmd/pull.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const pullDesc = ` @@ -60,7 +60,7 @@ func newPullCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { RunE: func(_ *cobra.Command, args []string) error { client.Settings = settings if client.Version == "" && client.Devel { - debug("setting version to >0.0.0-0") + Debug("setting version to >0.0.0-0") client.Version = ">0.0.0-0" } diff --git a/cmd/helm/pull_test.go b/pkg/cmd/pull_test.go similarity index 99% rename from cmd/helm/pull_test.go rename to pkg/cmd/pull_test.go index 1110a6bdf..c30c94b49 100644 --- a/cmd/helm/pull_test.go +++ b/pkg/cmd/pull_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/push.go b/pkg/cmd/push.go similarity index 98% rename from cmd/helm/push.go rename to pkg/cmd/push.go index f5b275b9d..94d322b9d 100644 --- a/cmd/helm/push.go +++ b/pkg/cmd/push.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -22,8 +22,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/pusher" ) diff --git a/cmd/helm/push_test.go b/pkg/cmd/push_test.go similarity index 98% rename from cmd/helm/push_test.go rename to pkg/cmd/push_test.go index 8e56d99dc..80d08b48f 100644 --- a/cmd/helm/push_test.go +++ b/pkg/cmd/push_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/registry.go b/pkg/cmd/registry.go similarity index 98% rename from cmd/helm/registry.go rename to pkg/cmd/registry.go index f771dcb9c..fcd06f13b 100644 --- a/cmd/helm/registry.go +++ b/pkg/cmd/registry.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" diff --git a/cmd/helm/registry_login.go b/pkg/cmd/registry_login.go similarity index 97% rename from cmd/helm/registry_login.go rename to pkg/cmd/registry_login.go index 74ad4cebe..1dfb3c798 100644 --- a/cmd/helm/registry_login.go +++ b/pkg/cmd/registry_login.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bufio" @@ -27,8 +27,8 @@ import ( "github.com/moby/term" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const registryLoginDesc = ` @@ -122,7 +122,7 @@ func getUsernamePassword(usernameOpt string, passwordOpt string, passwordFromStd } } } else { - warning("Using --password via the CLI is insecure. Use --password-stdin.") + Warning("Using --password via the CLI is insecure. Use --password-stdin.") } return username, password, nil diff --git a/cmd/helm/registry_login_test.go b/pkg/cmd/registry_login_test.go similarity index 98% rename from cmd/helm/registry_login_test.go rename to pkg/cmd/registry_login_test.go index 517fe08e1..6e4f2116e 100644 --- a/cmd/helm/registry_login_test.go +++ b/pkg/cmd/registry_login_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/registry_logout.go b/pkg/cmd/registry_logout.go similarity index 96% rename from cmd/helm/registry_logout.go rename to pkg/cmd/registry_logout.go index 13190c8cf..300453705 100644 --- a/cmd/helm/registry_logout.go +++ b/pkg/cmd/registry_logout.go @@ -14,15 +14,15 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const registryLogoutDesc = ` diff --git a/cmd/helm/registry_logout_test.go b/pkg/cmd/registry_logout_test.go similarity index 98% rename from cmd/helm/registry_logout_test.go rename to pkg/cmd/registry_logout_test.go index 31f716725..31a21b277 100644 --- a/cmd/helm/registry_logout_test.go +++ b/pkg/cmd/registry_logout_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/release_testing.go b/pkg/cmd/release_testing.go similarity index 98% rename from cmd/helm/release_testing.go rename to pkg/cmd/release_testing.go index a8c57f5d9..4904aa9f1 100644 --- a/cmd/helm/release_testing.go +++ b/pkg/cmd/release_testing.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -25,9 +25,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/require" ) const releaseTestHelp = ` diff --git a/cmd/helm/release_testing_test.go b/pkg/cmd/release_testing_test.go similarity index 98% rename from cmd/helm/release_testing_test.go rename to pkg/cmd/release_testing_test.go index 680a9bd3e..43599ad0d 100644 --- a/cmd/helm/release_testing_test.go +++ b/pkg/cmd/release_testing_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/repo.go b/pkg/cmd/repo.go similarity index 96% rename from cmd/helm/repo.go rename to pkg/cmd/repo.go index 291f0bb10..925669e13 100644 --- a/cmd/helm/repo.go +++ b/pkg/cmd/repo.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" ) var repoHelm = ` diff --git a/cmd/helm/repo_add.go b/pkg/cmd/repo_add.go similarity index 99% rename from cmd/helm/repo_add.go rename to pkg/cmd/repo_add.go index cd3dc8a62..f6c0c11c0 100644 --- a/cmd/helm/repo_add.go +++ b/pkg/cmd/repo_add.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "context" @@ -31,7 +31,7 @@ import ( "golang.org/x/term" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/repo" ) diff --git a/cmd/helm/repo_add_test.go b/pkg/cmd/repo_add_test.go similarity index 99% rename from cmd/helm/repo_add_test.go rename to pkg/cmd/repo_add_test.go index 35911d5ae..0f3a3de4f 100644 --- a/cmd/helm/repo_add_test.go +++ b/pkg/cmd/repo_add_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/repo_index.go b/pkg/cmd/repo_index.go similarity index 98% rename from cmd/helm/repo_index.go rename to pkg/cmd/repo_index.go index c84a3f1ab..13a0a9439 100644 --- a/cmd/helm/repo_index.go +++ b/pkg/cmd/repo_index.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" @@ -24,7 +24,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/repo" ) diff --git a/cmd/helm/repo_index_test.go b/pkg/cmd/repo_index_test.go similarity index 99% rename from cmd/helm/repo_index_test.go rename to pkg/cmd/repo_index_test.go index e63a7bf63..c865c8a5d 100644 --- a/cmd/helm/repo_index_test.go +++ b/pkg/cmd/repo_index_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bytes" diff --git a/cmd/helm/repo_list.go b/pkg/cmd/repo_list.go similarity index 98% rename from cmd/helm/repo_list.go rename to pkg/cmd/repo_list.go index e0ad10147..5b6113a13 100644 --- a/cmd/helm/repo_list.go +++ b/pkg/cmd/repo_list.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -24,8 +24,8 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/repo" ) diff --git a/cmd/helm/repo_list_test.go b/pkg/cmd/repo_list_test.go similarity index 98% rename from cmd/helm/repo_list_test.go rename to pkg/cmd/repo_list_test.go index 90149ebda..1da5484cc 100644 --- a/cmd/helm/repo_list_test.go +++ b/pkg/cmd/repo_list_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/repo_remove.go b/pkg/cmd/repo_remove.go similarity index 98% rename from cmd/helm/repo_remove.go rename to pkg/cmd/repo_remove.go index 6b72b0710..97630810a 100644 --- a/cmd/helm/repo_remove.go +++ b/pkg/cmd/repo_remove.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/helmpath" "helm.sh/helm/v4/pkg/repo" ) diff --git a/cmd/helm/repo_remove_test.go b/pkg/cmd/repo_remove_test.go similarity index 99% rename from cmd/helm/repo_remove_test.go rename to pkg/cmd/repo_remove_test.go index 7e6609671..b8bc7179a 100644 --- a/cmd/helm/repo_remove_test.go +++ b/pkg/cmd/repo_remove_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bytes" diff --git a/cmd/helm/repo_test.go b/pkg/cmd/repo_test.go similarity index 98% rename from cmd/helm/repo_test.go rename to pkg/cmd/repo_test.go index 2b0df7c4c..6b89a66c3 100644 --- a/cmd/helm/repo_test.go +++ b/pkg/cmd/repo_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/repo_update.go b/pkg/cmd/repo_update.go similarity index 98% rename from cmd/helm/repo_update.go rename to pkg/cmd/repo_update.go index 1379385c1..25071377b 100644 --- a/cmd/helm/repo_update.go +++ b/pkg/cmd/repo_update.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/repo" ) diff --git a/cmd/helm/repo_update_test.go b/pkg/cmd/repo_update_test.go similarity index 99% rename from cmd/helm/repo_update_test.go rename to pkg/cmd/repo_update_test.go index 7e379da91..5b27a6dfb 100644 --- a/cmd/helm/repo_update_test.go +++ b/pkg/cmd/repo_update_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bytes" diff --git a/cmd/helm/require/args.go b/pkg/cmd/require/args.go similarity index 100% rename from cmd/helm/require/args.go rename to pkg/cmd/require/args.go diff --git a/cmd/helm/require/args_test.go b/pkg/cmd/require/args_test.go similarity index 100% rename from cmd/helm/require/args_test.go rename to pkg/cmd/require/args_test.go diff --git a/cmd/helm/rollback.go b/pkg/cmd/rollback.go similarity index 98% rename from cmd/helm/rollback.go rename to pkg/cmd/rollback.go index a65f30a1f..155c9fb01 100644 --- a/cmd/helm/rollback.go +++ b/pkg/cmd/rollback.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -24,8 +24,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const rollbackDesc = ` diff --git a/cmd/helm/rollback_test.go b/pkg/cmd/rollback_test.go similarity index 99% rename from cmd/helm/rollback_test.go rename to pkg/cmd/rollback_test.go index a94327e07..400726d6c 100644 --- a/cmd/helm/rollback_test.go +++ b/pkg/cmd/rollback_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/root.go b/pkg/cmd/root.go similarity index 97% rename from cmd/helm/root.go rename to pkg/cmd/root.go index dd3ddeab7..ff4dcecbc 100644 --- a/cmd/helm/root.go +++ b/pkg/cmd/root.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main // import "helm.sh/helm/v4/cmd/helm" +package cmd // import "helm.sh/helm/v4/pkg/cmd" import ( "context" @@ -32,6 +32,7 @@ import ( "helm.sh/helm/v4/internal/tlsutil" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cli" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/repo" ) @@ -89,7 +90,19 @@ By default, the default directories depend on the Operating System. The defaults | Windows | %TEMP%\helm | %APPDATA%\helm | %APPDATA%\helm | ` -func newRootCmd(actionConfig *action.Configuration, out io.Writer, args []string) (*cobra.Command, error) { +var settings = cli.New() + +func Debug(format string, v ...interface{}) { + if settings.Debug { + log.Output(2, fmt.Sprintf("[debug] "+format+"\n", v...)) + } +} + +func Warning(format string, v ...interface{}) { + fmt.Fprintf(os.Stderr, "WARNING: "+format+"\n", v...) +} + +func NewRootCmd(actionConfig *action.Configuration, out io.Writer, args []string) (*cobra.Command, error) { cmd := &cobra.Command{ Use: "helm", Short: "The Helm package manager for Kubernetes.", diff --git a/cmd/helm/root_test.go b/pkg/cmd/root_test.go similarity index 99% rename from cmd/helm/root_test.go rename to pkg/cmd/root_test.go index e30850900..9521a5aa2 100644 --- a/cmd/helm/root_test.go +++ b/pkg/cmd/root_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "os" diff --git a/cmd/helm/search.go b/pkg/cmd/search.go similarity index 98% rename from cmd/helm/search.go rename to pkg/cmd/search.go index 6c62d5d2e..4d110286d 100644 --- a/cmd/helm/search.go +++ b/pkg/cmd/search.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "io" diff --git a/cmd/helm/search/search.go b/pkg/cmd/search/search.go similarity index 100% rename from cmd/helm/search/search.go rename to pkg/cmd/search/search.go diff --git a/cmd/helm/search/search_test.go b/pkg/cmd/search/search_test.go similarity index 100% rename from cmd/helm/search/search_test.go rename to pkg/cmd/search/search_test.go diff --git a/cmd/helm/search_hub.go b/pkg/cmd/search_hub.go similarity index 99% rename from cmd/helm/search_hub.go rename to pkg/cmd/search_hub.go index 5bdb1092d..b7f25444e 100644 --- a/cmd/helm/search_hub.go +++ b/pkg/cmd/search_hub.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -89,7 +89,7 @@ func (o *searchHubOptions) run(out io.Writer, args []string) error { q := strings.Join(args, " ") results, err := c.Search(q) if err != nil { - debug("%s", err) + Debug("%s", err) return fmt.Errorf("unable to perform search against %q", o.searchEndpoint) } diff --git a/cmd/helm/search_hub_test.go b/pkg/cmd/search_hub_test.go similarity index 99% rename from cmd/helm/search_hub_test.go rename to pkg/cmd/search_hub_test.go index f3730275a..8e056f771 100644 --- a/cmd/helm/search_hub_test.go +++ b/pkg/cmd/search_hub_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/search_repo.go b/pkg/cmd/search_repo.go similarity index 97% rename from cmd/helm/search_repo.go rename to pkg/cmd/search_repo.go index 36e8a8c58..bc73e52b2 100644 --- a/cmd/helm/search_repo.go +++ b/pkg/cmd/search_repo.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bufio" @@ -30,8 +30,8 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/search" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/search" "helm.sh/helm/v4/pkg/helmpath" "helm.sh/helm/v4/pkg/repo" ) @@ -130,17 +130,17 @@ func (o *searchRepoOptions) run(out io.Writer, args []string) error { } func (o *searchRepoOptions) setupSearchedVersion() { - debug("Original chart version: %q", o.version) + Debug("Original chart version: %q", o.version) if o.version != "" { return } if o.devel { // search for releases and prereleases (alpha, beta, and release candidate releases). - debug("setting version to >0.0.0-0") + Debug("setting version to >0.0.0-0") o.version = ">0.0.0-0" } else { // search only for stable releases, prerelease versions will be skipped - debug("setting version to >0.0.0") + Debug("setting version to >0.0.0") o.version = ">0.0.0" } } @@ -189,8 +189,8 @@ func (o *searchRepoOptions) buildIndex() (*search.Index, error) { f := filepath.Join(o.repoCacheDir, helmpath.CacheIndexFile(n)) ind, err := repo.LoadIndexFile(f) if err != nil { - warning("Repo %q is corrupt or missing. Try 'helm repo update'.", n) - warning("%s", err) + Warning("Repo %q is corrupt or missing. Try 'helm repo update'.", n) + Warning("%s", err) continue } diff --git a/cmd/helm/search_repo_test.go b/pkg/cmd/search_repo_test.go similarity index 99% rename from cmd/helm/search_repo_test.go rename to pkg/cmd/search_repo_test.go index 9039842f0..e7f104e05 100644 --- a/cmd/helm/search_repo_test.go +++ b/pkg/cmd/search_repo_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/search_test.go b/pkg/cmd/search_test.go similarity index 98% rename from cmd/helm/search_test.go rename to pkg/cmd/search_test.go index 6cf845b06..a0e5d84cb 100644 --- a/cmd/helm/search_test.go +++ b/pkg/cmd/search_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import "testing" diff --git a/cmd/helm/show.go b/pkg/cmd/show.go similarity index 97% rename from cmd/helm/show.go rename to pkg/cmd/show.go index 492de94f6..a02af6f18 100644 --- a/cmd/helm/show.go +++ b/pkg/cmd/show.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const showDesc = ` @@ -211,9 +211,9 @@ func addShowFlags(subCmd *cobra.Command, client *action.Show) { } func runShow(args []string, client *action.Show) (string, error) { - debug("Original chart version: %q", client.Version) + Debug("Original chart version: %q", client.Version) if client.Version == "" && client.Devel { - debug("setting version to >0.0.0-0") + Debug("setting version to >0.0.0-0") client.Version = ">0.0.0-0" } diff --git a/cmd/helm/show_test.go b/pkg/cmd/show_test.go similarity index 99% rename from cmd/helm/show_test.go rename to pkg/cmd/show_test.go index 0598095b5..ab8cafc37 100644 --- a/cmd/helm/show_test.go +++ b/pkg/cmd/show_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/status.go b/pkg/cmd/status.go similarity index 99% rename from cmd/helm/status.go rename to pkg/cmd/status.go index fd3e4ce14..7a97bde3f 100644 --- a/cmd/helm/status.go +++ b/pkg/cmd/status.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bytes" @@ -28,10 +28,10 @@ import ( "k8s.io/kubectl/pkg/cmd/get" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli/output" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/release" ) diff --git a/cmd/helm/status_test.go b/pkg/cmd/status_test.go similarity index 99% rename from cmd/helm/status_test.go rename to pkg/cmd/status_test.go index 1973fe068..8603f416b 100644 --- a/cmd/helm/status_test.go +++ b/pkg/cmd/status_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/template.go b/pkg/cmd/template.go similarity index 99% rename from cmd/helm/template.go rename to pkg/cmd/template.go index 1a6265eba..4b4a0bc8d 100644 --- a/cmd/helm/template.go +++ b/pkg/cmd/template.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "bytes" @@ -32,10 +32,10 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/releaseutil" ) diff --git a/cmd/helm/template_test.go b/pkg/cmd/template_test.go similarity index 99% rename from cmd/helm/template_test.go rename to pkg/cmd/template_test.go index 28e24ce63..c478fced4 100644 --- a/cmd/helm/template_test.go +++ b/pkg/cmd/template_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/testdata/helm home with space/helm/plugins/fullenv/completion.yaml b/pkg/cmd/testdata/helm home with space/helm/plugins/fullenv/completion.yaml similarity index 100% rename from cmd/helm/testdata/helm home with space/helm/plugins/fullenv/completion.yaml rename to pkg/cmd/testdata/helm home with space/helm/plugins/fullenv/completion.yaml diff --git a/cmd/helm/testdata/helm home with space/helm/plugins/fullenv/fullenv.sh b/pkg/cmd/testdata/helm home with space/helm/plugins/fullenv/fullenv.sh similarity index 100% rename from cmd/helm/testdata/helm home with space/helm/plugins/fullenv/fullenv.sh rename to pkg/cmd/testdata/helm home with space/helm/plugins/fullenv/fullenv.sh diff --git a/cmd/helm/testdata/helm home with space/helm/plugins/fullenv/plugin.yaml b/pkg/cmd/testdata/helm home with space/helm/plugins/fullenv/plugin.yaml similarity index 100% rename from cmd/helm/testdata/helm home with space/helm/plugins/fullenv/plugin.yaml rename to pkg/cmd/testdata/helm home with space/helm/plugins/fullenv/plugin.yaml diff --git a/cmd/helm/testdata/helm home with space/helm/repositories.yaml b/pkg/cmd/testdata/helm home with space/helm/repositories.yaml similarity index 100% rename from cmd/helm/testdata/helm home with space/helm/repositories.yaml rename to pkg/cmd/testdata/helm home with space/helm/repositories.yaml diff --git a/cmd/helm/testdata/helm home with space/helm/repository/test-name-charts.txt b/pkg/cmd/testdata/helm home with space/helm/repository/test-name-charts.txt similarity index 100% rename from cmd/helm/testdata/helm home with space/helm/repository/test-name-charts.txt rename to pkg/cmd/testdata/helm home with space/helm/repository/test-name-charts.txt diff --git a/cmd/helm/testdata/helm home with space/helm/repository/test-name-index.yaml b/pkg/cmd/testdata/helm home with space/helm/repository/test-name-index.yaml similarity index 100% rename from cmd/helm/testdata/helm home with space/helm/repository/test-name-index.yaml rename to pkg/cmd/testdata/helm home with space/helm/repository/test-name-index.yaml diff --git a/cmd/helm/testdata/helm home with space/helm/repository/testing-index.yaml b/pkg/cmd/testdata/helm home with space/helm/repository/testing-index.yaml similarity index 100% rename from cmd/helm/testdata/helm home with space/helm/repository/testing-index.yaml rename to pkg/cmd/testdata/helm home with space/helm/repository/testing-index.yaml diff --git a/cmd/helm/testdata/helm-test-key.pub b/pkg/cmd/testdata/helm-test-key.pub similarity index 100% rename from cmd/helm/testdata/helm-test-key.pub rename to pkg/cmd/testdata/helm-test-key.pub diff --git a/cmd/helm/testdata/helm-test-key.secret b/pkg/cmd/testdata/helm-test-key.secret similarity index 100% rename from cmd/helm/testdata/helm-test-key.secret rename to pkg/cmd/testdata/helm-test-key.secret diff --git a/cmd/helm/testdata/helmhome/helm/plugins/args/args.sh b/pkg/cmd/testdata/helmhome/helm/plugins/args/args.sh similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/args/args.sh rename to pkg/cmd/testdata/helmhome/helm/plugins/args/args.sh diff --git a/cmd/helm/testdata/helmhome/helm/plugins/args/plugin.complete b/pkg/cmd/testdata/helmhome/helm/plugins/args/plugin.complete similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/args/plugin.complete rename to pkg/cmd/testdata/helmhome/helm/plugins/args/plugin.complete diff --git a/cmd/helm/testdata/helmhome/helm/plugins/args/plugin.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/args/plugin.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/args/plugin.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/args/plugin.yaml diff --git a/cmd/helm/testdata/helmhome/helm/plugins/echo/completion.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/echo/completion.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/echo/completion.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/echo/completion.yaml diff --git a/cmd/helm/testdata/helmhome/helm/plugins/echo/plugin.complete b/pkg/cmd/testdata/helmhome/helm/plugins/echo/plugin.complete similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/echo/plugin.complete rename to pkg/cmd/testdata/helmhome/helm/plugins/echo/plugin.complete diff --git a/cmd/helm/testdata/helmhome/helm/plugins/echo/plugin.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/echo/plugin.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/echo/plugin.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/echo/plugin.yaml diff --git a/cmd/helm/testdata/helmhome/helm/plugins/env/completion.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/env/completion.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/env/completion.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/env/completion.yaml diff --git a/cmd/helm/testdata/helmhome/helm/plugins/env/plugin.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/env/plugin.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/env/plugin.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/env/plugin.yaml diff --git a/cmd/helm/testdata/helmhome/helm/plugins/exitwith/completion.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/exitwith/completion.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/exitwith/completion.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/exitwith/completion.yaml diff --git a/cmd/helm/testdata/helmhome/helm/plugins/exitwith/exitwith.sh b/pkg/cmd/testdata/helmhome/helm/plugins/exitwith/exitwith.sh similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/exitwith/exitwith.sh rename to pkg/cmd/testdata/helmhome/helm/plugins/exitwith/exitwith.sh diff --git a/cmd/helm/testdata/helmhome/helm/plugins/exitwith/plugin.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/exitwith/plugin.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/exitwith/plugin.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/exitwith/plugin.yaml diff --git a/cmd/helm/testdata/helmhome/helm/plugins/fullenv/completion.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/fullenv/completion.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/fullenv/completion.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/fullenv/completion.yaml diff --git a/cmd/helm/testdata/helmhome/helm/plugins/fullenv/fullenv.sh b/pkg/cmd/testdata/helmhome/helm/plugins/fullenv/fullenv.sh similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/fullenv/fullenv.sh rename to pkg/cmd/testdata/helmhome/helm/plugins/fullenv/fullenv.sh diff --git a/cmd/helm/testdata/helmhome/helm/plugins/fullenv/plugin.yaml b/pkg/cmd/testdata/helmhome/helm/plugins/fullenv/plugin.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/plugins/fullenv/plugin.yaml rename to pkg/cmd/testdata/helmhome/helm/plugins/fullenv/plugin.yaml diff --git a/cmd/helm/testdata/helmhome/helm/repositories.yaml b/pkg/cmd/testdata/helmhome/helm/repositories.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/repositories.yaml rename to pkg/cmd/testdata/helmhome/helm/repositories.yaml diff --git a/cmd/helm/testdata/helmhome/helm/repository/test-name-charts.txt b/pkg/cmd/testdata/helmhome/helm/repository/test-name-charts.txt similarity index 100% rename from cmd/helm/testdata/helmhome/helm/repository/test-name-charts.txt rename to pkg/cmd/testdata/helmhome/helm/repository/test-name-charts.txt diff --git a/cmd/helm/testdata/helmhome/helm/repository/test-name-index.yaml b/pkg/cmd/testdata/helmhome/helm/repository/test-name-index.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/repository/test-name-index.yaml rename to pkg/cmd/testdata/helmhome/helm/repository/test-name-index.yaml diff --git a/cmd/helm/testdata/helmhome/helm/repository/testing-index.yaml b/pkg/cmd/testdata/helmhome/helm/repository/testing-index.yaml similarity index 100% rename from cmd/helm/testdata/helmhome/helm/repository/testing-index.yaml rename to pkg/cmd/testdata/helmhome/helm/repository/testing-index.yaml diff --git a/cmd/helm/testdata/output/chart-with-subchart-update.txt b/pkg/cmd/testdata/output/chart-with-subchart-update.txt similarity index 100% rename from cmd/helm/testdata/output/chart-with-subchart-update.txt rename to pkg/cmd/testdata/output/chart-with-subchart-update.txt diff --git a/cmd/helm/testdata/output/dependency-list-archive.txt b/pkg/cmd/testdata/output/dependency-list-archive.txt similarity index 100% rename from cmd/helm/testdata/output/dependency-list-archive.txt rename to pkg/cmd/testdata/output/dependency-list-archive.txt diff --git a/cmd/helm/testdata/output/dependency-list-no-chart-linux.txt b/pkg/cmd/testdata/output/dependency-list-no-chart-linux.txt similarity index 100% rename from cmd/helm/testdata/output/dependency-list-no-chart-linux.txt rename to pkg/cmd/testdata/output/dependency-list-no-chart-linux.txt diff --git a/cmd/helm/testdata/output/dependency-list-no-requirements-linux.txt b/pkg/cmd/testdata/output/dependency-list-no-requirements-linux.txt similarity index 100% rename from cmd/helm/testdata/output/dependency-list-no-requirements-linux.txt rename to pkg/cmd/testdata/output/dependency-list-no-requirements-linux.txt diff --git a/cmd/helm/testdata/output/dependency-list.txt b/pkg/cmd/testdata/output/dependency-list.txt similarity index 100% rename from cmd/helm/testdata/output/dependency-list.txt rename to pkg/cmd/testdata/output/dependency-list.txt diff --git a/cmd/helm/testdata/output/deprecated-chart.txt b/pkg/cmd/testdata/output/deprecated-chart.txt similarity index 100% rename from cmd/helm/testdata/output/deprecated-chart.txt rename to pkg/cmd/testdata/output/deprecated-chart.txt diff --git a/cmd/helm/testdata/output/docs-type-comp.txt b/pkg/cmd/testdata/output/docs-type-comp.txt similarity index 100% rename from cmd/helm/testdata/output/docs-type-comp.txt rename to pkg/cmd/testdata/output/docs-type-comp.txt diff --git a/cmd/helm/testdata/output/empty_default_comp.txt b/pkg/cmd/testdata/output/empty_default_comp.txt similarity index 100% rename from cmd/helm/testdata/output/empty_default_comp.txt rename to pkg/cmd/testdata/output/empty_default_comp.txt diff --git a/cmd/helm/testdata/output/empty_nofile_comp.txt b/pkg/cmd/testdata/output/empty_nofile_comp.txt similarity index 100% rename from cmd/helm/testdata/output/empty_nofile_comp.txt rename to pkg/cmd/testdata/output/empty_nofile_comp.txt diff --git a/cmd/helm/testdata/output/env-comp.txt b/pkg/cmd/testdata/output/env-comp.txt similarity index 100% rename from cmd/helm/testdata/output/env-comp.txt rename to pkg/cmd/testdata/output/env-comp.txt diff --git a/cmd/helm/testdata/output/get-all-no-args.txt b/pkg/cmd/testdata/output/get-all-no-args.txt similarity index 100% rename from cmd/helm/testdata/output/get-all-no-args.txt rename to pkg/cmd/testdata/output/get-all-no-args.txt diff --git a/cmd/helm/testdata/output/get-hooks-no-args.txt b/pkg/cmd/testdata/output/get-hooks-no-args.txt similarity index 100% rename from cmd/helm/testdata/output/get-hooks-no-args.txt rename to pkg/cmd/testdata/output/get-hooks-no-args.txt diff --git a/cmd/helm/testdata/output/get-hooks.txt b/pkg/cmd/testdata/output/get-hooks.txt similarity index 100% rename from cmd/helm/testdata/output/get-hooks.txt rename to pkg/cmd/testdata/output/get-hooks.txt diff --git a/cmd/helm/testdata/output/get-manifest-no-args.txt b/pkg/cmd/testdata/output/get-manifest-no-args.txt similarity index 100% rename from cmd/helm/testdata/output/get-manifest-no-args.txt rename to pkg/cmd/testdata/output/get-manifest-no-args.txt diff --git a/cmd/helm/testdata/output/get-manifest.txt b/pkg/cmd/testdata/output/get-manifest.txt similarity index 100% rename from cmd/helm/testdata/output/get-manifest.txt rename to pkg/cmd/testdata/output/get-manifest.txt diff --git a/cmd/helm/testdata/output/get-metadata-args.txt b/pkg/cmd/testdata/output/get-metadata-args.txt similarity index 100% rename from cmd/helm/testdata/output/get-metadata-args.txt rename to pkg/cmd/testdata/output/get-metadata-args.txt diff --git a/cmd/helm/testdata/output/get-metadata.json b/pkg/cmd/testdata/output/get-metadata.json similarity index 100% rename from cmd/helm/testdata/output/get-metadata.json rename to pkg/cmd/testdata/output/get-metadata.json diff --git a/cmd/helm/testdata/output/get-metadata.txt b/pkg/cmd/testdata/output/get-metadata.txt similarity index 100% rename from cmd/helm/testdata/output/get-metadata.txt rename to pkg/cmd/testdata/output/get-metadata.txt diff --git a/cmd/helm/testdata/output/get-metadata.yaml b/pkg/cmd/testdata/output/get-metadata.yaml similarity index 100% rename from cmd/helm/testdata/output/get-metadata.yaml rename to pkg/cmd/testdata/output/get-metadata.yaml diff --git a/cmd/helm/testdata/output/get-notes-no-args.txt b/pkg/cmd/testdata/output/get-notes-no-args.txt similarity index 100% rename from cmd/helm/testdata/output/get-notes-no-args.txt rename to pkg/cmd/testdata/output/get-notes-no-args.txt diff --git a/cmd/helm/testdata/output/get-notes.txt b/pkg/cmd/testdata/output/get-notes.txt similarity index 100% rename from cmd/helm/testdata/output/get-notes.txt rename to pkg/cmd/testdata/output/get-notes.txt diff --git a/cmd/helm/testdata/output/get-release-template.txt b/pkg/cmd/testdata/output/get-release-template.txt similarity index 100% rename from cmd/helm/testdata/output/get-release-template.txt rename to pkg/cmd/testdata/output/get-release-template.txt diff --git a/cmd/helm/testdata/output/get-release.txt b/pkg/cmd/testdata/output/get-release.txt similarity index 100% rename from cmd/helm/testdata/output/get-release.txt rename to pkg/cmd/testdata/output/get-release.txt diff --git a/cmd/helm/testdata/output/get-values-all.txt b/pkg/cmd/testdata/output/get-values-all.txt similarity index 100% rename from cmd/helm/testdata/output/get-values-all.txt rename to pkg/cmd/testdata/output/get-values-all.txt diff --git a/cmd/helm/testdata/output/get-values-args.txt b/pkg/cmd/testdata/output/get-values-args.txt similarity index 100% rename from cmd/helm/testdata/output/get-values-args.txt rename to pkg/cmd/testdata/output/get-values-args.txt diff --git a/cmd/helm/testdata/output/get-values.txt b/pkg/cmd/testdata/output/get-values.txt similarity index 100% rename from cmd/helm/testdata/output/get-values.txt rename to pkg/cmd/testdata/output/get-values.txt diff --git a/cmd/helm/testdata/output/history-limit.txt b/pkg/cmd/testdata/output/history-limit.txt similarity index 100% rename from cmd/helm/testdata/output/history-limit.txt rename to pkg/cmd/testdata/output/history-limit.txt diff --git a/cmd/helm/testdata/output/history.json b/pkg/cmd/testdata/output/history.json similarity index 100% rename from cmd/helm/testdata/output/history.json rename to pkg/cmd/testdata/output/history.json diff --git a/cmd/helm/testdata/output/history.txt b/pkg/cmd/testdata/output/history.txt similarity index 100% rename from cmd/helm/testdata/output/history.txt rename to pkg/cmd/testdata/output/history.txt diff --git a/cmd/helm/testdata/output/history.yaml b/pkg/cmd/testdata/output/history.yaml similarity index 100% rename from cmd/helm/testdata/output/history.yaml rename to pkg/cmd/testdata/output/history.yaml diff --git a/cmd/helm/testdata/output/install-and-replace.txt b/pkg/cmd/testdata/output/install-and-replace.txt similarity index 100% rename from cmd/helm/testdata/output/install-and-replace.txt rename to pkg/cmd/testdata/output/install-and-replace.txt diff --git a/cmd/helm/testdata/output/install-and-take-ownership.txt b/pkg/cmd/testdata/output/install-and-take-ownership.txt similarity index 100% rename from cmd/helm/testdata/output/install-and-take-ownership.txt rename to pkg/cmd/testdata/output/install-and-take-ownership.txt diff --git a/cmd/helm/testdata/output/install-chart-bad-type.txt b/pkg/cmd/testdata/output/install-chart-bad-type.txt similarity index 100% rename from cmd/helm/testdata/output/install-chart-bad-type.txt rename to pkg/cmd/testdata/output/install-chart-bad-type.txt diff --git a/cmd/helm/testdata/output/install-dry-run-with-secret-hidden.txt b/pkg/cmd/testdata/output/install-dry-run-with-secret-hidden.txt similarity index 100% rename from cmd/helm/testdata/output/install-dry-run-with-secret-hidden.txt rename to pkg/cmd/testdata/output/install-dry-run-with-secret-hidden.txt diff --git a/cmd/helm/testdata/output/install-dry-run-with-secret.txt b/pkg/cmd/testdata/output/install-dry-run-with-secret.txt similarity index 100% rename from cmd/helm/testdata/output/install-dry-run-with-secret.txt rename to pkg/cmd/testdata/output/install-dry-run-with-secret.txt diff --git a/cmd/helm/testdata/output/install-hide-secret.txt b/pkg/cmd/testdata/output/install-hide-secret.txt similarity index 100% rename from cmd/helm/testdata/output/install-hide-secret.txt rename to pkg/cmd/testdata/output/install-hide-secret.txt diff --git a/cmd/helm/testdata/output/install-lib-chart.txt b/pkg/cmd/testdata/output/install-lib-chart.txt similarity index 100% rename from cmd/helm/testdata/output/install-lib-chart.txt rename to pkg/cmd/testdata/output/install-lib-chart.txt diff --git a/cmd/helm/testdata/output/install-name-template.txt b/pkg/cmd/testdata/output/install-name-template.txt similarity index 100% rename from cmd/helm/testdata/output/install-name-template.txt rename to pkg/cmd/testdata/output/install-name-template.txt diff --git a/cmd/helm/testdata/output/install-no-args.txt b/pkg/cmd/testdata/output/install-no-args.txt similarity index 100% rename from cmd/helm/testdata/output/install-no-args.txt rename to pkg/cmd/testdata/output/install-no-args.txt diff --git a/cmd/helm/testdata/output/install-no-hooks.txt b/pkg/cmd/testdata/output/install-no-hooks.txt similarity index 100% rename from cmd/helm/testdata/output/install-no-hooks.txt rename to pkg/cmd/testdata/output/install-no-hooks.txt diff --git a/cmd/helm/testdata/output/install-with-multiple-values-files.txt b/pkg/cmd/testdata/output/install-with-multiple-values-files.txt similarity index 100% rename from cmd/helm/testdata/output/install-with-multiple-values-files.txt rename to pkg/cmd/testdata/output/install-with-multiple-values-files.txt diff --git a/cmd/helm/testdata/output/install-with-multiple-values.txt b/pkg/cmd/testdata/output/install-with-multiple-values.txt similarity index 100% rename from cmd/helm/testdata/output/install-with-multiple-values.txt rename to pkg/cmd/testdata/output/install-with-multiple-values.txt diff --git a/cmd/helm/testdata/output/install-with-timeout.txt b/pkg/cmd/testdata/output/install-with-timeout.txt similarity index 100% rename from cmd/helm/testdata/output/install-with-timeout.txt rename to pkg/cmd/testdata/output/install-with-timeout.txt diff --git a/cmd/helm/testdata/output/install-with-values-file.txt b/pkg/cmd/testdata/output/install-with-values-file.txt similarity index 100% rename from cmd/helm/testdata/output/install-with-values-file.txt rename to pkg/cmd/testdata/output/install-with-values-file.txt diff --git a/cmd/helm/testdata/output/install-with-values.txt b/pkg/cmd/testdata/output/install-with-values.txt similarity index 100% rename from cmd/helm/testdata/output/install-with-values.txt rename to pkg/cmd/testdata/output/install-with-values.txt diff --git a/cmd/helm/testdata/output/install-with-wait-for-jobs.txt b/pkg/cmd/testdata/output/install-with-wait-for-jobs.txt similarity index 100% rename from cmd/helm/testdata/output/install-with-wait-for-jobs.txt rename to pkg/cmd/testdata/output/install-with-wait-for-jobs.txt diff --git a/cmd/helm/testdata/output/install-with-wait.txt b/pkg/cmd/testdata/output/install-with-wait.txt similarity index 100% rename from cmd/helm/testdata/output/install-with-wait.txt rename to pkg/cmd/testdata/output/install-with-wait.txt diff --git a/cmd/helm/testdata/output/install.txt b/pkg/cmd/testdata/output/install.txt similarity index 100% rename from cmd/helm/testdata/output/install.txt rename to pkg/cmd/testdata/output/install.txt diff --git a/cmd/helm/testdata/output/issue-9027.txt b/pkg/cmd/testdata/output/issue-9027.txt similarity index 100% rename from cmd/helm/testdata/output/issue-9027.txt rename to pkg/cmd/testdata/output/issue-9027.txt diff --git a/cmd/helm/testdata/output/issue-totoml.txt b/pkg/cmd/testdata/output/issue-totoml.txt similarity index 100% rename from cmd/helm/testdata/output/issue-totoml.txt rename to pkg/cmd/testdata/output/issue-totoml.txt diff --git a/cmd/helm/testdata/output/lint-chart-with-bad-subcharts-with-subcharts.txt b/pkg/cmd/testdata/output/lint-chart-with-bad-subcharts-with-subcharts.txt similarity index 100% rename from cmd/helm/testdata/output/lint-chart-with-bad-subcharts-with-subcharts.txt rename to pkg/cmd/testdata/output/lint-chart-with-bad-subcharts-with-subcharts.txt diff --git a/cmd/helm/testdata/output/lint-chart-with-bad-subcharts.txt b/pkg/cmd/testdata/output/lint-chart-with-bad-subcharts.txt similarity index 100% rename from cmd/helm/testdata/output/lint-chart-with-bad-subcharts.txt rename to pkg/cmd/testdata/output/lint-chart-with-bad-subcharts.txt diff --git a/cmd/helm/testdata/output/lint-chart-with-deprecated-api-old-k8s.txt b/pkg/cmd/testdata/output/lint-chart-with-deprecated-api-old-k8s.txt similarity index 100% rename from cmd/helm/testdata/output/lint-chart-with-deprecated-api-old-k8s.txt rename to pkg/cmd/testdata/output/lint-chart-with-deprecated-api-old-k8s.txt diff --git a/cmd/helm/testdata/output/lint-chart-with-deprecated-api-strict.txt b/pkg/cmd/testdata/output/lint-chart-with-deprecated-api-strict.txt similarity index 100% rename from cmd/helm/testdata/output/lint-chart-with-deprecated-api-strict.txt rename to pkg/cmd/testdata/output/lint-chart-with-deprecated-api-strict.txt diff --git a/cmd/helm/testdata/output/lint-chart-with-deprecated-api.txt b/pkg/cmd/testdata/output/lint-chart-with-deprecated-api.txt similarity index 100% rename from cmd/helm/testdata/output/lint-chart-with-deprecated-api.txt rename to pkg/cmd/testdata/output/lint-chart-with-deprecated-api.txt diff --git a/cmd/helm/testdata/output/lint-quiet-with-error.txt b/pkg/cmd/testdata/output/lint-quiet-with-error.txt similarity index 100% rename from cmd/helm/testdata/output/lint-quiet-with-error.txt rename to pkg/cmd/testdata/output/lint-quiet-with-error.txt diff --git a/cmd/helm/testdata/output/lint-quiet-with-warning.txt b/pkg/cmd/testdata/output/lint-quiet-with-warning.txt similarity index 100% rename from cmd/helm/testdata/output/lint-quiet-with-warning.txt rename to pkg/cmd/testdata/output/lint-quiet-with-warning.txt diff --git a/cmd/helm/testdata/output/lint-quiet.txt b/pkg/cmd/testdata/output/lint-quiet.txt similarity index 100% rename from cmd/helm/testdata/output/lint-quiet.txt rename to pkg/cmd/testdata/output/lint-quiet.txt diff --git a/cmd/helm/testdata/output/list-all.txt b/pkg/cmd/testdata/output/list-all.txt similarity index 100% rename from cmd/helm/testdata/output/list-all.txt rename to pkg/cmd/testdata/output/list-all.txt diff --git a/cmd/helm/testdata/output/list-date-reversed.txt b/pkg/cmd/testdata/output/list-date-reversed.txt similarity index 100% rename from cmd/helm/testdata/output/list-date-reversed.txt rename to pkg/cmd/testdata/output/list-date-reversed.txt diff --git a/cmd/helm/testdata/output/list-date.txt b/pkg/cmd/testdata/output/list-date.txt similarity index 100% rename from cmd/helm/testdata/output/list-date.txt rename to pkg/cmd/testdata/output/list-date.txt diff --git a/cmd/helm/testdata/output/list-failed.txt b/pkg/cmd/testdata/output/list-failed.txt similarity index 100% rename from cmd/helm/testdata/output/list-failed.txt rename to pkg/cmd/testdata/output/list-failed.txt diff --git a/cmd/helm/testdata/output/list-filter.txt b/pkg/cmd/testdata/output/list-filter.txt similarity index 100% rename from cmd/helm/testdata/output/list-filter.txt rename to pkg/cmd/testdata/output/list-filter.txt diff --git a/cmd/helm/testdata/output/list-max.txt b/pkg/cmd/testdata/output/list-max.txt similarity index 100% rename from cmd/helm/testdata/output/list-max.txt rename to pkg/cmd/testdata/output/list-max.txt diff --git a/cmd/helm/testdata/output/list-namespace.txt b/pkg/cmd/testdata/output/list-namespace.txt similarity index 100% rename from cmd/helm/testdata/output/list-namespace.txt rename to pkg/cmd/testdata/output/list-namespace.txt diff --git a/cmd/helm/testdata/output/list-no-headers.txt b/pkg/cmd/testdata/output/list-no-headers.txt similarity index 100% rename from cmd/helm/testdata/output/list-no-headers.txt rename to pkg/cmd/testdata/output/list-no-headers.txt diff --git a/cmd/helm/testdata/output/list-offset.txt b/pkg/cmd/testdata/output/list-offset.txt similarity index 100% rename from cmd/helm/testdata/output/list-offset.txt rename to pkg/cmd/testdata/output/list-offset.txt diff --git a/cmd/helm/testdata/output/list-pending.txt b/pkg/cmd/testdata/output/list-pending.txt similarity index 100% rename from cmd/helm/testdata/output/list-pending.txt rename to pkg/cmd/testdata/output/list-pending.txt diff --git a/cmd/helm/testdata/output/list-reverse.txt b/pkg/cmd/testdata/output/list-reverse.txt similarity index 100% rename from cmd/helm/testdata/output/list-reverse.txt rename to pkg/cmd/testdata/output/list-reverse.txt diff --git a/cmd/helm/testdata/output/list-short-json.txt b/pkg/cmd/testdata/output/list-short-json.txt similarity index 100% rename from cmd/helm/testdata/output/list-short-json.txt rename to pkg/cmd/testdata/output/list-short-json.txt diff --git a/cmd/helm/testdata/output/list-short-yaml.txt b/pkg/cmd/testdata/output/list-short-yaml.txt similarity index 100% rename from cmd/helm/testdata/output/list-short-yaml.txt rename to pkg/cmd/testdata/output/list-short-yaml.txt diff --git a/cmd/helm/testdata/output/list-short.txt b/pkg/cmd/testdata/output/list-short.txt similarity index 100% rename from cmd/helm/testdata/output/list-short.txt rename to pkg/cmd/testdata/output/list-short.txt diff --git a/cmd/helm/testdata/output/list-superseded.txt b/pkg/cmd/testdata/output/list-superseded.txt similarity index 100% rename from cmd/helm/testdata/output/list-superseded.txt rename to pkg/cmd/testdata/output/list-superseded.txt diff --git a/cmd/helm/testdata/output/list-uninstalled.txt b/pkg/cmd/testdata/output/list-uninstalled.txt similarity index 100% rename from cmd/helm/testdata/output/list-uninstalled.txt rename to pkg/cmd/testdata/output/list-uninstalled.txt diff --git a/cmd/helm/testdata/output/list-uninstalling.txt b/pkg/cmd/testdata/output/list-uninstalling.txt similarity index 100% rename from cmd/helm/testdata/output/list-uninstalling.txt rename to pkg/cmd/testdata/output/list-uninstalling.txt diff --git a/cmd/helm/testdata/output/list.txt b/pkg/cmd/testdata/output/list.txt similarity index 100% rename from cmd/helm/testdata/output/list.txt rename to pkg/cmd/testdata/output/list.txt diff --git a/cmd/helm/testdata/output/object-order.txt b/pkg/cmd/testdata/output/object-order.txt similarity index 100% rename from cmd/helm/testdata/output/object-order.txt rename to pkg/cmd/testdata/output/object-order.txt diff --git a/cmd/helm/testdata/output/output-comp.txt b/pkg/cmd/testdata/output/output-comp.txt similarity index 100% rename from cmd/helm/testdata/output/output-comp.txt rename to pkg/cmd/testdata/output/output-comp.txt diff --git a/cmd/helm/testdata/output/plugin_args_comp.txt b/pkg/cmd/testdata/output/plugin_args_comp.txt similarity index 100% rename from cmd/helm/testdata/output/plugin_args_comp.txt rename to pkg/cmd/testdata/output/plugin_args_comp.txt diff --git a/cmd/helm/testdata/output/plugin_args_flag_comp.txt b/pkg/cmd/testdata/output/plugin_args_flag_comp.txt similarity index 100% rename from cmd/helm/testdata/output/plugin_args_flag_comp.txt rename to pkg/cmd/testdata/output/plugin_args_flag_comp.txt diff --git a/cmd/helm/testdata/output/plugin_args_many_args_comp.txt b/pkg/cmd/testdata/output/plugin_args_many_args_comp.txt similarity index 100% rename from cmd/helm/testdata/output/plugin_args_many_args_comp.txt rename to pkg/cmd/testdata/output/plugin_args_many_args_comp.txt diff --git a/cmd/helm/testdata/output/plugin_args_ns_comp.txt b/pkg/cmd/testdata/output/plugin_args_ns_comp.txt similarity index 100% rename from cmd/helm/testdata/output/plugin_args_ns_comp.txt rename to pkg/cmd/testdata/output/plugin_args_ns_comp.txt diff --git a/cmd/helm/testdata/output/plugin_echo_no_directive.txt b/pkg/cmd/testdata/output/plugin_echo_no_directive.txt similarity index 100% rename from cmd/helm/testdata/output/plugin_echo_no_directive.txt rename to pkg/cmd/testdata/output/plugin_echo_no_directive.txt diff --git a/cmd/helm/testdata/output/plugin_list_comp.txt b/pkg/cmd/testdata/output/plugin_list_comp.txt similarity index 100% rename from cmd/helm/testdata/output/plugin_list_comp.txt rename to pkg/cmd/testdata/output/plugin_list_comp.txt diff --git a/cmd/helm/testdata/output/plugin_repeat_comp.txt b/pkg/cmd/testdata/output/plugin_repeat_comp.txt similarity index 100% rename from cmd/helm/testdata/output/plugin_repeat_comp.txt rename to pkg/cmd/testdata/output/plugin_repeat_comp.txt diff --git a/cmd/helm/testdata/output/release_list_comp.txt b/pkg/cmd/testdata/output/release_list_comp.txt similarity index 100% rename from cmd/helm/testdata/output/release_list_comp.txt rename to pkg/cmd/testdata/output/release_list_comp.txt diff --git a/cmd/helm/testdata/output/release_list_repeat_comp.txt b/pkg/cmd/testdata/output/release_list_repeat_comp.txt similarity index 100% rename from cmd/helm/testdata/output/release_list_repeat_comp.txt rename to pkg/cmd/testdata/output/release_list_repeat_comp.txt diff --git a/cmd/helm/testdata/output/repo-add.txt b/pkg/cmd/testdata/output/repo-add.txt similarity index 100% rename from cmd/helm/testdata/output/repo-add.txt rename to pkg/cmd/testdata/output/repo-add.txt diff --git a/cmd/helm/testdata/output/repo-add2.txt b/pkg/cmd/testdata/output/repo-add2.txt similarity index 100% rename from cmd/helm/testdata/output/repo-add2.txt rename to pkg/cmd/testdata/output/repo-add2.txt diff --git a/cmd/helm/testdata/output/repo_list_comp.txt b/pkg/cmd/testdata/output/repo_list_comp.txt similarity index 100% rename from cmd/helm/testdata/output/repo_list_comp.txt rename to pkg/cmd/testdata/output/repo_list_comp.txt diff --git a/cmd/helm/testdata/output/repo_repeat_comp.txt b/pkg/cmd/testdata/output/repo_repeat_comp.txt similarity index 100% rename from cmd/helm/testdata/output/repo_repeat_comp.txt rename to pkg/cmd/testdata/output/repo_repeat_comp.txt diff --git a/cmd/helm/testdata/output/revision-comp.txt b/pkg/cmd/testdata/output/revision-comp.txt similarity index 100% rename from cmd/helm/testdata/output/revision-comp.txt rename to pkg/cmd/testdata/output/revision-comp.txt diff --git a/cmd/helm/testdata/output/revision-wrong-args-comp.txt b/pkg/cmd/testdata/output/revision-wrong-args-comp.txt similarity index 100% rename from cmd/helm/testdata/output/revision-wrong-args-comp.txt rename to pkg/cmd/testdata/output/revision-wrong-args-comp.txt diff --git a/cmd/helm/testdata/output/rollback-comp.txt b/pkg/cmd/testdata/output/rollback-comp.txt similarity index 100% rename from cmd/helm/testdata/output/rollback-comp.txt rename to pkg/cmd/testdata/output/rollback-comp.txt diff --git a/cmd/helm/testdata/output/rollback-no-args.txt b/pkg/cmd/testdata/output/rollback-no-args.txt similarity index 100% rename from cmd/helm/testdata/output/rollback-no-args.txt rename to pkg/cmd/testdata/output/rollback-no-args.txt diff --git a/cmd/helm/testdata/output/rollback-no-revision.txt b/pkg/cmd/testdata/output/rollback-no-revision.txt similarity index 100% rename from cmd/helm/testdata/output/rollback-no-revision.txt rename to pkg/cmd/testdata/output/rollback-no-revision.txt diff --git a/cmd/helm/testdata/output/rollback-non-existent-version.txt b/pkg/cmd/testdata/output/rollback-non-existent-version.txt similarity index 100% rename from cmd/helm/testdata/output/rollback-non-existent-version.txt rename to pkg/cmd/testdata/output/rollback-non-existent-version.txt diff --git a/cmd/helm/testdata/output/rollback-timeout.txt b/pkg/cmd/testdata/output/rollback-timeout.txt similarity index 100% rename from cmd/helm/testdata/output/rollback-timeout.txt rename to pkg/cmd/testdata/output/rollback-timeout.txt diff --git a/cmd/helm/testdata/output/rollback-wait-for-jobs.txt b/pkg/cmd/testdata/output/rollback-wait-for-jobs.txt similarity index 100% rename from cmd/helm/testdata/output/rollback-wait-for-jobs.txt rename to pkg/cmd/testdata/output/rollback-wait-for-jobs.txt diff --git a/cmd/helm/testdata/output/rollback-wait.txt b/pkg/cmd/testdata/output/rollback-wait.txt similarity index 100% rename from cmd/helm/testdata/output/rollback-wait.txt rename to pkg/cmd/testdata/output/rollback-wait.txt diff --git a/cmd/helm/testdata/output/rollback-wrong-args-comp.txt b/pkg/cmd/testdata/output/rollback-wrong-args-comp.txt similarity index 100% rename from cmd/helm/testdata/output/rollback-wrong-args-comp.txt rename to pkg/cmd/testdata/output/rollback-wrong-args-comp.txt diff --git a/cmd/helm/testdata/output/rollback.txt b/pkg/cmd/testdata/output/rollback.txt similarity index 100% rename from cmd/helm/testdata/output/rollback.txt rename to pkg/cmd/testdata/output/rollback.txt diff --git a/cmd/helm/testdata/output/schema-negative-cli.txt b/pkg/cmd/testdata/output/schema-negative-cli.txt similarity index 100% rename from cmd/helm/testdata/output/schema-negative-cli.txt rename to pkg/cmd/testdata/output/schema-negative-cli.txt diff --git a/cmd/helm/testdata/output/schema-negative.txt b/pkg/cmd/testdata/output/schema-negative.txt similarity index 100% rename from cmd/helm/testdata/output/schema-negative.txt rename to pkg/cmd/testdata/output/schema-negative.txt diff --git a/cmd/helm/testdata/output/schema.txt b/pkg/cmd/testdata/output/schema.txt similarity index 100% rename from cmd/helm/testdata/output/schema.txt rename to pkg/cmd/testdata/output/schema.txt diff --git a/cmd/helm/testdata/output/search-constraint-single.txt b/pkg/cmd/testdata/output/search-constraint-single.txt similarity index 100% rename from cmd/helm/testdata/output/search-constraint-single.txt rename to pkg/cmd/testdata/output/search-constraint-single.txt diff --git a/cmd/helm/testdata/output/search-constraint.txt b/pkg/cmd/testdata/output/search-constraint.txt similarity index 100% rename from cmd/helm/testdata/output/search-constraint.txt rename to pkg/cmd/testdata/output/search-constraint.txt diff --git a/cmd/helm/testdata/output/search-multiple-devel-release.txt b/pkg/cmd/testdata/output/search-multiple-devel-release.txt similarity index 100% rename from cmd/helm/testdata/output/search-multiple-devel-release.txt rename to pkg/cmd/testdata/output/search-multiple-devel-release.txt diff --git a/cmd/helm/testdata/output/search-multiple-stable-release.txt b/pkg/cmd/testdata/output/search-multiple-stable-release.txt similarity index 100% rename from cmd/helm/testdata/output/search-multiple-stable-release.txt rename to pkg/cmd/testdata/output/search-multiple-stable-release.txt diff --git a/cmd/helm/testdata/output/search-multiple-versions-constraints.txt b/pkg/cmd/testdata/output/search-multiple-versions-constraints.txt similarity index 100% rename from cmd/helm/testdata/output/search-multiple-versions-constraints.txt rename to pkg/cmd/testdata/output/search-multiple-versions-constraints.txt diff --git a/cmd/helm/testdata/output/search-multiple-versions.txt b/pkg/cmd/testdata/output/search-multiple-versions.txt similarity index 100% rename from cmd/helm/testdata/output/search-multiple-versions.txt rename to pkg/cmd/testdata/output/search-multiple-versions.txt diff --git a/cmd/helm/testdata/output/search-not-found-error.txt b/pkg/cmd/testdata/output/search-not-found-error.txt similarity index 100% rename from cmd/helm/testdata/output/search-not-found-error.txt rename to pkg/cmd/testdata/output/search-not-found-error.txt diff --git a/cmd/helm/testdata/output/search-not-found.txt b/pkg/cmd/testdata/output/search-not-found.txt similarity index 100% rename from cmd/helm/testdata/output/search-not-found.txt rename to pkg/cmd/testdata/output/search-not-found.txt diff --git a/cmd/helm/testdata/output/search-output-json.txt b/pkg/cmd/testdata/output/search-output-json.txt similarity index 100% rename from cmd/helm/testdata/output/search-output-json.txt rename to pkg/cmd/testdata/output/search-output-json.txt diff --git a/cmd/helm/testdata/output/search-output-yaml.txt b/pkg/cmd/testdata/output/search-output-yaml.txt similarity index 100% rename from cmd/helm/testdata/output/search-output-yaml.txt rename to pkg/cmd/testdata/output/search-output-yaml.txt diff --git a/cmd/helm/testdata/output/search-regex.txt b/pkg/cmd/testdata/output/search-regex.txt similarity index 100% rename from cmd/helm/testdata/output/search-regex.txt rename to pkg/cmd/testdata/output/search-regex.txt diff --git a/cmd/helm/testdata/output/search-versions-constraint.txt b/pkg/cmd/testdata/output/search-versions-constraint.txt similarity index 100% rename from cmd/helm/testdata/output/search-versions-constraint.txt rename to pkg/cmd/testdata/output/search-versions-constraint.txt diff --git a/cmd/helm/testdata/output/status-comp.txt b/pkg/cmd/testdata/output/status-comp.txt similarity index 100% rename from cmd/helm/testdata/output/status-comp.txt rename to pkg/cmd/testdata/output/status-comp.txt diff --git a/cmd/helm/testdata/output/status-with-desc.txt b/pkg/cmd/testdata/output/status-with-desc.txt similarity index 100% rename from cmd/helm/testdata/output/status-with-desc.txt rename to pkg/cmd/testdata/output/status-with-desc.txt diff --git a/cmd/helm/testdata/output/status-with-notes.txt b/pkg/cmd/testdata/output/status-with-notes.txt similarity index 100% rename from cmd/helm/testdata/output/status-with-notes.txt rename to pkg/cmd/testdata/output/status-with-notes.txt diff --git a/cmd/helm/testdata/output/status-with-resources.json b/pkg/cmd/testdata/output/status-with-resources.json similarity index 100% rename from cmd/helm/testdata/output/status-with-resources.json rename to pkg/cmd/testdata/output/status-with-resources.json diff --git a/cmd/helm/testdata/output/status-with-resources.txt b/pkg/cmd/testdata/output/status-with-resources.txt similarity index 100% rename from cmd/helm/testdata/output/status-with-resources.txt rename to pkg/cmd/testdata/output/status-with-resources.txt diff --git a/cmd/helm/testdata/output/status-with-test-suite.txt b/pkg/cmd/testdata/output/status-with-test-suite.txt similarity index 100% rename from cmd/helm/testdata/output/status-with-test-suite.txt rename to pkg/cmd/testdata/output/status-with-test-suite.txt diff --git a/cmd/helm/testdata/output/status-wrong-args-comp.txt b/pkg/cmd/testdata/output/status-wrong-args-comp.txt similarity index 100% rename from cmd/helm/testdata/output/status-wrong-args-comp.txt rename to pkg/cmd/testdata/output/status-wrong-args-comp.txt diff --git a/cmd/helm/testdata/output/status.json b/pkg/cmd/testdata/output/status.json similarity index 100% rename from cmd/helm/testdata/output/status.json rename to pkg/cmd/testdata/output/status.json diff --git a/cmd/helm/testdata/output/status.txt b/pkg/cmd/testdata/output/status.txt similarity index 100% rename from cmd/helm/testdata/output/status.txt rename to pkg/cmd/testdata/output/status.txt diff --git a/cmd/helm/testdata/output/subchart-schema-cli-negative.txt b/pkg/cmd/testdata/output/subchart-schema-cli-negative.txt similarity index 100% rename from cmd/helm/testdata/output/subchart-schema-cli-negative.txt rename to pkg/cmd/testdata/output/subchart-schema-cli-negative.txt diff --git a/cmd/helm/testdata/output/subchart-schema-cli.txt b/pkg/cmd/testdata/output/subchart-schema-cli.txt similarity index 100% rename from cmd/helm/testdata/output/subchart-schema-cli.txt rename to pkg/cmd/testdata/output/subchart-schema-cli.txt diff --git a/cmd/helm/testdata/output/subchart-schema-negative.txt b/pkg/cmd/testdata/output/subchart-schema-negative.txt similarity index 100% rename from cmd/helm/testdata/output/subchart-schema-negative.txt rename to pkg/cmd/testdata/output/subchart-schema-negative.txt diff --git a/cmd/helm/testdata/output/template-chart-bad-type.txt b/pkg/cmd/testdata/output/template-chart-bad-type.txt similarity index 100% rename from cmd/helm/testdata/output/template-chart-bad-type.txt rename to pkg/cmd/testdata/output/template-chart-bad-type.txt diff --git a/cmd/helm/testdata/output/template-chart-with-template-lib-archive-dep.txt b/pkg/cmd/testdata/output/template-chart-with-template-lib-archive-dep.txt similarity index 100% rename from cmd/helm/testdata/output/template-chart-with-template-lib-archive-dep.txt rename to pkg/cmd/testdata/output/template-chart-with-template-lib-archive-dep.txt diff --git a/cmd/helm/testdata/output/template-chart-with-template-lib-dep.txt b/pkg/cmd/testdata/output/template-chart-with-template-lib-dep.txt similarity index 100% rename from cmd/helm/testdata/output/template-chart-with-template-lib-dep.txt rename to pkg/cmd/testdata/output/template-chart-with-template-lib-dep.txt diff --git a/cmd/helm/testdata/output/template-lib-chart.txt b/pkg/cmd/testdata/output/template-lib-chart.txt similarity index 100% rename from cmd/helm/testdata/output/template-lib-chart.txt rename to pkg/cmd/testdata/output/template-lib-chart.txt diff --git a/cmd/helm/testdata/output/template-name-template.txt b/pkg/cmd/testdata/output/template-name-template.txt similarity index 100% rename from cmd/helm/testdata/output/template-name-template.txt rename to pkg/cmd/testdata/output/template-name-template.txt diff --git a/cmd/helm/testdata/output/template-no-args.txt b/pkg/cmd/testdata/output/template-no-args.txt similarity index 100% rename from cmd/helm/testdata/output/template-no-args.txt rename to pkg/cmd/testdata/output/template-no-args.txt diff --git a/cmd/helm/testdata/output/template-set.txt b/pkg/cmd/testdata/output/template-set.txt similarity index 100% rename from cmd/helm/testdata/output/template-set.txt rename to pkg/cmd/testdata/output/template-set.txt diff --git a/cmd/helm/testdata/output/template-show-only-glob.txt b/pkg/cmd/testdata/output/template-show-only-glob.txt similarity index 100% rename from cmd/helm/testdata/output/template-show-only-glob.txt rename to pkg/cmd/testdata/output/template-show-only-glob.txt diff --git a/cmd/helm/testdata/output/template-show-only-multiple.txt b/pkg/cmd/testdata/output/template-show-only-multiple.txt similarity index 100% rename from cmd/helm/testdata/output/template-show-only-multiple.txt rename to pkg/cmd/testdata/output/template-show-only-multiple.txt diff --git a/cmd/helm/testdata/output/template-show-only-one.txt b/pkg/cmd/testdata/output/template-show-only-one.txt similarity index 100% rename from cmd/helm/testdata/output/template-show-only-one.txt rename to pkg/cmd/testdata/output/template-show-only-one.txt diff --git a/cmd/helm/testdata/output/template-skip-tests.txt b/pkg/cmd/testdata/output/template-skip-tests.txt similarity index 100% rename from cmd/helm/testdata/output/template-skip-tests.txt rename to pkg/cmd/testdata/output/template-skip-tests.txt diff --git a/cmd/helm/testdata/output/template-subchart-cm-set-file.txt b/pkg/cmd/testdata/output/template-subchart-cm-set-file.txt similarity index 100% rename from cmd/helm/testdata/output/template-subchart-cm-set-file.txt rename to pkg/cmd/testdata/output/template-subchart-cm-set-file.txt diff --git a/cmd/helm/testdata/output/template-subchart-cm-set.txt b/pkg/cmd/testdata/output/template-subchart-cm-set.txt similarity index 100% rename from cmd/helm/testdata/output/template-subchart-cm-set.txt rename to pkg/cmd/testdata/output/template-subchart-cm-set.txt diff --git a/cmd/helm/testdata/output/template-subchart-cm.txt b/pkg/cmd/testdata/output/template-subchart-cm.txt similarity index 100% rename from cmd/helm/testdata/output/template-subchart-cm.txt rename to pkg/cmd/testdata/output/template-subchart-cm.txt diff --git a/cmd/helm/testdata/output/template-values-files.txt b/pkg/cmd/testdata/output/template-values-files.txt similarity index 100% rename from cmd/helm/testdata/output/template-values-files.txt rename to pkg/cmd/testdata/output/template-values-files.txt diff --git a/cmd/helm/testdata/output/template-with-api-version.txt b/pkg/cmd/testdata/output/template-with-api-version.txt similarity index 100% rename from cmd/helm/testdata/output/template-with-api-version.txt rename to pkg/cmd/testdata/output/template-with-api-version.txt diff --git a/cmd/helm/testdata/output/template-with-crds.txt b/pkg/cmd/testdata/output/template-with-crds.txt similarity index 100% rename from cmd/helm/testdata/output/template-with-crds.txt rename to pkg/cmd/testdata/output/template-with-crds.txt diff --git a/cmd/helm/testdata/output/template-with-invalid-yaml-debug.txt b/pkg/cmd/testdata/output/template-with-invalid-yaml-debug.txt similarity index 100% rename from cmd/helm/testdata/output/template-with-invalid-yaml-debug.txt rename to pkg/cmd/testdata/output/template-with-invalid-yaml-debug.txt diff --git a/cmd/helm/testdata/output/template-with-invalid-yaml.txt b/pkg/cmd/testdata/output/template-with-invalid-yaml.txt similarity index 100% rename from cmd/helm/testdata/output/template-with-invalid-yaml.txt rename to pkg/cmd/testdata/output/template-with-invalid-yaml.txt diff --git a/cmd/helm/testdata/output/template-with-kube-version.txt b/pkg/cmd/testdata/output/template-with-kube-version.txt similarity index 100% rename from cmd/helm/testdata/output/template-with-kube-version.txt rename to pkg/cmd/testdata/output/template-with-kube-version.txt diff --git a/cmd/helm/testdata/output/template.txt b/pkg/cmd/testdata/output/template.txt similarity index 100% rename from cmd/helm/testdata/output/template.txt rename to pkg/cmd/testdata/output/template.txt diff --git a/cmd/helm/testdata/output/uninstall-keep-history.txt b/pkg/cmd/testdata/output/uninstall-keep-history.txt similarity index 100% rename from cmd/helm/testdata/output/uninstall-keep-history.txt rename to pkg/cmd/testdata/output/uninstall-keep-history.txt diff --git a/cmd/helm/testdata/output/uninstall-multiple.txt b/pkg/cmd/testdata/output/uninstall-multiple.txt similarity index 100% rename from cmd/helm/testdata/output/uninstall-multiple.txt rename to pkg/cmd/testdata/output/uninstall-multiple.txt diff --git a/cmd/helm/testdata/output/uninstall-no-args.txt b/pkg/cmd/testdata/output/uninstall-no-args.txt similarity index 100% rename from cmd/helm/testdata/output/uninstall-no-args.txt rename to pkg/cmd/testdata/output/uninstall-no-args.txt diff --git a/cmd/helm/testdata/output/uninstall-no-hooks.txt b/pkg/cmd/testdata/output/uninstall-no-hooks.txt similarity index 100% rename from cmd/helm/testdata/output/uninstall-no-hooks.txt rename to pkg/cmd/testdata/output/uninstall-no-hooks.txt diff --git a/cmd/helm/testdata/output/uninstall-timeout.txt b/pkg/cmd/testdata/output/uninstall-timeout.txt similarity index 100% rename from cmd/helm/testdata/output/uninstall-timeout.txt rename to pkg/cmd/testdata/output/uninstall-timeout.txt diff --git a/cmd/helm/testdata/output/uninstall-wait.txt b/pkg/cmd/testdata/output/uninstall-wait.txt similarity index 100% rename from cmd/helm/testdata/output/uninstall-wait.txt rename to pkg/cmd/testdata/output/uninstall-wait.txt diff --git a/cmd/helm/testdata/output/uninstall.txt b/pkg/cmd/testdata/output/uninstall.txt similarity index 100% rename from cmd/helm/testdata/output/uninstall.txt rename to pkg/cmd/testdata/output/uninstall.txt diff --git a/cmd/helm/testdata/output/upgrade-and-take-ownership.txt b/pkg/cmd/testdata/output/upgrade-and-take-ownership.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-and-take-ownership.txt rename to pkg/cmd/testdata/output/upgrade-and-take-ownership.txt diff --git a/cmd/helm/testdata/output/upgrade-uninstalled-with-keep-history.txt b/pkg/cmd/testdata/output/upgrade-uninstalled-with-keep-history.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-uninstalled-with-keep-history.txt rename to pkg/cmd/testdata/output/upgrade-uninstalled-with-keep-history.txt diff --git a/cmd/helm/testdata/output/upgrade-with-bad-dependencies.txt b/pkg/cmd/testdata/output/upgrade-with-bad-dependencies.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-bad-dependencies.txt rename to pkg/cmd/testdata/output/upgrade-with-bad-dependencies.txt diff --git a/cmd/helm/testdata/output/upgrade-with-bad-or-missing-existing-release.txt b/pkg/cmd/testdata/output/upgrade-with-bad-or-missing-existing-release.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-bad-or-missing-existing-release.txt rename to pkg/cmd/testdata/output/upgrade-with-bad-or-missing-existing-release.txt diff --git a/cmd/helm/testdata/output/upgrade-with-dependency-update.txt b/pkg/cmd/testdata/output/upgrade-with-dependency-update.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-dependency-update.txt rename to pkg/cmd/testdata/output/upgrade-with-dependency-update.txt diff --git a/cmd/helm/testdata/output/upgrade-with-install-timeout.txt b/pkg/cmd/testdata/output/upgrade-with-install-timeout.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-install-timeout.txt rename to pkg/cmd/testdata/output/upgrade-with-install-timeout.txt diff --git a/cmd/helm/testdata/output/upgrade-with-install.txt b/pkg/cmd/testdata/output/upgrade-with-install.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-install.txt rename to pkg/cmd/testdata/output/upgrade-with-install.txt diff --git a/cmd/helm/testdata/output/upgrade-with-missing-dependencies.txt b/pkg/cmd/testdata/output/upgrade-with-missing-dependencies.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-missing-dependencies.txt rename to pkg/cmd/testdata/output/upgrade-with-missing-dependencies.txt diff --git a/cmd/helm/testdata/output/upgrade-with-pending-install.txt b/pkg/cmd/testdata/output/upgrade-with-pending-install.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-pending-install.txt rename to pkg/cmd/testdata/output/upgrade-with-pending-install.txt diff --git a/cmd/helm/testdata/output/upgrade-with-reset-values.txt b/pkg/cmd/testdata/output/upgrade-with-reset-values.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-reset-values.txt rename to pkg/cmd/testdata/output/upgrade-with-reset-values.txt diff --git a/cmd/helm/testdata/output/upgrade-with-reset-values2.txt b/pkg/cmd/testdata/output/upgrade-with-reset-values2.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-reset-values2.txt rename to pkg/cmd/testdata/output/upgrade-with-reset-values2.txt diff --git a/cmd/helm/testdata/output/upgrade-with-timeout.txt b/pkg/cmd/testdata/output/upgrade-with-timeout.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-timeout.txt rename to pkg/cmd/testdata/output/upgrade-with-timeout.txt diff --git a/cmd/helm/testdata/output/upgrade-with-wait-for-jobs.txt b/pkg/cmd/testdata/output/upgrade-with-wait-for-jobs.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-wait-for-jobs.txt rename to pkg/cmd/testdata/output/upgrade-with-wait-for-jobs.txt diff --git a/cmd/helm/testdata/output/upgrade-with-wait.txt b/pkg/cmd/testdata/output/upgrade-with-wait.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade-with-wait.txt rename to pkg/cmd/testdata/output/upgrade-with-wait.txt diff --git a/cmd/helm/testdata/output/upgrade.txt b/pkg/cmd/testdata/output/upgrade.txt similarity index 100% rename from cmd/helm/testdata/output/upgrade.txt rename to pkg/cmd/testdata/output/upgrade.txt diff --git a/cmd/helm/testdata/output/values.json b/pkg/cmd/testdata/output/values.json similarity index 100% rename from cmd/helm/testdata/output/values.json rename to pkg/cmd/testdata/output/values.json diff --git a/cmd/helm/testdata/output/values.yaml b/pkg/cmd/testdata/output/values.yaml similarity index 100% rename from cmd/helm/testdata/output/values.yaml rename to pkg/cmd/testdata/output/values.yaml diff --git a/cmd/helm/testdata/output/version-client-shorthand.txt b/pkg/cmd/testdata/output/version-client-shorthand.txt similarity index 100% rename from cmd/helm/testdata/output/version-client-shorthand.txt rename to pkg/cmd/testdata/output/version-client-shorthand.txt diff --git a/cmd/helm/testdata/output/version-client.txt b/pkg/cmd/testdata/output/version-client.txt similarity index 100% rename from cmd/helm/testdata/output/version-client.txt rename to pkg/cmd/testdata/output/version-client.txt diff --git a/cmd/helm/testdata/output/version-comp.txt b/pkg/cmd/testdata/output/version-comp.txt similarity index 100% rename from cmd/helm/testdata/output/version-comp.txt rename to pkg/cmd/testdata/output/version-comp.txt diff --git a/cmd/helm/testdata/output/version-invalid-comp.txt b/pkg/cmd/testdata/output/version-invalid-comp.txt similarity index 100% rename from cmd/helm/testdata/output/version-invalid-comp.txt rename to pkg/cmd/testdata/output/version-invalid-comp.txt diff --git a/cmd/helm/testdata/output/version-short.txt b/pkg/cmd/testdata/output/version-short.txt similarity index 100% rename from cmd/helm/testdata/output/version-short.txt rename to pkg/cmd/testdata/output/version-short.txt diff --git a/cmd/helm/testdata/output/version-template.txt b/pkg/cmd/testdata/output/version-template.txt similarity index 100% rename from cmd/helm/testdata/output/version-template.txt rename to pkg/cmd/testdata/output/version-template.txt diff --git a/cmd/helm/testdata/output/version.txt b/pkg/cmd/testdata/output/version.txt similarity index 100% rename from cmd/helm/testdata/output/version.txt rename to pkg/cmd/testdata/output/version.txt diff --git a/cmd/helm/testdata/password b/pkg/cmd/testdata/password similarity index 100% rename from cmd/helm/testdata/password rename to pkg/cmd/testdata/password diff --git a/cmd/helm/testdata/plugins.yaml b/pkg/cmd/testdata/plugins.yaml similarity index 100% rename from cmd/helm/testdata/plugins.yaml rename to pkg/cmd/testdata/plugins.yaml diff --git a/cmd/helm/testdata/repositories.yaml b/pkg/cmd/testdata/repositories.yaml similarity index 100% rename from cmd/helm/testdata/repositories.yaml rename to pkg/cmd/testdata/repositories.yaml diff --git a/cmd/helm/testdata/testcharts/alpine/Chart.yaml b/pkg/cmd/testdata/testcharts/alpine/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/alpine/Chart.yaml rename to pkg/cmd/testdata/testcharts/alpine/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/alpine/README.md b/pkg/cmd/testdata/testcharts/alpine/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/alpine/README.md rename to pkg/cmd/testdata/testcharts/alpine/README.md diff --git a/cmd/helm/testdata/testcharts/alpine/extra_values.yaml b/pkg/cmd/testdata/testcharts/alpine/extra_values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/alpine/extra_values.yaml rename to pkg/cmd/testdata/testcharts/alpine/extra_values.yaml diff --git a/cmd/helm/testdata/testcharts/alpine/more_values.yaml b/pkg/cmd/testdata/testcharts/alpine/more_values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/alpine/more_values.yaml rename to pkg/cmd/testdata/testcharts/alpine/more_values.yaml diff --git a/cmd/helm/testdata/testcharts/alpine/templates/alpine-pod.yaml b/pkg/cmd/testdata/testcharts/alpine/templates/alpine-pod.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/alpine/templates/alpine-pod.yaml rename to pkg/cmd/testdata/testcharts/alpine/templates/alpine-pod.yaml diff --git a/cmd/helm/testdata/testcharts/alpine/values.yaml b/pkg/cmd/testdata/testcharts/alpine/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/alpine/values.yaml rename to pkg/cmd/testdata/testcharts/alpine/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-requirements/.helmignore b/pkg/cmd/testdata/testcharts/chart-bad-requirements/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-requirements/.helmignore rename to pkg/cmd/testdata/testcharts/chart-bad-requirements/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-bad-requirements/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-bad-requirements/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-requirements/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-requirements/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/.helmignore b/pkg/cmd/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/.helmignore rename to pkg/cmd/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/values.yaml b/pkg/cmd/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/values.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-requirements/charts/reqsubchart/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-requirements/values.yaml b/pkg/cmd/testdata/testcharts/chart-bad-requirements/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-requirements/values.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-requirements/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-type/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-bad-type/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-type/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-type/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-type/README.md b/pkg/cmd/testdata/testcharts/chart-bad-type/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-type/README.md rename to pkg/cmd/testdata/testcharts/chart-bad-type/README.md diff --git a/cmd/helm/testdata/testcharts/chart-bad-type/extra_values.yaml b/pkg/cmd/testdata/testcharts/chart-bad-type/extra_values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-type/extra_values.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-type/extra_values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-type/more_values.yaml b/pkg/cmd/testdata/testcharts/chart-bad-type/more_values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-type/more_values.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-type/more_values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-type/templates/alpine-pod.yaml b/pkg/cmd/testdata/testcharts/chart-bad-type/templates/alpine-pod.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-type/templates/alpine-pod.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-type/templates/alpine-pod.yaml diff --git a/cmd/helm/testdata/testcharts/chart-bad-type/values.yaml b/pkg/cmd/testdata/testcharts/chart-bad-type/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-bad-type/values.yaml rename to pkg/cmd/testdata/testcharts/chart-bad-type/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-missing-deps/.helmignore b/pkg/cmd/testdata/testcharts/chart-missing-deps/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-missing-deps/.helmignore rename to pkg/cmd/testdata/testcharts/chart-missing-deps/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-missing-deps/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-missing-deps/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-missing-deps/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-missing-deps/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-missing-deps/charts/reqsubchart/.helmignore b/pkg/cmd/testdata/testcharts/chart-missing-deps/charts/reqsubchart/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-missing-deps/charts/reqsubchart/.helmignore rename to pkg/cmd/testdata/testcharts/chart-missing-deps/charts/reqsubchart/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-missing-deps/charts/reqsubchart/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-missing-deps/charts/reqsubchart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-missing-deps/charts/reqsubchart/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-missing-deps/charts/reqsubchart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-missing-deps/charts/reqsubchart/values.yaml b/pkg/cmd/testdata/testcharts/chart-missing-deps/charts/reqsubchart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-missing-deps/charts/reqsubchart/values.yaml rename to pkg/cmd/testdata/testcharts/chart-missing-deps/charts/reqsubchart/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-missing-deps/values.yaml b/pkg/cmd/testdata/testcharts/chart-missing-deps/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-missing-deps/values.yaml rename to pkg/cmd/testdata/testcharts/chart-missing-deps/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-bad-subcharts/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-bad-subcharts/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/charts/bad-subchart/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/charts/good-subchart/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-bad-subcharts/requirements.yaml b/pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/requirements.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-bad-subcharts/requirements.yaml rename to pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/requirements.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-bad-subcharts/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-bad-subcharts/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-bad-subcharts/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-deprecated-api/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-deprecated-api/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-deprecated-api/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-deprecated-api/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-deprecated-api/templates/horizontalpodautoscaler.yaml b/pkg/cmd/testdata/testcharts/chart-with-deprecated-api/templates/horizontalpodautoscaler.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-deprecated-api/templates/horizontalpodautoscaler.yaml rename to pkg/cmd/testdata/testcharts/chart-with-deprecated-api/templates/horizontalpodautoscaler.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-deprecated-api/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-deprecated-api/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-deprecated-api/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-deprecated-api/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/.helmignore b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/.helmignore rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/charts/common-0.0.5.tgz b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/charts/common-0.0.5.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/charts/common-0.0.5.tgz rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/charts/common-0.0.5.tgz diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/NOTES.txt b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/NOTES.txt similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/NOTES.txt rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/NOTES.txt diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/_helpers.tpl b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/_helpers.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/_helpers.tpl rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/_helpers.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/deployment.yaml b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/deployment.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/deployment.yaml rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/deployment.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/ingress.yaml b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/ingress.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/ingress.yaml rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/ingress.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/service.yaml b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/service.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/templates/service.yaml rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/templates/service.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-lib-dep/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-lib-dep/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-lib-dep/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-lib-dep/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-only-crds/.helmignore b/pkg/cmd/testdata/testcharts/chart-with-only-crds/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-only-crds/.helmignore rename to pkg/cmd/testdata/testcharts/chart-with-only-crds/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-with-only-crds/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-only-crds/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-only-crds/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-only-crds/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-only-crds/crds/test-crd.yaml b/pkg/cmd/testdata/testcharts/chart-with-only-crds/crds/test-crd.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-only-crds/crds/test-crd.yaml rename to pkg/cmd/testdata/testcharts/chart-with-only-crds/crds/test-crd.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/templates/empty.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/templates/empty.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/templates/empty.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/templates/empty.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.schema.json b/pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.schema.json similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.schema.json rename to pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.schema.json diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/charts/subchart-with-schema/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/templates/empty.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/templates/empty.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/templates/empty.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/templates/empty.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/values.schema.json b/pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/values.schema.json similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/values.schema.json rename to pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/values.schema.json diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-and-subchart/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-and-subchart/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-negative-skip-validation/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-negative-skip-validation/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-negative-skip-validation/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-negative-skip-validation/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-negative-skip-validation/templates/empty.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-negative-skip-validation/templates/empty.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-negative-skip-validation/templates/empty.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-negative-skip-validation/templates/empty.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-negative-skip-validation/values.schema.json b/pkg/cmd/testdata/testcharts/chart-with-schema-negative-skip-validation/values.schema.json similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-negative-skip-validation/values.schema.json rename to pkg/cmd/testdata/testcharts/chart-with-schema-negative-skip-validation/values.schema.json diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-negative-skip-validation/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-negative-skip-validation/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-negative-skip-validation/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-negative-skip-validation/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-negative/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-negative/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-negative/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-negative/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-negative/templates/empty.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-negative/templates/empty.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-negative/templates/empty.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-negative/templates/empty.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-negative/values.schema.json b/pkg/cmd/testdata/testcharts/chart-with-schema-negative/values.schema.json similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-negative/values.schema.json rename to pkg/cmd/testdata/testcharts/chart-with-schema-negative/values.schema.json diff --git a/cmd/helm/testdata/testcharts/chart-with-schema-negative/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema-negative/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema-negative/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema-negative/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema/extra-values.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema/extra-values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema/extra-values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema/extra-values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema/templates/empty.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema/templates/empty.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema/templates/empty.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema/templates/empty.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-schema/values.schema.json b/pkg/cmd/testdata/testcharts/chart-with-schema/values.schema.json similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema/values.schema.json rename to pkg/cmd/testdata/testcharts/chart-with-schema/values.schema.json diff --git a/cmd/helm/testdata/testcharts/chart-with-schema/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-schema/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-schema/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-schema/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-secret/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-secret/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-secret/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-secret/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-secret/templates/configmap.yaml b/pkg/cmd/testdata/testcharts/chart-with-secret/templates/configmap.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-secret/templates/configmap.yaml rename to pkg/cmd/testdata/testcharts/chart-with-secret/templates/configmap.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-secret/templates/secret.yaml b/pkg/cmd/testdata/testcharts/chart-with-secret/templates/secret.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-secret/templates/secret.yaml rename to pkg/cmd/testdata/testcharts/chart-with-secret/templates/secret.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-notes/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-subchart-notes/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-notes/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-subchart-notes/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/templates/NOTES.txt b/pkg/cmd/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/templates/NOTES.txt similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/templates/NOTES.txt rename to pkg/cmd/testdata/testcharts/chart-with-subchart-notes/charts/subchart-with-notes/templates/NOTES.txt diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-notes/templates/NOTES.txt b/pkg/cmd/testdata/testcharts/chart-with-subchart-notes/templates/NOTES.txt similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-notes/templates/NOTES.txt rename to pkg/cmd/testdata/testcharts/chart-with-subchart-notes/templates/NOTES.txt diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-update/Chart.lock b/pkg/cmd/testdata/testcharts/chart-with-subchart-update/Chart.lock similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-update/Chart.lock rename to pkg/cmd/testdata/testcharts/chart-with-subchart-update/Chart.lock diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-update/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-subchart-update/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-update/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-subchart-update/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/templates/NOTES.txt b/pkg/cmd/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/templates/NOTES.txt similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/templates/NOTES.txt rename to pkg/cmd/testdata/testcharts/chart-with-subchart-update/charts/subchart-with-notes/templates/NOTES.txt diff --git a/cmd/helm/testdata/testcharts/chart-with-subchart-update/templates/NOTES.txt b/pkg/cmd/testdata/testcharts/chart-with-subchart-update/templates/NOTES.txt similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-subchart-update/templates/NOTES.txt rename to pkg/cmd/testdata/testcharts/chart-with-subchart-update/templates/NOTES.txt diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/.helmignore b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/.helmignore rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/charts/common-0.0.5.tgz b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/charts/common-0.0.5.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/charts/common-0.0.5.tgz rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/charts/common-0.0.5.tgz diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/NOTES.txt b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/NOTES.txt similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/NOTES.txt rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/NOTES.txt diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/_helpers.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/_helpers.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/_helpers.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/_helpers.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/deployment.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/deployment.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/deployment.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/deployment.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/ingress.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/ingress.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/ingress.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/ingress.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/service.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/service.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/templates/service.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/templates/service.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-archive-dep/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-archive-dep/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/.helmignore b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/.helmignore rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/.helmignore b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/.helmignore rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/.helmignore diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/README.md b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/README.md rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/README.md diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_chartref.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_chartref.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_chartref.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_chartref.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_configmap.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_configmap.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_configmap.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_configmap.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_container.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_container.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_container.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_container.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_deployment.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_deployment.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_deployment.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_deployment.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_envvar.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_envvar.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_envvar.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_envvar.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_fullname.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_fullname.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_fullname.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_fullname.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_ingress.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_ingress.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_ingress.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_ingress.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_annotations.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_annotations.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_annotations.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_annotations.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_labels.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_labels.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_labels.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_metadata_labels.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_name.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_name.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_name.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_name.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_persistentvolumeclaim.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_persistentvolumeclaim.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_persistentvolumeclaim.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_persistentvolumeclaim.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_secret.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_secret.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_secret.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_secret.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_service.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_service.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_service.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_service.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_util.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_util.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_util.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_util.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_volume.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_volume.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_volume.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/_volume.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/configmap.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/configmap.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/configmap.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/templates/configmap.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/charts/common/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/charts/common/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/NOTES.txt b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/NOTES.txt similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/NOTES.txt rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/NOTES.txt diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/_helpers.tpl b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/_helpers.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/_helpers.tpl rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/_helpers.tpl diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/deployment.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/deployment.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/deployment.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/deployment.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/ingress.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/ingress.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/ingress.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/ingress.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/service.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/service.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/templates/service.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/templates/service.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-lib-dep/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-lib-dep/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-lib-dep/values.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-with-invalid-yaml/Chart.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-with-invalid-yaml/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-with-invalid-yaml/Chart.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-with-invalid-yaml/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-with-invalid-yaml/README.md b/pkg/cmd/testdata/testcharts/chart-with-template-with-invalid-yaml/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-with-invalid-yaml/README.md rename to pkg/cmd/testdata/testcharts/chart-with-template-with-invalid-yaml/README.md diff --git a/cmd/helm/testdata/testcharts/chart-with-template-with-invalid-yaml/templates/alpine-pod.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-with-invalid-yaml/templates/alpine-pod.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-with-invalid-yaml/templates/alpine-pod.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-with-invalid-yaml/templates/alpine-pod.yaml diff --git a/cmd/helm/testdata/testcharts/chart-with-template-with-invalid-yaml/values.yaml b/pkg/cmd/testdata/testcharts/chart-with-template-with-invalid-yaml/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/chart-with-template-with-invalid-yaml/values.yaml rename to pkg/cmd/testdata/testcharts/chart-with-template-with-invalid-yaml/values.yaml diff --git a/cmd/helm/testdata/testcharts/compressedchart-0.1.0.tar.gz b/pkg/cmd/testdata/testcharts/compressedchart-0.1.0.tar.gz similarity index 100% rename from cmd/helm/testdata/testcharts/compressedchart-0.1.0.tar.gz rename to pkg/cmd/testdata/testcharts/compressedchart-0.1.0.tar.gz diff --git a/cmd/helm/testdata/testcharts/compressedchart-0.1.0.tgz b/pkg/cmd/testdata/testcharts/compressedchart-0.1.0.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/compressedchart-0.1.0.tgz rename to pkg/cmd/testdata/testcharts/compressedchart-0.1.0.tgz diff --git a/cmd/helm/testdata/testcharts/compressedchart-0.2.0.tgz b/pkg/cmd/testdata/testcharts/compressedchart-0.2.0.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/compressedchart-0.2.0.tgz rename to pkg/cmd/testdata/testcharts/compressedchart-0.2.0.tgz diff --git a/cmd/helm/testdata/testcharts/compressedchart-0.3.0.tgz b/pkg/cmd/testdata/testcharts/compressedchart-0.3.0.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/compressedchart-0.3.0.tgz rename to pkg/cmd/testdata/testcharts/compressedchart-0.3.0.tgz diff --git a/cmd/helm/testdata/testcharts/compressedchart-with-hyphens-0.1.0.tgz b/pkg/cmd/testdata/testcharts/compressedchart-with-hyphens-0.1.0.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/compressedchart-with-hyphens-0.1.0.tgz rename to pkg/cmd/testdata/testcharts/compressedchart-with-hyphens-0.1.0.tgz diff --git a/cmd/helm/testdata/testcharts/deprecated/Chart.yaml b/pkg/cmd/testdata/testcharts/deprecated/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/deprecated/Chart.yaml rename to pkg/cmd/testdata/testcharts/deprecated/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/deprecated/README.md b/pkg/cmd/testdata/testcharts/deprecated/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/deprecated/README.md rename to pkg/cmd/testdata/testcharts/deprecated/README.md diff --git a/cmd/helm/testdata/testcharts/empty/Chart.yaml b/pkg/cmd/testdata/testcharts/empty/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/empty/Chart.yaml rename to pkg/cmd/testdata/testcharts/empty/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/empty/README.md b/pkg/cmd/testdata/testcharts/empty/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/empty/README.md rename to pkg/cmd/testdata/testcharts/empty/README.md diff --git a/cmd/helm/testdata/testcharts/empty/templates/empty.yaml b/pkg/cmd/testdata/testcharts/empty/templates/empty.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/empty/templates/empty.yaml rename to pkg/cmd/testdata/testcharts/empty/templates/empty.yaml diff --git a/cmd/helm/testdata/testcharts/empty/values.yaml b/pkg/cmd/testdata/testcharts/empty/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/empty/values.yaml rename to pkg/cmd/testdata/testcharts/empty/values.yaml diff --git a/cmd/helm/testdata/testcharts/issue-7233/.helmignore b/pkg/cmd/testdata/testcharts/issue-7233/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/issue-7233/.helmignore rename to pkg/cmd/testdata/testcharts/issue-7233/.helmignore diff --git a/cmd/helm/testdata/testcharts/issue-7233/Chart.yaml b/pkg/cmd/testdata/testcharts/issue-7233/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-7233/Chart.yaml rename to pkg/cmd/testdata/testcharts/issue-7233/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/issue-7233/requirements.lock b/pkg/cmd/testdata/testcharts/issue-7233/requirements.lock similarity index 100% rename from cmd/helm/testdata/testcharts/issue-7233/requirements.lock rename to pkg/cmd/testdata/testcharts/issue-7233/requirements.lock diff --git a/cmd/helm/testdata/testcharts/issue-7233/requirements.yaml b/pkg/cmd/testdata/testcharts/issue-7233/requirements.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-7233/requirements.yaml rename to pkg/cmd/testdata/testcharts/issue-7233/requirements.yaml diff --git a/cmd/helm/testdata/testcharts/issue-7233/templates/configmap.yaml b/pkg/cmd/testdata/testcharts/issue-7233/templates/configmap.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-7233/templates/configmap.yaml rename to pkg/cmd/testdata/testcharts/issue-7233/templates/configmap.yaml diff --git a/cmd/helm/testdata/testcharts/issue-7233/values.yaml b/pkg/cmd/testdata/testcharts/issue-7233/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-7233/values.yaml rename to pkg/cmd/testdata/testcharts/issue-7233/values.yaml diff --git a/cmd/helm/testdata/testcharts/issue-9027/Chart.yaml b/pkg/cmd/testdata/testcharts/issue-9027/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-9027/Chart.yaml rename to pkg/cmd/testdata/testcharts/issue-9027/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/issue-9027/charts/subchart/Chart.yaml b/pkg/cmd/testdata/testcharts/issue-9027/charts/subchart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-9027/charts/subchart/Chart.yaml rename to pkg/cmd/testdata/testcharts/issue-9027/charts/subchart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/issue-9027/charts/subchart/templates/values.yaml b/pkg/cmd/testdata/testcharts/issue-9027/charts/subchart/templates/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-9027/charts/subchart/templates/values.yaml rename to pkg/cmd/testdata/testcharts/issue-9027/charts/subchart/templates/values.yaml diff --git a/cmd/helm/testdata/testcharts/issue-9027/charts/subchart/values.yaml b/pkg/cmd/testdata/testcharts/issue-9027/charts/subchart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-9027/charts/subchart/values.yaml rename to pkg/cmd/testdata/testcharts/issue-9027/charts/subchart/values.yaml diff --git a/cmd/helm/testdata/testcharts/issue-9027/templates/values.yaml b/pkg/cmd/testdata/testcharts/issue-9027/templates/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-9027/templates/values.yaml rename to pkg/cmd/testdata/testcharts/issue-9027/templates/values.yaml diff --git a/cmd/helm/testdata/testcharts/issue-9027/values.yaml b/pkg/cmd/testdata/testcharts/issue-9027/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-9027/values.yaml rename to pkg/cmd/testdata/testcharts/issue-9027/values.yaml diff --git a/cmd/helm/testdata/testcharts/issue-totoml/Chart.yaml b/pkg/cmd/testdata/testcharts/issue-totoml/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-totoml/Chart.yaml rename to pkg/cmd/testdata/testcharts/issue-totoml/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/issue-totoml/templates/configmap.yaml b/pkg/cmd/testdata/testcharts/issue-totoml/templates/configmap.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-totoml/templates/configmap.yaml rename to pkg/cmd/testdata/testcharts/issue-totoml/templates/configmap.yaml diff --git a/cmd/helm/testdata/testcharts/issue-totoml/values.yaml b/pkg/cmd/testdata/testcharts/issue-totoml/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue-totoml/values.yaml rename to pkg/cmd/testdata/testcharts/issue-totoml/values.yaml diff --git a/cmd/helm/testdata/testcharts/issue1979/Chart.yaml b/pkg/cmd/testdata/testcharts/issue1979/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue1979/Chart.yaml rename to pkg/cmd/testdata/testcharts/issue1979/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/issue1979/README.md b/pkg/cmd/testdata/testcharts/issue1979/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/issue1979/README.md rename to pkg/cmd/testdata/testcharts/issue1979/README.md diff --git a/cmd/helm/testdata/testcharts/issue1979/extra_values.yaml b/pkg/cmd/testdata/testcharts/issue1979/extra_values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue1979/extra_values.yaml rename to pkg/cmd/testdata/testcharts/issue1979/extra_values.yaml diff --git a/cmd/helm/testdata/testcharts/issue1979/more_values.yaml b/pkg/cmd/testdata/testcharts/issue1979/more_values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue1979/more_values.yaml rename to pkg/cmd/testdata/testcharts/issue1979/more_values.yaml diff --git a/cmd/helm/testdata/testcharts/issue1979/templates/alpine-pod.yaml b/pkg/cmd/testdata/testcharts/issue1979/templates/alpine-pod.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue1979/templates/alpine-pod.yaml rename to pkg/cmd/testdata/testcharts/issue1979/templates/alpine-pod.yaml diff --git a/cmd/helm/testdata/testcharts/issue1979/values.yaml b/pkg/cmd/testdata/testcharts/issue1979/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/issue1979/values.yaml rename to pkg/cmd/testdata/testcharts/issue1979/values.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/.helmignore b/pkg/cmd/testdata/testcharts/lib-chart/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/.helmignore rename to pkg/cmd/testdata/testcharts/lib-chart/.helmignore diff --git a/cmd/helm/testdata/testcharts/lib-chart/Chart.yaml b/pkg/cmd/testdata/testcharts/lib-chart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/Chart.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/README.md b/pkg/cmd/testdata/testcharts/lib-chart/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/README.md rename to pkg/cmd/testdata/testcharts/lib-chart/README.md diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_chartref.tpl b/pkg/cmd/testdata/testcharts/lib-chart/templates/_chartref.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_chartref.tpl rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_chartref.tpl diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_configmap.yaml b/pkg/cmd/testdata/testcharts/lib-chart/templates/_configmap.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_configmap.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_configmap.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_container.yaml b/pkg/cmd/testdata/testcharts/lib-chart/templates/_container.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_container.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_container.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_deployment.yaml b/pkg/cmd/testdata/testcharts/lib-chart/templates/_deployment.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_deployment.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_deployment.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_envvar.tpl b/pkg/cmd/testdata/testcharts/lib-chart/templates/_envvar.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_envvar.tpl rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_envvar.tpl diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_fullname.tpl b/pkg/cmd/testdata/testcharts/lib-chart/templates/_fullname.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_fullname.tpl rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_fullname.tpl diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_ingress.yaml b/pkg/cmd/testdata/testcharts/lib-chart/templates/_ingress.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_ingress.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_ingress.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_metadata.yaml b/pkg/cmd/testdata/testcharts/lib-chart/templates/_metadata.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_metadata.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_metadata.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_metadata_annotations.tpl b/pkg/cmd/testdata/testcharts/lib-chart/templates/_metadata_annotations.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_metadata_annotations.tpl rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_metadata_annotations.tpl diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_metadata_labels.tpl b/pkg/cmd/testdata/testcharts/lib-chart/templates/_metadata_labels.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_metadata_labels.tpl rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_metadata_labels.tpl diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_name.tpl b/pkg/cmd/testdata/testcharts/lib-chart/templates/_name.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_name.tpl rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_name.tpl diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_persistentvolumeclaim.yaml b/pkg/cmd/testdata/testcharts/lib-chart/templates/_persistentvolumeclaim.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_persistentvolumeclaim.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_persistentvolumeclaim.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_secret.yaml b/pkg/cmd/testdata/testcharts/lib-chart/templates/_secret.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_secret.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_secret.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_service.yaml b/pkg/cmd/testdata/testcharts/lib-chart/templates/_service.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_service.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_service.yaml diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_util.tpl b/pkg/cmd/testdata/testcharts/lib-chart/templates/_util.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_util.tpl rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_util.tpl diff --git a/cmd/helm/testdata/testcharts/lib-chart/templates/_volume.tpl b/pkg/cmd/testdata/testcharts/lib-chart/templates/_volume.tpl similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/templates/_volume.tpl rename to pkg/cmd/testdata/testcharts/lib-chart/templates/_volume.tpl diff --git a/cmd/helm/testdata/testcharts/lib-chart/values.yaml b/pkg/cmd/testdata/testcharts/lib-chart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/lib-chart/values.yaml rename to pkg/cmd/testdata/testcharts/lib-chart/values.yaml diff --git a/cmd/helm/testdata/testcharts/object-order/Chart.yaml b/pkg/cmd/testdata/testcharts/object-order/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/object-order/Chart.yaml rename to pkg/cmd/testdata/testcharts/object-order/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/object-order/templates/01-a.yml b/pkg/cmd/testdata/testcharts/object-order/templates/01-a.yml similarity index 100% rename from cmd/helm/testdata/testcharts/object-order/templates/01-a.yml rename to pkg/cmd/testdata/testcharts/object-order/templates/01-a.yml diff --git a/cmd/helm/testdata/testcharts/object-order/templates/02-b.yml b/pkg/cmd/testdata/testcharts/object-order/templates/02-b.yml similarity index 100% rename from cmd/helm/testdata/testcharts/object-order/templates/02-b.yml rename to pkg/cmd/testdata/testcharts/object-order/templates/02-b.yml diff --git a/cmd/helm/testdata/testcharts/object-order/values.yaml b/pkg/cmd/testdata/testcharts/object-order/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/object-order/values.yaml rename to pkg/cmd/testdata/testcharts/object-order/values.yaml diff --git a/cmd/helm/testdata/testcharts/oci-dependent-chart-0.1.0.tgz b/pkg/cmd/testdata/testcharts/oci-dependent-chart-0.1.0.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/oci-dependent-chart-0.1.0.tgz rename to pkg/cmd/testdata/testcharts/oci-dependent-chart-0.1.0.tgz diff --git a/cmd/helm/testdata/testcharts/pre-release-chart-0.1.0-alpha.tgz b/pkg/cmd/testdata/testcharts/pre-release-chart-0.1.0-alpha.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/pre-release-chart-0.1.0-alpha.tgz rename to pkg/cmd/testdata/testcharts/pre-release-chart-0.1.0-alpha.tgz diff --git a/cmd/helm/testdata/testcharts/reqtest-0.1.0.tgz b/pkg/cmd/testdata/testcharts/reqtest-0.1.0.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest-0.1.0.tgz rename to pkg/cmd/testdata/testcharts/reqtest-0.1.0.tgz diff --git a/cmd/helm/testdata/testcharts/reqtest/.helmignore b/pkg/cmd/testdata/testcharts/reqtest/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/.helmignore rename to pkg/cmd/testdata/testcharts/reqtest/.helmignore diff --git a/cmd/helm/testdata/testcharts/reqtest/Chart.lock b/pkg/cmd/testdata/testcharts/reqtest/Chart.lock similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/Chart.lock rename to pkg/cmd/testdata/testcharts/reqtest/Chart.lock diff --git a/cmd/helm/testdata/testcharts/reqtest/Chart.yaml b/pkg/cmd/testdata/testcharts/reqtest/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/Chart.yaml rename to pkg/cmd/testdata/testcharts/reqtest/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart/.helmignore b/pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart/.helmignore rename to pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart/.helmignore diff --git a/cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart/Chart.yaml b/pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart/Chart.yaml rename to pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart/values.yaml b/pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart/values.yaml rename to pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart/values.yaml diff --git a/cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart2/.helmignore b/pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart2/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart2/.helmignore rename to pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart2/.helmignore diff --git a/cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart2/Chart.yaml b/pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart2/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart2/Chart.yaml rename to pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart2/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart2/values.yaml b/pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart2/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart2/values.yaml rename to pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart2/values.yaml diff --git a/cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart3-0.2.0.tgz b/pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart3-0.2.0.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/charts/reqsubchart3-0.2.0.tgz rename to pkg/cmd/testdata/testcharts/reqtest/charts/reqsubchart3-0.2.0.tgz diff --git a/cmd/helm/testdata/testcharts/reqtest/values.yaml b/pkg/cmd/testdata/testcharts/reqtest/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/reqtest/values.yaml rename to pkg/cmd/testdata/testcharts/reqtest/values.yaml diff --git a/cmd/helm/testdata/testcharts/signtest-0.1.0.tgz b/pkg/cmd/testdata/testcharts/signtest-0.1.0.tgz similarity index 100% rename from cmd/helm/testdata/testcharts/signtest-0.1.0.tgz rename to pkg/cmd/testdata/testcharts/signtest-0.1.0.tgz diff --git a/cmd/helm/testdata/testcharts/signtest-0.1.0.tgz.prov b/pkg/cmd/testdata/testcharts/signtest-0.1.0.tgz.prov similarity index 100% rename from cmd/helm/testdata/testcharts/signtest-0.1.0.tgz.prov rename to pkg/cmd/testdata/testcharts/signtest-0.1.0.tgz.prov diff --git a/cmd/helm/testdata/testcharts/signtest/.helmignore b/pkg/cmd/testdata/testcharts/signtest/.helmignore similarity index 100% rename from cmd/helm/testdata/testcharts/signtest/.helmignore rename to pkg/cmd/testdata/testcharts/signtest/.helmignore diff --git a/cmd/helm/testdata/testcharts/signtest/Chart.yaml b/pkg/cmd/testdata/testcharts/signtest/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/signtest/Chart.yaml rename to pkg/cmd/testdata/testcharts/signtest/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/signtest/alpine/Chart.yaml b/pkg/cmd/testdata/testcharts/signtest/alpine/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/signtest/alpine/Chart.yaml rename to pkg/cmd/testdata/testcharts/signtest/alpine/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/signtest/alpine/README.md b/pkg/cmd/testdata/testcharts/signtest/alpine/README.md similarity index 100% rename from cmd/helm/testdata/testcharts/signtest/alpine/README.md rename to pkg/cmd/testdata/testcharts/signtest/alpine/README.md diff --git a/cmd/helm/testdata/testcharts/signtest/alpine/templates/alpine-pod.yaml b/pkg/cmd/testdata/testcharts/signtest/alpine/templates/alpine-pod.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/signtest/alpine/templates/alpine-pod.yaml rename to pkg/cmd/testdata/testcharts/signtest/alpine/templates/alpine-pod.yaml diff --git a/cmd/helm/testdata/testcharts/signtest/alpine/values.yaml b/pkg/cmd/testdata/testcharts/signtest/alpine/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/signtest/alpine/values.yaml rename to pkg/cmd/testdata/testcharts/signtest/alpine/values.yaml diff --git a/cmd/helm/testdata/testcharts/signtest/templates/pod.yaml b/pkg/cmd/testdata/testcharts/signtest/templates/pod.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/signtest/templates/pod.yaml rename to pkg/cmd/testdata/testcharts/signtest/templates/pod.yaml diff --git a/cmd/helm/testdata/testcharts/signtest/values.yaml b/pkg/cmd/testdata/testcharts/signtest/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/signtest/values.yaml rename to pkg/cmd/testdata/testcharts/signtest/values.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/Chart.yaml b/pkg/cmd/testdata/testcharts/subchart/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/Chart.yaml rename to pkg/cmd/testdata/testcharts/subchart/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/charts/subchartA/Chart.yaml b/pkg/cmd/testdata/testcharts/subchart/charts/subchartA/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/charts/subchartA/Chart.yaml rename to pkg/cmd/testdata/testcharts/subchart/charts/subchartA/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/charts/subchartA/templates/service.yaml b/pkg/cmd/testdata/testcharts/subchart/charts/subchartA/templates/service.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/charts/subchartA/templates/service.yaml rename to pkg/cmd/testdata/testcharts/subchart/charts/subchartA/templates/service.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/charts/subchartA/values.yaml b/pkg/cmd/testdata/testcharts/subchart/charts/subchartA/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/charts/subchartA/values.yaml rename to pkg/cmd/testdata/testcharts/subchart/charts/subchartA/values.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/charts/subchartB/Chart.yaml b/pkg/cmd/testdata/testcharts/subchart/charts/subchartB/Chart.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/charts/subchartB/Chart.yaml rename to pkg/cmd/testdata/testcharts/subchart/charts/subchartB/Chart.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/charts/subchartB/templates/service.yaml b/pkg/cmd/testdata/testcharts/subchart/charts/subchartB/templates/service.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/charts/subchartB/templates/service.yaml rename to pkg/cmd/testdata/testcharts/subchart/charts/subchartB/templates/service.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/charts/subchartB/values.yaml b/pkg/cmd/testdata/testcharts/subchart/charts/subchartB/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/charts/subchartB/values.yaml rename to pkg/cmd/testdata/testcharts/subchart/charts/subchartB/values.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/crds/crdA.yaml b/pkg/cmd/testdata/testcharts/subchart/crds/crdA.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/crds/crdA.yaml rename to pkg/cmd/testdata/testcharts/subchart/crds/crdA.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/extra_values.yaml b/pkg/cmd/testdata/testcharts/subchart/extra_values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/extra_values.yaml rename to pkg/cmd/testdata/testcharts/subchart/extra_values.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/templates/NOTES.txt b/pkg/cmd/testdata/testcharts/subchart/templates/NOTES.txt similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/templates/NOTES.txt rename to pkg/cmd/testdata/testcharts/subchart/templates/NOTES.txt diff --git a/cmd/helm/testdata/testcharts/subchart/templates/service.yaml b/pkg/cmd/testdata/testcharts/subchart/templates/service.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/templates/service.yaml rename to pkg/cmd/testdata/testcharts/subchart/templates/service.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/templates/subdir/configmap.yaml b/pkg/cmd/testdata/testcharts/subchart/templates/subdir/configmap.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/templates/subdir/configmap.yaml rename to pkg/cmd/testdata/testcharts/subchart/templates/subdir/configmap.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/templates/subdir/role.yaml b/pkg/cmd/testdata/testcharts/subchart/templates/subdir/role.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/templates/subdir/role.yaml rename to pkg/cmd/testdata/testcharts/subchart/templates/subdir/role.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/templates/subdir/rolebinding.yaml b/pkg/cmd/testdata/testcharts/subchart/templates/subdir/rolebinding.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/templates/subdir/rolebinding.yaml rename to pkg/cmd/testdata/testcharts/subchart/templates/subdir/rolebinding.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/templates/subdir/serviceaccount.yaml b/pkg/cmd/testdata/testcharts/subchart/templates/subdir/serviceaccount.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/templates/subdir/serviceaccount.yaml rename to pkg/cmd/testdata/testcharts/subchart/templates/subdir/serviceaccount.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/templates/tests/test-config.yaml b/pkg/cmd/testdata/testcharts/subchart/templates/tests/test-config.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/templates/tests/test-config.yaml rename to pkg/cmd/testdata/testcharts/subchart/templates/tests/test-config.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/templates/tests/test-nothing.yaml b/pkg/cmd/testdata/testcharts/subchart/templates/tests/test-nothing.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/templates/tests/test-nothing.yaml rename to pkg/cmd/testdata/testcharts/subchart/templates/tests/test-nothing.yaml diff --git a/cmd/helm/testdata/testcharts/subchart/values.yaml b/pkg/cmd/testdata/testcharts/subchart/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/subchart/values.yaml rename to pkg/cmd/testdata/testcharts/subchart/values.yaml diff --git a/cmd/helm/testdata/testcharts/upgradetest/templates/configmap.yaml b/pkg/cmd/testdata/testcharts/upgradetest/templates/configmap.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/upgradetest/templates/configmap.yaml rename to pkg/cmd/testdata/testcharts/upgradetest/templates/configmap.yaml diff --git a/cmd/helm/testdata/testcharts/upgradetest/values.yaml b/pkg/cmd/testdata/testcharts/upgradetest/values.yaml similarity index 100% rename from cmd/helm/testdata/testcharts/upgradetest/values.yaml rename to pkg/cmd/testdata/testcharts/upgradetest/values.yaml diff --git a/cmd/helm/testdata/testplugin/plugin.yaml b/pkg/cmd/testdata/testplugin/plugin.yaml similarity index 100% rename from cmd/helm/testdata/testplugin/plugin.yaml rename to pkg/cmd/testdata/testplugin/plugin.yaml diff --git a/cmd/helm/testdata/testserver/index.yaml b/pkg/cmd/testdata/testserver/index.yaml similarity index 100% rename from cmd/helm/testdata/testserver/index.yaml rename to pkg/cmd/testdata/testserver/index.yaml diff --git a/cmd/helm/testdata/testserver/repository/repositories.yaml b/pkg/cmd/testdata/testserver/repository/repositories.yaml similarity index 100% rename from cmd/helm/testdata/testserver/repository/repositories.yaml rename to pkg/cmd/testdata/testserver/repository/repositories.yaml diff --git a/cmd/helm/uninstall.go b/pkg/cmd/uninstall.go similarity index 98% rename from cmd/helm/uninstall.go rename to pkg/cmd/uninstall.go index 9c5e25c87..c4e70cf75 100644 --- a/cmd/helm/uninstall.go +++ b/pkg/cmd/uninstall.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const uninstallDesc = ` diff --git a/cmd/helm/uninstall_test.go b/pkg/cmd/uninstall_test.go similarity index 99% rename from cmd/helm/uninstall_test.go rename to pkg/cmd/uninstall_test.go index f9bc71ec2..36d9ad117 100644 --- a/cmd/helm/uninstall_test.go +++ b/pkg/cmd/uninstall_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" diff --git a/cmd/helm/upgrade.go b/pkg/cmd/upgrade.go similarity index 99% rename from cmd/helm/upgrade.go rename to pkg/cmd/upgrade.go index 6684f9ebf..dfb28a98e 100644 --- a/cmd/helm/upgrade.go +++ b/pkg/cmd/upgrade.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "context" @@ -29,11 +29,11 @@ import ( "github.com/pkg/errors" "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/chart/loader" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/cli/values" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/release" @@ -173,7 +173,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } if client.Version == "" && client.Devel { - debug("setting version to >0.0.0-0") + Debug("setting version to >0.0.0-0") client.Version = ">0.0.0-0" } @@ -225,7 +225,7 @@ func newUpgradeCmd(cfg *action.Configuration, out io.Writer) *cobra.Command { } if ch.Metadata.Deprecated { - warning("This chart is deprecated") + Warning("This chart is deprecated") } // Create context and prepare the handle of SIGTERM diff --git a/cmd/helm/upgrade_test.go b/pkg/cmd/upgrade_test.go similarity index 99% rename from cmd/helm/upgrade_test.go rename to pkg/cmd/upgrade_test.go index f97a4a26b..0c454b9bf 100644 --- a/cmd/helm/upgrade_test.go +++ b/pkg/cmd/upgrade_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/verify.go b/pkg/cmd/verify.go similarity index 97% rename from cmd/helm/verify.go rename to pkg/cmd/verify.go index 197a164b6..50f1ea914 100644 --- a/cmd/helm/verify.go +++ b/pkg/cmd/verify.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -21,8 +21,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" + "helm.sh/helm/v4/pkg/cmd/require" ) const verifyDesc = ` diff --git a/cmd/helm/verify_test.go b/pkg/cmd/verify_test.go similarity index 99% rename from cmd/helm/verify_test.go rename to pkg/cmd/verify_test.go index 23b793557..ae373afd2 100644 --- a/cmd/helm/verify_test.go +++ b/pkg/cmd/verify_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" diff --git a/cmd/helm/version.go b/pkg/cmd/version.go similarity index 98% rename from cmd/helm/version.go rename to pkg/cmd/version.go index 030ce2dcd..0211716fe 100644 --- a/cmd/helm/version.go +++ b/pkg/cmd/version.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "fmt" @@ -23,8 +23,8 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/internal/version" + "helm.sh/helm/v4/pkg/cmd/require" ) const versionDesc = ` diff --git a/cmd/helm/version_test.go b/pkg/cmd/version_test.go similarity index 98% rename from cmd/helm/version_test.go rename to pkg/cmd/version_test.go index aa3cbfb7d..c06c72309 100644 --- a/cmd/helm/version_test.go +++ b/pkg/cmd/version_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package main +package cmd import ( "testing" From 18ca7c100250d70b2b5f45964eef22013b1bd384 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Mon, 24 Feb 2025 14:58:51 -0500 Subject: [PATCH 195/206] Move pkg/releaseutil to pkg/release/util The releaseutil package was originally designed to work against a generated codebase from a protobuf in Helm v2. This is when Helm used gRPC to communicate to a server side component named Tiller. When Helm moved everything client side, this package remained and it supported the release package. This change moves releaseutil to be a sub-packge of release. This is part of the change to support apiVersion v3 charts which is documented in HIP 20 Signed-off-by: Matt Farina --- cmd/helm/history.go | 2 +- cmd/helm/template.go | 2 +- pkg/action/action.go | 2 +- pkg/action/install.go | 2 +- pkg/action/list.go | 2 +- pkg/action/resource_policy.go | 2 +- pkg/action/uninstall.go | 2 +- pkg/action/upgrade.go | 2 +- pkg/{releaseutil => release/util}/filter.go | 2 +- pkg/{releaseutil => release/util}/filter_test.go | 2 +- pkg/{releaseutil => release/util}/kind_sorter.go | 2 +- pkg/{releaseutil => release/util}/kind_sorter_test.go | 2 +- pkg/{releaseutil => release/util}/manifest.go | 2 +- pkg/{releaseutil => release/util}/manifest_sorter.go | 2 +- pkg/{releaseutil => release/util}/manifest_sorter_test.go | 2 +- pkg/{releaseutil => release/util}/manifest_test.go | 2 +- pkg/{releaseutil => release/util}/sorter.go | 2 +- pkg/{releaseutil => release/util}/sorter_test.go | 2 +- pkg/storage/storage.go | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) rename pkg/{releaseutil => release/util}/filter.go (96%) rename pkg/{releaseutil => release/util}/filter_test.go (96%) rename pkg/{releaseutil => release/util}/kind_sorter.go (99%) rename pkg/{releaseutil => release/util}/kind_sorter_test.go (99%) rename pkg/{releaseutil => release/util}/manifest.go (99%) rename pkg/{releaseutil => release/util}/manifest_sorter.go (99%) rename pkg/{releaseutil => release/util}/manifest_sorter_test.go (99%) rename pkg/{releaseutil => release/util}/manifest_test.go (95%) rename pkg/{releaseutil => release/util}/sorter.go (97%) rename pkg/{releaseutil => release/util}/sorter_test.go (97%) diff --git a/cmd/helm/history.go b/cmd/helm/history.go index 91d005e7a..2c929c161 100644 --- a/cmd/helm/history.go +++ b/cmd/helm/history.go @@ -30,7 +30,7 @@ import ( "helm.sh/helm/v4/pkg/chart" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/template.go b/cmd/helm/template.go index 1a6265eba..212664dc8 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -36,7 +36,7 @@ import ( "helm.sh/helm/v4/pkg/action" chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/cli/values" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" ) const templateDesc = ` diff --git a/pkg/action/action.go b/pkg/action/action.go index 6efc6c2ee..eeaebc15f 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -40,7 +40,7 @@ import ( "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" "helm.sh/helm/v4/pkg/storage" "helm.sh/helm/v4/pkg/storage/driver" "helm.sh/helm/v4/pkg/time" diff --git a/pkg/action/install.go b/pkg/action/install.go index 6ad77a509..68c1848f6 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -49,7 +49,7 @@ import ( "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" "helm.sh/helm/v4/pkg/repo" "helm.sh/helm/v4/pkg/storage" "helm.sh/helm/v4/pkg/storage/driver" diff --git a/pkg/action/list.go b/pkg/action/list.go index f90c31acd..5c2b1e8a1 100644 --- a/pkg/action/list.go +++ b/pkg/action/list.go @@ -23,7 +23,7 @@ import ( "k8s.io/apimachinery/pkg/labels" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" ) // ListStates represents zero or more status codes that a list item may have set diff --git a/pkg/action/resource_policy.go b/pkg/action/resource_policy.go index f18acb880..b72e94124 100644 --- a/pkg/action/resource_policy.go +++ b/pkg/action/resource_policy.go @@ -20,7 +20,7 @@ import ( "strings" "helm.sh/helm/v4/pkg/kube" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" ) func filterManifestsToKeep(manifests []releaseutil.Manifest) (keep, remaining []releaseutil.Manifest) { diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index b786c37f7..6e71197f6 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -27,7 +27,7 @@ import ( chartutil "helm.sh/helm/v4/pkg/chart/util" "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index c5397c984..fa799ad2b 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -34,7 +34,7 @@ import ( "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/release" - "helm.sh/helm/v4/pkg/releaseutil" + releaseutil "helm.sh/helm/v4/pkg/release/util" "helm.sh/helm/v4/pkg/storage/driver" ) diff --git a/pkg/releaseutil/filter.go b/pkg/release/util/filter.go similarity index 96% rename from pkg/releaseutil/filter.go rename to pkg/release/util/filter.go index d600d43e8..e56752f86 100644 --- a/pkg/releaseutil/filter.go +++ b/pkg/release/util/filter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import rspb "helm.sh/helm/v4/pkg/release" diff --git a/pkg/releaseutil/filter_test.go b/pkg/release/util/filter_test.go similarity index 96% rename from pkg/releaseutil/filter_test.go rename to pkg/release/util/filter_test.go index 9fc5ce9b1..2037ef157 100644 --- a/pkg/releaseutil/filter_test.go +++ b/pkg/release/util/filter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import ( "testing" diff --git a/pkg/releaseutil/kind_sorter.go b/pkg/release/util/kind_sorter.go similarity index 99% rename from pkg/releaseutil/kind_sorter.go rename to pkg/release/util/kind_sorter.go index ec51d50d8..130b2c831 100644 --- a/pkg/releaseutil/kind_sorter.go +++ b/pkg/release/util/kind_sorter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "sort" diff --git a/pkg/releaseutil/kind_sorter_test.go b/pkg/release/util/kind_sorter_test.go similarity index 99% rename from pkg/releaseutil/kind_sorter_test.go rename to pkg/release/util/kind_sorter_test.go index f7745d64d..cd40fe459 100644 --- a/pkg/releaseutil/kind_sorter_test.go +++ b/pkg/release/util/kind_sorter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "bytes" diff --git a/pkg/releaseutil/manifest.go b/pkg/release/util/manifest.go similarity index 99% rename from pkg/releaseutil/manifest.go rename to pkg/release/util/manifest.go index 0b04a4599..9a87949f8 100644 --- a/pkg/releaseutil/manifest.go +++ b/pkg/release/util/manifest.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "fmt" diff --git a/pkg/releaseutil/manifest_sorter.go b/pkg/release/util/manifest_sorter.go similarity index 99% rename from pkg/releaseutil/manifest_sorter.go rename to pkg/release/util/manifest_sorter.go index 2d9a14bf1..a598743a6 100644 --- a/pkg/releaseutil/manifest_sorter.go +++ b/pkg/release/util/manifest_sorter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "log" diff --git a/pkg/releaseutil/manifest_sorter_test.go b/pkg/release/util/manifest_sorter_test.go similarity index 99% rename from pkg/releaseutil/manifest_sorter_test.go rename to pkg/release/util/manifest_sorter_test.go index 3bd196c12..281f24924 100644 --- a/pkg/releaseutil/manifest_sorter_test.go +++ b/pkg/release/util/manifest_sorter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil +package util import ( "reflect" diff --git a/pkg/releaseutil/manifest_test.go b/pkg/release/util/manifest_test.go similarity index 95% rename from pkg/releaseutil/manifest_test.go rename to pkg/release/util/manifest_test.go index 8e05b76dc..cfc19563d 100644 --- a/pkg/releaseutil/manifest_test.go +++ b/pkg/release/util/manifest_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import ( "reflect" diff --git a/pkg/releaseutil/sorter.go b/pkg/release/util/sorter.go similarity index 97% rename from pkg/releaseutil/sorter.go rename to pkg/release/util/sorter.go index a2135d68f..8b1c89aa3 100644 --- a/pkg/releaseutil/sorter.go +++ b/pkg/release/util/sorter.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import ( "sort" diff --git a/pkg/releaseutil/sorter_test.go b/pkg/release/util/sorter_test.go similarity index 97% rename from pkg/releaseutil/sorter_test.go rename to pkg/release/util/sorter_test.go index bef261ee8..6e92eef5c 100644 --- a/pkg/releaseutil/sorter_test.go +++ b/pkg/release/util/sorter_test.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package releaseutil // import "helm.sh/helm/v4/pkg/releaseutil" +package util // import "helm.sh/helm/v4/pkg/release/util" import ( "testing" diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index af339b85e..6a77cbae6 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" rspb "helm.sh/helm/v4/pkg/release" - relutil "helm.sh/helm/v4/pkg/releaseutil" + relutil "helm.sh/helm/v4/pkg/release/util" "helm.sh/helm/v4/pkg/storage/driver" ) From 17adaa437a1a5b1240bce8822694ac34ebd13786 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 22:21:24 +0000 Subject: [PATCH 196/206] build(deps): bump golang.org/x/crypto from 0.33.0 to 0.35.0 Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.33.0 to 0.35.0. - [Commits](https://github.com/golang/crypto/compare/v0.33.0...v0.35.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 4 ++-- go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index c84140350..0b2836b06 100644 --- a/go.mod +++ b/go.mod @@ -33,9 +33,10 @@ require ( github.com/spf13/pflag v1.0.6 github.com/stretchr/testify v1.10.0 github.com/xeipuuv/gojsonschema v1.2.0 - golang.org/x/crypto v0.33.0 + golang.org/x/crypto v0.35.0 golang.org/x/term v0.29.0 golang.org/x/text v0.22.0 + gopkg.in/yaml.v3 v3.0.1 k8s.io/api v0.32.2 k8s.io/apiextensions-apiserver v0.32.2 k8s.io/apimachinery v0.32.2 @@ -173,7 +174,6 @@ require ( gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/component-base v0.32.2 // indirect k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect diff --git a/go.sum b/go.sum index 995e14598..467cef72f 100644 --- a/go.sum +++ b/go.sum @@ -400,8 +400,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= -golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= -golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs= +golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= From 4da004e2dcd2e7e4e0f1512e05cbd19ad3025239 Mon Sep 17 00:00:00 2001 From: Robert Sirchia Date: Tue, 25 Feb 2025 15:15:06 -0500 Subject: [PATCH 197/206] removing old apis Signed-off-by: Robert Sirchia --- pkg/kube/ready.go | 11 ++++------- pkg/kube/ready_test.go | 10 ++++------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/pkg/kube/ready.go b/pkg/kube/ready.go index 584b8853a..dd5869e6a 100644 --- a/pkg/kube/ready.go +++ b/pkg/kube/ready.go @@ -21,11 +21,8 @@ import ( "fmt" appsv1 "k8s.io/api/apps/v1" - appsv1beta1 "k8s.io/api/apps/v1beta1" - appsv1beta2 "k8s.io/api/apps/v1beta2" batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" - extensionsv1beta1 "k8s.io/api/extensions/v1beta1" apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -105,7 +102,7 @@ func (c *ReadyChecker) IsReady(ctx context.Context, v *resource.Info) (bool, err ready, err := c.jobReady(job) return ready, err } - case *appsv1.Deployment, *appsv1beta1.Deployment, *appsv1beta2.Deployment, *extensionsv1beta1.Deployment: + case *appsv1.Deployment: currentDeployment, err := c.client.AppsV1().Deployments(v.Namespace).Get(ctx, v.Name, metav1.GetOptions{}) if err != nil { return false, err @@ -138,7 +135,7 @@ func (c *ReadyChecker) IsReady(ctx context.Context, v *resource.Info) (bool, err if !c.serviceReady(svc) { return false, nil } - case *extensionsv1beta1.DaemonSet, *appsv1.DaemonSet, *appsv1beta2.DaemonSet: + case *appsv1.DaemonSet: ds, err := c.client.AppsV1().DaemonSets(v.Namespace).Get(ctx, v.Name, metav1.GetOptions{}) if err != nil { return false, err @@ -168,7 +165,7 @@ func (c *ReadyChecker) IsReady(ctx context.Context, v *resource.Info) (bool, err if !c.crdReady(*crd) { return false, nil } - case *appsv1.StatefulSet, *appsv1beta1.StatefulSet, *appsv1beta2.StatefulSet: + case *appsv1.StatefulSet: sts, err := c.client.AppsV1().StatefulSets(v.Namespace).Get(ctx, v.Name, metav1.GetOptions{}) if err != nil { return false, err @@ -188,7 +185,7 @@ func (c *ReadyChecker) IsReady(ctx context.Context, v *resource.Info) (bool, err if !ready || err != nil { return false, err } - case *extensionsv1beta1.ReplicaSet, *appsv1beta2.ReplicaSet, *appsv1.ReplicaSet: + case *appsv1.ReplicaSet: rs, err := c.client.AppsV1().ReplicaSets(v.Namespace).Get(ctx, v.Name, metav1.GetOptions{}) if err != nil { return false, err diff --git a/pkg/kube/ready_test.go b/pkg/kube/ready_test.go index ced0a51a8..a8ba05287 100644 --- a/pkg/kube/ready_test.go +++ b/pkg/kube/ready_test.go @@ -20,10 +20,8 @@ import ( "testing" appsv1 "k8s.io/api/apps/v1" - appsv1beta1 "k8s.io/api/apps/v1beta1" batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" - extensionsv1beta1 "k8s.io/api/extensions/v1beta1" apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" apiextv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -523,7 +521,7 @@ func Test_ReadyChecker_IsReady_StatefulSet(t *testing.T) { }, args: args{ ctx: context.TODO(), - resource: &resource.Info{Object: &appsv1beta1.StatefulSet{}, Name: "foo", Namespace: defaultNamespace}, + resource: &resource.Info{Object: &appsv1.StatefulSet{}, Name: "foo", Namespace: defaultNamespace}, }, ss: newStatefulSet("foo", 1, 0, 0, 1, true), want: false, @@ -539,7 +537,7 @@ func Test_ReadyChecker_IsReady_StatefulSet(t *testing.T) { }, args: args{ ctx: context.TODO(), - resource: &resource.Info{Object: &appsv1beta1.StatefulSet{}, Name: "foo", Namespace: defaultNamespace}, + resource: &resource.Info{Object: &appsv1.StatefulSet{}, Name: "foo", Namespace: defaultNamespace}, }, ss: newStatefulSet("bar", 1, 0, 1, 1, true), want: false, @@ -689,7 +687,7 @@ func Test_ReadyChecker_IsReady_ReplicaSet(t *testing.T) { }, args: args{ ctx: context.TODO(), - resource: &resource.Info{Object: &extensionsv1beta1.ReplicaSet{}, Name: "foo", Namespace: defaultNamespace}, + resource: &resource.Info{Object: &appsv1.ReplicaSet{}, Name: "foo", Namespace: defaultNamespace}, }, rs: newReplicaSet("foo", 1, 1, true), want: false, @@ -705,7 +703,7 @@ func Test_ReadyChecker_IsReady_ReplicaSet(t *testing.T) { }, args: args{ ctx: context.TODO(), - resource: &resource.Info{Object: &extensionsv1beta1.ReplicaSet{}, Name: "foo", Namespace: defaultNamespace}, + resource: &resource.Info{Object: &appsv1.ReplicaSet{}, Name: "foo", Namespace: defaultNamespace}, }, rs: newReplicaSet("bar", 1, 1, false), want: false, From 61d3eca55c1c7142c3e344537bf3a7a5be4ca0db Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Tue, 25 Feb 2025 15:20:44 -0500 Subject: [PATCH 198/206] Move pkg/chart to pkg/chart/v2 to prepare for v3 charts This change moves the code, updates the import locations, and adds a doc.go file to document what the v2 package is for. This is part of HIP 20 for v3 charts Signed-off-by: Matt Farina --- Makefile | 4 +-- cmd/helm/completion_test.go | 2 +- cmd/helm/create.go | 4 +-- cmd/helm/create_test.go | 6 ++--- cmd/helm/dependency_build_test.go | 2 +- cmd/helm/dependency_update_test.go | 4 +-- cmd/helm/flags_test.go | 2 +- cmd/helm/helm_test.go | 2 +- cmd/helm/history.go | 2 +- cmd/helm/install.go | 4 +-- cmd/helm/lint.go | 2 +- cmd/helm/list_test.go | 2 +- cmd/helm/package_test.go | 4 +-- cmd/helm/rollback_test.go | 2 +- cmd/helm/search/search_test.go | 2 +- cmd/helm/status.go | 2 +- cmd/helm/status_test.go | 2 +- cmd/helm/template.go | 2 +- cmd/helm/upgrade.go | 2 +- cmd/helm/upgrade_test.go | 6 ++--- internal/monocular/search.go | 2 +- internal/resolver/resolver.go | 4 +-- internal/resolver/resolver_test.go | 2 +- pkg/action/action.go | 4 +-- pkg/action/action_test.go | 4 +-- pkg/action/dependency.go | 4 +-- pkg/action/dependency_test.go | 4 +-- pkg/action/get_metadata.go | 2 +- pkg/action/get_values.go | 2 +- pkg/action/history.go | 2 +- pkg/action/hooks_test.go | 2 +- pkg/action/install.go | 4 +-- pkg/action/install_test.go | 4 +-- pkg/action/lint.go | 2 +- pkg/action/package.go | 4 +-- pkg/action/pull.go | 2 +- pkg/action/release_testing.go | 2 +- pkg/action/rollback.go | 2 +- pkg/action/show.go | 6 ++--- pkg/action/show_test.go | 2 +- pkg/action/uninstall.go | 2 +- pkg/action/upgrade.go | 4 +-- pkg/action/upgrade_test.go | 2 +- pkg/chart/{ => v2}/chart.go | 2 +- pkg/chart/{ => v2}/chart_test.go | 2 +- pkg/chart/{ => v2}/dependency.go | 2 +- pkg/chart/{ => v2}/dependency_test.go | 2 +- pkg/chart/v2/doc.go | 23 ++++++++++++++++++ pkg/chart/{ => v2}/errors.go | 2 +- pkg/chart/{ => v2}/file.go | 2 +- pkg/chart/{ => v2}/fuzz_test.go | 2 +- pkg/chart/{ => v2}/loader/archive.go | 2 +- pkg/chart/{ => v2}/loader/archive_test.go | 0 pkg/chart/{ => v2}/loader/directory.go | 2 +- pkg/chart/{ => v2}/loader/load.go | 2 +- pkg/chart/{ => v2}/loader/load_test.go | 2 +- pkg/chart/{ => v2}/loader/testdata/LICENSE | 0 .../loader/testdata/albatross/Chart.yaml | 0 .../loader/testdata/albatross/values.yaml | 0 .../loader/testdata/frobnitz-1.2.3.tgz | Bin .../{ => v2}/loader/testdata/frobnitz.v1.tgz | Bin .../loader/testdata/frobnitz.v1/.helmignore | 0 .../loader/testdata/frobnitz.v1/Chart.lock | 0 .../loader/testdata/frobnitz.v1/Chart.yaml | 0 .../loader/testdata/frobnitz.v1/INSTALL.txt | 0 .../loader/testdata/frobnitz.v1/LICENSE | 0 .../loader/testdata/frobnitz.v1/README.md | 0 .../testdata/frobnitz.v1/charts/_ignore_me | 0 .../frobnitz.v1/charts/alpine/Chart.yaml | 0 .../frobnitz.v1/charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../frobnitz.v1/charts/alpine/values.yaml | 0 .../frobnitz.v1/charts/mariner-4.3.2.tgz | Bin .../testdata/frobnitz.v1/docs/README.md | 0 .../loader/testdata/frobnitz.v1/icon.svg | 0 .../loader/testdata/frobnitz.v1/ignore/me.txt | 0 .../testdata/frobnitz.v1/requirements.yaml | 0 .../frobnitz.v1/templates/template.tpl | 0 .../loader/testdata/frobnitz.v1/values.yaml | 0 .../testdata/frobnitz.v2.reqs/.helmignore | 0 .../testdata/frobnitz.v2.reqs/Chart.yaml | 0 .../testdata/frobnitz.v2.reqs/INSTALL.txt | 0 .../loader/testdata/frobnitz.v2.reqs/LICENSE | 0 .../testdata/frobnitz.v2.reqs/README.md | 0 .../frobnitz.v2.reqs/charts/_ignore_me | 0 .../frobnitz.v2.reqs/charts/alpine/Chart.yaml | 0 .../frobnitz.v2.reqs/charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../frobnitz.v2.reqs/charts/mariner-4.3.2.tgz | Bin .../testdata/frobnitz.v2.reqs/docs/README.md | 0 .../loader/testdata/frobnitz.v2.reqs/icon.svg | 0 .../testdata/frobnitz.v2.reqs/ignore/me.txt | 0 .../frobnitz.v2.reqs/requirements.yaml | 0 .../frobnitz.v2.reqs/templates/template.tpl | 0 .../testdata/frobnitz.v2.reqs/values.yaml | 0 .../loader/testdata/frobnitz/.helmignore | 0 .../loader/testdata/frobnitz/Chart.lock | 0 .../loader/testdata/frobnitz/Chart.yaml | 0 .../loader/testdata/frobnitz/INSTALL.txt | 0 .../{ => v2}/loader/testdata/frobnitz/LICENSE | 0 .../loader/testdata/frobnitz/README.md | 0 .../testdata/frobnitz/charts/_ignore_me | 0 .../frobnitz/charts/alpine/Chart.yaml | 0 .../testdata/frobnitz/charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../frobnitz/charts/alpine/values.yaml | 0 .../frobnitz/charts/mariner-4.3.2.tgz | Bin .../loader/testdata/frobnitz/docs/README.md | 0 .../loader/testdata/frobnitz/icon.svg | 0 .../loader/testdata/frobnitz/ignore/me.txt | 0 .../testdata/frobnitz/templates/template.tpl | 0 .../loader/testdata/frobnitz/values.yaml | 0 .../testdata/frobnitz_backslash-1.2.3.tgz | Bin .../testdata/frobnitz_backslash/.helmignore | 0 .../testdata/frobnitz_backslash/Chart.lock | 0 .../testdata/frobnitz_backslash/Chart.yaml | 0 .../testdata/frobnitz_backslash/INSTALL.txt | 0 .../testdata/frobnitz_backslash/LICENSE | 0 .../testdata/frobnitz_backslash/README.md | 0 .../frobnitz_backslash/charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../frobnitz_backslash/docs/README.md | 0 .../testdata/frobnitz_backslash/icon.svg | 0 .../testdata/frobnitz_backslash/ignore/me.txt | 0 .../frobnitz_backslash/templates/template.tpl | 0 .../testdata/frobnitz_backslash/values.yaml | 0 .../loader/testdata/frobnitz_with_bom.tgz | Bin .../testdata/frobnitz_with_bom/.helmignore | 0 .../testdata/frobnitz_with_bom/Chart.lock | 0 .../testdata/frobnitz_with_bom/Chart.yaml | 0 .../testdata/frobnitz_with_bom/INSTALL.txt | 0 .../loader/testdata/frobnitz_with_bom/LICENSE | 0 .../testdata/frobnitz_with_bom/README.md | 0 .../frobnitz_with_bom/charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../frobnitz_with_bom/charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../testdata/frobnitz_with_bom/docs/README.md | 0 .../testdata/frobnitz_with_bom/icon.svg | 0 .../testdata/frobnitz_with_bom/ignore/me.txt | 0 .../frobnitz_with_bom/templates/template.tpl | 0 .../testdata/frobnitz_with_bom/values.yaml | 0 .../frobnitz_with_dev_null/.helmignore | 0 .../frobnitz_with_dev_null/Chart.lock | 0 .../frobnitz_with_dev_null/Chart.yaml | 0 .../frobnitz_with_dev_null/INSTALL.txt | 0 .../testdata/frobnitz_with_dev_null/LICENSE | 0 .../testdata/frobnitz_with_dev_null/README.md | 0 .../frobnitz_with_dev_null/charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../frobnitz_with_dev_null/docs/README.md | 0 .../testdata/frobnitz_with_dev_null/icon.svg | 0 .../frobnitz_with_dev_null/ignore/me.txt | 0 .../testdata/frobnitz_with_dev_null/null | 0 .../templates/template.tpl | 0 .../frobnitz_with_dev_null/values.yaml | 0 .../frobnitz_with_symlink/.helmignore | 0 .../testdata/frobnitz_with_symlink/Chart.lock | 0 .../testdata/frobnitz_with_symlink/Chart.yaml | 0 .../frobnitz_with_symlink/INSTALL.txt | 0 .../testdata/frobnitz_with_symlink/README.md | 0 .../frobnitz_with_symlink/charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../frobnitz_with_symlink/docs/README.md | 0 .../testdata/frobnitz_with_symlink/icon.svg | 0 .../frobnitz_with_symlink/ignore/me.txt | 0 .../templates/template.tpl | 0 .../frobnitz_with_symlink/values.yaml | 0 pkg/chart/{ => v2}/loader/testdata/genfrob.sh | 0 .../loader/testdata/mariner/Chart.yaml | 0 .../mariner/charts/albatross-0.1.0.tgz | Bin .../mariner/templates/placeholder.tpl | 0 .../loader/testdata/mariner/values.yaml | 0 pkg/chart/{ => v2}/metadata.go | 2 +- pkg/chart/{ => v2}/metadata_test.go | 2 +- pkg/chart/{ => v2}/util/capabilities.go | 0 pkg/chart/{ => v2}/util/capabilities_test.go | 0 pkg/chart/{ => v2}/util/chartfile.go | 2 +- pkg/chart/{ => v2}/util/chartfile_test.go | 2 +- pkg/chart/{ => v2}/util/coalesce.go | 2 +- pkg/chart/{ => v2}/util/coalesce_test.go | 2 +- pkg/chart/{ => v2}/util/compatible.go | 0 pkg/chart/{ => v2}/util/compatible_test.go | 0 pkg/chart/{ => v2}/util/create.go | 4 +-- pkg/chart/{ => v2}/util/create_test.go | 4 +-- pkg/chart/{ => v2}/util/dependencies.go | 2 +- pkg/chart/{ => v2}/util/dependencies_test.go | 4 +-- pkg/chart/{ => v2}/util/doc.go | 2 +- pkg/chart/{ => v2}/util/errors.go | 0 pkg/chart/{ => v2}/util/errors_test.go | 0 pkg/chart/{ => v2}/util/expand.go | 4 +-- pkg/chart/{ => v2}/util/expand_test.go | 0 pkg/chart/{ => v2}/util/jsonschema.go | 2 +- pkg/chart/{ => v2}/util/jsonschema_test.go | 2 +- pkg/chart/{ => v2}/util/save.go | 2 +- pkg/chart/{ => v2}/util/save_test.go | 4 +-- .../{ => v2}/util/testdata/chartfiletest.yaml | 0 .../{ => v2}/util/testdata/coleridge.yaml | 0 .../dependent-chart-alias/.helmignore | 0 .../testdata/dependent-chart-alias/Chart.lock | 0 .../testdata/dependent-chart-alias/Chart.yaml | 0 .../dependent-chart-alias/INSTALL.txt | 0 .../testdata/dependent-chart-alias/LICENSE | 0 .../testdata/dependent-chart-alias/README.md | 0 .../dependent-chart-alias/charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../dependent-chart-alias/docs/README.md | 0 .../testdata/dependent-chart-alias/icon.svg | 0 .../dependent-chart-alias/ignore/me.txt | 0 .../templates/template.tpl | 0 .../dependent-chart-alias/values.yaml | 0 .../dependent-chart-helmignore/.helmignore | 0 .../dependent-chart-helmignore/Chart.yaml | 0 .../charts/.ignore_me | 0 .../charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../templates/template.tpl | 0 .../dependent-chart-helmignore/values.yaml | 0 .../.helmignore | 0 .../Chart.yaml | 0 .../INSTALL.txt | 0 .../LICENSE | 0 .../README.md | 0 .../charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../docs/README.md | 0 .../icon.svg | 0 .../ignore/me.txt | 0 .../templates/template.tpl | 0 .../values.yaml | 0 .../.helmignore | 0 .../Chart.yaml | 0 .../INSTALL.txt | 0 .../LICENSE | 0 .../README.md | 0 .../charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../docs/README.md | 0 .../icon.svg | 0 .../ignore/me.txt | 0 .../templates/template.tpl | 0 .../values.yaml | 0 .../.helmignore | 0 .../Chart.yaml | 0 .../INSTALL.txt | 0 .../LICENSE | 0 .../README.md | 0 .../charts/_ignore_me | 0 .../charts/alpine/Chart.yaml | 0 .../charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../charts/alpine/values.yaml | 0 .../charts/mariner-4.3.2.tgz | Bin .../docs/README.md | 0 .../icon.svg | 0 .../ignore/me.txt | 0 .../templates/template.tpl | 0 .../values.yaml | 0 .../{ => v2}/util/testdata/frobnitz-1.2.3.tgz | Bin .../util/testdata/frobnitz/.helmignore | 0 .../util/testdata/frobnitz/Chart.lock | 0 .../util/testdata/frobnitz/Chart.yaml | 0 .../util/testdata/frobnitz/INSTALL.txt | 0 .../{ => v2}/util/testdata/frobnitz/LICENSE | 0 .../{ => v2}/util/testdata/frobnitz/README.md | 0 .../util/testdata/frobnitz/charts/_ignore_me | 0 .../frobnitz/charts/alpine/Chart.yaml | 0 .../testdata/frobnitz/charts/alpine/README.md | 0 .../charts/alpine/charts/mast1/Chart.yaml | 0 .../charts/alpine/charts/mast1/values.yaml | 0 .../charts/alpine/charts/mast2-0.1.0.tgz | Bin .../charts/alpine/templates/alpine-pod.yaml | 0 .../frobnitz/charts/alpine/values.yaml | 0 .../frobnitz/charts/mariner/Chart.yaml | 0 .../mariner/charts/albatross/Chart.yaml | 0 .../mariner/charts/albatross/values.yaml | 0 .../charts/mariner/templates/placeholder.tpl | 0 .../frobnitz/charts/mariner/values.yaml | 0 .../util/testdata/frobnitz/docs/README.md | 0 .../{ => v2}/util/testdata/frobnitz/icon.svg | 0 .../util/testdata/frobnitz/ignore/me.txt | 0 .../testdata/frobnitz/templates/template.tpl | 0 .../util/testdata/frobnitz/values.yaml | 0 .../testdata/frobnitz_backslash-1.2.3.tgz | Bin pkg/chart/{ => v2}/util/testdata/genfrob.sh | 0 .../parent-chart/Chart.lock | 0 .../parent-chart/Chart.yaml | 0 .../parent-chart/charts/dev-v0.1.0.tgz | Bin .../parent-chart/charts/prod-v0.1.0.tgz | Bin .../parent-chart/envs/dev/Chart.yaml | 0 .../parent-chart/envs/dev/values.yaml | 0 .../parent-chart/envs/prod/Chart.yaml | 0 .../parent-chart/envs/prod/values.yaml | 0 .../parent-chart/templates/autoscaler.yaml | 0 .../parent-chart/values.yaml | 0 .../{ => v2}/util/testdata/joonix/Chart.yaml | 0 .../util/testdata/joonix/charts/.gitkeep | 0 .../{ => v2}/util/testdata/subpop/Chart.yaml | 0 .../{ => v2}/util/testdata/subpop/README.md | 0 .../subpop/charts/subchart1/Chart.yaml | 0 .../subchart1/charts/subchartA/Chart.yaml | 0 .../charts/subchartA/templates/service.yaml | 0 .../subchart1/charts/subchartA/values.yaml | 0 .../subchart1/charts/subchartB/Chart.yaml | 0 .../charts/subchartB/templates/service.yaml | 0 .../subchart1/charts/subchartB/values.yaml | 0 .../subpop/charts/subchart1/crds/crdA.yaml | 0 .../charts/subchart1/templates/NOTES.txt | 0 .../charts/subchart1/templates/service.yaml | 0 .../subchart1/templates/subdir/role.yaml | 0 .../templates/subdir/rolebinding.yaml | 0 .../templates/subdir/serviceaccount.yaml | 0 .../subpop/charts/subchart1/values.yaml | 0 .../subpop/charts/subchart2/Chart.yaml | 0 .../subchart2/charts/subchartB/Chart.yaml | 0 .../charts/subchartB/templates/service.yaml | 0 .../subchart2/charts/subchartB/values.yaml | 0 .../subchart2/charts/subchartC/Chart.yaml | 0 .../charts/subchartC/templates/service.yaml | 0 .../subchart2/charts/subchartC/values.yaml | 0 .../charts/subchart2/templates/service.yaml | 0 .../subpop/charts/subchart2/values.yaml | 0 .../util/testdata/subpop/noreqs/Chart.yaml | 0 .../subpop/noreqs/templates/service.yaml | 0 .../util/testdata/subpop/noreqs/values.yaml | 0 .../{ => v2}/util/testdata/subpop/values.yaml | 0 .../testdata/test-values-invalid.schema.json | 0 .../util/testdata/test-values-negative.yaml | 0 .../util/testdata/test-values.schema.json | 0 .../{ => v2}/util/testdata/test-values.yaml | 0 .../three-level-dependent-chart/README.md | 0 .../umbrella/Chart.yaml | 0 .../umbrella/charts/app1/Chart.yaml | 0 .../charts/app1/charts/library/Chart.yaml | 0 .../charts/library/templates/service.yaml | 0 .../charts/app1/charts/library/values.yaml | 0 .../charts/app1/templates/service.yaml | 0 .../umbrella/charts/app1/values.yaml | 0 .../umbrella/charts/app2/Chart.yaml | 0 .../charts/app2/charts/library/Chart.yaml | 0 .../charts/library/templates/service.yaml | 0 .../charts/app2/charts/library/values.yaml | 0 .../charts/app2/templates/service.yaml | 0 .../umbrella/charts/app2/values.yaml | 0 .../umbrella/charts/app3/Chart.yaml | 0 .../charts/app3/charts/library/Chart.yaml | 0 .../charts/library/templates/service.yaml | 0 .../charts/app3/charts/library/values.yaml | 0 .../charts/app3/templates/service.yaml | 0 .../umbrella/charts/app3/values.yaml | 0 .../umbrella/charts/app4/Chart.yaml | 0 .../charts/app4/charts/library/Chart.yaml | 0 .../charts/library/templates/service.yaml | 0 .../charts/app4/charts/library/values.yaml | 0 .../charts/app4/templates/service.yaml | 0 .../umbrella/charts/app4/values.yaml | 0 .../umbrella/values.yaml | 0 pkg/chart/{ => v2}/util/validate_name.go | 0 pkg/chart/{ => v2}/util/validate_name_test.go | 0 pkg/chart/{ => v2}/util/values.go | 2 +- pkg/chart/{ => v2}/util/values_test.go | 2 +- pkg/cli/values/options.go | 2 +- pkg/downloader/manager.go | 6 ++--- pkg/downloader/manager_test.go | 6 ++--- pkg/engine/engine.go | 4 +-- pkg/engine/engine_test.go | 4 +-- pkg/engine/files.go | 2 +- pkg/lint/lint.go | 2 +- pkg/lint/lint_test.go | 2 +- pkg/lint/rules/chartfile.go | 4 +-- pkg/lint/rules/chartfile_test.go | 4 +-- pkg/lint/rules/dependencies.go | 4 +-- pkg/lint/rules/dependencies_test.go | 4 +-- pkg/lint/rules/deprecations.go | 2 +- pkg/lint/rules/template.go | 4 +-- pkg/lint/rules/template_test.go | 4 +-- pkg/lint/rules/values.go | 2 +- pkg/provenance/sign.go | 4 +-- pkg/pusher/ocipusher.go | 2 +- pkg/registry/client.go | 2 +- pkg/registry/util.go | 4 +-- pkg/registry/util_test.go | 2 +- pkg/release/mock.go | 2 +- pkg/release/release.go | 4 ++- pkg/release/util/manifest_sorter.go | 2 +- pkg/repo/chartrepo.go | 2 +- pkg/repo/chartrepo_test.go | 2 +- pkg/repo/index.go | 4 +-- pkg/repo/index_test.go | 2 +- pkg/repo/repotest/server.go | 6 ++--- 456 files changed, 168 insertions(+), 143 deletions(-) rename pkg/chart/{ => v2}/chart.go (99%) rename pkg/chart/{ => v2}/chart_test.go (99%) rename pkg/chart/{ => v2}/dependency.go (99%) rename pkg/chart/{ => v2}/dependency_test.go (98%) create mode 100644 pkg/chart/v2/doc.go rename pkg/chart/{ => v2}/errors.go (98%) rename pkg/chart/{ => v2}/file.go (98%) rename pkg/chart/{ => v2}/fuzz_test.go (98%) rename pkg/chart/{ => v2}/loader/archive.go (99%) rename pkg/chart/{ => v2}/loader/archive_test.go (100%) rename pkg/chart/{ => v2}/loader/directory.go (98%) rename pkg/chart/{ => v2}/loader/load.go (99%) rename pkg/chart/{ => v2}/loader/load_test.go (99%) rename pkg/chart/{ => v2}/loader/testdata/LICENSE (100%) rename pkg/chart/{ => v2}/loader/testdata/albatross/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/albatross/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz-1.2.3.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/.helmignore (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/Chart.lock (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/INSTALL.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/LICENSE (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/docs/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/icon.svg (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/ignore/me.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/requirements.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/templates/template.tpl (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v1/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/.helmignore (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/INSTALL.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/LICENSE (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/docs/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/icon.svg (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/ignore/me.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/requirements.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/templates/template.tpl (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz.v2.reqs/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/.helmignore (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/Chart.lock (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/INSTALL.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/LICENSE (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/docs/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/icon.svg (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/ignore/me.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/templates/template.tpl (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash-1.2.3.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/.helmignore (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/Chart.lock (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/INSTALL.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/LICENSE (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/docs/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/icon.svg (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/ignore/me.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/templates/template.tpl (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_backslash/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/.helmignore (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/Chart.lock (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/INSTALL.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/LICENSE (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/docs/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/icon.svg (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/ignore/me.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/templates/template.tpl (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_bom/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/.helmignore (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/Chart.lock (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/INSTALL.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/LICENSE (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/docs/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/icon.svg (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/ignore/me.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/null (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/templates/template.tpl (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_dev_null/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/.helmignore (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/Chart.lock (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/INSTALL.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/docs/README.md (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/icon.svg (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/ignore/me.txt (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/templates/template.tpl (100%) rename pkg/chart/{ => v2}/loader/testdata/frobnitz_with_symlink/values.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/genfrob.sh (100%) rename pkg/chart/{ => v2}/loader/testdata/mariner/Chart.yaml (100%) rename pkg/chart/{ => v2}/loader/testdata/mariner/charts/albatross-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/loader/testdata/mariner/templates/placeholder.tpl (100%) rename pkg/chart/{ => v2}/loader/testdata/mariner/values.yaml (100%) rename pkg/chart/{ => v2}/metadata.go (99%) rename pkg/chart/{ => v2}/metadata_test.go (99%) rename pkg/chart/{ => v2}/util/capabilities.go (100%) rename pkg/chart/{ => v2}/util/capabilities_test.go (100%) rename pkg/chart/{ => v2}/util/chartfile.go (98%) rename pkg/chart/{ => v2}/util/chartfile_test.go (98%) rename pkg/chart/{ => v2}/util/coalesce.go (99%) rename pkg/chart/{ => v2}/util/coalesce_test.go (99%) rename pkg/chart/{ => v2}/util/compatible.go (100%) rename pkg/chart/{ => v2}/util/compatible_test.go (100%) rename pkg/chart/{ => v2}/util/create.go (99%) rename pkg/chart/{ => v2}/util/create_test.go (98%) rename pkg/chart/{ => v2}/util/dependencies.go (99%) rename pkg/chart/{ => v2}/util/dependencies_test.go (99%) rename pkg/chart/{ => v2}/util/doc.go (95%) rename pkg/chart/{ => v2}/util/errors.go (100%) rename pkg/chart/{ => v2}/util/errors_test.go (100%) rename pkg/chart/{ => v2}/util/expand.go (96%) rename pkg/chart/{ => v2}/util/expand_test.go (100%) rename pkg/chart/{ => v2}/util/jsonschema.go (98%) rename pkg/chart/{ => v2}/util/jsonschema_test.go (99%) rename pkg/chart/{ => v2}/util/save.go (99%) rename pkg/chart/{ => v2}/util/save_test.go (98%) rename pkg/chart/{ => v2}/util/testdata/chartfiletest.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/coleridge.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/.helmignore (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/Chart.lock (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/INSTALL.txt (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/LICENSE (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/docs/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/icon.svg (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/ignore/me.txt (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/templates/template.tpl (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-alias/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/.helmignore (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/.ignore_me (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/templates/template.tpl (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-helmignore/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/.helmignore (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/LICENSE (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/docs/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/icon.svg (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-no-requirements-yaml/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl (100%) rename pkg/chart/{ => v2}/util/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz-1.2.3.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/.helmignore (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/Chart.lock (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/INSTALL.txt (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/LICENSE (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/_ignore_me (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/alpine/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/alpine/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/alpine/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/mariner/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/mariner/templates/placeholder.tpl (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/charts/mariner/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/docs/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/icon.svg (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/ignore/me.txt (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/templates/template.tpl (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/frobnitz_backslash-1.2.3.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/genfrob.sh (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/joonix/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/joonix/charts/.gitkeep (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/crds/crdA.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/templates/NOTES.txt (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/templates/subdir/role.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart1/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/charts/subchart2/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/noreqs/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/noreqs/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/noreqs/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/subpop/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/test-values-invalid.schema.json (100%) rename pkg/chart/{ => v2}/util/testdata/test-values-negative.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/test-values.schema.json (100%) rename pkg/chart/{ => v2}/util/testdata/test-values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/README.md (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml (100%) rename pkg/chart/{ => v2}/util/testdata/three-level-dependent-chart/umbrella/values.yaml (100%) rename pkg/chart/{ => v2}/util/validate_name.go (100%) rename pkg/chart/{ => v2}/util/validate_name_test.go (100%) rename pkg/chart/{ => v2}/util/values.go (99%) rename pkg/chart/{ => v2}/util/values_test.go (99%) diff --git a/Makefile b/Makefile index d2c82b033..21144cf5a 100644 --- a/Makefile +++ b/Makefile @@ -65,8 +65,8 @@ K8S_MODULES_MINOR_VER=$(word 2,$(K8S_MODULES_VER)) LDFLAGS += -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) LDFLAGS += -X helm.sh/helm/v4/pkg/lint/rules.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) -LDFLAGS += -X helm.sh/helm/v4/pkg/chart/util.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) -LDFLAGS += -X helm.sh/helm/v4/pkg/chart/util.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/chart/v2/util.k8sVersionMajor=$(K8S_MODULES_MAJOR_VER) +LDFLAGS += -X helm.sh/helm/v4/pkg/chart/v2/util.k8sVersionMinor=$(K8S_MODULES_MINOR_VER) .PHONY: all all: build diff --git a/cmd/helm/completion_test.go b/cmd/helm/completion_test.go index 4dd427232..3d8383519 100644 --- a/cmd/helm/completion_test.go +++ b/cmd/helm/completion_test.go @@ -21,7 +21,7 @@ import ( "strings" "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/release" ) diff --git a/cmd/helm/create.go b/cmd/helm/create.go index a18f2c915..11c208231 100644 --- a/cmd/helm/create.go +++ b/cmd/helm/create.go @@ -24,8 +24,8 @@ import ( "github.com/spf13/cobra" "helm.sh/helm/v4/cmd/helm/require" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/helmpath" ) diff --git a/cmd/helm/create_test.go b/cmd/helm/create_test.go index 76fce804c..a8361329e 100644 --- a/cmd/helm/create_test.go +++ b/cmd/helm/create_test.go @@ -23,9 +23,9 @@ import ( "testing" "helm.sh/helm/v4/internal/test/ensure" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/helmpath" ) diff --git a/cmd/helm/dependency_build_test.go b/cmd/helm/dependency_build_test.go index 76c01d911..022621fe4 100644 --- a/cmd/helm/dependency_build_test.go +++ b/cmd/helm/dependency_build_test.go @@ -22,7 +22,7 @@ import ( "strings" "testing" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/provenance" "helm.sh/helm/v4/pkg/repo" "helm.sh/helm/v4/pkg/repo/repotest" diff --git a/cmd/helm/dependency_update_test.go b/cmd/helm/dependency_update_test.go index 0732ba7b5..855675f78 100644 --- a/cmd/helm/dependency_update_test.go +++ b/cmd/helm/dependency_update_test.go @@ -23,8 +23,8 @@ import ( "testing" "helm.sh/helm/v4/internal/test/ensure" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/helmpath" "helm.sh/helm/v4/pkg/provenance" "helm.sh/helm/v4/pkg/repo" diff --git a/cmd/helm/flags_test.go b/cmd/helm/flags_test.go index 295f55022..3a9d7e6ef 100644 --- a/cmd/helm/flags_test.go +++ b/cmd/helm/flags_test.go @@ -20,7 +20,7 @@ import ( "fmt" "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/release" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go index e7a05aecf..cfffa6dc7 100644 --- a/cmd/helm/helm_test.go +++ b/cmd/helm/helm_test.go @@ -30,7 +30,7 @@ import ( "helm.sh/helm/v4/internal/test" "helm.sh/helm/v4/pkg/action" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/cli" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/release" diff --git a/cmd/helm/history.go b/cmd/helm/history.go index 2c929c161..a47f97688 100644 --- a/cmd/helm/history.go +++ b/cmd/helm/history.go @@ -27,7 +27,7 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/release" releaseutil "helm.sh/helm/v4/pkg/release/util" diff --git a/cmd/helm/install.go b/cmd/helm/install.go index fe09dfc53..12f87cd20 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -32,8 +32,8 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/cli/values" "helm.sh/helm/v4/pkg/downloader" diff --git a/cmd/helm/lint.go b/cmd/helm/lint.go index 3e37922b2..279c5d34a 100644 --- a/cmd/helm/lint.go +++ b/cmd/helm/lint.go @@ -27,7 +27,7 @@ import ( "github.com/spf13/cobra" "helm.sh/helm/v4/pkg/action" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/cli/values" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/lint/support" diff --git a/cmd/helm/list_test.go b/cmd/helm/list_test.go index 01b6d7490..6a462ee28 100644 --- a/cmd/helm/list_test.go +++ b/cmd/helm/list_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/package_test.go b/cmd/helm/package_test.go index 107928765..b86bae294 100644 --- a/cmd/helm/package_test.go +++ b/cmd/helm/package_test.go @@ -23,8 +23,8 @@ import ( "strings" "testing" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" ) func TestPackage(t *testing.T) { diff --git a/cmd/helm/rollback_test.go b/cmd/helm/rollback_test.go index a94327e07..88dbf6524 100644 --- a/cmd/helm/rollback_test.go +++ b/cmd/helm/rollback_test.go @@ -21,7 +21,7 @@ import ( "reflect" "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/release" ) diff --git a/cmd/helm/search/search_test.go b/cmd/helm/search/search_test.go index 175491b36..7a4ba786b 100644 --- a/cmd/helm/search/search_test.go +++ b/cmd/helm/search/search_test.go @@ -20,7 +20,7 @@ import ( "strings" "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/repo" ) diff --git a/cmd/helm/status.go b/cmd/helm/status.go index fd3e4ce14..727c3df9e 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -30,7 +30,7 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/release" ) diff --git a/cmd/helm/status_test.go b/cmd/helm/status_test.go index 1973fe068..7e51849b1 100644 --- a/cmd/helm/status_test.go +++ b/cmd/helm/status_test.go @@ -20,7 +20,7 @@ import ( "testing" "time" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/release" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/template.go b/cmd/helm/template.go index 212664dc8..c41373337 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -34,7 +34,7 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/cli/values" releaseutil "helm.sh/helm/v4/pkg/release/util" ) diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 6684f9ebf..7d6cb33ec 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -31,7 +31,7 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" - "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/cli/output" "helm.sh/helm/v4/pkg/cli/values" "helm.sh/helm/v4/pkg/downloader" diff --git a/cmd/helm/upgrade_test.go b/cmd/helm/upgrade_test.go index f97a4a26b..595ca9fc2 100644 --- a/cmd/helm/upgrade_test.go +++ b/cmd/helm/upgrade_test.go @@ -24,9 +24,9 @@ import ( "strings" "testing" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/release" ) diff --git a/internal/monocular/search.go b/internal/monocular/search.go index d6d454653..6912be2ce 100644 --- a/internal/monocular/search.go +++ b/internal/monocular/search.go @@ -25,7 +25,7 @@ import ( "time" "helm.sh/helm/v4/internal/version" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // SearchPath is the url path to the search API in monocular. diff --git a/internal/resolver/resolver.go b/internal/resolver/resolver.go index 74348176d..42c9de3b7 100644 --- a/internal/resolver/resolver.go +++ b/internal/resolver/resolver.go @@ -27,8 +27,8 @@ import ( "github.com/Masterminds/semver/v3" "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/helmpath" "helm.sh/helm/v4/pkg/provenance" "helm.sh/helm/v4/pkg/registry" diff --git a/internal/resolver/resolver_test.go b/internal/resolver/resolver_test.go index f7ea06fdf..1e33837a9 100644 --- a/internal/resolver/resolver_test.go +++ b/internal/resolver/resolver_test.go @@ -19,7 +19,7 @@ import ( "runtime" "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/registry" ) diff --git a/pkg/action/action.go b/pkg/action/action.go index eeaebc15f..d91ccab51 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -33,8 +33,8 @@ import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/engine" "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/postrender" diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index aa5d589f8..4c78ef6c1 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -24,8 +24,8 @@ import ( "github.com/stretchr/testify/assert" fakeclientset "k8s.io/client-go/kubernetes/fake" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/release" diff --git a/pkg/action/dependency.go b/pkg/action/dependency.go index e0ff56cce..03c370c8e 100644 --- a/pkg/action/dependency.go +++ b/pkg/action/dependency.go @@ -26,8 +26,8 @@ import ( "github.com/Masterminds/semver/v3" "github.com/gosuri/uitable" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" ) // Dependency is the action for building a given chart's dependency tree. diff --git a/pkg/action/dependency_test.go b/pkg/action/dependency_test.go index 38f2668ae..5be7bf5a9 100644 --- a/pkg/action/dependency_test.go +++ b/pkg/action/dependency_test.go @@ -25,8 +25,8 @@ import ( "github.com/stretchr/testify/assert" "helm.sh/helm/v4/internal/test" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" ) func TestList(t *testing.T) { diff --git a/pkg/action/get_metadata.go b/pkg/action/get_metadata.go index 190e9ccb9..e760ae4d1 100644 --- a/pkg/action/get_metadata.go +++ b/pkg/action/get_metadata.go @@ -21,7 +21,7 @@ import ( "strings" "time" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // GetMetadata is the action for checking a given release's metadata. diff --git a/pkg/action/get_values.go b/pkg/action/get_values.go index 21253b7aa..18b8b4838 100644 --- a/pkg/action/get_values.go +++ b/pkg/action/get_values.go @@ -17,7 +17,7 @@ limitations under the License. package action import ( - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" ) // GetValues is the action for checking a given release's values. diff --git a/pkg/action/history.go b/pkg/action/history.go index 1c5cfa86f..e5ac16bfe 100644 --- a/pkg/action/history.go +++ b/pkg/action/history.go @@ -19,7 +19,7 @@ package action import ( "github.com/pkg/errors" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/release" ) diff --git a/pkg/action/hooks_test.go b/pkg/action/hooks_test.go index 0f4a9be34..b39ffe022 100644 --- a/pkg/action/hooks_test.go +++ b/pkg/action/hooks_test.go @@ -24,7 +24,7 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/release" ) diff --git a/pkg/action/install.go b/pkg/action/install.go index 68c1848f6..ad260c361 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -39,8 +39,8 @@ import ( "k8s.io/cli-runtime/pkg/resource" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/cli" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index 9d90accc5..09715daf3 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -33,8 +33,8 @@ import ( "github.com/stretchr/testify/require" "helm.sh/helm/v4/internal/test" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/storage/driver" diff --git a/pkg/action/lint.go b/pkg/action/lint.go index a6fd7c71c..451eb65b0 100644 --- a/pkg/action/lint.go +++ b/pkg/action/lint.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/lint" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/action/package.go b/pkg/action/package.go index 8343ba109..9ffe1722e 100644 --- a/pkg/action/package.go +++ b/pkg/action/package.go @@ -26,8 +26,8 @@ import ( "github.com/pkg/errors" "golang.org/x/term" - "helm.sh/helm/v4/pkg/chart/loader" - chartutil "helm.sh/helm/v4/pkg/chart/util" + "helm.sh/helm/v4/pkg/chart/v2/loader" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/provenance" ) diff --git a/pkg/action/pull.go b/pkg/action/pull.go index fa85fe242..eb208ca7b 100644 --- a/pkg/action/pull.go +++ b/pkg/action/pull.go @@ -24,7 +24,7 @@ import ( "github.com/pkg/errors" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/cli" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go index a2c68ad64..b4cdb47c8 100644 --- a/pkg/action/release_testing.go +++ b/pkg/action/release_testing.go @@ -27,7 +27,7 @@ import ( "github.com/pkg/errors" v1 "k8s.io/api/core/v1" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/release" ) diff --git a/pkg/action/rollback.go b/pkg/action/rollback.go index 961ef8377..0cd9d5d07 100644 --- a/pkg/action/rollback.go +++ b/pkg/action/rollback.go @@ -24,7 +24,7 @@ import ( "github.com/pkg/errors" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/release" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/action/show.go b/pkg/action/show.go index 3b2722eef..8f9da58e9 100644 --- a/pkg/action/show.go +++ b/pkg/action/show.go @@ -25,9 +25,9 @@ import ( "k8s.io/cli-runtime/pkg/printers" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/registry" ) diff --git a/pkg/action/show_test.go b/pkg/action/show_test.go index e8c998198..b1c5d6164 100644 --- a/pkg/action/show_test.go +++ b/pkg/action/show_test.go @@ -19,7 +19,7 @@ package action import ( "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) func TestShow(t *testing.T) { diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index 6e71197f6..bfec35fc0 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -24,7 +24,7 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/release" releaseutil "helm.sh/helm/v4/pkg/release/util" diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index fa799ad2b..340f61585 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -28,8 +28,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/cli-runtime/pkg/resource" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" diff --git a/pkg/action/upgrade_test.go b/pkg/action/upgrade_test.go index 5437490cb..069578025 100644 --- a/pkg/action/upgrade_test.go +++ b/pkg/action/upgrade_test.go @@ -23,7 +23,7 @@ import ( "testing" "time" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/storage/driver" "github.com/stretchr/testify/assert" diff --git a/pkg/chart/chart.go b/pkg/chart/v2/chart.go similarity index 99% rename from pkg/chart/chart.go rename to pkg/chart/v2/chart.go index a3bed63a3..dcc2a43eb 100644 --- a/pkg/chart/chart.go +++ b/pkg/chart/v2/chart.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 import ( "path/filepath" diff --git a/pkg/chart/chart_test.go b/pkg/chart/v2/chart_test.go similarity index 99% rename from pkg/chart/chart_test.go rename to pkg/chart/v2/chart_test.go index 62d60765c..d6311085b 100644 --- a/pkg/chart/chart_test.go +++ b/pkg/chart/v2/chart_test.go @@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 import ( "encoding/json" diff --git a/pkg/chart/dependency.go b/pkg/chart/v2/dependency.go similarity index 99% rename from pkg/chart/dependency.go rename to pkg/chart/v2/dependency.go index eda0f5a89..8a590a036 100644 --- a/pkg/chart/dependency.go +++ b/pkg/chart/v2/dependency.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 import "time" diff --git a/pkg/chart/dependency_test.go b/pkg/chart/v2/dependency_test.go similarity index 98% rename from pkg/chart/dependency_test.go rename to pkg/chart/v2/dependency_test.go index 90488a966..35919bd7a 100644 --- a/pkg/chart/dependency_test.go +++ b/pkg/chart/v2/dependency_test.go @@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 import ( "testing" diff --git a/pkg/chart/v2/doc.go b/pkg/chart/v2/doc.go new file mode 100644 index 000000000..d36ca3ec4 --- /dev/null +++ b/pkg/chart/v2/doc.go @@ -0,0 +1,23 @@ +/* +Copyright The Helm Authors. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Package v2 provides chart handling for apiVersion v1 and v2 charts + +This package and its sub-packages provide handling for apiVersion v1 and v2 charts. +The changes from v1 to v2 charts are minor and were able to be handled with minor +switches based on characteristics. +*/ +package v2 diff --git a/pkg/chart/errors.go b/pkg/chart/v2/errors.go similarity index 98% rename from pkg/chart/errors.go rename to pkg/chart/v2/errors.go index 2fad5f370..eeef75315 100644 --- a/pkg/chart/errors.go +++ b/pkg/chart/v2/errors.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 import "fmt" diff --git a/pkg/chart/file.go b/pkg/chart/v2/file.go similarity index 98% rename from pkg/chart/file.go rename to pkg/chart/v2/file.go index 9dd7c08d5..a2eeb0fcd 100644 --- a/pkg/chart/file.go +++ b/pkg/chart/v2/file.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 // File represents a file as a name/value pair. // diff --git a/pkg/chart/fuzz_test.go b/pkg/chart/v2/fuzz_test.go similarity index 98% rename from pkg/chart/fuzz_test.go rename to pkg/chart/v2/fuzz_test.go index f3c768444..a897ef7b9 100644 --- a/pkg/chart/fuzz_test.go +++ b/pkg/chart/v2/fuzz_test.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 import ( "testing" diff --git a/pkg/chart/loader/archive.go b/pkg/chart/v2/loader/archive.go similarity index 99% rename from pkg/chart/loader/archive.go rename to pkg/chart/v2/loader/archive.go index 51dd264f7..cb6d3bfe8 100644 --- a/pkg/chart/loader/archive.go +++ b/pkg/chart/v2/loader/archive.go @@ -30,7 +30,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) var drivePathPattern = regexp.MustCompile(`^[a-zA-Z]:/`) diff --git a/pkg/chart/loader/archive_test.go b/pkg/chart/v2/loader/archive_test.go similarity index 100% rename from pkg/chart/loader/archive_test.go rename to pkg/chart/v2/loader/archive_test.go diff --git a/pkg/chart/loader/directory.go b/pkg/chart/v2/loader/directory.go similarity index 98% rename from pkg/chart/loader/directory.go rename to pkg/chart/v2/loader/directory.go index 1dc30e4dc..37b24d3f9 100644 --- a/pkg/chart/loader/directory.go +++ b/pkg/chart/v2/loader/directory.go @@ -26,7 +26,7 @@ import ( "github.com/pkg/errors" "helm.sh/helm/v4/internal/sympath" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/ignore" ) diff --git a/pkg/chart/loader/load.go b/pkg/chart/v2/loader/load.go similarity index 99% rename from pkg/chart/loader/load.go rename to pkg/chart/v2/loader/load.go index e32094ef5..3c5463720 100644 --- a/pkg/chart/loader/load.go +++ b/pkg/chart/v2/loader/load.go @@ -30,7 +30,7 @@ import ( utilyaml "k8s.io/apimachinery/pkg/util/yaml" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // ChartLoader loads a chart. diff --git a/pkg/chart/loader/load_test.go b/pkg/chart/v2/loader/load_test.go similarity index 99% rename from pkg/chart/loader/load_test.go rename to pkg/chart/v2/loader/load_test.go index e34124829..2e16b8560 100644 --- a/pkg/chart/loader/load_test.go +++ b/pkg/chart/v2/loader/load_test.go @@ -30,7 +30,7 @@ import ( "testing" "time" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) func TestLoadDir(t *testing.T) { diff --git a/pkg/chart/loader/testdata/LICENSE b/pkg/chart/v2/loader/testdata/LICENSE similarity index 100% rename from pkg/chart/loader/testdata/LICENSE rename to pkg/chart/v2/loader/testdata/LICENSE diff --git a/pkg/chart/loader/testdata/albatross/Chart.yaml b/pkg/chart/v2/loader/testdata/albatross/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/albatross/Chart.yaml rename to pkg/chart/v2/loader/testdata/albatross/Chart.yaml diff --git a/pkg/chart/loader/testdata/albatross/values.yaml b/pkg/chart/v2/loader/testdata/albatross/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/albatross/values.yaml rename to pkg/chart/v2/loader/testdata/albatross/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz-1.2.3.tgz b/pkg/chart/v2/loader/testdata/frobnitz-1.2.3.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz-1.2.3.tgz rename to pkg/chart/v2/loader/testdata/frobnitz-1.2.3.tgz diff --git a/pkg/chart/loader/testdata/frobnitz.v1.tgz b/pkg/chart/v2/loader/testdata/frobnitz.v1.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1.tgz rename to pkg/chart/v2/loader/testdata/frobnitz.v1.tgz diff --git a/pkg/chart/loader/testdata/frobnitz.v1/.helmignore b/pkg/chart/v2/loader/testdata/frobnitz.v1/.helmignore similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/.helmignore rename to pkg/chart/v2/loader/testdata/frobnitz.v1/.helmignore diff --git a/pkg/chart/loader/testdata/frobnitz.v1/Chart.lock b/pkg/chart/v2/loader/testdata/frobnitz.v1/Chart.lock similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/Chart.lock rename to pkg/chart/v2/loader/testdata/frobnitz.v1/Chart.lock diff --git a/pkg/chart/loader/testdata/frobnitz.v1/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v1/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v1/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v1/INSTALL.txt b/pkg/chart/v2/loader/testdata/frobnitz.v1/INSTALL.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/INSTALL.txt rename to pkg/chart/v2/loader/testdata/frobnitz.v1/INSTALL.txt diff --git a/pkg/chart/loader/testdata/frobnitz.v1/LICENSE b/pkg/chart/v2/loader/testdata/frobnitz.v1/LICENSE similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/LICENSE rename to pkg/chart/v2/loader/testdata/frobnitz.v1/LICENSE diff --git a/pkg/chart/loader/testdata/frobnitz.v1/README.md b/pkg/chart/v2/loader/testdata/frobnitz.v1/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/README.md rename to pkg/chart/v2/loader/testdata/frobnitz.v1/README.md diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/_ignore_me b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/_ignore_me similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/_ignore_me rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/_ignore_me diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/README.md b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/README.md rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/README.md diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/alpine/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/alpine/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v1/charts/mariner-4.3.2.tgz b/pkg/chart/v2/loader/testdata/frobnitz.v1/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/loader/testdata/frobnitz.v1/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/loader/testdata/frobnitz.v1/docs/README.md b/pkg/chart/v2/loader/testdata/frobnitz.v1/docs/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/docs/README.md rename to pkg/chart/v2/loader/testdata/frobnitz.v1/docs/README.md diff --git a/pkg/chart/loader/testdata/frobnitz.v1/icon.svg b/pkg/chart/v2/loader/testdata/frobnitz.v1/icon.svg similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/icon.svg rename to pkg/chart/v2/loader/testdata/frobnitz.v1/icon.svg diff --git a/pkg/chart/loader/testdata/frobnitz.v1/ignore/me.txt b/pkg/chart/v2/loader/testdata/frobnitz.v1/ignore/me.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/ignore/me.txt rename to pkg/chart/v2/loader/testdata/frobnitz.v1/ignore/me.txt diff --git a/pkg/chart/loader/testdata/frobnitz.v1/requirements.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v1/requirements.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/requirements.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v1/requirements.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v1/templates/template.tpl b/pkg/chart/v2/loader/testdata/frobnitz.v1/templates/template.tpl similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/templates/template.tpl rename to pkg/chart/v2/loader/testdata/frobnitz.v1/templates/template.tpl diff --git a/pkg/chart/loader/testdata/frobnitz.v1/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v1/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v1/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v1/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/.helmignore b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/.helmignore similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/.helmignore rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/.helmignore diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/INSTALL.txt b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/INSTALL.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/INSTALL.txt rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/INSTALL.txt diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/LICENSE b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/LICENSE similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/LICENSE rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/LICENSE diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/README.md b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/README.md rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/README.md diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/_ignore_me b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/_ignore_me similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/_ignore_me rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/_ignore_me diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/README.md b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/README.md rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/README.md diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/alpine/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/alpine/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/mariner-4.3.2.tgz b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/docs/README.md b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/docs/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/docs/README.md rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/docs/README.md diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/icon.svg b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/icon.svg similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/icon.svg rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/icon.svg diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/ignore/me.txt b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/ignore/me.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/ignore/me.txt rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/ignore/me.txt diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/requirements.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/requirements.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/requirements.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/requirements.yaml diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/templates/template.tpl b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/templates/template.tpl similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/templates/template.tpl rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/templates/template.tpl diff --git a/pkg/chart/loader/testdata/frobnitz.v2.reqs/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz.v2.reqs/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz.v2.reqs/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz/.helmignore b/pkg/chart/v2/loader/testdata/frobnitz/.helmignore similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/.helmignore rename to pkg/chart/v2/loader/testdata/frobnitz/.helmignore diff --git a/pkg/chart/loader/testdata/frobnitz/Chart.lock b/pkg/chart/v2/loader/testdata/frobnitz/Chart.lock similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/Chart.lock rename to pkg/chart/v2/loader/testdata/frobnitz/Chart.lock diff --git a/pkg/chart/loader/testdata/frobnitz/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz/INSTALL.txt b/pkg/chart/v2/loader/testdata/frobnitz/INSTALL.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/INSTALL.txt rename to pkg/chart/v2/loader/testdata/frobnitz/INSTALL.txt diff --git a/pkg/chart/loader/testdata/frobnitz/LICENSE b/pkg/chart/v2/loader/testdata/frobnitz/LICENSE similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/LICENSE rename to pkg/chart/v2/loader/testdata/frobnitz/LICENSE diff --git a/pkg/chart/loader/testdata/frobnitz/README.md b/pkg/chart/v2/loader/testdata/frobnitz/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/README.md rename to pkg/chart/v2/loader/testdata/frobnitz/README.md diff --git a/pkg/chart/loader/testdata/frobnitz/charts/_ignore_me b/pkg/chart/v2/loader/testdata/frobnitz/charts/_ignore_me similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/_ignore_me rename to pkg/chart/v2/loader/testdata/frobnitz/charts/_ignore_me diff --git a/pkg/chart/loader/testdata/frobnitz/charts/alpine/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/alpine/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz/charts/alpine/README.md b/pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/alpine/README.md rename to pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/README.md diff --git a/pkg/chart/loader/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/loader/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/loader/testdata/frobnitz/charts/alpine/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/alpine/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz/charts/alpine/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz/charts/mariner-4.3.2.tgz b/pkg/chart/v2/loader/testdata/frobnitz/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/loader/testdata/frobnitz/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/loader/testdata/frobnitz/docs/README.md b/pkg/chart/v2/loader/testdata/frobnitz/docs/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/docs/README.md rename to pkg/chart/v2/loader/testdata/frobnitz/docs/README.md diff --git a/pkg/chart/loader/testdata/frobnitz/icon.svg b/pkg/chart/v2/loader/testdata/frobnitz/icon.svg similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/icon.svg rename to pkg/chart/v2/loader/testdata/frobnitz/icon.svg diff --git a/pkg/chart/loader/testdata/frobnitz/ignore/me.txt b/pkg/chart/v2/loader/testdata/frobnitz/ignore/me.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/ignore/me.txt rename to pkg/chart/v2/loader/testdata/frobnitz/ignore/me.txt diff --git a/pkg/chart/loader/testdata/frobnitz/templates/template.tpl b/pkg/chart/v2/loader/testdata/frobnitz/templates/template.tpl similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/templates/template.tpl rename to pkg/chart/v2/loader/testdata/frobnitz/templates/template.tpl diff --git a/pkg/chart/loader/testdata/frobnitz/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_backslash-1.2.3.tgz b/pkg/chart/v2/loader/testdata/frobnitz_backslash-1.2.3.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash-1.2.3.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_backslash-1.2.3.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/.helmignore b/pkg/chart/v2/loader/testdata/frobnitz_backslash/.helmignore similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/.helmignore rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/.helmignore diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/Chart.lock b/pkg/chart/v2/loader/testdata/frobnitz_backslash/Chart.lock similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/Chart.lock rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/Chart.lock diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_backslash/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/INSTALL.txt b/pkg/chart/v2/loader/testdata/frobnitz_backslash/INSTALL.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/INSTALL.txt rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/INSTALL.txt diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/LICENSE b/pkg/chart/v2/loader/testdata/frobnitz_backslash/LICENSE similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/LICENSE rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/LICENSE diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/README.md b/pkg/chart/v2/loader/testdata/frobnitz_backslash/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/_ignore_me b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/_ignore_me similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/_ignore_me rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/_ignore_me diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/README.md b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/alpine/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/alpine/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/charts/mariner-4.3.2.tgz b/pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/docs/README.md b/pkg/chart/v2/loader/testdata/frobnitz_backslash/docs/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/docs/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/docs/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/icon.svg b/pkg/chart/v2/loader/testdata/frobnitz_backslash/icon.svg similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/icon.svg rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/icon.svg diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/ignore/me.txt b/pkg/chart/v2/loader/testdata/frobnitz_backslash/ignore/me.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/ignore/me.txt rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/ignore/me.txt diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/templates/template.tpl b/pkg/chart/v2/loader/testdata/frobnitz_backslash/templates/template.tpl similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/templates/template.tpl rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/templates/template.tpl diff --git a/pkg/chart/loader/testdata/frobnitz_backslash/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_backslash/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_backslash/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_backslash/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom.tgz b/pkg/chart/v2/loader/testdata/frobnitz_with_bom.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/.helmignore b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/.helmignore similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/.helmignore rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/.helmignore diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/Chart.lock b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/Chart.lock similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/Chart.lock rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/Chart.lock diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/INSTALL.txt b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/INSTALL.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/INSTALL.txt rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/INSTALL.txt diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/LICENSE b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/LICENSE similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/LICENSE rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/LICENSE diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/_ignore_me b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/_ignore_me similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/_ignore_me rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/_ignore_me diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/alpine/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/alpine/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/charts/mariner-4.3.2.tgz b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/docs/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/docs/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/docs/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/docs/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/icon.svg b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/icon.svg similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/icon.svg rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/icon.svg diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/ignore/me.txt b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/ignore/me.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/ignore/me.txt rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/ignore/me.txt diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/templates/template.tpl b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/templates/template.tpl similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/templates/template.tpl rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/templates/template.tpl diff --git a/pkg/chart/loader/testdata/frobnitz_with_bom/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_bom/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_bom/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_bom/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/.helmignore b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/.helmignore similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/.helmignore rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/.helmignore diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/Chart.lock b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/Chart.lock similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/Chart.lock rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/Chart.lock diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/INSTALL.txt b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/INSTALL.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/INSTALL.txt rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/INSTALL.txt diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/LICENSE b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/LICENSE similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/LICENSE rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/LICENSE diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/_ignore_me b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/_ignore_me similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/_ignore_me rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/_ignore_me diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/alpine/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/alpine/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/mariner-4.3.2.tgz b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/docs/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/docs/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/docs/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/docs/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/icon.svg b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/icon.svg similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/icon.svg rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/icon.svg diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/ignore/me.txt b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/ignore/me.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/ignore/me.txt rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/ignore/me.txt diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/null b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/null similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/null rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/null diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/templates/template.tpl b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/templates/template.tpl similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/templates/template.tpl rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/templates/template.tpl diff --git a/pkg/chart/loader/testdata/frobnitz_with_dev_null/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_dev_null/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_dev_null/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/.helmignore b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/.helmignore similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/.helmignore rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/.helmignore diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/Chart.lock b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/Chart.lock similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/Chart.lock rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/Chart.lock diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/INSTALL.txt b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/INSTALL.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/INSTALL.txt rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/INSTALL.txt diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/_ignore_me b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/_ignore_me similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/_ignore_me rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/_ignore_me diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/alpine/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/alpine/values.yaml diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/charts/mariner-4.3.2.tgz b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/docs/README.md b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/docs/README.md similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/docs/README.md rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/docs/README.md diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/icon.svg b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/icon.svg similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/icon.svg rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/icon.svg diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/ignore/me.txt b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/ignore/me.txt similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/ignore/me.txt rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/ignore/me.txt diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/templates/template.tpl b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/templates/template.tpl similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/templates/template.tpl rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/templates/template.tpl diff --git a/pkg/chart/loader/testdata/frobnitz_with_symlink/values.yaml b/pkg/chart/v2/loader/testdata/frobnitz_with_symlink/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/frobnitz_with_symlink/values.yaml rename to pkg/chart/v2/loader/testdata/frobnitz_with_symlink/values.yaml diff --git a/pkg/chart/loader/testdata/genfrob.sh b/pkg/chart/v2/loader/testdata/genfrob.sh similarity index 100% rename from pkg/chart/loader/testdata/genfrob.sh rename to pkg/chart/v2/loader/testdata/genfrob.sh diff --git a/pkg/chart/loader/testdata/mariner/Chart.yaml b/pkg/chart/v2/loader/testdata/mariner/Chart.yaml similarity index 100% rename from pkg/chart/loader/testdata/mariner/Chart.yaml rename to pkg/chart/v2/loader/testdata/mariner/Chart.yaml diff --git a/pkg/chart/loader/testdata/mariner/charts/albatross-0.1.0.tgz b/pkg/chart/v2/loader/testdata/mariner/charts/albatross-0.1.0.tgz similarity index 100% rename from pkg/chart/loader/testdata/mariner/charts/albatross-0.1.0.tgz rename to pkg/chart/v2/loader/testdata/mariner/charts/albatross-0.1.0.tgz diff --git a/pkg/chart/loader/testdata/mariner/templates/placeholder.tpl b/pkg/chart/v2/loader/testdata/mariner/templates/placeholder.tpl similarity index 100% rename from pkg/chart/loader/testdata/mariner/templates/placeholder.tpl rename to pkg/chart/v2/loader/testdata/mariner/templates/placeholder.tpl diff --git a/pkg/chart/loader/testdata/mariner/values.yaml b/pkg/chart/v2/loader/testdata/mariner/values.yaml similarity index 100% rename from pkg/chart/loader/testdata/mariner/values.yaml rename to pkg/chart/v2/loader/testdata/mariner/values.yaml diff --git a/pkg/chart/metadata.go b/pkg/chart/v2/metadata.go similarity index 99% rename from pkg/chart/metadata.go rename to pkg/chart/v2/metadata.go index a08a97cd1..d213a3491 100644 --- a/pkg/chart/metadata.go +++ b/pkg/chart/v2/metadata.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 import ( "path/filepath" diff --git a/pkg/chart/metadata_test.go b/pkg/chart/v2/metadata_test.go similarity index 99% rename from pkg/chart/metadata_test.go rename to pkg/chart/v2/metadata_test.go index 62aea7261..7892f0209 100644 --- a/pkg/chart/metadata_test.go +++ b/pkg/chart/v2/metadata_test.go @@ -13,7 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -package chart +package v2 import ( "testing" diff --git a/pkg/chart/util/capabilities.go b/pkg/chart/v2/util/capabilities.go similarity index 100% rename from pkg/chart/util/capabilities.go rename to pkg/chart/v2/util/capabilities.go diff --git a/pkg/chart/util/capabilities_test.go b/pkg/chart/v2/util/capabilities_test.go similarity index 100% rename from pkg/chart/util/capabilities_test.go rename to pkg/chart/v2/util/capabilities_test.go diff --git a/pkg/chart/util/chartfile.go b/pkg/chart/v2/util/chartfile.go similarity index 98% rename from pkg/chart/util/chartfile.go rename to pkg/chart/v2/util/chartfile.go index acab80d0a..87323c201 100644 --- a/pkg/chart/util/chartfile.go +++ b/pkg/chart/v2/util/chartfile.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // LoadChartfile loads a Chart.yaml file into a *chart.Metadata. diff --git a/pkg/chart/util/chartfile_test.go b/pkg/chart/v2/util/chartfile_test.go similarity index 98% rename from pkg/chart/util/chartfile_test.go rename to pkg/chart/v2/util/chartfile_test.go index 6eb599680..a2896b235 100644 --- a/pkg/chart/util/chartfile_test.go +++ b/pkg/chart/v2/util/chartfile_test.go @@ -19,7 +19,7 @@ package util import ( "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) const testfile = "testdata/chartfiletest.yaml" diff --git a/pkg/chart/util/coalesce.go b/pkg/chart/v2/util/coalesce.go similarity index 99% rename from pkg/chart/util/coalesce.go rename to pkg/chart/v2/util/coalesce.go index 9ab5c1015..33d2d2833 100644 --- a/pkg/chart/util/coalesce.go +++ b/pkg/chart/v2/util/coalesce.go @@ -23,7 +23,7 @@ import ( "github.com/mitchellh/copystructure" "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) func concatPrefix(a, b string) string { diff --git a/pkg/chart/util/coalesce_test.go b/pkg/chart/v2/util/coalesce_test.go similarity index 99% rename from pkg/chart/util/coalesce_test.go rename to pkg/chart/v2/util/coalesce_test.go index 5a8dfe94a..3d4ee4fa8 100644 --- a/pkg/chart/util/coalesce_test.go +++ b/pkg/chart/v2/util/coalesce_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // ref: http://www.yaml.org/spec/1.2/spec.html#id2803362 diff --git a/pkg/chart/util/compatible.go b/pkg/chart/v2/util/compatible.go similarity index 100% rename from pkg/chart/util/compatible.go rename to pkg/chart/v2/util/compatible.go diff --git a/pkg/chart/util/compatible_test.go b/pkg/chart/v2/util/compatible_test.go similarity index 100% rename from pkg/chart/util/compatible_test.go rename to pkg/chart/v2/util/compatible_test.go diff --git a/pkg/chart/util/create.go b/pkg/chart/v2/util/create.go similarity index 99% rename from pkg/chart/util/create.go rename to pkg/chart/v2/util/create.go index dfb5099f2..7eb3398f5 100644 --- a/pkg/chart/util/create.go +++ b/pkg/chart/v2/util/create.go @@ -27,8 +27,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" ) // chartName is a regular expression for testing the supplied name of a chart. diff --git a/pkg/chart/util/create_test.go b/pkg/chart/v2/util/create_test.go similarity index 98% rename from pkg/chart/util/create_test.go rename to pkg/chart/v2/util/create_test.go index e67ce3e1f..086c4e5c8 100644 --- a/pkg/chart/util/create_test.go +++ b/pkg/chart/v2/util/create_test.go @@ -22,8 +22,8 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" ) func TestCreate(t *testing.T) { diff --git a/pkg/chart/util/dependencies.go b/pkg/chart/v2/util/dependencies.go similarity index 99% rename from pkg/chart/util/dependencies.go rename to pkg/chart/v2/util/dependencies.go index fb9052d71..78ed46517 100644 --- a/pkg/chart/util/dependencies.go +++ b/pkg/chart/v2/util/dependencies.go @@ -21,7 +21,7 @@ import ( "github.com/mitchellh/copystructure" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // ProcessDependencies checks through this chart's dependencies, processing accordingly. diff --git a/pkg/chart/util/dependencies_test.go b/pkg/chart/v2/util/dependencies_test.go similarity index 99% rename from pkg/chart/util/dependencies_test.go rename to pkg/chart/v2/util/dependencies_test.go index 10fca265e..5bd332990 100644 --- a/pkg/chart/util/dependencies_test.go +++ b/pkg/chart/v2/util/dependencies_test.go @@ -22,8 +22,8 @@ import ( "strconv" "testing" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" ) func loadChart(t *testing.T, path string) *chart.Chart { diff --git a/pkg/chart/util/doc.go b/pkg/chart/v2/util/doc.go similarity index 95% rename from pkg/chart/util/doc.go rename to pkg/chart/v2/util/doc.go index 587fcaeb1..141062074 100644 --- a/pkg/chart/util/doc.go +++ b/pkg/chart/v2/util/doc.go @@ -42,4 +42,4 @@ into a Chart. When creating charts in memory, use the 'helm.sh/helm/pkg/chart' package directly. */ -package util // import chartutil "helm.sh/helm/v4/pkg/chart/util" +package util // import chartutil "helm.sh/helm/v4/pkg/chart/v2/util" diff --git a/pkg/chart/util/errors.go b/pkg/chart/v2/util/errors.go similarity index 100% rename from pkg/chart/util/errors.go rename to pkg/chart/v2/util/errors.go diff --git a/pkg/chart/util/errors_test.go b/pkg/chart/v2/util/errors_test.go similarity index 100% rename from pkg/chart/util/errors_test.go rename to pkg/chart/v2/util/errors_test.go diff --git a/pkg/chart/util/expand.go b/pkg/chart/v2/util/expand.go similarity index 96% rename from pkg/chart/util/expand.go rename to pkg/chart/v2/util/expand.go index 4b83bf584..e05a1a984 100644 --- a/pkg/chart/util/expand.go +++ b/pkg/chart/v2/util/expand.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" ) // Expand uncompresses and extracts a chart into the specified directory. diff --git a/pkg/chart/util/expand_test.go b/pkg/chart/v2/util/expand_test.go similarity index 100% rename from pkg/chart/util/expand_test.go rename to pkg/chart/v2/util/expand_test.go diff --git a/pkg/chart/util/jsonschema.go b/pkg/chart/v2/util/jsonschema.go similarity index 98% rename from pkg/chart/util/jsonschema.go rename to pkg/chart/v2/util/jsonschema.go index 616c6d444..615dc5320 100644 --- a/pkg/chart/util/jsonschema.go +++ b/pkg/chart/v2/util/jsonschema.go @@ -25,7 +25,7 @@ import ( "github.com/xeipuuv/gojsonschema" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // ValidateAgainstSchema checks that values does not violate the structure laid out in schema diff --git a/pkg/chart/util/jsonschema_test.go b/pkg/chart/v2/util/jsonschema_test.go similarity index 99% rename from pkg/chart/util/jsonschema_test.go rename to pkg/chart/v2/util/jsonschema_test.go index c5600044a..3e3315732 100644 --- a/pkg/chart/util/jsonschema_test.go +++ b/pkg/chart/v2/util/jsonschema_test.go @@ -20,7 +20,7 @@ import ( "os" "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) func TestValidateAgainstSingleSchema(t *testing.T) { diff --git a/pkg/chart/util/save.go b/pkg/chart/v2/util/save.go similarity index 99% rename from pkg/chart/util/save.go rename to pkg/chart/v2/util/save.go index 635ff7944..e1285ac88 100644 --- a/pkg/chart/util/save.go +++ b/pkg/chart/v2/util/save.go @@ -28,7 +28,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) var headerBytes = []byte("+aHR0cHM6Ly95b3V0dS5iZS96OVV6MWljandyTQo=") diff --git a/pkg/chart/util/save_test.go b/pkg/chart/v2/util/save_test.go similarity index 98% rename from pkg/chart/util/save_test.go rename to pkg/chart/v2/util/save_test.go index a7338c8d7..ff96331b5 100644 --- a/pkg/chart/util/save_test.go +++ b/pkg/chart/v2/util/save_test.go @@ -29,8 +29,8 @@ import ( "testing" "time" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" ) func TestSave(t *testing.T) { diff --git a/pkg/chart/util/testdata/chartfiletest.yaml b/pkg/chart/v2/util/testdata/chartfiletest.yaml similarity index 100% rename from pkg/chart/util/testdata/chartfiletest.yaml rename to pkg/chart/v2/util/testdata/chartfiletest.yaml diff --git a/pkg/chart/util/testdata/coleridge.yaml b/pkg/chart/v2/util/testdata/coleridge.yaml similarity index 100% rename from pkg/chart/util/testdata/coleridge.yaml rename to pkg/chart/v2/util/testdata/coleridge.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-alias/.helmignore b/pkg/chart/v2/util/testdata/dependent-chart-alias/.helmignore similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/.helmignore rename to pkg/chart/v2/util/testdata/dependent-chart-alias/.helmignore diff --git a/pkg/chart/util/testdata/dependent-chart-alias/Chart.lock b/pkg/chart/v2/util/testdata/dependent-chart-alias/Chart.lock similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/Chart.lock rename to pkg/chart/v2/util/testdata/dependent-chart-alias/Chart.lock diff --git a/pkg/chart/util/testdata/dependent-chart-alias/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-alias/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-alias/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-alias/INSTALL.txt b/pkg/chart/v2/util/testdata/dependent-chart-alias/INSTALL.txt similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/INSTALL.txt rename to pkg/chart/v2/util/testdata/dependent-chart-alias/INSTALL.txt diff --git a/pkg/chart/util/testdata/dependent-chart-alias/LICENSE b/pkg/chart/v2/util/testdata/dependent-chart-alias/LICENSE similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/LICENSE rename to pkg/chart/v2/util/testdata/dependent-chart-alias/LICENSE diff --git a/pkg/chart/util/testdata/dependent-chart-alias/README.md b/pkg/chart/v2/util/testdata/dependent-chart-alias/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-alias/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/_ignore_me b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/_ignore_me similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/_ignore_me rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/_ignore_me diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/README.md b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/alpine/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/alpine/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz b/pkg/chart/v2/util/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-alias/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-alias/docs/README.md b/pkg/chart/v2/util/testdata/dependent-chart-alias/docs/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/docs/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-alias/docs/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-alias/icon.svg b/pkg/chart/v2/util/testdata/dependent-chart-alias/icon.svg similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/icon.svg rename to pkg/chart/v2/util/testdata/dependent-chart-alias/icon.svg diff --git a/pkg/chart/util/testdata/dependent-chart-alias/ignore/me.txt b/pkg/chart/v2/util/testdata/dependent-chart-alias/ignore/me.txt similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/ignore/me.txt rename to pkg/chart/v2/util/testdata/dependent-chart-alias/ignore/me.txt diff --git a/pkg/chart/util/testdata/dependent-chart-alias/templates/template.tpl b/pkg/chart/v2/util/testdata/dependent-chart-alias/templates/template.tpl similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/templates/template.tpl rename to pkg/chart/v2/util/testdata/dependent-chart-alias/templates/template.tpl diff --git a/pkg/chart/util/testdata/dependent-chart-alias/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-alias/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-alias/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-alias/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/.helmignore b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/.helmignore similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/.helmignore rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/.helmignore diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/.ignore_me b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/.ignore_me similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/.ignore_me rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/.ignore_me diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/_ignore_me b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/_ignore_me similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/_ignore_me rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/_ignore_me diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/README.md b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/charts/alpine/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/charts/alpine/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/templates/template.tpl b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/templates/template.tpl similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/templates/template.tpl rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/templates/template.tpl diff --git a/pkg/chart/util/testdata/dependent-chart-helmignore/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-helmignore/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-helmignore/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-helmignore/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/.helmignore b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/.helmignore similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/.helmignore rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/.helmignore diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/INSTALL.txt diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/LICENSE b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/LICENSE similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/LICENSE rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/LICENSE diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/README.md b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/_ignore_me diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/alpine/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/docs/README.md b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/docs/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/docs/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/docs/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/icon.svg b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/icon.svg similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/icon.svg rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/icon.svg diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/ignore/me.txt diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/templates/template.tpl diff --git a/pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-no-requirements-yaml/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-no-requirements-yaml/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/.helmignore diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/INSTALL.txt diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/LICENSE diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/README.md b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/_ignore_me diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/alpine/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/docs/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/icon.svg diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/ignore/me.txt diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/templates/template.tpl diff --git a/pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-all-in-requirements-yaml/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/.helmignore diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/INSTALL.txt diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/LICENSE diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/README.md b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/_ignore_me diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/alpine/values.yaml diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/charts/mariner-4.3.2.tgz diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/docs/README.md diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/icon.svg diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/ignore/me.txt diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/templates/template.tpl diff --git a/pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml b/pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml similarity index 100% rename from pkg/chart/util/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml rename to pkg/chart/v2/util/testdata/dependent-chart-with-mixed-requirements-yaml/values.yaml diff --git a/pkg/chart/util/testdata/frobnitz-1.2.3.tgz b/pkg/chart/v2/util/testdata/frobnitz-1.2.3.tgz similarity index 100% rename from pkg/chart/util/testdata/frobnitz-1.2.3.tgz rename to pkg/chart/v2/util/testdata/frobnitz-1.2.3.tgz diff --git a/pkg/chart/util/testdata/frobnitz/.helmignore b/pkg/chart/v2/util/testdata/frobnitz/.helmignore similarity index 100% rename from pkg/chart/util/testdata/frobnitz/.helmignore rename to pkg/chart/v2/util/testdata/frobnitz/.helmignore diff --git a/pkg/chart/util/testdata/frobnitz/Chart.lock b/pkg/chart/v2/util/testdata/frobnitz/Chart.lock similarity index 100% rename from pkg/chart/util/testdata/frobnitz/Chart.lock rename to pkg/chart/v2/util/testdata/frobnitz/Chart.lock diff --git a/pkg/chart/util/testdata/frobnitz/Chart.yaml b/pkg/chart/v2/util/testdata/frobnitz/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/Chart.yaml rename to pkg/chart/v2/util/testdata/frobnitz/Chart.yaml diff --git a/pkg/chart/util/testdata/frobnitz/INSTALL.txt b/pkg/chart/v2/util/testdata/frobnitz/INSTALL.txt similarity index 100% rename from pkg/chart/util/testdata/frobnitz/INSTALL.txt rename to pkg/chart/v2/util/testdata/frobnitz/INSTALL.txt diff --git a/pkg/chart/util/testdata/frobnitz/LICENSE b/pkg/chart/v2/util/testdata/frobnitz/LICENSE similarity index 100% rename from pkg/chart/util/testdata/frobnitz/LICENSE rename to pkg/chart/v2/util/testdata/frobnitz/LICENSE diff --git a/pkg/chart/util/testdata/frobnitz/README.md b/pkg/chart/v2/util/testdata/frobnitz/README.md similarity index 100% rename from pkg/chart/util/testdata/frobnitz/README.md rename to pkg/chart/v2/util/testdata/frobnitz/README.md diff --git a/pkg/chart/util/testdata/frobnitz/charts/_ignore_me b/pkg/chart/v2/util/testdata/frobnitz/charts/_ignore_me similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/_ignore_me rename to pkg/chart/v2/util/testdata/frobnitz/charts/_ignore_me diff --git a/pkg/chart/util/testdata/frobnitz/charts/alpine/Chart.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/alpine/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/alpine/Chart.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/alpine/Chart.yaml diff --git a/pkg/chart/util/testdata/frobnitz/charts/alpine/README.md b/pkg/chart/v2/util/testdata/frobnitz/charts/alpine/README.md similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/alpine/README.md rename to pkg/chart/v2/util/testdata/frobnitz/charts/alpine/README.md diff --git a/pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/alpine/charts/mast1/Chart.yaml diff --git a/pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/alpine/charts/mast1/values.yaml diff --git a/pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz b/pkg/chart/v2/util/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz rename to pkg/chart/v2/util/testdata/frobnitz/charts/alpine/charts/mast2-0.1.0.tgz diff --git a/pkg/chart/util/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/alpine/templates/alpine-pod.yaml diff --git a/pkg/chart/util/testdata/frobnitz/charts/alpine/values.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/alpine/values.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/alpine/values.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/alpine/values.yaml diff --git a/pkg/chart/util/testdata/frobnitz/charts/mariner/Chart.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/mariner/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/mariner/Chart.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/mariner/Chart.yaml diff --git a/pkg/chart/util/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/mariner/charts/albatross/Chart.yaml diff --git a/pkg/chart/util/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/mariner/charts/albatross/values.yaml diff --git a/pkg/chart/util/testdata/frobnitz/charts/mariner/templates/placeholder.tpl b/pkg/chart/v2/util/testdata/frobnitz/charts/mariner/templates/placeholder.tpl similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/mariner/templates/placeholder.tpl rename to pkg/chart/v2/util/testdata/frobnitz/charts/mariner/templates/placeholder.tpl diff --git a/pkg/chart/util/testdata/frobnitz/charts/mariner/values.yaml b/pkg/chart/v2/util/testdata/frobnitz/charts/mariner/values.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/charts/mariner/values.yaml rename to pkg/chart/v2/util/testdata/frobnitz/charts/mariner/values.yaml diff --git a/pkg/chart/util/testdata/frobnitz/docs/README.md b/pkg/chart/v2/util/testdata/frobnitz/docs/README.md similarity index 100% rename from pkg/chart/util/testdata/frobnitz/docs/README.md rename to pkg/chart/v2/util/testdata/frobnitz/docs/README.md diff --git a/pkg/chart/util/testdata/frobnitz/icon.svg b/pkg/chart/v2/util/testdata/frobnitz/icon.svg similarity index 100% rename from pkg/chart/util/testdata/frobnitz/icon.svg rename to pkg/chart/v2/util/testdata/frobnitz/icon.svg diff --git a/pkg/chart/util/testdata/frobnitz/ignore/me.txt b/pkg/chart/v2/util/testdata/frobnitz/ignore/me.txt similarity index 100% rename from pkg/chart/util/testdata/frobnitz/ignore/me.txt rename to pkg/chart/v2/util/testdata/frobnitz/ignore/me.txt diff --git a/pkg/chart/util/testdata/frobnitz/templates/template.tpl b/pkg/chart/v2/util/testdata/frobnitz/templates/template.tpl similarity index 100% rename from pkg/chart/util/testdata/frobnitz/templates/template.tpl rename to pkg/chart/v2/util/testdata/frobnitz/templates/template.tpl diff --git a/pkg/chart/util/testdata/frobnitz/values.yaml b/pkg/chart/v2/util/testdata/frobnitz/values.yaml similarity index 100% rename from pkg/chart/util/testdata/frobnitz/values.yaml rename to pkg/chart/v2/util/testdata/frobnitz/values.yaml diff --git a/pkg/chart/util/testdata/frobnitz_backslash-1.2.3.tgz b/pkg/chart/v2/util/testdata/frobnitz_backslash-1.2.3.tgz similarity index 100% rename from pkg/chart/util/testdata/frobnitz_backslash-1.2.3.tgz rename to pkg/chart/v2/util/testdata/frobnitz_backslash-1.2.3.tgz diff --git a/pkg/chart/util/testdata/genfrob.sh b/pkg/chart/v2/util/testdata/genfrob.sh similarity index 100% rename from pkg/chart/util/testdata/genfrob.sh rename to pkg/chart/v2/util/testdata/genfrob.sh diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.lock diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/Chart.yaml diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/dev-v0.1.0.tgz diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/charts/prod-v0.1.0.tgz diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/Chart.yaml diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/dev/values.yaml diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/Chart.yaml diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/envs/prod/values.yaml diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/templates/autoscaler.yaml diff --git a/pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml b/pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml similarity index 100% rename from pkg/chart/util/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml rename to pkg/chart/v2/util/testdata/import-values-from-enabled-subchart/parent-chart/values.yaml diff --git a/pkg/chart/util/testdata/joonix/Chart.yaml b/pkg/chart/v2/util/testdata/joonix/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/joonix/Chart.yaml rename to pkg/chart/v2/util/testdata/joonix/Chart.yaml diff --git a/pkg/chart/util/testdata/joonix/charts/.gitkeep b/pkg/chart/v2/util/testdata/joonix/charts/.gitkeep similarity index 100% rename from pkg/chart/util/testdata/joonix/charts/.gitkeep rename to pkg/chart/v2/util/testdata/joonix/charts/.gitkeep diff --git a/pkg/chart/util/testdata/subpop/Chart.yaml b/pkg/chart/v2/util/testdata/subpop/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/Chart.yaml rename to pkg/chart/v2/util/testdata/subpop/Chart.yaml diff --git a/pkg/chart/util/testdata/subpop/README.md b/pkg/chart/v2/util/testdata/subpop/README.md similarity index 100% rename from pkg/chart/util/testdata/subpop/README.md rename to pkg/chart/v2/util/testdata/subpop/README.md diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/Chart.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/Chart.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/Chart.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartA/Chart.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartA/templates/service.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartA/values.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartB/Chart.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartB/templates/service.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/charts/subchartB/values.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/crds/crdA.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/crds/crdA.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/crds/crdA.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/crds/crdA.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/templates/NOTES.txt b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/NOTES.txt similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/templates/NOTES.txt rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/NOTES.txt diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/templates/service.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/templates/service.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/service.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/role.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/subdir/role.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/role.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/subdir/role.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/subdir/rolebinding.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/templates/subdir/serviceaccount.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart1/values.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart1/values.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart1/values.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart1/values.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/Chart.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/Chart.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/Chart.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartB/Chart.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartB/templates/service.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartB/values.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartC/Chart.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartC/templates/service.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/charts/subchartC/values.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/templates/service.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/templates/service.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/templates/service.yaml diff --git a/pkg/chart/util/testdata/subpop/charts/subchart2/values.yaml b/pkg/chart/v2/util/testdata/subpop/charts/subchart2/values.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/charts/subchart2/values.yaml rename to pkg/chart/v2/util/testdata/subpop/charts/subchart2/values.yaml diff --git a/pkg/chart/util/testdata/subpop/noreqs/Chart.yaml b/pkg/chart/v2/util/testdata/subpop/noreqs/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/noreqs/Chart.yaml rename to pkg/chart/v2/util/testdata/subpop/noreqs/Chart.yaml diff --git a/pkg/chart/util/testdata/subpop/noreqs/templates/service.yaml b/pkg/chart/v2/util/testdata/subpop/noreqs/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/noreqs/templates/service.yaml rename to pkg/chart/v2/util/testdata/subpop/noreqs/templates/service.yaml diff --git a/pkg/chart/util/testdata/subpop/noreqs/values.yaml b/pkg/chart/v2/util/testdata/subpop/noreqs/values.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/noreqs/values.yaml rename to pkg/chart/v2/util/testdata/subpop/noreqs/values.yaml diff --git a/pkg/chart/util/testdata/subpop/values.yaml b/pkg/chart/v2/util/testdata/subpop/values.yaml similarity index 100% rename from pkg/chart/util/testdata/subpop/values.yaml rename to pkg/chart/v2/util/testdata/subpop/values.yaml diff --git a/pkg/chart/util/testdata/test-values-invalid.schema.json b/pkg/chart/v2/util/testdata/test-values-invalid.schema.json similarity index 100% rename from pkg/chart/util/testdata/test-values-invalid.schema.json rename to pkg/chart/v2/util/testdata/test-values-invalid.schema.json diff --git a/pkg/chart/util/testdata/test-values-negative.yaml b/pkg/chart/v2/util/testdata/test-values-negative.yaml similarity index 100% rename from pkg/chart/util/testdata/test-values-negative.yaml rename to pkg/chart/v2/util/testdata/test-values-negative.yaml diff --git a/pkg/chart/util/testdata/test-values.schema.json b/pkg/chart/v2/util/testdata/test-values.schema.json similarity index 100% rename from pkg/chart/util/testdata/test-values.schema.json rename to pkg/chart/v2/util/testdata/test-values.schema.json diff --git a/pkg/chart/util/testdata/test-values.yaml b/pkg/chart/v2/util/testdata/test-values.yaml similarity index 100% rename from pkg/chart/util/testdata/test-values.yaml rename to pkg/chart/v2/util/testdata/test-values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/README.md b/pkg/chart/v2/util/testdata/three-level-dependent-chart/README.md similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/README.md rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/README.md diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/templates/service.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/charts/library/values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/templates/service.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app1/values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/templates/service.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/charts/library/values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/templates/service.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app2/values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/templates/service.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/charts/library/values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/templates/service.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app3/values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/Chart.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/templates/service.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/charts/library/values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/templates/service.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/charts/app4/values.yaml diff --git a/pkg/chart/util/testdata/three-level-dependent-chart/umbrella/values.yaml b/pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/values.yaml similarity index 100% rename from pkg/chart/util/testdata/three-level-dependent-chart/umbrella/values.yaml rename to pkg/chart/v2/util/testdata/three-level-dependent-chart/umbrella/values.yaml diff --git a/pkg/chart/util/validate_name.go b/pkg/chart/v2/util/validate_name.go similarity index 100% rename from pkg/chart/util/validate_name.go rename to pkg/chart/v2/util/validate_name.go diff --git a/pkg/chart/util/validate_name_test.go b/pkg/chart/v2/util/validate_name_test.go similarity index 100% rename from pkg/chart/util/validate_name_test.go rename to pkg/chart/v2/util/validate_name_test.go diff --git a/pkg/chart/util/values.go b/pkg/chart/v2/util/values.go similarity index 99% rename from pkg/chart/util/values.go rename to pkg/chart/v2/util/values.go index 46952c079..404ba9842 100644 --- a/pkg/chart/util/values.go +++ b/pkg/chart/v2/util/values.go @@ -26,7 +26,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // GlobalKey is the name of the Values key that is used for storing global vars. diff --git a/pkg/chart/util/values_test.go b/pkg/chart/v2/util/values_test.go similarity index 99% rename from pkg/chart/util/values_test.go rename to pkg/chart/v2/util/values_test.go index 660b7e4ed..6a5400f78 100644 --- a/pkg/chart/util/values_test.go +++ b/pkg/chart/v2/util/values_test.go @@ -22,7 +22,7 @@ import ( "testing" "text/template" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) func TestReadValues(t *testing.T) { diff --git a/pkg/cli/values/options.go b/pkg/cli/values/options.go index 2c3706b84..461db3cc2 100644 --- a/pkg/cli/values/options.go +++ b/pkg/cli/values/options.go @@ -26,7 +26,7 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/strvals" ) diff --git a/pkg/downloader/manager.go b/pkg/downloader/manager.go index e5dac8b10..d38509311 100644 --- a/pkg/downloader/manager.go +++ b/pkg/downloader/manager.go @@ -36,9 +36,9 @@ import ( "helm.sh/helm/v4/internal/resolver" "helm.sh/helm/v4/internal/third_party/dep/fs" "helm.sh/helm/v4/internal/urlutil" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/helmpath" "helm.sh/helm/v4/pkg/registry" diff --git a/pkg/downloader/manager_test.go b/pkg/downloader/manager_test.go index 8731fb003..b8b009f1b 100644 --- a/pkg/downloader/manager_test.go +++ b/pkg/downloader/manager_test.go @@ -24,9 +24,9 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/repo" "helm.sh/helm/v4/pkg/repo/repotest" diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 0229b1833..0d0a398be 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -29,8 +29,8 @@ import ( "github.com/pkg/errors" "k8s.io/client-go/rest" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" ) // Engine is an implementation of the Helm rendering implementation for templates. diff --git a/pkg/engine/engine_test.go b/pkg/engine/engine_test.go index 4c28c2965..a54e99cad 100644 --- a/pkg/engine/engine_test.go +++ b/pkg/engine/engine_test.go @@ -30,8 +30,8 @@ import ( "k8s.io/client-go/dynamic" "k8s.io/client-go/dynamic/fake" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" ) func TestSortTemplates(t *testing.T) { diff --git a/pkg/engine/files.go b/pkg/engine/files.go index dc6a67de8..87166728c 100644 --- a/pkg/engine/files.go +++ b/pkg/engine/files.go @@ -23,7 +23,7 @@ import ( "github.com/gobwas/glob" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" ) // files is a map of files in a chart that can be accessed from a template. diff --git a/pkg/lint/lint.go b/pkg/lint/lint.go index b53400c87..a61d5e43f 100644 --- a/pkg/lint/lint.go +++ b/pkg/lint/lint.go @@ -19,7 +19,7 @@ package lint // import "helm.sh/helm/v4/pkg/lint" import ( "path/filepath" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/lint/rules" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/lint_test.go b/pkg/lint/lint_test.go index bba024d59..067d140f6 100644 --- a/pkg/lint/lint_test.go +++ b/pkg/lint/lint_test.go @@ -21,7 +21,7 @@ import ( "testing" "time" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/chartfile.go b/pkg/lint/rules/chartfile.go index a1e08b58d..598557a97 100644 --- a/pkg/lint/rules/chartfile.go +++ b/pkg/lint/rules/chartfile.go @@ -26,8 +26,8 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/chartfile_test.go b/pkg/lint/rules/chartfile_test.go index 6d709790a..061d90e33 100644 --- a/pkg/lint/rules/chartfile_test.go +++ b/pkg/lint/rules/chartfile_test.go @@ -24,8 +24,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/dependencies.go b/pkg/lint/rules/dependencies.go index 5f71dd144..2ab56eca5 100644 --- a/pkg/lint/rules/dependencies.go +++ b/pkg/lint/rules/dependencies.go @@ -22,8 +22,8 @@ import ( "github.com/pkg/errors" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/dependencies_test.go b/pkg/lint/rules/dependencies_test.go index e946b1c01..1369b2372 100644 --- a/pkg/lint/rules/dependencies_test.go +++ b/pkg/lint/rules/dependencies_test.go @@ -19,8 +19,8 @@ import ( "path/filepath" "testing" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/deprecations.go b/pkg/lint/rules/deprecations.go index 0a8e642c9..bd4a4436a 100644 --- a/pkg/lint/rules/deprecations.go +++ b/pkg/lint/rules/deprecations.go @@ -25,7 +25,7 @@ import ( "k8s.io/apiserver/pkg/endpoints/deprecation" kscheme "k8s.io/client-go/kubernetes/scheme" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" ) var ( diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index ec434aba5..287968340 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -33,8 +33,8 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/yaml" - "helm.sh/helm/v4/pkg/chart/loader" - chartutil "helm.sh/helm/v4/pkg/chart/util" + "helm.sh/helm/v4/pkg/chart/v2/loader" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/engine" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/template_test.go b/pkg/lint/rules/template_test.go index d3185d8c8..7205ace6d 100644 --- a/pkg/lint/rules/template_test.go +++ b/pkg/lint/rules/template_test.go @@ -23,8 +23,8 @@ import ( "strings" "testing" - "helm.sh/helm/v4/pkg/chart" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/lint/rules/values.go b/pkg/lint/rules/values.go index f430178c3..8aae250c6 100644 --- a/pkg/lint/rules/values.go +++ b/pkg/lint/rules/values.go @@ -22,7 +22,7 @@ import ( "github.com/pkg/errors" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/lint/support" ) diff --git a/pkg/provenance/sign.go b/pkg/provenance/sign.go index bbb68322f..cd7664edd 100644 --- a/pkg/provenance/sign.go +++ b/pkg/provenance/sign.go @@ -30,8 +30,8 @@ import ( "golang.org/x/crypto/openpgp/packet" //nolint "sigs.k8s.io/yaml" - hapi "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + hapi "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" ) var defaultPGPConfig = packet.Config{ diff --git a/pkg/pusher/ocipusher.go b/pkg/pusher/ocipusher.go index a5149d1c7..5cea78a44 100644 --- a/pkg/pusher/ocipusher.go +++ b/pkg/pusher/ocipusher.go @@ -27,7 +27,7 @@ import ( "github.com/pkg/errors" "helm.sh/helm/v4/internal/tlsutil" - "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/time/ctime" ) diff --git a/pkg/registry/client.go b/pkg/registry/client.go index 01e5dff7b..ecc7a0d04 100644 --- a/pkg/registry/client.go +++ b/pkg/registry/client.go @@ -45,7 +45,7 @@ import ( "oras.land/oras-go/v2/registry/remote/retry" "helm.sh/helm/v4/internal/version" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/helmpath" ) diff --git a/pkg/registry/util.go b/pkg/registry/util.go index 8c0106fb9..1a96b0768 100644 --- a/pkg/registry/util.go +++ b/pkg/registry/util.go @@ -25,8 +25,8 @@ import ( "time" "helm.sh/helm/v4/internal/tlsutil" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" helmtime "helm.sh/helm/v4/pkg/time" "github.com/Masterminds/semver/v3" diff --git a/pkg/registry/util_test.go b/pkg/registry/util_test.go index 93a11a998..c8ce4e4a4 100644 --- a/pkg/registry/util_test.go +++ b/pkg/registry/util_test.go @@ -23,7 +23,7 @@ import ( ocispec "github.com/opencontainers/image-spec/specs-go/v1" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/release/mock.go b/pkg/release/mock.go index ab21d3cf2..94b4d01f3 100644 --- a/pkg/release/mock.go +++ b/pkg/release/mock.go @@ -20,7 +20,7 @@ import ( "fmt" "math/rand" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/release/release.go b/pkg/release/release.go index 2a4963d9b..1a7c7b18c 100644 --- a/pkg/release/release.go +++ b/pkg/release/release.go @@ -15,7 +15,9 @@ limitations under the License. package release -import "helm.sh/helm/v4/pkg/chart" +import ( + chart "helm.sh/helm/v4/pkg/chart/v2" +) // Release describes a deployment of a chart, together with the chart // and the variables used to deploy that chart. diff --git a/pkg/release/util/manifest_sorter.go b/pkg/release/util/manifest_sorter.go index a598743a6..c4ad62161 100644 --- a/pkg/release/util/manifest_sorter.go +++ b/pkg/release/util/manifest_sorter.go @@ -26,7 +26,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/release" ) diff --git a/pkg/repo/chartrepo.go b/pkg/repo/chartrepo.go index 3629bd24b..52f81be57 100644 --- a/pkg/repo/chartrepo.go +++ b/pkg/repo/chartrepo.go @@ -31,7 +31,7 @@ import ( "github.com/pkg/errors" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart/loader" + "helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/helmpath" "helm.sh/helm/v4/pkg/provenance" diff --git a/pkg/repo/chartrepo_test.go b/pkg/repo/chartrepo_test.go index e3330b8eb..42d00e0ee 100644 --- a/pkg/repo/chartrepo_test.go +++ b/pkg/repo/chartrepo_test.go @@ -30,7 +30,7 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/cli" "helm.sh/helm/v4/pkg/getter" ) diff --git a/pkg/repo/index.go b/pkg/repo/index.go index 2526cba1b..c5f808229 100644 --- a/pkg/repo/index.go +++ b/pkg/repo/index.go @@ -33,8 +33,8 @@ import ( "helm.sh/helm/v4/internal/fileutil" "helm.sh/helm/v4/internal/urlutil" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" "helm.sh/helm/v4/pkg/provenance" ) diff --git a/pkg/repo/index_test.go b/pkg/repo/index_test.go index 8c22bdc3e..f50c7e65e 100644 --- a/pkg/repo/index_test.go +++ b/pkg/repo/index_test.go @@ -28,7 +28,7 @@ import ( "strings" "testing" - "helm.sh/helm/v4/pkg/chart" + chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/cli" "helm.sh/helm/v4/pkg/getter" "helm.sh/helm/v4/pkg/helmpath" diff --git a/pkg/repo/repotest/server.go b/pkg/repo/repotest/server.go index 7b004dbc3..709a6f5fd 100644 --- a/pkg/repo/repotest/server.go +++ b/pkg/repo/repotest/server.go @@ -34,9 +34,9 @@ import ( "golang.org/x/crypto/bcrypt" "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/chart" - "helm.sh/helm/v4/pkg/chart/loader" - chartutil "helm.sh/helm/v4/pkg/chart/util" + chart "helm.sh/helm/v4/pkg/chart/v2" + "helm.sh/helm/v4/pkg/chart/v2/loader" + chartutil "helm.sh/helm/v4/pkg/chart/v2/util" ociRegistry "helm.sh/helm/v4/pkg/registry" "helm.sh/helm/v4/pkg/repo" ) From 0d5e64c1f28d0ef5e1d24e4bbb268a435f5cfcd6 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Tue, 25 Feb 2025 22:34:50 +0200 Subject: [PATCH 199/206] Fix formatting Signed-off-by: Yarden Shoham --- cmd/helm/flags_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/helm/flags_test.go b/cmd/helm/flags_test.go index fbdc597d6..e55c51ce4 100644 --- a/cmd/helm/flags_test.go +++ b/cmd/helm/flags_test.go @@ -21,6 +21,7 @@ import ( "testing" "github.com/stretchr/testify/require" + "helm.sh/helm/v4/pkg/action" chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/release" From f04c456bd67a758f99443a735d933f6f735ed4d1 Mon Sep 17 00:00:00 2001 From: Austin Abro Date: Wed, 26 Feb 2025 13:21:00 +0000 Subject: [PATCH 200/206] gofmt Signed-off-by: Austin Abro --- pkg/cmd/create.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cmd/create.go b/pkg/cmd/create.go index f6938d660..435c8ca82 100644 --- a/pkg/cmd/create.go +++ b/pkg/cmd/create.go @@ -23,9 +23,9 @@ import ( "github.com/spf13/cobra" - "helm.sh/helm/v4/pkg/cmd/require" chart "helm.sh/helm/v4/pkg/chart/v2" chartutil "helm.sh/helm/v4/pkg/chart/v2/util" + "helm.sh/helm/v4/pkg/cmd/require" "helm.sh/helm/v4/pkg/helmpath" ) From e7114889705644bb2db8ca2e8ab317e28ffd48c1 Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Wed, 26 Feb 2025 09:04:32 -0500 Subject: [PATCH 201/206] Move pkg/release to pkg/release/v1 to support v3 charts This is part of HIP 20 which provides a means to have v3 charts that live alongside v2 charts while having breaking changes. The plan is to have a different release object for v3 chart instances for at least a couple reasons: 1. So that the chart object on the release can be fundamentally different. 2. So that Helm v3 does not detect or try to work with instances of charts whose apiVersion it does not know about. Note: it is expected that Helm v3 usage will be used long after the Helm project no longer supports it. 5 years after Helm v2 had reached end-of-life there was still usage of it. Note: The release util package is separate from the versioned elements as it is planned to use generics to handle multiple release object versions. Signed-off-by: Matt Farina --- cmd/helm/completion_test.go | 2 +- cmd/helm/flags_test.go | 2 +- cmd/helm/get_all_test.go | 2 +- cmd/helm/get_hooks_test.go | 2 +- cmd/helm/get_manifest_test.go | 2 +- cmd/helm/get_metadata_test.go | 2 +- cmd/helm/get_notes_test.go | 2 +- cmd/helm/get_values_test.go | 2 +- cmd/helm/helm.go | 2 +- cmd/helm/helm_test.go | 2 +- cmd/helm/history.go | 2 +- cmd/helm/history_test.go | 2 +- cmd/helm/install.go | 2 +- cmd/helm/list.go | 2 +- cmd/helm/list_test.go | 2 +- cmd/helm/plugin_test.go | 2 +- cmd/helm/rollback_test.go | 2 +- cmd/helm/status.go | 2 +- cmd/helm/status_test.go | 2 +- cmd/helm/template.go | 2 +- cmd/helm/uninstall_test.go | 2 +- cmd/helm/upgrade.go | 2 +- cmd/helm/upgrade_test.go | 2 +- pkg/action/action.go | 2 +- pkg/action/action_test.go | 2 +- pkg/action/get.go | 2 +- pkg/action/history.go | 2 +- pkg/action/hooks.go | 2 +- pkg/action/hooks_test.go | 2 +- pkg/action/install.go | 2 +- pkg/action/install_test.go | 2 +- pkg/action/list.go | 2 +- pkg/action/list_test.go | 2 +- pkg/action/release_testing.go | 2 +- pkg/action/rollback.go | 2 +- pkg/action/status.go | 2 +- pkg/action/uninstall.go | 2 +- pkg/action/uninstall_test.go | 2 +- pkg/action/upgrade.go | 2 +- pkg/action/upgrade_test.go | 2 +- pkg/release/util/filter.go | 2 +- pkg/release/util/filter_test.go | 2 +- pkg/release/util/kind_sorter.go | 2 +- pkg/release/util/kind_sorter_test.go | 2 +- pkg/release/util/manifest_sorter.go | 2 +- pkg/release/util/manifest_sorter_test.go | 2 +- pkg/release/util/sorter.go | 2 +- pkg/release/util/sorter_test.go | 2 +- pkg/release/{ => v1}/hook.go | 2 +- pkg/release/{ => v1}/info.go | 2 +- pkg/release/{ => v1}/mock.go | 2 +- pkg/release/{ => v1}/release.go | 2 +- pkg/release/{ => v1}/responses.go | 2 +- pkg/release/{ => v1}/status.go | 2 +- pkg/storage/driver/cfgmaps.go | 2 +- pkg/storage/driver/cfgmaps_test.go | 2 +- pkg/storage/driver/driver.go | 2 +- pkg/storage/driver/memory.go | 2 +- pkg/storage/driver/memory_test.go | 2 +- pkg/storage/driver/mock_test.go | 2 +- pkg/storage/driver/records.go | 2 +- pkg/storage/driver/records_test.go | 2 +- pkg/storage/driver/secrets.go | 2 +- pkg/storage/driver/secrets_test.go | 2 +- pkg/storage/driver/sql.go | 2 +- pkg/storage/driver/sql_test.go | 2 +- pkg/storage/driver/util.go | 2 +- pkg/storage/storage.go | 2 +- pkg/storage/storage_test.go | 2 +- 69 files changed, 69 insertions(+), 69 deletions(-) rename pkg/release/{ => v1}/hook.go (99%) rename pkg/release/{ => v1}/info.go (98%) rename pkg/release/{ => v1}/mock.go (99%) rename pkg/release/{ => v1}/release.go (99%) rename pkg/release/{ => v1}/responses.go (98%) rename pkg/release/{ => v1}/status.go (99%) diff --git a/cmd/helm/completion_test.go b/cmd/helm/completion_test.go index 3d8383519..b1089596b 100644 --- a/cmd/helm/completion_test.go +++ b/cmd/helm/completion_test.go @@ -22,7 +22,7 @@ import ( "testing" chart "helm.sh/helm/v4/pkg/chart/v2" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) // Check if file completion should be performed according to parameter 'shouldBePerformed' diff --git a/cmd/helm/flags_test.go b/cmd/helm/flags_test.go index e55c51ce4..62a6fdcd4 100644 --- a/cmd/helm/flags_test.go +++ b/cmd/helm/flags_test.go @@ -24,7 +24,7 @@ import ( "helm.sh/helm/v4/pkg/action" chart "helm.sh/helm/v4/pkg/chart/v2" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/get_all_test.go b/cmd/helm/get_all_test.go index 60ea1161d..5de01bfcf 100644 --- a/cmd/helm/get_all_test.go +++ b/cmd/helm/get_all_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestGetCmd(t *testing.T) { diff --git a/cmd/helm/get_hooks_test.go b/cmd/helm/get_hooks_test.go index 75cf448cc..fa18204e3 100644 --- a/cmd/helm/get_hooks_test.go +++ b/cmd/helm/get_hooks_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestGetHooks(t *testing.T) { diff --git a/cmd/helm/get_manifest_test.go b/cmd/helm/get_manifest_test.go index b266620e7..96da50b75 100644 --- a/cmd/helm/get_manifest_test.go +++ b/cmd/helm/get_manifest_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestGetManifest(t *testing.T) { diff --git a/cmd/helm/get_metadata_test.go b/cmd/helm/get_metadata_test.go index 28c3c3649..29ca77253 100644 --- a/cmd/helm/get_metadata_test.go +++ b/cmd/helm/get_metadata_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestGetMetadataCmd(t *testing.T) { diff --git a/cmd/helm/get_notes_test.go b/cmd/helm/get_notes_test.go index 4ddd4c7a8..88d9584b8 100644 --- a/cmd/helm/get_notes_test.go +++ b/cmd/helm/get_notes_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestGetNotesCmd(t *testing.T) { diff --git a/cmd/helm/get_values_test.go b/cmd/helm/get_values_test.go index 44610c103..0fe141cf7 100644 --- a/cmd/helm/get_values_test.go +++ b/cmd/helm/get_values_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestGetValuesCmd(t *testing.T) { diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index c8de18796..7cce9436f 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -34,7 +34,7 @@ import ( "helm.sh/helm/v4/pkg/cli" "helm.sh/helm/v4/pkg/kube" kubefake "helm.sh/helm/v4/pkg/kube/fake" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage/driver" ) diff --git a/cmd/helm/helm_test.go b/cmd/helm/helm_test.go index cfffa6dc7..a1d2b8505 100644 --- a/cmd/helm/helm_test.go +++ b/cmd/helm/helm_test.go @@ -33,7 +33,7 @@ import ( chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/cli" kubefake "helm.sh/helm/v4/pkg/kube/fake" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage" "helm.sh/helm/v4/pkg/storage/driver" "helm.sh/helm/v4/pkg/time" diff --git a/cmd/helm/history.go b/cmd/helm/history.go index a47f97688..86fad4b04 100644 --- a/cmd/helm/history.go +++ b/cmd/helm/history.go @@ -29,8 +29,8 @@ import ( "helm.sh/helm/v4/pkg/action" chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/cli/output" - "helm.sh/helm/v4/pkg/release" releaseutil "helm.sh/helm/v4/pkg/release/util" + release "helm.sh/helm/v4/pkg/release/v1" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/history_test.go b/cmd/helm/history_test.go index 07f5134c6..0df64cd1c 100644 --- a/cmd/helm/history_test.go +++ b/cmd/helm/history_test.go @@ -20,7 +20,7 @@ import ( "fmt" "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestHistoryCmd(t *testing.T) { diff --git a/cmd/helm/install.go b/cmd/helm/install.go index 12f87cd20..3e8d04cb2 100644 --- a/cmd/helm/install.go +++ b/cmd/helm/install.go @@ -38,7 +38,7 @@ import ( "helm.sh/helm/v4/pkg/cli/values" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) const installDesc = ` diff --git a/cmd/helm/list.go b/cmd/helm/list.go index 67da22cdf..9bbe580a2 100644 --- a/cmd/helm/list.go +++ b/cmd/helm/list.go @@ -28,7 +28,7 @@ import ( "helm.sh/helm/v4/cmd/helm/require" "helm.sh/helm/v4/pkg/action" "helm.sh/helm/v4/pkg/cli/output" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) var listHelp = ` diff --git a/cmd/helm/list_test.go b/cmd/helm/list_test.go index 6a462ee28..6f9754459 100644 --- a/cmd/helm/list_test.go +++ b/cmd/helm/list_test.go @@ -20,7 +20,7 @@ import ( "testing" chart "helm.sh/helm/v4/pkg/chart/v2" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/plugin_test.go b/cmd/helm/plugin_test.go index 4d2aa1a59..cbaf05321 100644 --- a/cmd/helm/plugin_test.go +++ b/cmd/helm/plugin_test.go @@ -26,7 +26,7 @@ import ( "github.com/spf13/cobra" "github.com/spf13/pflag" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestManuallyProcessArgs(t *testing.T) { diff --git a/cmd/helm/rollback_test.go b/cmd/helm/rollback_test.go index 88dbf6524..a3bad2ef7 100644 --- a/cmd/helm/rollback_test.go +++ b/cmd/helm/rollback_test.go @@ -22,7 +22,7 @@ import ( "testing" chart "helm.sh/helm/v4/pkg/chart/v2" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestRollbackCmd(t *testing.T) { diff --git a/cmd/helm/status.go b/cmd/helm/status.go index 727c3df9e..d1e25dd45 100644 --- a/cmd/helm/status.go +++ b/cmd/helm/status.go @@ -32,7 +32,7 @@ import ( "helm.sh/helm/v4/pkg/action" chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/cli/output" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) // NOTE: Keep the list of statuses up-to-date with pkg/release/status.go. diff --git a/cmd/helm/status_test.go b/cmd/helm/status_test.go index 7e51849b1..7063e203f 100644 --- a/cmd/helm/status_test.go +++ b/cmd/helm/status_test.go @@ -21,7 +21,7 @@ import ( "time" chart "helm.sh/helm/v4/pkg/chart/v2" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/cmd/helm/template.go b/cmd/helm/template.go index c41373337..4c07dac98 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -28,7 +28,7 @@ import ( "sort" "strings" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" "github.com/spf13/cobra" diff --git a/cmd/helm/uninstall_test.go b/cmd/helm/uninstall_test.go index f9bc71ec2..852823591 100644 --- a/cmd/helm/uninstall_test.go +++ b/cmd/helm/uninstall_test.go @@ -19,7 +19,7 @@ package main import ( "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestUninstall(t *testing.T) { diff --git a/cmd/helm/upgrade.go b/cmd/helm/upgrade.go index 7d6cb33ec..929051306 100644 --- a/cmd/helm/upgrade.go +++ b/cmd/helm/upgrade.go @@ -36,7 +36,7 @@ import ( "helm.sh/helm/v4/pkg/cli/values" "helm.sh/helm/v4/pkg/downloader" "helm.sh/helm/v4/pkg/getter" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage/driver" ) diff --git a/cmd/helm/upgrade_test.go b/cmd/helm/upgrade_test.go index 595ca9fc2..9b414c90a 100644 --- a/cmd/helm/upgrade_test.go +++ b/cmd/helm/upgrade_test.go @@ -27,7 +27,7 @@ import ( chart "helm.sh/helm/v4/pkg/chart/v2" "helm.sh/helm/v4/pkg/chart/v2/loader" chartutil "helm.sh/helm/v4/pkg/chart/v2/util" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestUpgradeCmd(t *testing.T) { diff --git a/pkg/action/action.go b/pkg/action/action.go index d91ccab51..ea2dc0dd7 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -39,8 +39,8 @@ import ( "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" - "helm.sh/helm/v4/pkg/release" releaseutil "helm.sh/helm/v4/pkg/release/util" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage" "helm.sh/helm/v4/pkg/storage/driver" "helm.sh/helm/v4/pkg/time" diff --git a/pkg/action/action_test.go b/pkg/action/action_test.go index 4c78ef6c1..b1cf20597 100644 --- a/pkg/action/action_test.go +++ b/pkg/action/action_test.go @@ -28,7 +28,7 @@ import ( chartutil "helm.sh/helm/v4/pkg/chart/v2/util" kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/registry" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage" "helm.sh/helm/v4/pkg/storage/driver" "helm.sh/helm/v4/pkg/time" diff --git a/pkg/action/get.go b/pkg/action/get.go index 4c0683f3e..dbe5f4cb3 100644 --- a/pkg/action/get.go +++ b/pkg/action/get.go @@ -17,7 +17,7 @@ limitations under the License. package action import ( - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) // Get is the action for checking a given release's information. diff --git a/pkg/action/history.go b/pkg/action/history.go index e5ac16bfe..04743f4cd 100644 --- a/pkg/action/history.go +++ b/pkg/action/history.go @@ -20,7 +20,7 @@ import ( "github.com/pkg/errors" chartutil "helm.sh/helm/v4/pkg/chart/v2/util" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) // History is the action for checking the release's ledger. diff --git a/pkg/action/hooks.go b/pkg/action/hooks.go index b6c505807..230e9ec81 100644 --- a/pkg/action/hooks.go +++ b/pkg/action/hooks.go @@ -30,7 +30,7 @@ import ( "github.com/pkg/errors" "gopkg.in/yaml.v3" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/action/hooks_test.go b/pkg/action/hooks_test.go index b39ffe022..38f25d9ab 100644 --- a/pkg/action/hooks_test.go +++ b/pkg/action/hooks_test.go @@ -26,7 +26,7 @@ import ( chart "helm.sh/helm/v4/pkg/chart/v2" kubefake "helm.sh/helm/v4/pkg/kube/fake" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func podManifestWithOutputLogs(hookDefinitions []release.HookOutputLogPolicy) string { diff --git a/pkg/action/install.go b/pkg/action/install.go index ad260c361..f1896351e 100644 --- a/pkg/action/install.go +++ b/pkg/action/install.go @@ -48,8 +48,8 @@ import ( kubefake "helm.sh/helm/v4/pkg/kube/fake" "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" - "helm.sh/helm/v4/pkg/release" releaseutil "helm.sh/helm/v4/pkg/release/util" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/repo" "helm.sh/helm/v4/pkg/storage" "helm.sh/helm/v4/pkg/storage/driver" diff --git a/pkg/action/install_test.go b/pkg/action/install_test.go index 09715daf3..869055657 100644 --- a/pkg/action/install_test.go +++ b/pkg/action/install_test.go @@ -36,7 +36,7 @@ import ( chart "helm.sh/helm/v4/pkg/chart/v2" chartutil "helm.sh/helm/v4/pkg/chart/v2/util" kubefake "helm.sh/helm/v4/pkg/kube/fake" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage/driver" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/action/list.go b/pkg/action/list.go index 5c2b1e8a1..82500582f 100644 --- a/pkg/action/list.go +++ b/pkg/action/list.go @@ -22,8 +22,8 @@ import ( "k8s.io/apimachinery/pkg/labels" - "helm.sh/helm/v4/pkg/release" releaseutil "helm.sh/helm/v4/pkg/release/util" + release "helm.sh/helm/v4/pkg/release/v1" ) // ListStates represents zero or more status codes that a list item may have set diff --git a/pkg/action/list_test.go b/pkg/action/list_test.go index a7eb8a920..e41949310 100644 --- a/pkg/action/list_test.go +++ b/pkg/action/list_test.go @@ -21,7 +21,7 @@ import ( "github.com/stretchr/testify/assert" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage" ) diff --git a/pkg/action/release_testing.go b/pkg/action/release_testing.go index b4cdb47c8..c6374523e 100644 --- a/pkg/action/release_testing.go +++ b/pkg/action/release_testing.go @@ -28,7 +28,7 @@ import ( v1 "k8s.io/api/core/v1" chartutil "helm.sh/helm/v4/pkg/chart/v2/util" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) const ( diff --git a/pkg/action/rollback.go b/pkg/action/rollback.go index 0cd9d5d07..4006f565f 100644 --- a/pkg/action/rollback.go +++ b/pkg/action/rollback.go @@ -25,7 +25,7 @@ import ( "github.com/pkg/errors" chartutil "helm.sh/helm/v4/pkg/chart/v2/util" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/action/status.go b/pkg/action/status.go index db9a3b3f0..509c52cd9 100644 --- a/pkg/action/status.go +++ b/pkg/action/status.go @@ -21,7 +21,7 @@ import ( "errors" "helm.sh/helm/v4/pkg/kube" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) // Status is the action for checking the deployment status of releases. diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index bfec35fc0..fdbeb5dc8 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -26,8 +26,8 @@ import ( chartutil "helm.sh/helm/v4/pkg/chart/v2/util" "helm.sh/helm/v4/pkg/kube" - "helm.sh/helm/v4/pkg/release" releaseutil "helm.sh/helm/v4/pkg/release/util" + release "helm.sh/helm/v4/pkg/release/v1" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/action/uninstall_test.go b/pkg/action/uninstall_test.go index eca9e6ad8..071b76943 100644 --- a/pkg/action/uninstall_test.go +++ b/pkg/action/uninstall_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/assert" kubefake "helm.sh/helm/v4/pkg/kube/fake" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func uninstallAction(t *testing.T) *Uninstall { diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index 340f61585..e32c8dcaf 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -33,8 +33,8 @@ import ( "helm.sh/helm/v4/pkg/kube" "helm.sh/helm/v4/pkg/postrender" "helm.sh/helm/v4/pkg/registry" - "helm.sh/helm/v4/pkg/release" releaseutil "helm.sh/helm/v4/pkg/release/util" + release "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage/driver" ) diff --git a/pkg/action/upgrade_test.go b/pkg/action/upgrade_test.go index 069578025..303f49e70 100644 --- a/pkg/action/upgrade_test.go +++ b/pkg/action/upgrade_test.go @@ -30,7 +30,7 @@ import ( "github.com/stretchr/testify/require" kubefake "helm.sh/helm/v4/pkg/kube/fake" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/release/util/filter.go b/pkg/release/util/filter.go index e56752f86..f0a082cfd 100644 --- a/pkg/release/util/filter.go +++ b/pkg/release/util/filter.go @@ -16,7 +16,7 @@ limitations under the License. package util // import "helm.sh/helm/v4/pkg/release/util" -import rspb "helm.sh/helm/v4/pkg/release" +import rspb "helm.sh/helm/v4/pkg/release/v1" // FilterFunc returns true if the release object satisfies // the predicate of the underlying filter func. diff --git a/pkg/release/util/filter_test.go b/pkg/release/util/filter_test.go index 2037ef157..5d2564619 100644 --- a/pkg/release/util/filter_test.go +++ b/pkg/release/util/filter_test.go @@ -19,7 +19,7 @@ package util // import "helm.sh/helm/v4/pkg/release/util" import ( "testing" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) func TestFilterAny(t *testing.T) { diff --git a/pkg/release/util/kind_sorter.go b/pkg/release/util/kind_sorter.go index 130b2c831..22795733c 100644 --- a/pkg/release/util/kind_sorter.go +++ b/pkg/release/util/kind_sorter.go @@ -19,7 +19,7 @@ package util import ( "sort" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) // KindSortOrder is an ordering of Kinds. diff --git a/pkg/release/util/kind_sorter_test.go b/pkg/release/util/kind_sorter_test.go index cd40fe459..00d80ecf2 100644 --- a/pkg/release/util/kind_sorter_test.go +++ b/pkg/release/util/kind_sorter_test.go @@ -20,7 +20,7 @@ import ( "bytes" "testing" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestKindSorter(t *testing.T) { diff --git a/pkg/release/util/manifest_sorter.go b/pkg/release/util/manifest_sorter.go index c4ad62161..15eb76174 100644 --- a/pkg/release/util/manifest_sorter.go +++ b/pkg/release/util/manifest_sorter.go @@ -27,7 +27,7 @@ import ( "sigs.k8s.io/yaml" chartutil "helm.sh/helm/v4/pkg/chart/v2/util" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) // Manifest represents a manifest file, which has a name and some content. diff --git a/pkg/release/util/manifest_sorter_test.go b/pkg/release/util/manifest_sorter_test.go index 281f24924..4360013e5 100644 --- a/pkg/release/util/manifest_sorter_test.go +++ b/pkg/release/util/manifest_sorter_test.go @@ -22,7 +22,7 @@ import ( "sigs.k8s.io/yaml" - "helm.sh/helm/v4/pkg/release" + release "helm.sh/helm/v4/pkg/release/v1" ) func TestSortManifests(t *testing.T) { diff --git a/pkg/release/util/sorter.go b/pkg/release/util/sorter.go index 8b1c89aa3..949adbda9 100644 --- a/pkg/release/util/sorter.go +++ b/pkg/release/util/sorter.go @@ -19,7 +19,7 @@ package util // import "helm.sh/helm/v4/pkg/release/util" import ( "sort" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) type list []*rspb.Release diff --git a/pkg/release/util/sorter_test.go b/pkg/release/util/sorter_test.go index 6e92eef5c..8a766efc9 100644 --- a/pkg/release/util/sorter_test.go +++ b/pkg/release/util/sorter_test.go @@ -20,7 +20,7 @@ import ( "testing" "time" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" helmtime "helm.sh/helm/v4/pkg/time" ) diff --git a/pkg/release/hook.go b/pkg/release/v1/hook.go similarity index 99% rename from pkg/release/hook.go rename to pkg/release/v1/hook.go index 5ff61fdaa..1ef5c1eb8 100644 --- a/pkg/release/hook.go +++ b/pkg/release/v1/hook.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package release +package v1 import ( "helm.sh/helm/v4/pkg/time" diff --git a/pkg/release/info.go b/pkg/release/v1/info.go similarity index 98% rename from pkg/release/info.go rename to pkg/release/v1/info.go index 514807a35..ff98ab63e 100644 --- a/pkg/release/info.go +++ b/pkg/release/v1/info.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package release +package v1 import ( "k8s.io/apimachinery/pkg/runtime" diff --git a/pkg/release/mock.go b/pkg/release/v1/mock.go similarity index 99% rename from pkg/release/mock.go rename to pkg/release/v1/mock.go index 94b4d01f3..9ca57284c 100644 --- a/pkg/release/mock.go +++ b/pkg/release/v1/mock.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package release +package v1 import ( "fmt" diff --git a/pkg/release/release.go b/pkg/release/v1/release.go similarity index 99% rename from pkg/release/release.go rename to pkg/release/v1/release.go index 1a7c7b18c..74e834f7b 100644 --- a/pkg/release/release.go +++ b/pkg/release/v1/release.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package release +package v1 import ( chart "helm.sh/helm/v4/pkg/chart/v2" diff --git a/pkg/release/responses.go b/pkg/release/v1/responses.go similarity index 98% rename from pkg/release/responses.go rename to pkg/release/v1/responses.go index 7ee1fc2ee..2a5608c67 100644 --- a/pkg/release/responses.go +++ b/pkg/release/v1/responses.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package release +package v1 // UninstallReleaseResponse represents a successful response to an uninstall request. type UninstallReleaseResponse struct { diff --git a/pkg/release/status.go b/pkg/release/v1/status.go similarity index 99% rename from pkg/release/status.go rename to pkg/release/v1/status.go index edd27a5f1..8d6459013 100644 --- a/pkg/release/status.go +++ b/pkg/release/v1/status.go @@ -13,7 +13,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package release +package v1 // Status is the status of a release type Status string diff --git a/pkg/storage/driver/cfgmaps.go b/pkg/storage/driver/cfgmaps.go index 48edc3172..2b84b7f82 100644 --- a/pkg/storage/driver/cfgmaps.go +++ b/pkg/storage/driver/cfgmaps.go @@ -31,7 +31,7 @@ import ( "k8s.io/apimachinery/pkg/util/validation" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) var _ Driver = (*ConfigMaps)(nil) diff --git a/pkg/storage/driver/cfgmaps_test.go b/pkg/storage/driver/cfgmaps_test.go index c93ef8ea4..8ba6832fa 100644 --- a/pkg/storage/driver/cfgmaps_test.go +++ b/pkg/storage/driver/cfgmaps_test.go @@ -21,7 +21,7 @@ import ( v1 "k8s.io/api/core/v1" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) func TestConfigMapName(t *testing.T) { diff --git a/pkg/storage/driver/driver.go b/pkg/storage/driver/driver.go index 2987ba38e..661c32e52 100644 --- a/pkg/storage/driver/driver.go +++ b/pkg/storage/driver/driver.go @@ -21,7 +21,7 @@ import ( "github.com/pkg/errors" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) var ( diff --git a/pkg/storage/driver/memory.go b/pkg/storage/driver/memory.go index 430ab215f..79e7f090e 100644 --- a/pkg/storage/driver/memory.go +++ b/pkg/storage/driver/memory.go @@ -21,7 +21,7 @@ import ( "strings" "sync" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) var _ Driver = (*Memory)(nil) diff --git a/pkg/storage/driver/memory_test.go b/pkg/storage/driver/memory_test.go index 999649635..ee547b58b 100644 --- a/pkg/storage/driver/memory_test.go +++ b/pkg/storage/driver/memory_test.go @@ -21,7 +21,7 @@ import ( "reflect" "testing" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) func TestMemoryName(t *testing.T) { diff --git a/pkg/storage/driver/mock_test.go b/pkg/storage/driver/mock_test.go index 359f2d079..199da6505 100644 --- a/pkg/storage/driver/mock_test.go +++ b/pkg/storage/driver/mock_test.go @@ -31,7 +31,7 @@ import ( kblabels "k8s.io/apimachinery/pkg/labels" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) func releaseStub(name string, vers int, namespace string, status rspb.Status) *rspb.Release { diff --git a/pkg/storage/driver/records.go b/pkg/storage/driver/records.go index 3b8f078fd..6b4efef3a 100644 --- a/pkg/storage/driver/records.go +++ b/pkg/storage/driver/records.go @@ -20,7 +20,7 @@ import ( "sort" "strconv" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) // records holds a list of in-memory release records diff --git a/pkg/storage/driver/records_test.go b/pkg/storage/driver/records_test.go index b1bb051d5..34b2fb80c 100644 --- a/pkg/storage/driver/records_test.go +++ b/pkg/storage/driver/records_test.go @@ -20,7 +20,7 @@ import ( "reflect" "testing" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) func TestRecordsAdd(t *testing.T) { diff --git a/pkg/storage/driver/secrets.go b/pkg/storage/driver/secrets.go index eb215a755..2ab128c6b 100644 --- a/pkg/storage/driver/secrets.go +++ b/pkg/storage/driver/secrets.go @@ -31,7 +31,7 @@ import ( "k8s.io/apimachinery/pkg/util/validation" corev1 "k8s.io/client-go/kubernetes/typed/core/v1" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) var _ Driver = (*Secrets)(nil) diff --git a/pkg/storage/driver/secrets_test.go b/pkg/storage/driver/secrets_test.go index 37ecc20dd..7affc81ab 100644 --- a/pkg/storage/driver/secrets_test.go +++ b/pkg/storage/driver/secrets_test.go @@ -21,7 +21,7 @@ import ( v1 "k8s.io/api/core/v1" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) func TestSecretName(t *testing.T) { diff --git a/pkg/storage/driver/sql.go b/pkg/storage/driver/sql.go index d5ab6b0a1..12bdd3ff4 100644 --- a/pkg/storage/driver/sql.go +++ b/pkg/storage/driver/sql.go @@ -30,7 +30,7 @@ import ( // Import pq for postgres dialect _ "github.com/lib/pq" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) var _ Driver = (*SQL)(nil) diff --git a/pkg/storage/driver/sql_test.go b/pkg/storage/driver/sql_test.go index 8d7b88475..bd2918aad 100644 --- a/pkg/storage/driver/sql_test.go +++ b/pkg/storage/driver/sql_test.go @@ -23,7 +23,7 @@ import ( sqlmock "github.com/DATA-DOG/go-sqlmock" migrate "github.com/rubenv/sql-migrate" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) func TestSQLName(t *testing.T) { diff --git a/pkg/storage/driver/util.go b/pkg/storage/driver/util.go index 7f1bc716c..0abbe41b2 100644 --- a/pkg/storage/driver/util.go +++ b/pkg/storage/driver/util.go @@ -23,7 +23,7 @@ import ( "encoding/json" "io" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" ) var b64 = base64.StdEncoding diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index 6a77cbae6..5e8718ea0 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -22,8 +22,8 @@ import ( "github.com/pkg/errors" - rspb "helm.sh/helm/v4/pkg/release" relutil "helm.sh/helm/v4/pkg/release/util" + rspb "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage/driver" ) diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go index 80011520e..056b7f5f5 100644 --- a/pkg/storage/storage_test.go +++ b/pkg/storage/storage_test.go @@ -23,7 +23,7 @@ import ( "github.com/pkg/errors" - rspb "helm.sh/helm/v4/pkg/release" + rspb "helm.sh/helm/v4/pkg/release/v1" "helm.sh/helm/v4/pkg/storage/driver" ) From 48f03d316b81b2f9d2d10e2e411c93930d349ff5 Mon Sep 17 00:00:00 2001 From: Robert Sirchia Date: Wed, 26 Feb 2025 15:21:47 -0500 Subject: [PATCH 202/206] changing from log to slog Signed-off-by: Robert Sirchia --- pkg/repo/index.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/repo/index.go b/pkg/repo/index.go index c5f808229..3e063becf 100644 --- a/pkg/repo/index.go +++ b/pkg/repo/index.go @@ -19,7 +19,7 @@ package repo import ( "bytes" "encoding/json" - "log" + "log/slog" "os" "path" "path/filepath" @@ -154,7 +154,7 @@ func (i IndexFile) MustAdd(md *chart.Metadata, filename, baseURL, digest string) // Deprecated: Use index.MustAdd instead. func (i IndexFile) Add(md *chart.Metadata, filename, baseURL, digest string) { if err := i.MustAdd(md, filename, baseURL, digest); err != nil { - log.Printf("skipping loading invalid entry for chart %q %q from %s: %s", md.Name, md.Version, filename, err) + slog.Error("skipping loading invalid entry for chart %q %q from %s: %s", md.Name, md.Version, filename, err) } } @@ -356,7 +356,7 @@ func loadIndex(data []byte, source string) (*IndexFile, error) { for name, cvs := range i.Entries { for idx := len(cvs) - 1; idx >= 0; idx-- { if cvs[idx] == nil { - log.Printf("skipping loading invalid entry for chart %q from %s: empty entry", name, source) + slog.Info("skipping loading invalid entry for chart %q from %s: empty entry", name, source) continue } // When metadata section missing, initialize with no data @@ -367,7 +367,7 @@ func loadIndex(data []byte, source string) (*IndexFile, error) { cvs[idx].APIVersion = chart.APIVersionV1 } if err := cvs[idx].Validate(); ignoreSkippableChartValidationError(err) != nil { - log.Printf("skipping loading invalid entry for chart %q %q from %s: %s", name, cvs[idx].Version, source, err) + slog.Error("skipping loading invalid entry for chart %q %q from %s: %s", name, cvs[idx].Version, source, err) cvs = append(cvs[:idx], cvs[idx+1:]...) } } From a11f4c00265bdef681d2a84d3c7dfa4bb81d4812 Mon Sep 17 00:00:00 2001 From: Robert Sirchia Date: Thu, 27 Feb 2025 12:56:52 -0500 Subject: [PATCH 203/206] changing info to error Signed-off-by: Robert Sirchia --- pkg/repo/index.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/repo/index.go b/pkg/repo/index.go index 3e063becf..954d7486c 100644 --- a/pkg/repo/index.go +++ b/pkg/repo/index.go @@ -356,7 +356,7 @@ func loadIndex(data []byte, source string) (*IndexFile, error) { for name, cvs := range i.Entries { for idx := len(cvs) - 1; idx >= 0; idx-- { if cvs[idx] == nil { - slog.Info("skipping loading invalid entry for chart %q from %s: empty entry", name, source) + slog.Error("skipping loading invalid entry for chart %q from %s: empty entry", name, source) continue } // When metadata section missing, initialize with no data From 5a8058dc31a8326691f52533e9b08b41cfd0b5f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 21:29:19 +0000 Subject: [PATCH 204/206] build(deps): bump github.com/containerd/containerd from 1.7.25 to 1.7.26 Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.25 to 1.7.26. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.7.25...v1.7.26) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0b2836b06..7aaff78cc 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/Masterminds/squirrel v1.5.4 github.com/Masterminds/vcs v1.13.3 github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 - github.com/containerd/containerd v1.7.25 + github.com/containerd/containerd v1.7.26 github.com/cyphar/filepath-securejoin v0.4.1 github.com/distribution/distribution/v3 v3.0.0-rc.3 github.com/evanphx/json-patch v5.9.11+incompatible diff --git a/go.sum b/go.sum index 467cef72f..874bde217 100644 --- a/go.sum +++ b/go.sum @@ -48,8 +48,8 @@ github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UF github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= -github.com/containerd/containerd v1.7.25 h1:khEQOAXOEJalRO228yzVsuASLH42vT7DIo9Ss+9SMFQ= -github.com/containerd/containerd v1.7.25/go.mod h1:tWfHzVI0azhw4CT2vaIjsb2CoV4LJ9PrMPaULAr21Ok= +github.com/containerd/containerd v1.7.26 h1:3cs8K2RHlMQaPifLqgRyI4VBkoldNdEw62cb7qQga7k= +github.com/containerd/containerd v1.7.26/go.mod h1:m4JU0E+h0ebbo9yXD7Hyt+sWnc8tChm7MudCjj4jRvQ= github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= From f50547bf51aab27966b332fa10d80ac62873b85c Mon Sep 17 00:00:00 2001 From: Robert Sirchia Date: Fri, 28 Feb 2025 15:22:47 -0500 Subject: [PATCH 205/206] changing error to warn as requested by Matt Signed-off-by: Robert Sirchia --- pkg/repo/index.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/repo/index.go b/pkg/repo/index.go index 954d7486c..4f0266ca6 100644 --- a/pkg/repo/index.go +++ b/pkg/repo/index.go @@ -356,7 +356,7 @@ func loadIndex(data []byte, source string) (*IndexFile, error) { for name, cvs := range i.Entries { for idx := len(cvs) - 1; idx >= 0; idx-- { if cvs[idx] == nil { - slog.Error("skipping loading invalid entry for chart %q from %s: empty entry", name, source) + slog.Warn("skipping loading invalid entry for chart %q from %s: empty entry", name, source) continue } // When metadata section missing, initialize with no data @@ -367,7 +367,7 @@ func loadIndex(data []byte, source string) (*IndexFile, error) { cvs[idx].APIVersion = chart.APIVersionV1 } if err := cvs[idx].Validate(); ignoreSkippableChartValidationError(err) != nil { - slog.Error("skipping loading invalid entry for chart %q %q from %s: %s", name, cvs[idx].Version, source, err) + slog.Warn("skipping loading invalid entry for chart %q %q from %s: %s", name, cvs[idx].Version, source, err) cvs = append(cvs[:idx], cvs[idx+1:]...) } } From 12b8eb8b618a8faa309fce42d1bfa9006b9a0214 Mon Sep 17 00:00:00 2001 From: Rongrong Liu Date: Wed, 26 Feb 2025 09:16:39 -0800 Subject: [PATCH 206/206] fix:add proxy support when mTLS configured Signed-off-by: Rongrong Liu --- pkg/cmd/root.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/cmd/root.go b/pkg/cmd/root.go index ff4dcecbc..942060896 100644 --- a/pkg/cmd/root.go +++ b/pkg/cmd/root.go @@ -339,6 +339,7 @@ func newRegistryClientWithTLS( registry.ClientOptHTTPClient(&http.Client{ Transport: &http.Transport{ TLSClientConfig: tlsConf, + Proxy: http.ProxyFromEnvironment, }, }), registry.ClientOptBasicAuth(username, password),