@@ -63,35 +63,37 @@ func withOrchestratorParameters(orchestrator string, kubeNamespace string) param
6363
6464func 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