Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit e2d41c9

Browse files
author
Ian Campbell
committed
Make mergeBundleParameters update any exiting c.Parameters
Signed-off-by: Ian Campbell <[email protected]>
1 parent 6515556 commit e2d41c9

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

internal/commands/parameters.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,35 +63,37 @@ func withOrchestratorParameters(orchestrator string, kubeNamespace string) param
6363

6464
func mergeBundleParameters(c *claim.Claim, ops ...parameterOperation) error {
6565
bndl := c.Bundle
66+
if c.Parameters == nil {
67+
c.Parameters = make(map[string]interface{})
68+
}
6669
userParams := map[string]string{}
6770
for _, op := range ops {
6871
if err := op(bndl, userParams); err != nil {
6972
return err
7073
}
7174
}
72-
convertedParams, err := matchParametersDefinition(userParams, bndl.Parameters)
73-
if err != nil {
75+
if err := matchAndMergeParametersDefinition(c.Parameters, userParams, bndl.Parameters); err != nil {
7476
return err
7577
}
76-
c.Parameters, err = bundle.ValuesOrDefaults(convertedParams, bndl)
78+
var err error
79+
c.Parameters, err = bundle.ValuesOrDefaults(c.Parameters, bndl)
7780
return err
7881
}
7982

80-
func matchParametersDefinition(parameterValues map[string]string, parameterDefinitions map[string]bundle.ParameterDefinition) (map[string]interface{}, error) {
81-
finalValues := map[string]interface{}{}
83+
func matchAndMergeParametersDefinition(currentValues map[string]interface{}, parameterValues map[string]string, parameterDefinitions map[string]bundle.ParameterDefinition) error {
8284
for k, v := range parameterValues {
8385
definition, ok := parameterDefinitions[k]
8486
if !ok {
85-
return nil, fmt.Errorf("parameter %q is not defined in the bundle", k)
87+
return fmt.Errorf("parameter %q is not defined in the bundle", k)
8688
}
8789
value, err := definition.ConvertValue(v)
8890
if err != nil {
89-
return nil, errors.Wrapf(err, "invalid value for parameter %q", k)
91+
return errors.Wrapf(err, "invalid value for parameter %q", k)
9092
}
9193
if err := definition.ValidateParameterValue(value); err != nil {
92-
return nil, errors.Wrapf(err, "invalid value for parameter %q", k)
94+
return errors.Wrapf(err, "invalid value for parameter %q", k)
9395
}
94-
finalValues[k] = value
96+
currentValues[k] = value
9597
}
96-
return finalValues, nil
98+
return nil
9799
}

0 commit comments

Comments
 (0)