@@ -71,7 +71,24 @@ func (r *PluginPresetReconciler) resolveExpressionsForPreset(
7171 return preset .Spec .Plugin .OptionValues , nil
7272 }
7373
74- templateData , err := r .buildTemplateData (ctx , preset , cluster )
74+ tempPlugin := greenhousev1alpha1.Plugin {
75+ ObjectMeta : metav1.ObjectMeta {
76+ Name : preset .Name ,
77+ Namespace : preset .Namespace ,
78+ Labels : preset .Labels ,
79+ },
80+ Spec : greenhousev1alpha1.PluginSpec {
81+ ClusterName : cluster .Name ,
82+ },
83+ }
84+
85+ greenhouseValuesList , err := helm .GetGreenhouseValues (ctx , r .Client , tempPlugin )
86+ if err != nil {
87+ return nil , fmt .Errorf ("failed to get greenhouse values: %w" , err )
88+ }
89+
90+ templateData , err := helm .BuildTemplateData (greenhouseValuesList )
91+
7592 if err != nil {
7693 return nil , fmt .Errorf ("failed to build template data: %w" , err )
7794 }
@@ -357,61 +374,6 @@ func evaluateCELWithObject(expression string, object map[string]any) (any, error
357374 return cel .EvaluateWithData (expr , env , evalData )
358375}
359376
360- // buildTemplateData creates the template data map for CEL expression evaluation.
361- func (r * PluginPresetReconciler ) buildTemplateData (
362- ctx context.Context ,
363- preset * greenhousev1alpha1.PluginPreset ,
364- cluster * greenhousev1alpha1.Cluster ,
365- ) (map [string ]any , error ) {
366-
367- tempPlugin := greenhousev1alpha1.Plugin {
368- ObjectMeta : metav1.ObjectMeta {
369- Name : preset .Name ,
370- Namespace : preset .Namespace ,
371- Labels : preset .Labels ,
372- },
373- Spec : greenhousev1alpha1.PluginSpec {
374- ClusterName : cluster .Name ,
375- },
376- }
377-
378- greenhouseValuesList , err := helm .GetGreenhouseValues (ctx , r .Client , tempPlugin )
379- if err != nil {
380- return nil , fmt .Errorf ("failed to get greenhouse values: %w" , err )
381- }
382-
383- templateData := make (map [string ]any )
384- for _ , gv := range greenhouseValuesList {
385- if gv .Value != nil {
386- var value any
387- if err := json .Unmarshal (gv .Value .Raw , & value ); err != nil {
388- return nil , fmt .Errorf ("failed to unmarshal greenhouse value %s: %w" , gv .Name , err )
389- }
390- parts := strings .Split (gv .Name , "." )
391- setNestedValue (templateData , parts , value )
392- }
393- }
394-
395- return templateData , nil
396- }
397-
398- // setNestedValue sets a value in a nested map using a slice of keys.
399- func setNestedValue (m map [string ]any , keys []string , value any ) {
400- if len (keys ) == 0 {
401- return
402- }
403- if len (keys ) == 1 {
404- m [keys [0 ]] = value
405- return
406- }
407- if _ , ok := m [keys [0 ]]; ! ok {
408- m [keys [0 ]] = make (map [string ]any )
409- }
410- if nested , ok := m [keys [0 ]].(map [string ]any ); ok {
411- setNestedValue (nested , keys [1 :], value )
412- }
413- }
414-
415377// applyOverridesToPreset returns a copy of the preset with cluster-specific overrides merged.
416378func applyOverridesToPreset (preset * greenhousev1alpha1.PluginPreset , clusterName string ) * greenhousev1alpha1.PluginPreset {
417379 presetCopy := preset .DeepCopy ()
0 commit comments