diff --git a/cmd/helm/helm.go b/cmd/helm/helm.go index a617bce2e..158118c06 100644 --- a/cmd/helm/helm.go +++ b/cmd/helm/helm.go @@ -47,7 +47,7 @@ func main() { } if err := cmd.Execute(); err != nil { - helmcmd.Debug("%+v", err) + logger.Debug("error", err) switch e := err.(type) { case helmcmd.PluginError: os.Exit(e.Code) diff --git a/pkg/action/rollback.go b/pkg/action/rollback.go index 870f1e635..4e61fe872 100644 --- a/pkg/action/rollback.go +++ b/pkg/action/rollback.go @@ -63,26 +63,26 @@ func (r *Rollback) Run(name string) error { r.cfg.Releases.MaxHistory = r.MaxHistory - r.cfg.Log("preparing rollback of %s", name) + r.cfg.Log.Debug("preparing rollback", "name", name) currentRelease, targetRelease, err := r.prepareRollback(name) if err != nil { return err } if !r.DryRun { - r.cfg.Log("creating rolled back release for %s", name) + r.cfg.Log.Debug("creating rolled back release", "name", name) if err := r.cfg.Releases.Create(targetRelease); err != nil { return err } } - r.cfg.Log("performing rollback of %s", name) + r.cfg.Log.Debug("performing rollback", "name", name) if _, err := r.performRollback(currentRelease, targetRelease); err != nil { return err } if !r.DryRun { - r.cfg.Log("updating status for rolled back release for %s", name) + r.cfg.Log.Debug("updating status for rolled back release", "name", name) if err := r.cfg.Releases.Update(targetRelease); err != nil { return err } @@ -129,7 +129,7 @@ func (r *Rollback) prepareRollback(name string) (*release.Release, *release.Rele return nil, nil, errors.Errorf("release has no %d version", previousVersion) } - r.cfg.Log("rolling back %s (current: v%d, target: v%d)", name, currentRelease.Version, previousVersion) + r.cfg.Log.Debug("rolling back", "name", name, "currentVersion", currentRelease.Version, "targetVersion", previousVersion) previousRelease, err := r.cfg.Releases.Get(name, previousVersion) if err != nil { @@ -162,7 +162,7 @@ func (r *Rollback) prepareRollback(name string) (*release.Release, *release.Rele func (r *Rollback) performRollback(currentRelease, targetRelease *release.Release) (*release.Release, error) { if r.DryRun { - r.cfg.Log("dry run for %s", targetRelease.Name) + r.cfg.Log.Debug("dry run", "name", targetRelease.Name) return targetRelease, nil } @@ -181,7 +181,7 @@ func (r *Rollback) performRollback(currentRelease, targetRelease *release.Releas return targetRelease, err } } else { - r.cfg.Log("rollback hooks disabled for %s", targetRelease.Name) + r.cfg.Log.Debug("rollback hooks disabled", "name", targetRelease.Name) } // It is safe to use "force" here because these are resources currently rendered by the chart. @@ -193,14 +193,14 @@ func (r *Rollback) performRollback(currentRelease, targetRelease *release.Releas if err != nil { msg := fmt.Sprintf("Rollback %q failed: %s", targetRelease.Name, err) - r.cfg.Log("warning: %s", msg) + r.cfg.Log.Warn(msg) currentRelease.Info.Status = release.StatusSuperseded targetRelease.Info.Status = release.StatusFailed targetRelease.Info.Description = msg r.cfg.recordRelease(currentRelease) r.cfg.recordRelease(targetRelease) if r.CleanupOnFail { - r.cfg.Log("Cleanup on fail set, cleaning up %d resources", len(results.Created)) + r.cfg.Log.Debug("cleanup on fail set, cleaning up resources", "count", len(results.Created)) _, errs := r.cfg.KubeClient.Delete(results.Created) if errs != nil { var errorList []string @@ -209,7 +209,7 @@ func (r *Rollback) performRollback(currentRelease, targetRelease *release.Releas } return targetRelease, errors.Wrapf(fmt.Errorf("unable to cleanup resources: %s", strings.Join(errorList, ", ")), "an error occurred while cleaning up resources. original rollback error: %s", err) } - r.cfg.Log("Resource cleanup complete") + r.cfg.Log.Debug("resource cleanup complete") } return targetRelease, err } @@ -220,7 +220,7 @@ func (r *Rollback) performRollback(currentRelease, targetRelease *release.Releas // levels, we should make these error level logs so users are notified // that they'll need to go do the cleanup on their own if err := recreate(r.cfg, results.Updated); err != nil { - r.cfg.Log(err.Error()) + r.cfg.Log.Error(err.Error()) } } waiter, err := r.cfg.KubeClient.GetWaiter(r.WaitStrategy) @@ -256,7 +256,7 @@ func (r *Rollback) performRollback(currentRelease, targetRelease *release.Releas } // Supersede all previous deployments, see issue #2941. for _, rel := range deployed { - r.cfg.Log("superseding previous deployment %d", rel.Version) + r.cfg.Log.Debug("superseding previous deployment", "version", rel.Version) rel.Info.Status = release.StatusSuperseded r.cfg.recordRelease(rel) } diff --git a/pkg/action/uninstall.go b/pkg/action/uninstall.go index eeff997d3..4e959172c 100644 --- a/pkg/action/uninstall.go +++ b/pkg/action/uninstall.go @@ -104,7 +104,7 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error) return nil, errors.Errorf("the release named %q is already deleted", name) } - u.cfg.Log("uninstall: Deleting %s", name) + u.cfg.Log.Debug("uninstall: deleting release", "name", name) rel.Info.Status = release.StatusUninstalling rel.Info.Deleted = helmtime.Now() rel.Info.Description = "Deletion in progress (or silently failed)" @@ -115,18 +115,18 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error) return res, err } } else { - u.cfg.Log("delete hooks disabled for %s", name) + u.cfg.Log.Debug("delete hooks disabled", "release", name) } // From here on out, the release is currently considered to be in StatusUninstalling // state. if err := u.cfg.Releases.Update(rel); err != nil { - u.cfg.Log("uninstall: Failed to store updated release: %s", err) + u.cfg.Log.Debug("uninstall: Failed to store updated release", "error", err) } deletedResources, kept, errs := u.deleteRelease(rel) if errs != nil { - u.cfg.Log("uninstall: Failed to delete release: %s", errs) + u.cfg.Log.Debug("uninstall: Failed to delete release", "errors", errs) return nil, errors.Errorf("failed to delete release: %s", name) } @@ -153,7 +153,7 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error) } if !u.KeepHistory { - u.cfg.Log("purge requested for %s", name) + u.cfg.Log.Debug("purge requested", "release", name) err := u.purgeReleases(rels...) if err != nil { errs = append(errs, errors.Wrap(err, "uninstall: Failed to purge the release")) @@ -168,7 +168,7 @@ func (u *Uninstall) Run(name string) (*release.UninstallReleaseResponse, error) } if err := u.cfg.Releases.Update(rel); err != nil { - u.cfg.Log("uninstall: Failed to store updated release: %s", err) + u.cfg.Log.Debug("uninstall: Failed to store updated release", "error", err) } if len(errs) > 0 { @@ -242,7 +242,7 @@ func parseCascadingFlag(cfg *Configuration, cascadingFlag string) v1.DeletionPro case "background": return v1.DeletePropagationBackground default: - cfg.Log("uninstall: given cascade value: %s, defaulting to delete propagation background", cascadingFlag) + cfg.Log.Debug("uninstall: given cascade value, defaulting to delete propagation background", "value", cascadingFlag) return v1.DeletePropagationBackground } } diff --git a/pkg/action/upgrade.go b/pkg/action/upgrade.go index e3b775a25..147c0fe5a 100644 --- a/pkg/action/upgrade.go +++ b/pkg/action/upgrade.go @@ -163,7 +163,7 @@ func (u *Upgrade) RunWithContext(ctx context.Context, name string, chart *chart. return nil, errors.Errorf("release name is invalid: %s", name) } - u.cfg.Log("preparing upgrade for %s", name) + u.cfg.Log.Debug("preparing upgrade", "name", name) currentRelease, upgradedRelease, err := u.prepareUpgrade(name, chart, vals) if err != nil { return nil, err @@ -171,7 +171,7 @@ func (u *Upgrade) RunWithContext(ctx context.Context, name string, chart *chart. u.cfg.Releases.MaxHistory = u.MaxHistory - u.cfg.Log("performing update for %s", name) + u.cfg.Log.Debug("performing update", "name", name) res, err := u.performUpgrade(ctx, currentRelease, upgradedRelease) if err != nil { return res, err @@ -179,7 +179,7 @@ func (u *Upgrade) RunWithContext(ctx context.Context, name string, chart *chart. // Do not update for dry runs if !u.isDryRun() { - u.cfg.Log("updating status for upgraded release for %s", name) + u.cfg.Log.Debug("updating status for upgraded release", "name", name) if err := u.cfg.Releases.Update(upgradedRelease); err != nil { return res, err } @@ -365,7 +365,7 @@ func (u *Upgrade) performUpgrade(ctx context.Context, originalRelease, upgradedR // Run if it is a dry run if u.isDryRun() { - u.cfg.Log("dry run for %s", upgradedRelease.Name) + u.cfg.Log.Debug("dry run for release", "name", upgradedRelease.Name) if len(u.Description) > 0 { upgradedRelease.Info.Description = u.Description } else { @@ -374,7 +374,7 @@ func (u *Upgrade) performUpgrade(ctx context.Context, originalRelease, upgradedR return upgradedRelease, nil } - u.cfg.Log("creating upgraded release for %s", upgradedRelease.Name) + u.cfg.Log.Debug("creating upgraded release", "name", upgradedRelease.Name) if err := u.cfg.Releases.Create(upgradedRelease); err != nil { return nil, err } @@ -425,7 +425,7 @@ func (u *Upgrade) releasingUpgrade(c chan<- resultMessage, upgradedRelease *rele return } } else { - u.cfg.Log("upgrade hooks disabled for %s", upgradedRelease.Name) + u.cfg.Log.Debug("upgrade hooks disabled", "name", upgradedRelease.Name) } results, err := u.cfg.KubeClient.Update(current, target, u.Force) @@ -441,7 +441,7 @@ func (u *Upgrade) releasingUpgrade(c chan<- resultMessage, upgradedRelease *rele // levels, we should make these error level logs so users are notified // that they'll need to go do the cleanup on their own if err := recreate(u.cfg, results.Updated); err != nil { - u.cfg.Log(err.Error()) + u.cfg.Log.Error(err.Error()) } } waiter, err := u.cfg.KubeClient.GetWaiter(u.WaitStrategy) @@ -486,13 +486,13 @@ func (u *Upgrade) releasingUpgrade(c chan<- resultMessage, upgradedRelease *rele func (u *Upgrade) failRelease(rel *release.Release, created kube.ResourceList, err error) (*release.Release, error) { msg := fmt.Sprintf("Upgrade %q failed: %s", rel.Name, err) - u.cfg.Log("warning: %s", msg) + u.cfg.Log.Warn("upgrade failed", "name", rel.Name, "error", err) rel.Info.Status = release.StatusFailed rel.Info.Description = msg u.cfg.recordRelease(rel) if u.CleanupOnFail && len(created) > 0 { - u.cfg.Log("Cleanup on fail set, cleaning up %d resources", len(created)) + u.cfg.Log.Debug("cleanup on fail set", "cleaning_resources", len(created)) _, errs := u.cfg.KubeClient.Delete(created) if errs != nil { var errorList []string @@ -501,10 +501,10 @@ func (u *Upgrade) failRelease(rel *release.Release, created kube.ResourceList, e } return rel, errors.Wrapf(fmt.Errorf("unable to cleanup resources: %s", strings.Join(errorList, ", ")), "an error occurred while cleaning up resources. original upgrade error: %s", err) } - u.cfg.Log("Resource cleanup complete") + u.cfg.Log.Debug("resource cleanup complete") } if u.Atomic { - u.cfg.Log("Upgrade failed and atomic is set, rolling back to last successful release") + u.cfg.Log.Debug("upgrade failed and atomic is set, rolling back to last successful release") // As a protection, get the last successful release before rollback. // If there are no successful releases, bail out @@ -556,13 +556,13 @@ func (u *Upgrade) failRelease(rel *release.Release, created kube.ResourceList, e func (u *Upgrade) reuseValues(chart *chart.Chart, current *release.Release, newVals map[string]interface{}) (map[string]interface{}, error) { if u.ResetValues { // If ResetValues is set, we completely ignore current.Config. - u.cfg.Log("resetting values to the chart's original version") + u.cfg.Log.Debug("resetting values to the chart's original version") return newVals, nil } // If the ReuseValues flag is set, we always copy the old values over the new config's values. if u.ReuseValues { - u.cfg.Log("reusing the old release's values") + u.cfg.Log.Debug("reusing the old release's values") // We have to regenerate the old coalesced values: oldVals, err := chartutil.CoalesceValues(current.Chart, current.Config) @@ -579,7 +579,7 @@ func (u *Upgrade) reuseValues(chart *chart.Chart, current *release.Release, newV // If the ResetThenReuseValues flag is set, we use the new chart's values, but we copy the old config's values over the new config's values. if u.ResetThenReuseValues { - u.cfg.Log("merging values from old release to new values") + u.cfg.Log.Debug("merging values from old release to new values") newVals = chartutil.CoalesceTables(newVals, current.Config) @@ -587,7 +587,7 @@ func (u *Upgrade) reuseValues(chart *chart.Chart, current *release.Release, newV } if len(newVals) == 0 && len(current.Config) > 0 { - u.cfg.Log("copying values from %s (v%d) to new release.", current.Name, current.Version) + u.cfg.Log.Debug("copying values from old release", "name", current.Name, "version", current.Version) newVals = current.Config } return newVals, nil diff --git a/pkg/cmd/install.go b/pkg/cmd/install.go index 32a386ba0..566739bc3 100644 --- a/pkg/cmd/install.go +++ b/pkg/cmd/install.go @@ -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) + logger.Debug("Original chart version", "version", client.Version) if client.Version == "" && client.Devel { - Debug("setting version to >0.0.0-0") + logger.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) + logger.Debug("Chart path", "path", cp) p := getter.All(settings) vals, err := valueOpts.MergeValues(p) diff --git a/pkg/cmd/plugin.go b/pkg/cmd/plugin.go index 3340e76e6..1bb7ffb57 100644 --- a/pkg/cmd/plugin.go +++ b/pkg/cmd/plugin.go @@ -66,7 +66,7 @@ func runHook(p *plugin.Plugin, event string) error { prog := exec.Command(main, argv...) - Debug("running %s hook: %s", event, prog) + logger.Debug("running hook", "event", event, "program", prog) prog.Stdout, prog.Stderr = os.Stdout, os.Stderr if err := prog.Run(); err != nil { diff --git a/pkg/cmd/plugin_install.go b/pkg/cmd/plugin_install.go index e17744cbb..ca3d4ed90 100644 --- a/pkg/cmd/plugin_install.go +++ b/pkg/cmd/plugin_install.go @@ -79,7 +79,7 @@ func (o *pluginInstallOptions) run(out io.Writer) error { return err } - Debug("loading plugin from %s", i.Path()) + logger.Debug("loading plugin", "path", i.Path()) p, err := plugin.LoadDir(i.Path()) if err != nil { return errors.Wrap(err, "plugin is installed but unusable") diff --git a/pkg/cmd/plugin_list.go b/pkg/cmd/plugin_list.go index 9cca790ae..9eb6707db 100644 --- a/pkg/cmd/plugin_list.go +++ b/pkg/cmd/plugin_list.go @@ -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) + logger.Debug("pluginDirs", settings.PluginsDirectory) plugins, err := plugin.FindPlugins(settings.PluginsDirectory) if err != nil { return err diff --git a/pkg/cmd/plugin_uninstall.go b/pkg/cmd/plugin_uninstall.go index c1f90ca49..3db454ff9 100644 --- a/pkg/cmd/plugin_uninstall.go +++ b/pkg/cmd/plugin_uninstall.go @@ -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) + logger.Debug("loading installer plugins", "dir", settings.PluginsDirectory) plugins, err := plugin.FindPlugins(settings.PluginsDirectory) if err != nil { return err diff --git a/pkg/cmd/plugin_update.go b/pkg/cmd/plugin_update.go index cbbd8994c..38c451e2f 100644 --- a/pkg/cmd/plugin_update.go +++ b/pkg/cmd/plugin_update.go @@ -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) + logger.Debug("loading installed plugins", "path", 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()) + logger.Debug("loading plugin", "path", i.Path()) updatedPlugin, err := plugin.LoadDir(i.Path()) if err != nil { return err diff --git a/pkg/cmd/pull.go b/pkg/cmd/pull.go index 5d188ee4f..65ad95947 100644 --- a/pkg/cmd/pull.go +++ b/pkg/cmd/pull.go @@ -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") + logger.Debug("setting version to >0.0.0-0") client.Version = ">0.0.0-0" } diff --git a/pkg/cmd/search_hub.go b/pkg/cmd/search_hub.go index b7f25444e..a2d35f32b 100644 --- a/pkg/cmd/search_hub.go +++ b/pkg/cmd/search_hub.go @@ -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) + logger.Debug("search failed", "error", err) return fmt.Errorf("unable to perform search against %q", o.searchEndpoint) } diff --git a/pkg/cmd/search_repo.go b/pkg/cmd/search_repo.go index 29bc19f6b..610176dd6 100644 --- a/pkg/cmd/search_repo.go +++ b/pkg/cmd/search_repo.go @@ -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) + logger.Debug("original chart version", "version", 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") + logger.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") + logger.Debug("setting version to >0.0.0") o.version = ">0.0.0" } } diff --git a/pkg/cmd/show.go b/pkg/cmd/show.go index a02af6f18..6aa322430 100644 --- a/pkg/cmd/show.go +++ b/pkg/cmd/show.go @@ -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) + logger.Debug("original chart version", "version", client.Version) if client.Version == "" && client.Devel { - Debug("setting version to >0.0.0-0") + logger.Debug("setting version to >0.0.0-0") client.Version = ">0.0.0-0" } diff --git a/pkg/cmd/upgrade.go b/pkg/cmd/upgrade.go index e61c9bc3b..a85eb5a41 100644 --- a/pkg/cmd/upgrade.go +++ b/pkg/cmd/upgrade.go @@ -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") + logger.Debug("setting version to >0.0.0-0") client.Version = ">0.0.0-0" } diff --git a/pkg/kube/client.go b/pkg/kube/client.go index c176b3fb8..e82165486 100644 --- a/pkg/kube/client.go +++ b/pkg/kube/client.go @@ -51,6 +51,8 @@ import ( "k8s.io/client-go/rest" "k8s.io/client-go/util/retry" cmdutil "k8s.io/kubectl/pkg/cmd/util" + + logadapter "helm.sh/helm/v4/internal/log" ) // ErrNoObjectsVisited indicates that during a visit operation, no matching objects were found. diff --git a/pkg/kube/client_test.go b/pkg/kube/client_test.go index abe841ea6..11a3413e4 100644 --- a/pkg/kube/client_test.go +++ b/pkg/kube/client_test.go @@ -26,7 +26,6 @@ import ( "github.com/stretchr/testify/assert" - logadapter "helm.sh/helm/v4/internal/log" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -35,6 +34,8 @@ import ( "k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/rest/fake" cmdtesting "k8s.io/kubectl/pkg/cmd/testing" + + logadapter "helm.sh/helm/v4/internal/log" ) var unstructuredSerializer = resource.UnstructuredPlusDefaultContentConfig().NegotiatedSerializer diff --git a/pkg/kube/ready_test.go b/pkg/kube/ready_test.go index f022bf596..155d3d435 100644 --- a/pkg/kube/ready_test.go +++ b/pkg/kube/ready_test.go @@ -19,7 +19,6 @@ import ( "context" "testing" - logadapter "helm.sh/helm/v4/internal/log" appsv1 "k8s.io/api/apps/v1" batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/api/core/v1" @@ -31,6 +30,8 @@ import ( "k8s.io/cli-runtime/pkg/resource" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" + + logadapter "helm.sh/helm/v4/internal/log" ) const defaultNamespace = metav1.NamespaceDefault @@ -114,7 +115,7 @@ func Test_ReadyChecker_IsReady_Pod(t *testing.T) { func Test_ReadyChecker_IsReady_Job(t *testing.T) { type fields struct { client kubernetes.Interface - log Logger + log logadapter.Logger checkJobs bool pausedAsReady bool } @@ -189,7 +190,7 @@ func Test_ReadyChecker_IsReady_Job(t *testing.T) { func Test_ReadyChecker_IsReady_Deployment(t *testing.T) { type fields struct { client kubernetes.Interface - log Logger + log logadapter.Logger checkJobs bool pausedAsReady bool } @@ -271,7 +272,7 @@ func Test_ReadyChecker_IsReady_Deployment(t *testing.T) { func Test_ReadyChecker_IsReady_PersistentVolumeClaim(t *testing.T) { type fields struct { client kubernetes.Interface - log Logger + log logadapter.Logger checkJobs bool pausedAsReady bool } @@ -346,7 +347,7 @@ func Test_ReadyChecker_IsReady_PersistentVolumeClaim(t *testing.T) { func Test_ReadyChecker_IsReady_Service(t *testing.T) { type fields struct { client kubernetes.Interface - log Logger + log logadapter.Logger checkJobs bool pausedAsReady bool } @@ -421,7 +422,7 @@ func Test_ReadyChecker_IsReady_Service(t *testing.T) { func Test_ReadyChecker_IsReady_DaemonSet(t *testing.T) { type fields struct { client kubernetes.Interface - log Logger + log logadapter.Logger checkJobs bool pausedAsReady bool } @@ -496,7 +497,7 @@ func Test_ReadyChecker_IsReady_DaemonSet(t *testing.T) { func Test_ReadyChecker_IsReady_StatefulSet(t *testing.T) { type fields struct { client kubernetes.Interface - log Logger + log logadapter.Logger checkJobs bool pausedAsReady bool } @@ -571,7 +572,7 @@ func Test_ReadyChecker_IsReady_StatefulSet(t *testing.T) { func Test_ReadyChecker_IsReady_ReplicationController(t *testing.T) { type fields struct { client kubernetes.Interface - log Logger + log logadapter.Logger checkJobs bool pausedAsReady bool } diff --git a/pkg/kube/wait.go b/pkg/kube/wait.go index 69779904f..e3d29d8a9 100644 --- a/pkg/kube/wait.go +++ b/pkg/kube/wait.go @@ -25,7 +25,6 @@ import ( multierror "github.com/hashicorp/go-multierror" "github.com/pkg/errors" - logadapter "helm.sh/helm/v4/internal/log" appsv1 "k8s.io/api/apps/v1" appsv1beta1 "k8s.io/api/apps/v1beta1" appsv1beta2 "k8s.io/api/apps/v1beta2" @@ -45,6 +44,8 @@ import ( watchtools "k8s.io/client-go/tools/watch" "k8s.io/apimachinery/pkg/util/wait" + + logadapter "helm.sh/helm/v4/internal/log" ) // legacyWaiter is the legacy implementation of the Waiter interface. This logic was used by default in Helm 3 diff --git a/pkg/storage/driver/cfgmaps.go b/pkg/storage/driver/cfgmaps.go index 48198a9bd..421d39ba8 100644 --- a/pkg/storage/driver/cfgmaps.go +++ b/pkg/storage/driver/cfgmaps.go @@ -70,13 +70,13 @@ func (cfgmaps *ConfigMaps) Get(key string) (*rspb.Release, error) { return nil, ErrReleaseNotFound } - cfgmaps.Log("get: failed to get %q: %s", key, err) + cfgmaps.Log.Debug("failed to get release", "key", key, "error", err) return nil, err } // found the configmap, decode the base64 data string r, err := decodeRelease(obj.Data["release"]) if err != nil { - cfgmaps.Log("get: failed to decode data %q: %s", key, err) + cfgmaps.Log.Debug("failed to decode data", "key", key, "error", err) return nil, err } r.Labels = filterSystemLabels(obj.ObjectMeta.Labels) @@ -93,7 +93,7 @@ func (cfgmaps *ConfigMaps) List(filter func(*rspb.Release) bool) ([]*rspb.Releas list, err := cfgmaps.impl.List(context.Background(), opts) if err != nil { - cfgmaps.Log("list: failed to list: %s", err) + cfgmaps.Log.Debug("failed to list releases", "error", err) return nil, err } @@ -104,7 +104,7 @@ func (cfgmaps *ConfigMaps) List(filter func(*rspb.Release) bool) ([]*rspb.Releas for _, item := range list.Items { rls, err := decodeRelease(item.Data["release"]) if err != nil { - cfgmaps.Log("list: failed to decode release: %v: %s", item, err) + cfgmaps.Log.Debug("failed to decode release", "item", item, "error", err) continue } @@ -132,7 +132,7 @@ func (cfgmaps *ConfigMaps) Query(labels map[string]string) ([]*rspb.Release, err list, err := cfgmaps.impl.List(context.Background(), opts) if err != nil { - cfgmaps.Log("query: failed to query with labels: %s", err) + cfgmaps.Log.Debug("failed to query with labels", "error", err) return nil, err } @@ -144,7 +144,7 @@ func (cfgmaps *ConfigMaps) Query(labels map[string]string) ([]*rspb.Release, err for _, item := range list.Items { rls, err := decodeRelease(item.Data["release"]) if err != nil { - cfgmaps.Log("query: failed to decode release: %s", err) + cfgmaps.Log.Debug("failed to decode release", "error", err) continue } rls.Labels = item.ObjectMeta.Labels @@ -166,7 +166,7 @@ func (cfgmaps *ConfigMaps) Create(key string, rls *rspb.Release) error { // create a new configmap to hold the release obj, err := newConfigMapsObject(key, rls, lbs) if err != nil { - cfgmaps.Log("create: failed to encode release %q: %s", rls.Name, err) + cfgmaps.Log.Debug("failed to encode release", "name", rls.Name, "error", err) return err } // push the configmap object out into the kubiverse @@ -175,7 +175,7 @@ func (cfgmaps *ConfigMaps) Create(key string, rls *rspb.Release) error { return ErrReleaseExists } - cfgmaps.Log("create: failed to create: %s", err) + cfgmaps.Log.Debug("failed to create release", "error", err) return err } return nil @@ -194,13 +194,13 @@ func (cfgmaps *ConfigMaps) Update(key string, rls *rspb.Release) error { // create a new configmap object to hold the release obj, err := newConfigMapsObject(key, rls, lbs) if err != nil { - cfgmaps.Log("update: failed to encode release %q: %s", rls.Name, err) + cfgmaps.Log.Debug("failed to encode release", "name", rls.Name, "error", err) return err } // push the configmap object out into the kubiverse _, err = cfgmaps.impl.Update(context.Background(), obj, metav1.UpdateOptions{}) if err != nil { - cfgmaps.Log("update: failed to update: %s", err) + cfgmaps.Log.Debug("failed to update release", "error", err) return err } return nil diff --git a/pkg/storage/driver/sql.go b/pkg/storage/driver/sql.go index 304503b0a..9a4188d2d 100644 --- a/pkg/storage/driver/sql.go +++ b/pkg/storage/driver/sql.go @@ -109,13 +109,13 @@ func (s *SQL) checkAlreadyApplied(migrations []*migrate.Migration) bool { records, err := migrate.GetMigrationRecords(s.db.DB, postgreSQLDialect) migrate.SetDisableCreateTable(false) if err != nil { - s.Log.Debug("checkAlreadyApplied: failed to get migration records: %v", err) + s.Log.Debug("failed to get migration records", "error", err) return false } for _, record := range records { if _, ok := migrationsIDs[record.Id]; ok { - s.Log.Debug("checkAlreadyApplied: found previous migration (Id: %v) applied at %v", record.Id, record.AppliedAt) + s.Log.Debug("found previous migration", "id", record.Id, "appliedAt", record.AppliedAt) delete(migrationsIDs, record.Id) } } @@ -123,7 +123,7 @@ func (s *SQL) checkAlreadyApplied(migrations []*migrate.Migration) bool { // check if all migrations applied if len(migrationsIDs) != 0 { for id := range migrationsIDs { - s.Log("checkAlreadyApplied: find unapplied migration (id: %v)", id) + s.Log.Debug("find unapplied migration", "id", id) } return false } @@ -310,24 +310,24 @@ func (s *SQL) Get(key string) (*rspb.Release, error) { query, args, err := qb.ToSql() if err != nil { - s.Log("failed to build query: %v", err) + s.Log.Debug("failed to build query", "error", err) return nil, err } // Get will return an error if the result is empty if err := s.db.Get(&record, query, args...); err != nil { - s.Log("got SQL error when getting release %s: %v", key, err) + s.Log.Debug("got SQL error when getting release", "key", key, "error", err) return nil, ErrReleaseNotFound } release, err := decodeRelease(record.Body) if err != nil { - s.Log("get: failed to decode data %q: %v", key, err) + s.Log.Debug("failed to decode data", "key", key, "error", err) return nil, err } if release.Labels, err = s.getReleaseCustomLabels(key, s.namespace); err != nil { - s.Log("failed to get release %s/%s custom labels: %v", s.namespace, key, err) + s.Log.Debug("failed to get release custom labels", "namespace", s.namespace, "key", key, "error", err) return nil, err } @@ -348,13 +348,13 @@ func (s *SQL) List(filter func(*rspb.Release) bool) ([]*rspb.Release, error) { query, args, err := sb.ToSql() if err != nil { - s.Log("failed to build query: %v", err) + s.Log.Debug("failed to build query", "error", err) return nil, err } var records = []SQLReleaseWrapper{} if err := s.db.Select(&records, query, args...); err != nil { - s.Log("list: failed to list: %v", err) + s.Log.Debug("failed to list", "error", err) return nil, err } @@ -362,12 +362,12 @@ func (s *SQL) List(filter func(*rspb.Release) bool) ([]*rspb.Release, error) { for _, record := range records { release, err := decodeRelease(record.Body) if err != nil { - s.Log("list: failed to decode release: %v: %v", record, err) + s.Log.Debug("failed to decode release", "record", record, "error", err) continue } if release.Labels, err = s.getReleaseCustomLabels(record.Key, record.Namespace); err != nil { - s.Log("failed to get release %s/%s custom labels: %v", record.Namespace, record.Key, err) + s.Log.Debug("failed to get release custom labels", "namespace", record.Namespace, "key", record.Key, "error", err) return nil, err } for k, v := range getReleaseSystemLabels(release) { @@ -397,7 +397,7 @@ func (s *SQL) Query(labels map[string]string) ([]*rspb.Release, error) { if _, ok := labelMap[key]; ok { sb = sb.Where(sq.Eq{key: labels[key]}) } else { - s.Log("unknown label %s", key) + s.Log.Debug("unknown label", "key", key) return nil, fmt.Errorf("unknown label %s", key) } } @@ -410,13 +410,13 @@ func (s *SQL) Query(labels map[string]string) ([]*rspb.Release, error) { // Build our query query, args, err := sb.ToSql() if err != nil { - s.Log("failed to build query: %v", err) + s.Log.Debug("failed to build query", "error", err) return nil, err } var records = []SQLReleaseWrapper{} if err := s.db.Select(&records, query, args...); err != nil { - s.Log("list: failed to query with labels: %v", err) + s.Log.Debug("failed to query with labels", "error", err) return nil, err } @@ -428,12 +428,12 @@ func (s *SQL) Query(labels map[string]string) ([]*rspb.Release, error) { for _, record := range records { release, err := decodeRelease(record.Body) if err != nil { - s.Log("list: failed to decode release: %v: %v", record, err) + s.Log.Debug("failed to decode release", "record", record, "error", err) continue } if release.Labels, err = s.getReleaseCustomLabels(record.Key, record.Namespace); err != nil { - s.Log("failed to get release %s/%s custom labels: %v", record.Namespace, record.Key, err) + s.Log.Debug("failed to get release custom labels", "namespace", record.Namespace, "key", record.Key, "error", err) return nil, err } @@ -457,13 +457,13 @@ func (s *SQL) Create(key string, rls *rspb.Release) error { body, err := encodeRelease(rls) if err != nil { - s.Log("failed to encode release: %v", err) + s.Log.Debug("failed to encode release", "error", err) return err } transaction, err := s.db.Beginx() if err != nil { - s.Log("failed to start SQL transaction: %v", err) + s.Log.Debug("failed to start SQL transaction", "error", err) return fmt.Errorf("error beginning transaction: %v", err) } @@ -492,7 +492,7 @@ func (s *SQL) Create(key string, rls *rspb.Release) error { int(time.Now().Unix()), ).ToSql() if err != nil { - s.Log("failed to build insert query: %v", err) + s.Log.Debug("failed to build insert query", "error", err) return err } @@ -506,17 +506,17 @@ func (s *SQL) Create(key string, rls *rspb.Release) error { Where(sq.Eq{sqlReleaseTableNamespaceColumn: s.namespace}). ToSql() if buildErr != nil { - s.Log("failed to build select query: %v", buildErr) + s.Log.Debug("failed to build select query", "error", buildErr) return err } var record SQLReleaseWrapper if err := transaction.Get(&record, selectQuery, args...); err == nil { - s.Log("release %s already exists", key) + s.Log.Debug("release already exists", "key", key) return ErrReleaseExists } - s.Log("failed to store release %s in SQL database: %v", key, err) + s.Log.Debug("failed to store release in SQL database", "key", key, "error", err) return err } @@ -539,13 +539,13 @@ func (s *SQL) Create(key string, rls *rspb.Release) error { if err != nil { defer transaction.Rollback() - s.Log("failed to build insert query: %v", err) + s.Log.Debug("failed to build insert query", "error", err) return err } if _, err := transaction.Exec(insertLabelsQuery, args...); err != nil { defer transaction.Rollback() - s.Log("failed to write Labels: %v", err) + s.Log.Debug("failed to write Labels", "error", err) return err } } @@ -564,7 +564,7 @@ func (s *SQL) Update(key string, rls *rspb.Release) error { body, err := encodeRelease(rls) if err != nil { - s.Log("failed to encode release: %v", err) + s.Log.Debug("failed to encode release", "error", err) return err } @@ -581,12 +581,12 @@ func (s *SQL) Update(key string, rls *rspb.Release) error { ToSql() if err != nil { - s.Log("failed to build update query: %v", err) + s.Log.Debug("failed to build update query", "error", err) return err } if _, err := s.db.Exec(query, args...); err != nil { - s.Log("failed to update release %s in SQL database: %v", key, err) + s.Log.Debug("failed to update release in SQL database", "key", key, "error", err) return err } @@ -597,7 +597,7 @@ func (s *SQL) Update(key string, rls *rspb.Release) error { func (s *SQL) Delete(key string) (*rspb.Release, error) { transaction, err := s.db.Beginx() if err != nil { - s.Log("failed to start SQL transaction: %v", err) + s.Log.Debug("failed to start SQL transaction", "error", err) return nil, fmt.Errorf("error beginning transaction: %v", err) } @@ -608,20 +608,20 @@ func (s *SQL) Delete(key string) (*rspb.Release, error) { Where(sq.Eq{sqlReleaseTableNamespaceColumn: s.namespace}). ToSql() if err != nil { - s.Log("failed to build select query: %v", err) + s.Log.Debug("failed to build select query", "error", err) return nil, err } var record SQLReleaseWrapper err = transaction.Get(&record, selectQuery, args...) if err != nil { - s.Log("release %s not found: %v", key, err) + s.Log.Debug("release not found", "key", key, "error", err) return nil, ErrReleaseNotFound } release, err := decodeRelease(record.Body) if err != nil { - s.Log("failed to decode release %s: %v", key, err) + s.Log.Debug("failed to decode release", "key", key, "error", err) transaction.Rollback() return nil, err } @@ -633,18 +633,18 @@ func (s *SQL) Delete(key string) (*rspb.Release, error) { Where(sq.Eq{sqlReleaseTableNamespaceColumn: s.namespace}). ToSql() if err != nil { - s.Log("failed to build delete query: %v", err) + s.Log.Debug("failed to build delete query", "error", err) return nil, err } _, err = transaction.Exec(deleteQuery, args...) if err != nil { - s.Log("failed perform delete query: %v", err) + s.Log.Debug("failed perform delete query", "error", err) return release, err } if release.Labels, err = s.getReleaseCustomLabels(key, s.namespace); err != nil { - s.Log("failed to get release %s/%s custom labels: %v", s.namespace, key, err) + s.Log.Debug("failed to get release custom labels", "namespace", s.namespace, "key", key, "error", err) return nil, err } @@ -655,7 +655,7 @@ func (s *SQL) Delete(key string) (*rspb.Release, error) { ToSql() if err != nil { - s.Log("failed to build delete Labels query: %v", err) + s.Log.Debug("failed to build delete Labels query", "error", err) return nil, err } _, err = transaction.Exec(deleteCustomLabelsQuery, args...)