From 06ff907351ba2768366a159fe22aea53c57676d5 Mon Sep 17 00:00:00 2001 From: Aleksey Barabanov Date: Sun, 20 Aug 2023 00:20:50 +0300 Subject: [PATCH] feat: use parameter set as global context Signed-off-by: Aleksey Barabanov --- pkg/porter/parameters.go | 55 ++++++++++++++++------------------- pkg/porter/parameters_test.go | 4 +-- 2 files changed, 27 insertions(+), 32 deletions(-) diff --git a/pkg/porter/parameters.go b/pkg/porter/parameters.go index ff6b11d86..bf6084409 100644 --- a/pkg/porter/parameters.go +++ b/pkg/porter/parameters.go @@ -576,22 +576,20 @@ func (p *Porter) finalizeParameters(ctx context.Context, installation storage.In // Apply user supplied parameter overrides last for key, rawValue := range params { param, ok := bun.Parameters[key] - if !ok { - return nil, fmt.Errorf("parameter %s not defined in bundle", key) - } + if ok { + def, ok := bun.Definitions[param.Definition] + if !ok { + return nil, fmt.Errorf("definition %s not defined in bundle", param.Definition) + } - def, ok := bun.Definitions[param.Definition] - if !ok { - return nil, fmt.Errorf("definition %s not defined in bundle", param.Definition) - } + // Apply porter specific conversions, like retrieving file contents + value, err := p.getUnconvertedValueFromRaw(bun, def, key, rawValue) + if err != nil { + return nil, err + } - // Apply porter specific conversions, like retrieving file contents - value, err := p.getUnconvertedValueFromRaw(bun, def, key, rawValue) - if err != nil { - return nil, err + mergedParams[key] = value } - - mergedParams[key] = value } // Now convert all parameters which are currently strings into the @@ -599,26 +597,23 @@ func (p *Porter) finalizeParameters(ctx context.Context, installation storage.In typedParams := make(map[string]interface{}, len(mergedParams)) for key, unconverted := range mergedParams { param, ok := bun.Parameters[key] - if !ok { - return nil, fmt.Errorf("parameter %s not defined in bundle", key) - } - - def, ok := bun.Definitions[param.Definition] - if !ok { - return nil, fmt.Errorf("definition %s not defined in bundle", param.Definition) - } + if ok { + def, ok := bun.Definitions[param.Definition] + if !ok { + return nil, fmt.Errorf("definition %s not defined in bundle", param.Definition) + } - if def.Type != nil { - value, err := def.ConvertValue(unconverted) - if err != nil { - return nil, fmt.Errorf("unable to convert parameter's %s value %s to the destination parameter type %s: %w", key, unconverted, def.Type, err) + if def.Type != nil { + value, err := def.ConvertValue(unconverted) + if err != nil { + return nil, fmt.Errorf("unable to convert parameter's %s value %s to the destination parameter type %s: %w", key, unconverted, def.Type, err) + } + typedParams[key] = value + } else { + // bundle dependency parameters can be any type, not sure we have a solid way to do a typed conversion + typedParams[key] = unconverted } - typedParams[key] = value - } else { - // bundle dependency parameters can be any type, not sure we have a solid way to do a typed conversion - typedParams[key] = unconverted } - } return bundle.ValuesOrDefaults(typedParams, &bun.Bundle, action) diff --git a/pkg/porter/parameters_test.go b/pkg/porter/parameters_test.go index 973f08cdd..21c6f55a5 100644 --- a/pkg/porter/parameters_test.go +++ b/pkg/porter/parameters_test.go @@ -96,7 +96,7 @@ func TestPorter_ListParameters(t *testing.T) { }) } -func Test_loadParameters_paramNotDefined(t *testing.T) { +func Test_loadParameters_IgnoreParamNotDefined(t *testing.T) { t.Parallel() r := NewTestPorter(t) @@ -112,7 +112,7 @@ func Test_loadParameters_paramNotDefined(t *testing.T) { i := storage.Installation{} _, err := r.finalizeParameters(context.Background(), i, b, "action", overrides) - require.EqualError(t, err, "parameter foo not defined in bundle") + require.NoError(t, err) } func Test_loadParameters_definitionNotDefined(t *testing.T) {