Skip to content

Commit

Permalink
add options
Browse files Browse the repository at this point in the history
Signed-off-by: Pavel Okhlopkov <[email protected]>
  • Loading branch information
Pavel Okhlopkov committed Dec 9, 2024
1 parent 5592f5b commit 8b1dabc
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 7 deletions.
2 changes: 1 addition & 1 deletion pkg/module_manager/loader/fs/fs.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func (fl *FileSystemLoader) getBasicModule(definition moduleDefinition, commonSt
return nil, fmt.Errorf("expect map[string]interface{} in module values")
}

m, err := modules.NewBasicModule(definition.Name, definition.Path, definition.Order, moduleValues, cb, vb, fl.logger.Named("basic-module"))
m, err := modules.NewBasicModule(definition.Name, definition.Path, definition.Order, moduleValues, cb, vb, modules.WithLogger(fl.logger.Named("basic-module")))
if err != nil {
return nil, fmt.Errorf("new basic module: %w", err)
}
Expand Down
21 changes: 17 additions & 4 deletions pkg/module_manager/models/modules/basic.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,14 @@ type BasicModule struct {
// TODO: add options WithLogger
// NewBasicModule creates new BasicModule
// staticValues - are values from modules/values.yaml and /modules/<module-name>/values.yaml, they could not be changed during the runtime
func NewBasicModule(name, path string, order uint32, staticValues utils.Values, configBytes, valuesBytes []byte, logger *log.Logger) (*BasicModule, error) {
func NewBasicModule(name, path string, order uint32, staticValues utils.Values, configBytes, valuesBytes []byte, opts ...BasicModuleOption) (*BasicModule, error) {
valuesStorage, err := NewValuesStorage(name, staticValues, configBytes, valuesBytes)
if err != nil {
return nil, fmt.Errorf("new values storage: %w", err)
}

crdsFromPath := getCRDsFromPath(path, app.CRDsFilters)
return &BasicModule{
bmodule := &BasicModule{
Name: name,
Order: order,
Path: path,
Expand All @@ -91,8 +91,21 @@ func NewBasicModule(name, path string, order uint32, staticValues utils.Values,
},
hooks: newHooksStorage(),
keepTemporaryHookFiles: shapp.DebugKeepTmpFiles,
logger: logger,
}, nil
}

for _, opt := range opts {
opt.Apply(bmodule)
}

if bmodule.logger == nil {
bmodule.logger = log.NewLogger(log.Options{}).Named("basic-module").Named(name)
}

return bmodule, nil
}

func (bm *BasicModule) WithLogger(logger *log.Logger) {
bm.logger = logger
}

// getCRDsFromPath scan path/crds directory and store yaml file in slice
Expand Down
23 changes: 23 additions & 0 deletions pkg/module_manager/models/modules/basic_options.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package modules

import "github.com/deckhouse/deckhouse/pkg/log"

type basicModuleOption func(optionsApplier BasicModuleOptionApplier)

func (opt basicModuleOption) Apply(o BasicModuleOptionApplier) {
opt(o)
}

func WithLogger(logger *log.Logger) basicModuleOption {

Check failure on line 11 in pkg/module_manager/models/modules/basic_options.go

View workflow job for this annotation

GitHub Actions / Run Go linters

unexported-return: exported func WithLogger returns unexported type modules.basicModuleOption, which can be annoying to use (revive)
return func(optionsApplier BasicModuleOptionApplier) {
optionsApplier.WithLogger(logger)
}
}

type BasicModuleOption interface {
Apply(optsApplier BasicModuleOptionApplier)
}

type BasicModuleOptionApplier interface {
WithLogger(logger *log.Logger)
}
3 changes: 1 addition & 2 deletions pkg/module_manager/models/modules/basic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"encoding/json"
"testing"

"github.com/deckhouse/deckhouse/pkg/log"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

Expand All @@ -18,7 +17,7 @@ foo:
`
value, err := utils.NewValuesFromBytes([]byte(valuesStr))
require.NoError(t, err)
bm, err := NewBasicModule("test-1", "/tmp/test", 100, value, nil, nil, log.NewNop())
bm, err := NewBasicModule("test-1", "/tmp/test", 100, value, nil, nil)
require.NoError(t, err)

patch := utils.ValuesPatch{Operations: []*utils.ValuesPatchOperation{
Expand Down

0 comments on commit 8b1dabc

Please sign in to comment.