Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: use parameter set as global context #2920

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 25 additions & 30 deletions pkg/porter/parameters.go
Original file line number Diff line number Diff line change
Expand Up @@ -576,49 +576,44 @@ 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
// proper type for the parameter, e.g. "false" -> false
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)
Expand Down
4 changes: 2 additions & 2 deletions pkg/porter/parameters_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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) {
Expand Down
Loading