Skip to content

Commit

Permalink
WIP: merge plan config with instance config before render
Browse files Browse the repository at this point in the history
  • Loading branch information
wpjunior committed Jan 23, 2024
1 parent 08c1f49 commit ed4a88c
Showing 1 changed file with 31 additions and 2 deletions.
33 changes: 31 additions & 2 deletions controllers/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -941,9 +941,14 @@ func (r *RpaasInstanceReconciler) renderTemplate(ctx context.Context, instance *
return "", err
}

instanceWithMergedConfig, err := mergeInstanceWithConfig(instance, &plan.Spec.Config)
if err != nil {
return "", err
}

config := nginx.ConfigurationData{
Instance: instance,
Config: &plan.Spec.Config,
Instance: instanceWithMergedConfig,
Config: &instanceWithMergedConfig.Spec.PlanTemplate.Config,
}

return cr.Render(config)
Expand Down Expand Up @@ -1320,6 +1325,30 @@ func mergePlans(base v1alpha1.RpaasPlanSpec, override v1alpha1.RpaasPlanSpec) (m
return
}

func mergeConfig(base v1alpha1.NginxConfig, override v1alpha1.NginxConfig) (merged v1alpha1.NginxConfig, err error) {
err = genericMerge(&merged, base, override)
return
}

func mergeInstanceWithConfig(instance *v1alpha1.RpaasInstance, config *v1alpha1.NginxConfig) (*v1alpha1.RpaasInstance, error) {
instanceConfig := v1alpha1.NginxConfig{}
if instance.Spec.PlanTemplate != nil {
instanceConfig = instance.Spec.PlanTemplate.Config
}

mergedConfig, err := mergeConfig(*config, instanceConfig)
if err != nil {
return nil, err
}
instanceWithMergedConfig := instance.DeepCopy()
if instanceWithMergedConfig.Spec.PlanTemplate == nil {
instanceWithMergedConfig.Spec.PlanTemplate = &v1alpha1.RpaasPlanSpec{}
}
instanceWithMergedConfig.Spec.PlanTemplate.Config = mergedConfig

return instanceWithMergedConfig, nil
}

func genericMerge(dst interface{}, overrides ...interface{}) error {
transformers := []func(*mergo.Config){
mergo.WithOverride,
Expand Down

0 comments on commit ed4a88c

Please sign in to comment.