Skip to content

Commit 3782cca

Browse files
committed
Export BuildTemplateData and use it
Signed-off-by: Klaudiusz Fabryczny <klaudiusz.fabryczny@sap.com>
1 parent ac4b343 commit 3782cca

2 files changed

Lines changed: 21 additions & 59 deletions

File tree

internal/controller/plugin/pluginpreset_values_resolver.go

Lines changed: 18 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
416378
func applyOverridesToPreset(preset *greenhousev1alpha1.PluginPreset, clusterName string) *greenhousev1alpha1.PluginPreset {
417379
presetCopy := preset.DeepCopy()

internal/helm/cel.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ type CELResolver struct {
2020

2121
// NewCELResolver creates a new CELResolver for a given Plugin.
2222
func NewCELResolver(optionValues []greenhousev1alpha1.PluginOptionValue) (*CELResolver, error) {
23-
templateData, err := buildTemplateData(optionValues)
23+
templateData, err := BuildTemplateData(optionValues)
2424
if err != nil {
2525
return nil, fmt.Errorf("failed to build template data: %w", err)
2626
}
@@ -59,8 +59,8 @@ func (c *CELResolver) ResolveExpression(optionValue greenhousev1alpha1.PluginOpt
5959
}, nil
6060
}
6161

62-
// buildTemplateData extracts global.greenhouse.* values to build template data for CEL evaluation.
63-
func buildTemplateData(optionValues []greenhousev1alpha1.PluginOptionValue) (map[string]any, error) {
62+
// BuildTemplateData extracts global.greenhouse.* values to build template data for CEL evaluation.
63+
func BuildTemplateData(optionValues []greenhousev1alpha1.PluginOptionValue) (map[string]any, error) {
6464
greenhouseValues := make([]greenhousev1alpha1.PluginOptionValue, 0)
6565
for _, optionValue := range optionValues {
6666
// Include global.greenhouse.* values for CEL evaluation.

0 commit comments

Comments
 (0)