@@ -63,35 +63,37 @@ func withOrchestratorParameters(orchestrator string, kubeNamespace string) param
63
63
64
64
func mergeBundleParameters (c * claim.Claim , ops ... parameterOperation ) error {
65
65
bndl := c .Bundle
66
+ if c .Parameters == nil {
67
+ c .Parameters = make (map [string ]interface {})
68
+ }
66
69
userParams := map [string ]string {}
67
70
for _ , op := range ops {
68
71
if err := op (bndl , userParams ); err != nil {
69
72
return err
70
73
}
71
74
}
72
- convertedParams , err := matchParametersDefinition (userParams , bndl .Parameters )
73
- if err != nil {
75
+ if err := matchAndMergeParametersDefinition (c .Parameters , userParams , bndl .Parameters ); err != nil {
74
76
return err
75
77
}
76
- c .Parameters , err = bundle .ValuesOrDefaults (convertedParams , bndl )
78
+ var err error
79
+ c .Parameters , err = bundle .ValuesOrDefaults (c .Parameters , bndl )
77
80
return err
78
81
}
79
82
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 {
82
84
for k , v := range parameterValues {
83
85
definition , ok := parameterDefinitions [k ]
84
86
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 )
86
88
}
87
89
value , err := definition .ConvertValue (v )
88
90
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 )
90
92
}
91
93
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 )
93
95
}
94
- finalValues [k ] = value
96
+ currentValues [k ] = value
95
97
}
96
- return finalValues , nil
98
+ return nil
97
99
}
0 commit comments