From 3535788ae54906af19a1cf56dc01dae64ec7fab5 Mon Sep 17 00:00:00 2001 From: lazarenkoAN Date: Thu, 22 Jan 2026 10:23:23 +0300 Subject: [PATCH] feat: add singleton nelm logger --- pkg/helm/nelm/logger.go | 2 +- pkg/helm/nelm/nelm.go | 11 +++++++++-- pkg/helm/nelm/nelm_test.go | 20 ++++++++++++++++++++ pkg/module_manager/models/modules/basic.go | 2 +- 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 pkg/helm/nelm/nelm_test.go diff --git a/pkg/helm/nelm/logger.go b/pkg/helm/nelm/logger.go index 6d8fbff3..71b082a0 100644 --- a/pkg/helm/nelm/logger.go +++ b/pkg/helm/nelm/logger.go @@ -12,7 +12,7 @@ import ( var _ nelmlog.Logger = (*NelmLogger)(nil) -func NewNelmLogger(logger *log.Logger) *NelmLogger { +func newNelmLogger(logger *log.Logger) *NelmLogger { return &NelmLogger{ logger: logger, } diff --git a/pkg/helm/nelm/nelm.go b/pkg/helm/nelm/nelm.go index 20f80aa8..31a22273 100644 --- a/pkg/helm/nelm/nelm.go +++ b/pkg/helm/nelm/nelm.go @@ -11,6 +11,7 @@ import ( "sort" "strconv" "strings" + "sync" "time" "github.com/deckhouse/deckhouse/pkg/log" @@ -28,7 +29,10 @@ import ( "github.com/flant/addon-operator/pkg/utils" ) -var _ client.HelmClient = (*NelmClient)(nil) +var ( + _ client.HelmClient = (*NelmClient)(nil) + one sync.Once +) type CommonOptions struct { genericclioptions.ConfigFlags @@ -165,7 +169,10 @@ func (s *SafeNelmActions) ChartRender(ctx context.Context, opts action.ChartRend } func NewNelmClient(opts *CommonOptions, logger *log.Logger, labels map[string]string) *NelmClient { - nelmLog.Default = NewNelmLogger(logger) + // singleton + one.Do(func() { + nelmLog.Default = newNelmLogger(logger) + }) if opts == nil { opts = &CommonOptions{} diff --git a/pkg/helm/nelm/nelm_test.go b/pkg/helm/nelm/nelm_test.go new file mode 100644 index 00000000..a11a57c7 --- /dev/null +++ b/pkg/helm/nelm/nelm_test.go @@ -0,0 +1,20 @@ +package nelm + +import ( + "testing" + + "github.com/deckhouse/deckhouse/pkg/log" + "github.com/stretchr/testify/assert" + nelmLog "github.com/werf/nelm/pkg/log" +) + +func Test_NewNelmClient(t *testing.T) { + logger := log.NewNop() + cl := NewNelmClient(&CommonOptions{}, logger.Named("nelm"), map[string]string{}) + assert.NotNil(t, cl) + singleLogger := nelmLog.Default + + logger2 := log.NewNop() + _ = NewNelmClient(&CommonOptions{}, logger2.Named("test"), map[string]string{}) + assert.Equal(t, singleLogger, nelmLog.Default) // logger has not changed +} diff --git a/pkg/module_manager/models/modules/basic.go b/pkg/module_manager/models/modules/basic.go index 682a15fa..5cbbfcf0 100644 --- a/pkg/module_manager/models/modules/basic.go +++ b/pkg/module_manager/models/modules/basic.go @@ -292,7 +292,7 @@ func (bm *BasicModule) searchModuleHooks() (*searchModuleHooksResult, error) { if len(shellHooks)+len(batchHooksResult.Hooks) > 0 { if err := bm.AssembleEnvironmentForModule(environmentmanager.ShellHookEnvironment); err != nil { - return nil, fmt.Errorf("Assemble %q module's environment: %w", bm.GetName(), err) + return nil, fmt.Errorf("assemble %q module's environment: %w", bm.GetName(), err) } }