From 9c32e34d60f20498e513935076e38af3b53169d9 Mon Sep 17 00:00:00 2001 From: Evans Mungai Date: Wed, 22 Oct 2025 13:29:37 +0100 Subject: [PATCH] Add logger to sql driver and ensure storage has logger Signed-off-by: Evans Mungai --- internal/logging/logging.go | 8 ++++++++ pkg/action/action.go | 2 +- pkg/storage/storage.go | 10 +++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/internal/logging/logging.go b/internal/logging/logging.go index 2e8208d08..8fd3082b5 100644 --- a/internal/logging/logging.go +++ b/internal/logging/logging.go @@ -85,3 +85,11 @@ func NewLogger(debugEnabled DebugEnabledFunc) *slog.Logger { return slog.New(dynamicHandler) } + +// LoggerSetterGetter is an interface that can set and get a logger +type LoggerSetterGetter interface { + // SetLogger sets the logger for the object + SetLogger(logger *slog.Logger) + // Logger returns the logger for the object + Logger() *slog.Logger +} diff --git a/pkg/action/action.go b/pkg/action/action.go index 92ca778cb..75575b3f3 100644 --- a/pkg/action/action.go +++ b/pkg/action/action.go @@ -535,6 +535,7 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp if err != nil { return fmt.Errorf("unable to instantiate SQL driver: %w", err) } + d.SetLogger(cfg.Logger()) store = storage.Init(d) default: return fmt.Errorf("unknown driver %q", helmDriver) @@ -543,7 +544,6 @@ func (cfg *Configuration) Init(getter genericclioptions.RESTClientGetter, namesp cfg.RESTClientGetter = getter cfg.KubeClient = kc cfg.Releases = store - cfg.Releases.SetLogger(cfg.Logger()) cfg.HookOutputFunc = func(_, _, _ string) io.Writer { return io.Discard } return nil diff --git a/pkg/storage/storage.go b/pkg/storage/storage.go index dd8218897..e55c628cf 100644 --- a/pkg/storage/storage.go +++ b/pkg/storage/storage.go @@ -23,6 +23,7 @@ import ( "strings" "sync/atomic" + "helm.sh/helm/v4/internal/logging" "helm.sh/helm/v4/pkg/release" "helm.sh/helm/v4/pkg/release/common" rspb "helm.sh/helm/v4/pkg/release/v1" @@ -338,7 +339,14 @@ func Init(d driver.Driver) *Storage { s := &Storage{ Driver: d, } - s.SetLogger(slog.Default()) + + // Get logger from driver if it implements the LoggerSetterGetter interface + if ls, ok := d.(logging.LoggerSetterGetter); ok { + ls.SetLogger(s.Logger()) + } else { + // If the driver does not implement the LoggerSetterGetter interface, set the default logger + s.SetLogger(slog.Default()) + } return s }